diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index c287dd397..229d1629d 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -32,7 +32,7 @@ jobs: uses: actions/cache@v4 id: locks-cache with: - path: ~/.satysfi/cache + path: ~/.saphe/cache key: cache-locks-${{ hashFiles('default-registry-commit-hash.txt') }} - name: Set-up OCaml @@ -56,7 +56,6 @@ jobs: - name: Install SATySFi run: | opam install . - ./install-libs.sh ~/.satysfi - name: Check library packages run: | diff --git a/.gitignore b/.gitignore index 64e2aa9ab..a91a8669c 100644 --- a/.gitignore +++ b/.gitignore @@ -5,3 +5,7 @@ /temp/latinmodern-math-1959/ /temp/*.zip /temp/tarballs/ +*.pdf +*.satysfi-aux.yaml +/saphe +/satysfi diff --git a/Makefile b/Makefile index f357e646a..674c47fcb 100644 --- a/Makefile +++ b/Makefile @@ -1,18 +1,26 @@ PREFIX=/usr/local LIBDIR=$(PREFIX)/share/satysfi +SATYSFI=satysfi +SAPHE=saphe BINDIR=$(PREFIX)/bin -.PHONY: all test test-packages clean install uninstall +.PHONY: all test test-packages promote-package-locks update-ci-cache clean install uninstall all: dune build test: - $(DUNE) runtest + dune runtest test-packages: ./check-packages.sh +promote-package-locks: + ./promote-lock-of-packages.sh + +update-ci-cache: + ./update-default-registry-commit-hash-file.sh + clean: dune clean diff --git a/README-ja.md b/README-ja.md index f28c3a0d7..62576cbce 100644 --- a/README-ja.md +++ b/README-ja.md @@ -2,6 +2,8 @@ [![Build Status](https://github.com/gfngfn/SATySFi/workflows/CI/badge.svg?branch=master)](https://github.com/gfngfn/SATySFi/actions?query=workflow%3ACI) +**注意: 2024年3月現在,SATySFi は 0.0.x から 0.1.x へと移行する過程にあります.このREADMEをはじめとして多くの文書では古くなっている情報が残っているかもしれません.** + [English README is here](https://github.com/gfngfn/SATySFi/blob/master/README.md) ## 概要 @@ -14,38 +16,8 @@ * 株式会社ドワンゴ(2018年10月–2019年3月.アルバイトとして) * [The SATySFi​book](https://booth.pm/ja/items/1127224)を購入頂いた,多くの匿名の支援者の方々 -また,2024年2月現在も発展を続けています。 - -## Satyrographos を使ったインストール方法 (初心者向け) - -パッケージマネージャー [Satyrographos](https://github.com/na4zagin3/satyrographos/blob/master/README-ja.md) を用いたインストール方法が用意されています。 -詳しくは [SATySFi インストール手引き](https://qiita.com/na4zagin3/items/a6e025c17ef991a4c923) をご覧下さい。 - -```sh -# Ubuntu 20.04 の場合 -sudo apt-get update -sudo apt-get install build-essential git m4 unzip curl pkg-config -sh <(curl -sL https://raw.githubusercontent.com/ocaml/opam/master/shell/install.sh) +また,2024年3月現在も発展を続けています。 -# Mac の場合 -# 要 homebrew (https://brew.sh/index_ja に従いインストールして下さい) -brew update -brew install opam - -# 共通 OPAM の設定 -opam init -eval $(opam env) -opam repository add satysfi-external https://github.com/gfngfn/satysfi-external-repo.git -opam repository add satyrographos https://github.com/na4zagin3/satyrographos-repo.git -opam update - -# 共通 SATySFi のインストール -opam depext satysfi satysfi-dist satyrographos -opam install satysfi satysfi-dist satyrographos - -# 共通 SATySFi 標準ライブラリのセットアップ -satyrographos install -``` ## OPAM を使ったインストール方法 @@ -90,6 +62,7 @@ opam repository add satysfi-external https://github.com/gfngfn/satysfi-external- opam update ``` + #### 準備例(OS X Mavericks 以降) ```sh @@ -109,6 +82,7 @@ opam repository add satysfi-external https://github.com/gfngfn/satysfi-external- opam update ``` + ### ビルド まず,このリポジトリを clone し,OPAM を使って SATySFi をビルドします: @@ -119,23 +93,45 @@ git clone https://github.com/gfngfn/SATySFi.git cd SATySFi # build -opam pin add satysfi . -opam install satysfi +opam pin add . +opam install satysfi saphe ``` * 再インストール: `opam reinstall satysfi` を実行 * アンインストール: `opam uninstall satysfi` を実行 -### セットアップ -使用する前に,フォントをダウンロードし,ライブラリ等を所定の場所に移す必要があります。以下のように2つのシェルスクリプトを順に実行します: +## SATySFi **0.0.x** についての説明 + +### Satyrographos を使ったインストール方法 (初心者向け) + +パッケージマネージャー [Satyrographos](https://github.com/na4zagin3/satyrographos/blob/master/README-ja.md) を用いたインストール方法が用意されています。詳しくは [SATySFi インストール手引き](https://qiita.com/na4zagin3/items/a6e025c17ef991a4c923) をご覧下さい。 ```sh -./download-fonts.sh -./install-libs.sh -``` +# Ubuntu 20.04 の場合 +sudo apt-get update +sudo apt-get install build-essential git m4 unzip curl pkg-config +sh <(curl -sL https://raw.githubusercontent.com/ocaml/opam/master/shell/install.sh) + +# Mac の場合 +# 要 homebrew (https://brew.sh/index_ja に従いインストールして下さい) +brew update +brew install opam + +# 共通 OPAM の設定 +opam init +eval $(opam env) +opam repository add satysfi-external https://github.com/gfngfn/satysfi-external-repo.git +opam repository add satyrographos https://github.com/na4zagin3/satyrographos-repo.git +opam update -前者はデフォルトで必要なフォントファイルを Web 上からダウンロードして `lib-satysfi/dist/fonts/` 直下に格納し,後者は `lib-satysfi/` 以下を `/usr/local/share/satysfi/` 以下にそのままコピーします。 +# 共通 SATySFi のインストール +opam depext satysfi satysfi-dist satyrographos +opam install satysfi satysfi-dist satyrographos + +# 共通 SATySFi 標準ライブラリのセットアップ +satyrographos install +``` ここでインストールされるフォントは以下の通りです。ライセンスを確認した上で使用してください: @@ -144,7 +140,8 @@ opam install satysfi * [Latin Modern](http://www.gust.org.pl/projects/e-foundry/latin-modern/) * [Latin Modern Math](http://www.gust.org.pl/projects/e-foundry/lm-math) -## 用法 + +### 用法 ```sh satysfi -o @@ -156,6 +153,7 @@ satysfi -o satysfi doc.saty -o output.pdf ``` + ### コンパイルしてみよう デモファイルが `demo` フォルダにあるので,初めにこのファイルをコンパイルしてみましょう。 @@ -168,6 +166,7 @@ make うまく準備できていれば,`demo.pdf` が作成されます。 + ### リファレンス 詳細な解説である [The SATySFi​book](https://booth.pm/ja/items/1127224) が BOOTH にて公開されており,無償でダウンロードできます。このほか,SATySFi で文書を作成するためのごく簡単なリファレンスが `doc` フォルダに SATySFi を用いて書かれており,以下の処理で PDF が生成されます: @@ -177,7 +176,8 @@ cd doc make ``` -## コマンドラインオプション + +### コマンドラインオプション * `-v`, `--version`: ヴァージョンを表示します。 * `-o`, `--output`: 出力ファイル名を指定します。省略された場合,入力ファイル名の拡張子を `.pdf` に変えた名前を出力ファイル名とします。 @@ -187,6 +187,7 @@ make * `--debug-show-bbox`: (デバッグ目的で)各グリフにバウンディングボックスをつけて出力します。 * `--debug-show-space`: (デバッグ目的で)スペース部分に目印をつけて出力します。 -## SATySFiを学ぶ + +### SATySFiを学ぶ [Wiki](https://github.com/gfngfn/SATySFi/wiki/SATySFi-Wiki#%E5%AD%A6%E7%BF%92%E7%94%A8%E8%B3%87%E6%96%99) に学習用の資料があります。 diff --git a/README.md b/README.md index bbc55ac19..d5ab16f2e 100644 --- a/README.md +++ b/README.md @@ -2,9 +2,11 @@ [![Build Status](https://github.com/gfngfn/SATySFi/workflows/CI/badge.svg?branch=master)](https://github.com/gfngfn/SATySFi/actions?query=workflow%3ACI) +**Note: As of Mar 2024, we are in the process of migrating SATySFi 0.0.x to SATySFi 0.1.x. In many documents as well as this README file. there might be information about features that has already been obsoleted.** + [日本語版 README はこちら](https://github.com/gfngfn/SATySFi/blob/master/README-ja.md) -## Summary of SATySFi +## What’s SATySFi? *SATySFi* (pronounced in the same way as the verb “satisfy” in English) is a new typesetting system equipped with a statically-typed, functional programming language. It consists mainly of two “layers” ― the text layer and the program layer. The former is for writing documents in LaTeX-like syntax. The latter, which has OCaml-like syntax, is for defining functions and commands. SATySFi enables you to write documents markuped with flexible commands of your own making. In addition, its informative type error reporting will be a good help to your writing. @@ -14,37 +16,8 @@ This software was supported by: * Dwango Co., Ltd. (October 2018 – March 2019; as a part-time job), and * many anonymous supporters who bought [The SATySFi​book](https://booth.pm/ja/items/1127224), -and its development continues to this day (Feb 2024). - -## Install using Satyrographos (for non-devs) - -You can install SATySFi with package manager [Satyrographos](https://github.com/na4zagin3/satyrographos/blob/master/README.md). - -```sh -# For Ubuntu 20.04 -sudo apt-get update -sudo apt-get install build-essential git m4 unzip curl pkg-config -sh <(curl -sL https://raw.githubusercontent.com/ocaml/opam/master/shell/install.sh) - -# For Mac -# Please make sure homebrew is installed. Otherwise, follow https://brew.sh/ -brew update -brew install opam +and its development continues to this day (Mar 2024). -# Common: Set up OPAM -opam init -eval $(opam env) -opam repository add satysfi-external https://github.com/gfngfn/satysfi-external-repo.git -opam repository add satyrographos https://github.com/na4zagin3/satyrographos-repo.git -opam update - -# Common: Install SATySFi -opam depext satysfi satysfi-dist satyrographos -opam install satysfi satysfi-dist satyrographos - -# Common: Set up the SATySFi standard library -satyrographos install -``` ## Install using OPAM @@ -110,7 +83,7 @@ opam update ### Build -First, clone this repository and submodules. Then build SATySFi using OPAM. +First, clone this repository. Then build SATySFi and Saphe using OPAM. ```sh # clone @@ -118,41 +91,45 @@ git clone https://github.com/gfngfn/SATySFi.git cd SATySFi # build -opam pin add satysfi . -opam install satysfi +opam pin add . +opam install satysfi saphe ``` -* To reinstall, run `opam reinstall satysfi`. -* To uninstall, run `opam uninstall satysfi`. +* To reinstall, run `opam reinstall satysfi saphe`. +* To uninstall, run `opam uninstall satysfi saphe`. - +### Install SATySFi **0.0.x** using Satyrographos (for non-devs) - +```sh +# For Ubuntu 20.04 +sudo apt-get update +sudo apt-get install build-essential git m4 unzip curl pkg-config +sh <(curl -sL https://raw.githubusercontent.com/ocaml/opam/master/shell/install.sh) -### Setup for SATySFi +# For Mac +# Please make sure homebrew is installed. Otherwise, follow https://brew.sh/ +brew update +brew install opam -Before using SATySFi, one should put libraries and fonts onto the appropriate directory. This can be done by invoking the following commands in order: +# Common: Set up OPAM +opam init +eval $(opam env) +opam repository add satysfi-external https://github.com/gfngfn/satysfi-external-repo.git +opam repository add satyrographos https://github.com/na4zagin3/satyrographos-repo.git +opam update -```sh -./download-fonts.sh -./install-libs.sh -``` +# Common: Install SATySFi +opam depext satysfi satysfi-dist satyrographos +opam install satysfi satysfi-dist satyrographos -The former downloads the fonts required by the default settings into `lib-satysfi/dist/fonts/`, and the latter copies `lib-satysfi/` to `/usr/local/share/satysfi/`. +# Common: Set up the SATySFi standard library +satyrographos install +``` During this setup, the following fonts are downloaded. Consult their license before using them. @@ -161,7 +138,8 @@ During this setup, the following fonts are downloaded. Consult their license bef * [Latin Modern](http://www.gust.org.pl/projects/e-foundry/latin-modern/) * [Latin Modern Math](http://www.gust.org.pl/projects/e-foundry/lm-math) -## Usage of SATySFi + +### Usage Type @@ -186,6 +164,7 @@ make If `demo.pdf` is created, then the setup has been finished correctly. + ### Reference In addition, a concice reference of SATySFi is written by SATySFi itself in `doc` folder. You need to compile it to read. @@ -195,7 +174,7 @@ cd doc make ``` -## Command-line options +### Command-line options * `-v`, `--version`: Prints the version. * `-o`, `--output`: Specify the name of the output PDF file. if this option is not given explicitly, the name of the output file is the concatenation of the base name of the input file and the extension `.pdf`. @@ -205,6 +184,7 @@ make * `--debug-show-bbox`: Outputs bounding boxes for each glyph (for the purpose of debugging). * `--debug-show-space`: Outputs boxes for spaces (for the purpose of debugging). -## Learning SATySFi + +### Learning SATySFi **0.0.x** [Wiki](https://github.com/gfngfn/SATySFi/wiki/SATySFi-Wiki#%E5%AD%A6%E7%BF%92%E7%94%A8%E8%B3%87%E6%96%99) (currently written only in Japanese) has some information about learning SATySFi. diff --git a/bin-saphe/dune b/bin-saphe/dune new file mode 100644 index 000000000..c9fe8f1a3 --- /dev/null +++ b/bin-saphe/dune @@ -0,0 +1,6 @@ +(executable + (name saphe) + (public_name saphe) + (package saphe) + (libraries sapheMain satysfi-common cmdliner) + (preprocess no_preprocessing)) diff --git a/bin-saphe/saphe.ml b/bin-saphe/saphe.ml new file mode 100644 index 000000000..6415248f9 --- /dev/null +++ b/bin-saphe/saphe.ml @@ -0,0 +1,309 @@ + +open LoggingUtil + + +let init_document + fpath_in + show_full_path + verbosity += + SapheMain.init_document + ~fpath_in + ~show_full_path + ~verbosity + + +let init_library + fpath_in + show_full_path + verbosity += + SapheMain.init_library + ~fpath_in + ~show_full_path + ~verbosity + + +let cache_list + show_full_path + verbosity += + SapheMain.cache_list + ~show_full_path + ~verbosity + + +let update + fpath_in + show_full_path + verbosity += + SapheMain.update + ~fpath_in + ~show_full_path + ~verbosity + + +let solve + fpath_in + show_full_path + verbosity += + SapheMain.solve + ~fpath_in + ~show_full_path + ~verbosity + + +let build + fpath_in + fpath_out_opt + text_mode_formats_str_opt + page_number_limit + max_repeats + show_full_path + verbosity + debug_show_bbox + debug_show_space + debug_show_block_bbox + debug_show_block_space + debug_show_overfull + type_check_only + bytecomp += + SapheMain.build + ~fpath_in + ~fpath_out_opt + ~text_mode_formats_str_opt + ~page_number_limit + ~max_repeats + ~show_full_path + ~verbosity + ~debug_show_bbox + ~debug_show_space + ~debug_show_block_bbox + ~debug_show_block_space + ~debug_show_overfull + ~type_check_only + ~bytecomp + + +let test + fpath_in + text_mode_formats_str_opt + show_full_path + verbosity += + SapheMain.test + ~fpath_in + ~text_mode_formats_str_opt + ~show_full_path + ~verbosity + + +let arg_in : string Cmdliner.Term.t = + let open Cmdliner in + Arg.(required (pos 0 (some file) None (info []))) + + +let arg_in_to_create : string Cmdliner.Term.t = + let open Cmdliner in + Arg.(required (pos 0 (some string) None (info []))) + + +let flag_output : (string option) Cmdliner.Term.t = + let open Cmdliner in + let doc = "Specify output path." in + Arg.(value (opt (some string) None (info [ "o"; "output" ] ~docv:"OUTPUT" ~doc))) + + +let flag_text_mode = + let open Cmdliner in + let doc = "Set text mode" in + Arg.(value (opt (some string) None (info [ "text-mode" ] ~docv:"FORMATS" ~doc))) + + +let flag_page_number_limit : int Cmdliner.Term.t = + let open Cmdliner in + let doc = "Set the page number limit (default: 10000)" in + Arg.(value (opt int 10000 (info [ "page-number-limit" ] ~docv:"INT" ~doc))) + + +let flag_max_repeats : int Cmdliner.Term.t = + let open Cmdliner in + let doc = "Set the maximum number of iterations (default: 4)" in + Arg.(value (opt int 4 (info [ "max-repeats" ] ~docv:"INT" ~doc))) + + +let make_boolean_flag_spec ~(flags : string list) ~(doc : string) : bool Cmdliner.Term.t = + let open Cmdliner in + Arg.(value (flag (info flags ~doc))) + + +let flag_full_path = + make_boolean_flag_spec + ~flags:[ "full-path" ] + ~doc:"Displays paths in full-path style" + + +let flag_verbosity : verbosity Cmdliner.Term.t = + let open Cmdliner in + let verbose = (Verbose, Arg.info [ "verbose" ] ~doc:"Make logs verbose") in + let quiet = (Quiet, Arg.info [ "quiet" ] ~doc:"Disable logs other than errors and warnings") in + Arg.(value (vflag NormalVerbosity [ verbose; quiet ])) + + +let flag_debug_show_bbox = + make_boolean_flag_spec + ~flags:[ "debug-show-bbox" ] + ~doc:"Outputs bounding boxes for glyphs" + + +let flag_debug_show_space = + make_boolean_flag_spec + ~flags:[ "debug-show-space" ] + ~doc:"Outputs boxes for spaces" + + +let flag_debug_show_block_bbox = + make_boolean_flag_spec + ~flags:[ "debug-show-block-bbox" ] + ~doc:"Outputs bounding boxes for blocks" + + +let flag_debug_show_block_space = + make_boolean_flag_spec + ~flags:[ "debug-show-block-space" ] + ~doc:"Outputs visualized block spaces" + + +let flag_debug_show_overfull = + make_boolean_flag_spec + ~flags:[ "debug-show-overfull" ] + ~doc:"Outputs visualized overfull or underfull lines" + + +let flag_type_check_only = + make_boolean_flag_spec + ~flags:[ "t"; "type-check-only" ] + ~doc:"Stops after type checking" + + +let flag_bytecomp = + make_boolean_flag_spec + ~flags:[ "b"; "bytecomp" ] + ~doc:"Use bytecode compiler" + + +let command_init_document : unit Cmdliner.Cmd.t = + let open Cmdliner in + Cmd.v (Cmd.info "document") + Term.(const init_document + $ arg_in_to_create + $ flag_full_path + $ flag_verbosity + ) + + +let command_init_library : unit Cmdliner.Cmd.t = + let open Cmdliner in + Cmd.v (Cmd.info "library") + Term.(const init_library + $ arg_in_to_create + $ flag_full_path + $ flag_verbosity + ) + + +let command_init : unit Cmdliner.Cmd.t = + let open Cmdliner in + Cmd.group (Cmd.info "init") [ + command_init_document; + command_init_library; + ] + + +let command_update : unit Cmdliner.Cmd.t = + let open Cmdliner in + Cmd.v (Cmd.info "update") + Term.(const update + $ arg_in + $ flag_full_path + $ flag_verbosity + ) + + +let command_solve : unit Cmdliner.Cmd.t = + let open Cmdliner in + Cmd.v (Cmd.info "solve") + Term.(const solve + $ arg_in + $ flag_full_path + $ flag_verbosity + ) + + +let command_build : unit Cmdliner.Cmd.t = + let open Cmdliner in + Cmd.v (Cmd.info "build") + Term.(const build + $ arg_in + $ flag_output + $ flag_text_mode + $ flag_page_number_limit + $ flag_max_repeats + $ flag_full_path + $ flag_verbosity + $ flag_debug_show_bbox + $ flag_debug_show_space + $ flag_debug_show_block_bbox + $ flag_debug_show_block_space + $ flag_debug_show_overfull + $ flag_type_check_only + $ flag_bytecomp + ) + + +let command_test : unit Cmdliner.Cmd.t = + let open Cmdliner in + Cmd.v (Cmd.info "test") + Term.(const test + $ arg_in + $ flag_text_mode + $ flag_full_path + $ flag_verbosity + ) + + +let command_cache_list : unit Cmdliner.Cmd.t = + let open Cmdliner in + Cmd.v (Cmd.info "list") + Term.(const cache_list + $ flag_full_path + $ flag_verbosity + ) + + +let command_cache : unit Cmdliner.Cmd.t = + let open Cmdliner in + Cmd.group (Cmd.info "cache") [ + command_cache_list; + ] + + +let () = + let open Cmdliner in + let info : Cmd.info = + Cmd.info ~version:SapheMain.version "saphe" + in + let subcommands = + [ + command_init; + command_update; + command_solve; + command_build; + command_test; + command_cache; + ] + in + Stdlib.exit (Cmd.eval (Cmd.group info subcommands)) diff --git a/bin/dune b/bin/dune index 1ad02b8f3..23866d8bb 100644 --- a/bin/dune +++ b/bin/dune @@ -1,5 +1,6 @@ (executable (name satysfi) (public_name satysfi) - (libraries main cmdliner) + (package satysfi) + (libraries main satysfi-common cmdliner) (preprocess no_preprocessing)) diff --git a/bin/satysfi.ml b/bin/satysfi.ml index 5173ea55d..860fdc598 100644 --- a/bin/satysfi.ml +++ b/bin/satysfi.ml @@ -1,11 +1,32 @@ -let build +open LoggingUtil + + +let build_package fpath_in - fpath_out_opt - config_paths_str_opt + fpath_deps + text_mode_formats_str_opt + show_full_path + verbosity += + Main.build_package + ~fpath_in + ~fpath_deps + ~text_mode_formats_str_opt + ~show_full_path + ~verbosity + + +let build_document + fpath_in + fpath_out + fpath_dump + fpath_deps text_mode_formats_str_opt page_number_limit + max_repeats show_full_path + verbosity debug_show_bbox debug_show_space debug_show_block_bbox @@ -13,15 +34,17 @@ let build debug_show_overfull type_check_only bytecomp - no_default_config = - Main.build + Main.build_document ~fpath_in - ~fpath_out_opt - ~config_paths_str_opt + ~fpath_out + ~fpath_dump + ~fpath_deps ~text_mode_formats_str_opt ~page_number_limit + ~max_repeats ~show_full_path + ~verbosity ~debug_show_bbox ~debug_show_space ~debug_show_block_bbox @@ -29,35 +52,21 @@ let build ~debug_show_overfull ~type_check_only ~bytecomp - ~no_default_config -let test +let test_package fpath_in - config_paths_str_opt + fpath_deps text_mode_formats_str_opt show_full_path - no_default_config + verbosity = - Main.test + Main.test_package ~fpath_in - ~config_paths_str_opt + ~fpath_deps ~text_mode_formats_str_opt ~show_full_path - ~no_default_config - - -let solve - fpath_in - show_full_path - config_paths_str_opt - no_default_config -= - Main.solve - ~fpath_in - ~show_full_path - ~config_paths_str_opt - ~no_default_config + ~verbosity let arg_in : string Cmdliner.Term.t = @@ -65,21 +74,27 @@ let arg_in : string Cmdliner.Term.t = Arg.(required (pos 0 (some file) None (info []))) -let flag_output : (string option) Cmdliner.Term.t = +let flag_output : string Cmdliner.Term.t = let open Cmdliner in - let doc = "Specify output path." in - Arg.(value (opt (some string) None (info [ "o"; "output" ] ~docv:"OUTPUT" ~doc))) + let doc = "Specify an output path" in + Arg.(required (opt (some string) None (info [ "o"; "output" ] ~docv:"OUTPUT" ~doc))) -let flag_config = +let flag_dump : string Cmdliner.Term.t = let open Cmdliner in - let doc = "Add colon-separated paths to configuration search path" in - Arg.(value (opt (some string) None (info [ "C"; "config" ] ~docv:"PATHS" ~doc))) + let doc = "Specify a dump file path" in + Arg.(required (opt (some string) None (info [ "dump" ] ~docv:"DUMP" ~doc))) + + +let flag_deps : string Cmdliner.Term.t = + let open Cmdliner in + let doc = "Specify a deps config path" in + Arg.(required (opt (some string) None (info [ "deps" ] ~docv:"DEPS" ~doc))) let flag_text_mode = let open Cmdliner in - let doc = "Set text mode" in + let doc = "Set the text-generating mode" in Arg.(value (opt (some string) None (info [ "text-mode" ] ~docv:"FORMATS" ~doc))) @@ -89,6 +104,12 @@ let flag_page_number_limit : int Cmdliner.Term.t = Arg.(value (opt int 10000 (info [ "page-number-limit" ] ~docv:"INT" ~doc))) +let flag_max_repeats : int Cmdliner.Term.t = + let open Cmdliner in + let doc = "Set the limit of iteration for resolving cross-references (default: 4)" in + Arg.(value (opt int 4 (info [ "max-repeats" ] ~docv:"INT" ~doc))) + + let make_boolean_flag_spec ~(flags : string list) ~(doc : string) : bool Cmdliner.Term.t = let open Cmdliner in Arg.(value (flag (info flags ~doc))) @@ -100,6 +121,13 @@ let flag_full_path = ~doc:"Displays paths in full-path style" +let flag_verbosity = + let open Cmdliner in + let verbose = (Verbose, Arg.info [ "verbose" ] ~doc:"Make logs verbose") in + let quiet = (Quiet, Arg.info [ "quiet" ] ~doc:"Disable logs other than errors and warnings") in + Arg.(value (vflag NormalVerbosity [ verbose; quiet ])) + + let flag_debug_show_bbox = make_boolean_flag_spec ~flags:[ "debug-show-bbox" ] @@ -142,22 +170,19 @@ let flag_bytecomp = ~doc:"Use bytecode compiler" -let flag_no_default_config = - make_boolean_flag_spec - ~flags:[ "no-default-config" ] - ~doc:"Does not use default configuration search path" - - -let command_build = +let command_build_document = let open Cmdliner in - let term : unit Term.t = - Term.(const build + Cmd.v (Cmd.info "document") + Term.(const build_document $ arg_in $ flag_output - $ flag_config + $ flag_dump + $ flag_deps $ flag_text_mode $ flag_page_number_limit + $ flag_max_repeats $ flag_full_path + $ flag_verbosity $ flag_debug_show_bbox $ flag_debug_show_space $ flag_debug_show_block_bbox @@ -165,53 +190,50 @@ let command_build = $ flag_debug_show_overfull $ flag_type_check_only $ flag_bytecomp - $ flag_no_default_config ) - in - let info : Cmd.info = - Cmd.info "build" - in - Cmd.v info term -let command_test = +let command_build_package = let open Cmdliner in - let term : unit Term.t = - Term.(const test + Cmd.v (Cmd.info "package") + Term.(const build_package $ arg_in - $ flag_config + $ flag_deps $ flag_text_mode $ flag_full_path - $ flag_no_default_config + $ flag_verbosity ) - in - let info : Cmd.info = - Cmd.info "test" - in - Cmd.v info term -let command_solve = +let command_build = let open Cmdliner in - let term : unit Term.t = - Term.(const solve + Cmd.group (Cmd.info "build") [ + command_build_package; + command_build_document; + ] + + +let command_test_package = + let open Cmdliner in + Cmd.v (Cmd.info "package") + Term.(const test_package $ arg_in + $ flag_deps + $ flag_text_mode $ flag_full_path - $ flag_config - $ flag_no_default_config + $ flag_verbosity ) - in - let info : Cmd.info = - Cmd.info "solve" - in - Cmd.v info term + + +let command_test = + let open Cmdliner in + Cmd.group (Cmd.info "test") [ + command_test_package; + ] let () = let open Cmdliner in - let term : unit Term.t = - Term.(ret (const (`Error(true, "No subcommand specified.")))) - in let info : Cmd.info = Cmd.info ~version:Main.version "satysfi" in @@ -219,7 +241,6 @@ let () = [ command_build; command_test; - command_solve; ] in - Stdlib.exit (Cmd.eval (Cmd.group ~default:term info subcommands)) + Stdlib.exit (Cmd.eval (Cmd.group info subcommands)) diff --git a/check-packages.sh b/check-packages.sh index 1041e795f..07d9b118a 100755 --- a/check-packages.sh +++ b/check-packages.sh @@ -1,16 +1,58 @@ -#!/bin/sh +#!/bin/bash -FAILED=0 -for FILE in $(find lib-satysfi -name satysfi.yaml); do +SAPHE="${1:-saphe}" + +FAILS=() +FIRST=1 +for FILE in $(find lib-satysfi -name saphe.yaml); do DIR="$(dirname "$FILE")" - satysfi solve "$DIR" - if diff "$DIR/package.satysfi-lock" "$DIR/package.satysfi-lock-expected"; then - satysfi build "$DIR" + if [ $FIRST -eq 1 ]; then + echo "UPDATING..." + "$SAPHE" update "$DIR" + FIRST=0 + echo "UPDATED." + fi + echo " ==== $DIR ====" + "$SAPHE" solve "$DIR" + if [ $? -ne 0 ]; then + echo "! FAILED (not solved)" + FAILS+=("$DIR (not solved)") + fi + if diff "$DIR/saphe.lock.yaml" "$DIR/saphe.lock.yaml.expected"; then + if diff "$DIR/satysfi-envelope.yaml" "$DIR/satysfi-envelope.yaml.expected"; then + "$SAPHE" build "$DIR" + if [ $? -ne 0 ]; then + echo "! FAILED (cannot build)" + FAILS+=("$DIR (cannot build)") + else + "$SAPHE" test "$DIR" + if [ $? -ne 0 ]; then + echo "! FAILED (test failed)" + FAILS+=("$DIR (test failed)") + else + echo "* OK: $DIR" + fi + fi + else + echo "! FAILED (envelope config mismatch): $DIR" + FAILS+=("$DIR (envelope config mismatch)") + fi else - echo "! FAILED: $DIR" - FAILED=1 + echo "! FAILED (lock config mismatch): $DIR" + FAILS+=("$DIR (lock config mismatch)") fi done -if [ $FAILED -ne 0 ]; then - exit 1 + +RET=0 +for FAIL in "${FAILS[@]}"; do + RET=1 + echo "$FAIL" +done + +if [ $RET -ne 0 ]; then + echo "! some test(s) have failed." +else + echo "All tests have passed." fi + +exit $RET diff --git a/default-registry-commit-hash.txt b/default-registry-commit-hash.txt index a0fe1b894..0a2cf059f 100644 --- a/default-registry-commit-hash.txt +++ b/default-registry-commit-hash.txt @@ -1 +1 @@ -b0f4ad6adf332e5debe15c0e11451e3c6b95904a refs/heads/format-1 +e8a1811c398721b1c5a66ffe0c422429748c2804 refs/heads/temp-dev-saphe diff --git a/demo/.gitignore b/demo/.gitignore index 28e8ef900..681b5ab7e 100644 --- a/demo/.gitignore +++ b/demo/.gitignore @@ -1 +1,3 @@ -*.satysfi-lock +*.saphe.lock.yaml +!*.saphe.lock.yaml.expected +*.satysfi-deps.yaml diff --git a/demo/Makefile b/demo/Makefile index bc3d2b8b1..001a149c4 100644 --- a/demo/Makefile +++ b/demo/Makefile @@ -1,29 +1,31 @@ +INTERMED_DIR = _build + TARGETS = \ demo.pdf \ -EXPECTED_LOCKS=$(TARGETS:.pdf=.satysfi-lock-expected) +EXPECTED_LOCKS=$(TARGETS:.pdf=.saphe.lock.yaml.expected) -SATYSFI ?= satysfi +SAPHE ?= saphe .PHONY: all promote clean -.SUFFIXES: .saty .pdf .satysfi-lock .satysfi-lock-expected +.SUFFIXES: .saty .pdf .saphe.lock.yaml .saphe.lock.yaml.expected # Keeps intermediate results: -.PRECIOUS: %.satysfi-lock +.PRECIOUS: %.saphe.lock.yaml # Generates a lock file from a document and checks that it is as expected: -.saty.satysfi-lock: - $(SATYSFI) solve $< - diff $(<:.saty=.satysfi-lock) $(<:.saty=.satysfi-lock-expected) +%.saphe.lock.yaml: %.saty %.saphe.yaml + $(SAPHE) solve $< + diff $(<:.saty=.saphe.lock.yaml) $(<:.saty=.saphe.lock.yaml.expected) # Typesets a document: -%.pdf: %.saty %.satysfi-lock - $(SATYSFI) build $< -o $@ +%.pdf: %.saty %.saphe.lock.yaml + $(SAPHE) build $< -o $@ # Promote a lock file to the corresponding expected lock file: -%.satysfi-lock-expected: %.satysfi-lock - cp $*.satysfi-lock $*.satysfi-lock-expected +%.saphe.lock.yaml.expected: %.saphe.lock.yaml + cp $*.saphe.lock.yaml $*.saphe.lock.yaml.expected # Entrypoint for typesetting documents: all:: $(TARGETS) @@ -32,4 +34,4 @@ all:: $(TARGETS) promote:: $(EXPECTED_LOCKS) clean: - rm -f *.pdf *.satysfi-aux *.satysfi-lock + rm -f *.saphe.lock.yaml $(INTERMED_DIR)/*.satysfi-aux.yaml $(INTERMED_DIR)/*.satysfi-deps.yaml *.pdf diff --git a/demo/demo.saphe.lock.yaml.expected b/demo/demo.saphe.lock.yaml.expected new file mode 100644 index 000000000..d8fae6a30 --- /dev/null +++ b/demo/demo.saphe.lock.yaml.expected @@ -0,0 +1,163 @@ +saphe: ^0.1.0-alpha.1 +locks: +- name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.annot.0.0.1 + dependencies: + - name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.stdlib.0.0.1 + used_as: Stdlib + test_only: false + registered: + registry_hash_value: 6f2b80e9bb7c4e8af2104999fc25dbb3 + package_name: annot + version: 0.0.1 +- name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.code.0.0.1 + dependencies: + - name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.stdlib.0.0.1 + used_as: Stdlib + - name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.font-latin-modern.0.0.1 + used_as: FontLatinModern + test_only: false + registered: + registry_hash_value: 6f2b80e9bb7c4e8af2104999fc25dbb3 + package_name: code + version: 0.0.1 +- name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.font-ipa-ex.0.0.1 + dependencies: [] + test_only: false + registered: + registry_hash_value: 6f2b80e9bb7c4e8af2104999fc25dbb3 + package_name: font-ipa-ex + version: 0.0.1 +- name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.font-junicode.0.0.1 + dependencies: [] + test_only: false + registered: + registry_hash_value: 6f2b80e9bb7c4e8af2104999fc25dbb3 + package_name: font-junicode + version: 0.0.1 +- name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.font-latin-modern.0.0.1 + dependencies: [] + test_only: false + registered: + registry_hash_value: 6f2b80e9bb7c4e8af2104999fc25dbb3 + package_name: font-latin-modern + version: 0.0.1 +- name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.font-latin-modern-math.0.0.1 + dependencies: [] + test_only: false + registered: + registry_hash_value: 6f2b80e9bb7c4e8af2104999fc25dbb3 + package_name: font-latin-modern-math + version: 0.0.1 +- name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.footnote-scheme.0.0.1 + dependencies: + - name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.stdlib.0.0.1 + used_as: Stdlib + test_only: false + registered: + registry_hash_value: 6f2b80e9bb7c4e8af2104999fc25dbb3 + package_name: footnote-scheme + version: 0.0.1 +- name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.hyph-english.0.0.1 + dependencies: [] + test_only: false + registered: + registry_hash_value: 6f2b80e9bb7c4e8af2104999fc25dbb3 + package_name: hyph-english + version: 0.0.1 +- name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.itemize.0.0.1 + dependencies: + - name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.stdlib.0.0.1 + used_as: Stdlib + test_only: false + registered: + registry_hash_value: 6f2b80e9bb7c4e8af2104999fc25dbb3 + package_name: itemize + version: 0.0.1 +- name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.math.0.0.1 + dependencies: + - name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.stdlib.0.0.1 + used_as: Stdlib + test_only: false + registered: + registry_hash_value: 6f2b80e9bb7c4e8af2104999fc25dbb3 + package_name: math + version: 0.0.1 +- name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.proof.0.0.1 + dependencies: + - name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.stdlib.0.0.1 + used_as: Stdlib + test_only: false + registered: + registry_hash_value: 6f2b80e9bb7c4e8af2104999fc25dbb3 + package_name: proof + version: 0.0.1 +- name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.std-ja-book.0.0.1 + dependencies: + - name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.stdlib.0.0.1 + used_as: Stdlib + - name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.math.0.0.1 + used_as: Math + - name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.annot.0.0.1 + used_as: Annot + - name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.code.0.0.1 + used_as: Code + - name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.footnote-scheme.0.0.1 + used_as: FootnoteScheme + - name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.font-junicode.0.0.1 + used_as: FontJunicode + - name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.font-latin-modern.0.0.1 + used_as: FontLatinModern + - name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.font-ipa-ex.0.0.1 + used_as: FontIpaEx + - name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.font-latin-modern-math.0.0.1 + used_as: FontLatinModernMath + - name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.hyph-english.0.0.1 + used_as: HyphEnglish + - name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.unidata.0.0.1 + used_as: Unidata + test_only: false + registered: + registry_hash_value: 6f2b80e9bb7c4e8af2104999fc25dbb3 + package_name: std-ja-book + version: 0.0.1 +- name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.stdlib.0.0.1 + dependencies: [] + test_only: false + registered: + registry_hash_value: 6f2b80e9bb7c4e8af2104999fc25dbb3 + package_name: stdlib + version: 0.0.1 +- name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.tabular.0.0.1 + dependencies: + - name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.stdlib.0.0.1 + used_as: Stdlib + test_only: false + registered: + registry_hash_value: 6f2b80e9bb7c4e8af2104999fc25dbb3 + package_name: tabular + version: 0.0.1 +- name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.unidata.0.0.1 + dependencies: [] + test_only: false + registered: + registry_hash_value: 6f2b80e9bb7c4e8af2104999fc25dbb3 + package_name: unidata + version: 0.0.1 +dependencies: +- name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.annot.0.0.1 + used_as: Annot +- name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.code.0.0.1 + used_as: Code +- name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.itemize.0.0.1 + used_as: Itemize +- name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.math.0.0.1 + used_as: Math +- name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.proof.0.0.1 + used_as: Proof +- name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.std-ja-book.0.0.1 + used_as: StdJaBook +- name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.stdlib.0.0.1 + used_as: Stdlib +- name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.tabular.0.0.1 + used_as: Tabular +test_dependencies: [] diff --git a/demo/demo.saphe.yaml b/demo/demo.saphe.yaml new file mode 100644 index 000000000..60bc0d3a2 --- /dev/null +++ b/demo/demo.saphe.yaml @@ -0,0 +1,52 @@ +saphe: "^0.1.0-alpha.1" +satysfi: "^0.1.0-alpha.1" +authors: + - "Takashi Suwa" +registries: + - name: "default" + git: + url: "https://github.com/SATySFi/default-registry" + branch: "temp-dev-saphe" +contents: + document: {} +dependencies: + - used_as: "Stdlib" + registered: + registry: "default" + name: "stdlib" + requirement: "^0.0.1" + - used_as: "Math" + registered: + registry: "default" + name: "math" + requirement: "^0.0.1" + - used_as: "Annot" + registered: + registry: "default" + name: "annot" + requirement: "^0.0.1" + - used_as: "Code" + registered: + registry: "default" + name: "code" + requirement: "^0.0.1" + - used_as: "Itemize" + registered: + registry: "default" + name: "itemize" + requirement: "^0.0.1" + - used_as: "Proof" + registered: + registry: "default" + name: "proof" + requirement: "^0.0.1" + - used_as: "Tabular" + registered: + registry: "default" + name: "tabular" + requirement: "^0.0.1" + - used_as: "StdJaBook" + registered: + registry: "default" + name: "std-ja-book" + requirement: "^0.0.1" diff --git a/demo/demo.saty b/demo/demo.saty index 626ea892f..6b1b99118 100644 --- a/demo/demo.saty +++ b/demo/demo.saty @@ -1,26 +1,5 @@ -#[config (| - registries = [ - (| - name = `default`, - remote = - Git(| - url = `https://github.com/SATySFi/default-registry`, - branch = `format-1`, - |) - |) - ], - dependencies = [ - (| name = `stdlib`, registry = `default`, requirement = `^0.0.1` |), - (| name = `math`, registry = `default`, requirement = `^0.0.1` |), - (| name = `code`, registry = `default`, requirement = `^0.0.1` |), - (| name = `itemize`, registry = `default`, requirement = `^0.0.1` |), - (| name = `proof`, registry = `default`, requirement = `^0.0.1` |), - (| name = `tabular`, registry = `default`, requirement = `^0.0.1` |), - (| name = `std-ja-book`, registry = `default`, requirement = `^0.0.1` |), - ], -|)] use package open Stdlib -use package open Stdlib.Pervasives +use package open Stdlib.Logo use package open Math use package open Annot use package open Code @@ -243,17 +222,17 @@ document ?( | (x0 :: x1 :: _ :: x3 :: _, xlast :: _) -> let grlstY1 = [y1, y2] |> List.map (fun y -> - stroke 0.5pt Color.black (Gr.line (x0, y) (xlast, y))) + stroke 0.5pt Color.black (Path.line (x0, y) (xlast, y))) in let grlstY2 = [y0, ylast] |> List.map (fun y -> - stroke 1pt Color.black (Gr.line (x0, y) (xlast, y))) + stroke 1pt Color.black (Path.line (x0, y) (xlast, y))) in let grlstX = [x1, x3] |> List.map (fun x -> - stroke 0.5pt Color.black (Gr.line (x, y0) (x, ylast))) + stroke 0.5pt Color.black (Path.line (x, y0) (x, ylast))) in - (stroke 0.5pt Color.black (Gr.line (x0, y1) (x1, y2))) + (stroke 0.5pt Color.black (Path.line (x0, y1) (x1, y2))) :: (List.append grlstX (List.append grlstY1 grlstY2)) | _ -> [] diff --git a/demo/demo.satysfi-lock-expected b/demo/demo.satysfi-lock-expected deleted file mode 100644 index a56c824ae..000000000 --- a/demo/demo.satysfi-lock-expected +++ /dev/null @@ -1,123 +0,0 @@ -language: ^0.1.0 -locks: -- name: registered.d9b4b850ab61a7b68961c6315048b351.annot.0.0.1 - contents: - type: registered - registry_hash_value: d9b4b850ab61a7b68961c6315048b351 - package_name: annot - version: 0.0.1 - dependencies: - - registered.d9b4b850ab61a7b68961c6315048b351.stdlib.0.0.1 - test_only: false -- name: registered.d9b4b850ab61a7b68961c6315048b351.code.0.0.1 - contents: - type: registered - registry_hash_value: d9b4b850ab61a7b68961c6315048b351 - package_name: code - version: 0.0.1 - dependencies: - - registered.d9b4b850ab61a7b68961c6315048b351.stdlib.0.0.1 - - registered.d9b4b850ab61a7b68961c6315048b351.font-latin-modern.0.0.1 - test_only: false -- name: registered.d9b4b850ab61a7b68961c6315048b351.font-ipa-ex.0.0.1 - contents: - type: registered - registry_hash_value: d9b4b850ab61a7b68961c6315048b351 - package_name: font-ipa-ex - version: 0.0.1 - dependencies: [] - test_only: false -- name: registered.d9b4b850ab61a7b68961c6315048b351.font-junicode.0.0.1 - contents: - type: registered - registry_hash_value: d9b4b850ab61a7b68961c6315048b351 - package_name: font-junicode - version: 0.0.1 - dependencies: [] - test_only: false -- name: registered.d9b4b850ab61a7b68961c6315048b351.font-latin-modern.0.0.1 - contents: - type: registered - registry_hash_value: d9b4b850ab61a7b68961c6315048b351 - package_name: font-latin-modern - version: 0.0.1 - dependencies: [] - test_only: false -- name: registered.d9b4b850ab61a7b68961c6315048b351.font-latin-modern-math.0.0.1 - contents: - type: registered - registry_hash_value: d9b4b850ab61a7b68961c6315048b351 - package_name: font-latin-modern-math - version: 0.0.1 - dependencies: [] - test_only: false -- name: registered.d9b4b850ab61a7b68961c6315048b351.footnote-scheme.0.0.1 - contents: - type: registered - registry_hash_value: d9b4b850ab61a7b68961c6315048b351 - package_name: footnote-scheme - version: 0.0.1 - dependencies: - - registered.d9b4b850ab61a7b68961c6315048b351.stdlib.0.0.1 - test_only: false -- name: registered.d9b4b850ab61a7b68961c6315048b351.itemize.0.0.1 - contents: - type: registered - registry_hash_value: d9b4b850ab61a7b68961c6315048b351 - package_name: itemize - version: 0.0.1 - dependencies: - - registered.d9b4b850ab61a7b68961c6315048b351.stdlib.0.0.1 - test_only: false -- name: registered.d9b4b850ab61a7b68961c6315048b351.math.0.0.1 - contents: - type: registered - registry_hash_value: d9b4b850ab61a7b68961c6315048b351 - package_name: math - version: 0.0.1 - dependencies: - - registered.d9b4b850ab61a7b68961c6315048b351.stdlib.0.0.1 - test_only: false -- name: registered.d9b4b850ab61a7b68961c6315048b351.proof.0.0.1 - contents: - type: registered - registry_hash_value: d9b4b850ab61a7b68961c6315048b351 - package_name: proof - version: 0.0.1 - dependencies: - - registered.d9b4b850ab61a7b68961c6315048b351.stdlib.0.0.1 - test_only: false -- name: registered.d9b4b850ab61a7b68961c6315048b351.std-ja-book.0.0.1 - contents: - type: registered - registry_hash_value: d9b4b850ab61a7b68961c6315048b351 - package_name: std-ja-book - version: 0.0.1 - dependencies: - - registered.d9b4b850ab61a7b68961c6315048b351.stdlib.0.0.1 - - registered.d9b4b850ab61a7b68961c6315048b351.math.0.0.1 - - registered.d9b4b850ab61a7b68961c6315048b351.annot.0.0.1 - - registered.d9b4b850ab61a7b68961c6315048b351.code.0.0.1 - - registered.d9b4b850ab61a7b68961c6315048b351.footnote-scheme.0.0.1 - - registered.d9b4b850ab61a7b68961c6315048b351.font-junicode.0.0.1 - - registered.d9b4b850ab61a7b68961c6315048b351.font-latin-modern.0.0.1 - - registered.d9b4b850ab61a7b68961c6315048b351.font-ipa-ex.0.0.1 - - registered.d9b4b850ab61a7b68961c6315048b351.font-latin-modern-math.0.0.1 - test_only: false -- name: registered.d9b4b850ab61a7b68961c6315048b351.stdlib.0.0.1 - contents: - type: registered - registry_hash_value: d9b4b850ab61a7b68961c6315048b351 - package_name: stdlib - version: 0.0.1 - dependencies: [] - test_only: false -- name: registered.d9b4b850ab61a7b68961c6315048b351.tabular.0.0.1 - contents: - type: registered - registry_hash_value: d9b4b850ab61a7b68961c6315048b351 - package_name: tabular - version: 0.0.1 - dependencies: - - registered.d9b4b850ab61a7b68961c6315048b351.stdlib.0.0.1 - test_only: false diff --git a/demo/local.satyh b/demo/local.satyh index 6a558ae74..3b77e6e55 100644 --- a/demo/local.satyh +++ b/demo/local.satyh @@ -8,13 +8,11 @@ use package StdJaBook module Local = struct - val inline ctx \gray inner = let pads-code = (2pt, 2pt, 2pt, 2pt) in let decoset-code = HDecoSet.rectangle-round-fill 4pt 2pt (Color.gray 0.9) in let ib-frame = inline-frame-breakable pads-code decoset-code (read-inline ctx inner) in - script-guard Latin ib-frame - + script-guard Latin ib-frame val inline ctx \dfn word = let ctx-dfn = @@ -22,55 +20,46 @@ module Local = struct |> StdJaBook.set-cjk-font StdJaBook.font-cjk-gothic |> set-text-color (RGB(0.8, 0., 0.)) in - read-inline ctx-dfn word - + read-inline ctx-dfn word val inline ctx \file filename = let ctx-file = ctx |> StdJaBook.set-latin-font StdJaBook.font-latin-mono in - script-guard Latin (read-inline ctx-file filename) - + script-guard Latin (read-inline ctx-file filename) val math ctx \sums m1 m2 = read-math ctx ${\Math.sum_{#m1}^{#m2}} - val math ctx \limto m1 m2 = read-math ctx ${\Math.lim_{#m1 \Math.to #m2}} - val block ctx +frame content = let pads = (10pt, 10pt, 10pt, 10pt) in let decoset = VDecoSet.simple-frame-stroke 1pt (Color.gray 0.75) in - block-frame-breakable ctx pads decoset (fun ctx -> read-block ctx content) - + block-frame-breakable ctx pads decoset (fun ctx -> read-block ctx content) val block ctx +centering it = line-break true true ctx (inline-fil ++ read-inline ctx it ++ inline-fil) - val block ctx +p-latin content = let ctx-latin = ctx |> set-font-size (get-font-size ctx *' 1.2) |> set-leading 20pt in - line-break true true ctx-latin - (inline-skip ((get-font-size ctx-latin) *' 2.) ++ read-inline ctx-latin content ++ inline-fil) - + line-break true true ctx-latin + (inline-skip ((get-font-size ctx-latin) *' 2.) ++ read-inline ctx-latin content ++ inline-fil) val block ctx +image-frame content = let pads = (10pt, 10pt, 10pt, 10pt) in let decoset = VDecoSet.simple-frame-stroke 1pt Color.black in - block-frame-breakable ctx pads decoset (fun ctx -> read-block ctx '<+centering{#content;}>) - + block-frame-breakable ctx pads decoset (fun ctx -> read-block ctx '<+centering{#content;}>) val block ctx +paragraph-frame content = let pads = (15pt, 15pt, 15pt, 15pt) in let decoset = VDecoSet.simple-frame-stroke 1pt (Color.gray 0.75) in - block-frame-breakable ctx pads decoset (fun ctx -> read-block (ctx |> set-hyphen-penalty 150) content) - + block-frame-breakable ctx pads decoset (fun ctx -> read-block (ctx |> set-hyphen-penalty 150) content) val block ctx +math-list mlst = let ib = - mlst |> List.fold-left-adjacent (fun ibacc m _ mnextopt -> ( + mlst |> List.fold-adjacent (fun ibacc m _ mnextopt -> ( let ib = embed-math ctx (read-math ctx m) in match mnextopt with | None -> ibacc ++ ib ++ inline-fil @@ -78,16 +67,14 @@ module Local = struct end )) inline-fil in - line-break true true ctx ib - + line-break true true ctx ib val inline ctx \insert-image w path = let img = load-image path in - use-image-by-width img w - + use-image-by-width img w val block ctx +display-boxes content code = read-block (ctx |> set-paragraph-margin 12pt 0pt) '<+frame(content);> - +++ read-block (ctx |> set-paragraph-margin 0pt 12pt) '<+Code.code(code);> + +++ read-block (ctx |> set-paragraph-margin 0pt 12pt) '<+Code.Default.code(code);> end diff --git a/doc/.gitignore b/doc/.gitignore index 28e8ef900..0d04638e6 100644 --- a/doc/.gitignore +++ b/doc/.gitignore @@ -1 +1,4 @@ -*.satysfi-lock +*.saphe.lock.yaml.expected +*.saphe.lock.yaml +!*.saphe.lock.yaml.expected +*.satysfi-deps.yaml diff --git a/doc/Makefile b/doc/Makefile index 2d2c2478b..fcb938d19 100644 --- a/doc/Makefile +++ b/doc/Makefile @@ -1,31 +1,33 @@ +INTERMED_DIR = _build + TARGETS = \ doc-primitives.pdf \ doc-lang.pdf \ math1.pdf \ -EXPECTED_LOCKS=$(TARGETS:.pdf=.satysfi-lock-expected) +EXPECTED_LOCKS=$(TARGETS:.pdf=.saphe.lock.yaml.expected) -SATYSFI ?= satysfi +SAPHE ?= saphe .PHONY: all promote clean -.SUFFIXES: .saty .pdf .satysfi-lock .satysfi-lock-expected +.SUFFIXES: .saty .pdf .saphe.lock.yaml .saphe.lock.yaml.expected # Keeps intermediate results: -.PRECIOUS: %.satysfi-lock +.PRECIOUS: %.saphe.lock.yaml # Generates a lock file from a document and checks that it is as expected: -.saty.satysfi-lock: - $(SATYSFI) solve $< - diff $(<:.saty=.satysfi-lock) $(<:.saty=.satysfi-lock-expected) +%.saphe.lock.yaml: %.saty %.saphe.yaml + $(SAPHE) solve $< + diff $(<:.saty=.saphe.lock.yaml) $(<:.saty=.saphe.lock.yaml.expected) # Typesets a document: -%.pdf: %.saty %.satysfi-lock - $(SATYSFI) build $< -o $@ +%.pdf: %.saty %.saphe.lock.yaml + $(SAPHE) build $< -o $@ # Promote a lock file to the corresponding expected lock file: -%.satysfi-lock-expected: %.satysfi-lock - cp $*.satysfi-lock $*.satysfi-lock-expected +%.saphe.lock.yaml.expected: %.saphe.lock.yaml + cp $*.saphe.lock.yaml $*.saphe.lock.yaml.expected # Entrypoint for typesetting documents: all:: $(TARGETS) @@ -34,7 +36,7 @@ all:: $(TARGETS) promote:: $(EXPECTED_LOCKS) clean: - rm -f *.pdf *.satysfi-aux *.satysfi-lock + rm -f *.saphe.lock.yaml $(INTERMED_DIR)/*.satysfi-aux.yaml $(INTERMED_DIR)/*.satysfi-deps.yaml *.pdf doc-primitives.pdf: local-math.satyh local.satyh paren.satyh doc-lang.pdf: local-math.satyh diff --git a/doc/doc-lang.saphe.lock.yaml.expected b/doc/doc-lang.saphe.lock.yaml.expected new file mode 100644 index 000000000..29a9aa6ae --- /dev/null +++ b/doc/doc-lang.saphe.lock.yaml.expected @@ -0,0 +1,126 @@ +saphe: ^0.1.0-alpha.1 +locks: +- name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.annot.0.0.1 + dependencies: + - name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.stdlib.0.0.1 + used_as: Stdlib + test_only: false + registered: + registry_hash_value: 6f2b80e9bb7c4e8af2104999fc25dbb3 + package_name: annot + version: 0.0.1 +- name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.code.0.0.1 + dependencies: + - name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.stdlib.0.0.1 + used_as: Stdlib + - name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.font-latin-modern.0.0.1 + used_as: FontLatinModern + test_only: false + registered: + registry_hash_value: 6f2b80e9bb7c4e8af2104999fc25dbb3 + package_name: code + version: 0.0.1 +- name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.font-ipa-ex.0.0.1 + dependencies: [] + test_only: false + registered: + registry_hash_value: 6f2b80e9bb7c4e8af2104999fc25dbb3 + package_name: font-ipa-ex + version: 0.0.1 +- name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.font-junicode.0.0.1 + dependencies: [] + test_only: false + registered: + registry_hash_value: 6f2b80e9bb7c4e8af2104999fc25dbb3 + package_name: font-junicode + version: 0.0.1 +- name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.font-latin-modern.0.0.1 + dependencies: [] + test_only: false + registered: + registry_hash_value: 6f2b80e9bb7c4e8af2104999fc25dbb3 + package_name: font-latin-modern + version: 0.0.1 +- name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.font-latin-modern-math.0.0.1 + dependencies: [] + test_only: false + registered: + registry_hash_value: 6f2b80e9bb7c4e8af2104999fc25dbb3 + package_name: font-latin-modern-math + version: 0.0.1 +- name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.hyph-english.0.0.1 + dependencies: [] + test_only: false + registered: + registry_hash_value: 6f2b80e9bb7c4e8af2104999fc25dbb3 + package_name: hyph-english + version: 0.0.1 +- name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.itemize.0.0.1 + dependencies: + - name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.stdlib.0.0.1 + used_as: Stdlib + test_only: false + registered: + registry_hash_value: 6f2b80e9bb7c4e8af2104999fc25dbb3 + package_name: itemize + version: 0.0.1 +- name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.math.0.0.1 + dependencies: + - name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.stdlib.0.0.1 + used_as: Stdlib + test_only: false + registered: + registry_hash_value: 6f2b80e9bb7c4e8af2104999fc25dbb3 + package_name: math + version: 0.0.1 +- name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.std-ja.0.0.1 + dependencies: + - name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.stdlib.0.0.1 + used_as: Stdlib + - name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.math.0.0.1 + used_as: Math + - name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.annot.0.0.1 + used_as: Annot + - name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.code.0.0.1 + used_as: Code + - name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.font-junicode.0.0.1 + used_as: FontJunicode + - name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.font-latin-modern.0.0.1 + used_as: FontLatinModern + - name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.font-ipa-ex.0.0.1 + used_as: FontIpaEx + - name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.font-latin-modern-math.0.0.1 + used_as: FontLatinModernMath + - name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.hyph-english.0.0.1 + used_as: HyphEnglish + - name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.unidata.0.0.1 + used_as: Unidata + test_only: false + registered: + registry_hash_value: 6f2b80e9bb7c4e8af2104999fc25dbb3 + package_name: std-ja + version: 0.0.1 +- name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.stdlib.0.0.1 + dependencies: [] + test_only: false + registered: + registry_hash_value: 6f2b80e9bb7c4e8af2104999fc25dbb3 + package_name: stdlib + version: 0.0.1 +- name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.unidata.0.0.1 + dependencies: [] + test_only: false + registered: + registry_hash_value: 6f2b80e9bb7c4e8af2104999fc25dbb3 + package_name: unidata + version: 0.0.1 +dependencies: +- name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.itemize.0.0.1 + used_as: Itemize +- name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.math.0.0.1 + used_as: Math +- name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.std-ja.0.0.1 + used_as: StdJa +- name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.stdlib.0.0.1 + used_as: Stdlib +test_dependencies: [] diff --git a/doc/doc-lang.saphe.yaml b/doc/doc-lang.saphe.yaml new file mode 100644 index 000000000..fe138577b --- /dev/null +++ b/doc/doc-lang.saphe.yaml @@ -0,0 +1,32 @@ +saphe: "^0.1.0-alpha.1" +satysfi: "^0.1.0-alpha.1" +authors: + - "Takashi Suwa" +registries: + - name: "default" + git: + url: "https://github.com/SATySFi/default-registry" + branch: "temp-dev-saphe" +contents: + document: {} +dependencies: + - used_as: "Stdlib" + registered: + registry: "default" + name: "stdlib" + requirement: "^0.0.1" + - used_as: "Math" + registered: + registry: "default" + name: "math" + requirement: "^0.0.1" + - used_as: "Itemize" + registered: + registry: "default" + name: "itemize" + requirement: "^0.0.1" + - used_as: "StdJa" + registered: + registry: "default" + name: "std-ja" + requirement: "^0.0.1" diff --git a/doc/doc-lang.saty b/doc/doc-lang.saty index a799044e1..a5af8b811 100644 --- a/doc/doc-lang.saty +++ b/doc/doc-lang.saty @@ -1,22 +1,5 @@ -#[config (| - registries = [ - (| - name = `default`, - remote = - Git(| - url = `https://github.com/SATySFi/default-registry`, - branch = `format-1`, - |) - |) - ], - dependencies = [ - (| name = `stdlib`, registry = `default`, requirement = `^0.0.1` |), - (| name = `math`, registry = `default`, requirement = `^0.0.1` |), - (| name = `std-ja`, registry = `default`, requirement = `^0.0.1` |), - ], -|)] use package open Stdlib -use package open Stdlib.Pervasives +use package open Stdlib.Logo use package open StdJa use package open Math use open LocalMath of `local-math` @@ -25,7 +8,7 @@ document (| title = {\SATySFi;言語仕様}, author = {Takashi SUWA}, |) '< - +section {構文} < + +section{構文}< +p{ \SATySFi;の構文は以下のように定義されている: } diff --git a/doc/doc-lang.satysfi-lock-expected b/doc/doc-lang.satysfi-lock-expected deleted file mode 100644 index 7ef625546..000000000 --- a/doc/doc-lang.satysfi-lock-expected +++ /dev/null @@ -1,86 +0,0 @@ -language: ^0.1.0 -locks: -- name: registered.d9b4b850ab61a7b68961c6315048b351.annot.0.0.1 - contents: - type: registered - registry_hash_value: d9b4b850ab61a7b68961c6315048b351 - package_name: annot - version: 0.0.1 - dependencies: - - registered.d9b4b850ab61a7b68961c6315048b351.stdlib.0.0.1 - test_only: false -- name: registered.d9b4b850ab61a7b68961c6315048b351.code.0.0.1 - contents: - type: registered - registry_hash_value: d9b4b850ab61a7b68961c6315048b351 - package_name: code - version: 0.0.1 - dependencies: - - registered.d9b4b850ab61a7b68961c6315048b351.stdlib.0.0.1 - - registered.d9b4b850ab61a7b68961c6315048b351.font-latin-modern.0.0.1 - test_only: false -- name: registered.d9b4b850ab61a7b68961c6315048b351.font-ipa-ex.0.0.1 - contents: - type: registered - registry_hash_value: d9b4b850ab61a7b68961c6315048b351 - package_name: font-ipa-ex - version: 0.0.1 - dependencies: [] - test_only: false -- name: registered.d9b4b850ab61a7b68961c6315048b351.font-junicode.0.0.1 - contents: - type: registered - registry_hash_value: d9b4b850ab61a7b68961c6315048b351 - package_name: font-junicode - version: 0.0.1 - dependencies: [] - test_only: false -- name: registered.d9b4b850ab61a7b68961c6315048b351.font-latin-modern.0.0.1 - contents: - type: registered - registry_hash_value: d9b4b850ab61a7b68961c6315048b351 - package_name: font-latin-modern - version: 0.0.1 - dependencies: [] - test_only: false -- name: registered.d9b4b850ab61a7b68961c6315048b351.font-latin-modern-math.0.0.1 - contents: - type: registered - registry_hash_value: d9b4b850ab61a7b68961c6315048b351 - package_name: font-latin-modern-math - version: 0.0.1 - dependencies: [] - test_only: false -- name: registered.d9b4b850ab61a7b68961c6315048b351.math.0.0.1 - contents: - type: registered - registry_hash_value: d9b4b850ab61a7b68961c6315048b351 - package_name: math - version: 0.0.1 - dependencies: - - registered.d9b4b850ab61a7b68961c6315048b351.stdlib.0.0.1 - test_only: false -- name: registered.d9b4b850ab61a7b68961c6315048b351.std-ja.0.0.1 - contents: - type: registered - registry_hash_value: d9b4b850ab61a7b68961c6315048b351 - package_name: std-ja - version: 0.0.1 - dependencies: - - registered.d9b4b850ab61a7b68961c6315048b351.stdlib.0.0.1 - - registered.d9b4b850ab61a7b68961c6315048b351.math.0.0.1 - - registered.d9b4b850ab61a7b68961c6315048b351.annot.0.0.1 - - registered.d9b4b850ab61a7b68961c6315048b351.code.0.0.1 - - registered.d9b4b850ab61a7b68961c6315048b351.font-junicode.0.0.1 - - registered.d9b4b850ab61a7b68961c6315048b351.font-latin-modern.0.0.1 - - registered.d9b4b850ab61a7b68961c6315048b351.font-ipa-ex.0.0.1 - - registered.d9b4b850ab61a7b68961c6315048b351.font-latin-modern-math.0.0.1 - test_only: false -- name: registered.d9b4b850ab61a7b68961c6315048b351.stdlib.0.0.1 - contents: - type: registered - registry_hash_value: d9b4b850ab61a7b68961c6315048b351 - package_name: stdlib - version: 0.0.1 - dependencies: [] - test_only: false diff --git a/doc/doc-primitives.saphe.lock.yaml.expected b/doc/doc-primitives.saphe.lock.yaml.expected new file mode 100644 index 000000000..7c9767238 --- /dev/null +++ b/doc/doc-primitives.saphe.lock.yaml.expected @@ -0,0 +1,139 @@ +saphe: ^0.1.0-alpha.1 +locks: +- name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.annot.0.0.1 + dependencies: + - name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.stdlib.0.0.1 + used_as: Stdlib + test_only: false + registered: + registry_hash_value: 6f2b80e9bb7c4e8af2104999fc25dbb3 + package_name: annot + version: 0.0.1 +- name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.code.0.0.1 + dependencies: + - name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.stdlib.0.0.1 + used_as: Stdlib + - name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.font-latin-modern.0.0.1 + used_as: FontLatinModern + test_only: false + registered: + registry_hash_value: 6f2b80e9bb7c4e8af2104999fc25dbb3 + package_name: code + version: 0.0.1 +- name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.font-ipa-ex.0.0.1 + dependencies: [] + test_only: false + registered: + registry_hash_value: 6f2b80e9bb7c4e8af2104999fc25dbb3 + package_name: font-ipa-ex + version: 0.0.1 +- name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.font-junicode.0.0.1 + dependencies: [] + test_only: false + registered: + registry_hash_value: 6f2b80e9bb7c4e8af2104999fc25dbb3 + package_name: font-junicode + version: 0.0.1 +- name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.font-latin-modern.0.0.1 + dependencies: [] + test_only: false + registered: + registry_hash_value: 6f2b80e9bb7c4e8af2104999fc25dbb3 + package_name: font-latin-modern + version: 0.0.1 +- name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.font-latin-modern-math.0.0.1 + dependencies: [] + test_only: false + registered: + registry_hash_value: 6f2b80e9bb7c4e8af2104999fc25dbb3 + package_name: font-latin-modern-math + version: 0.0.1 +- name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.footnote-scheme.0.0.1 + dependencies: + - name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.stdlib.0.0.1 + used_as: Stdlib + test_only: false + registered: + registry_hash_value: 6f2b80e9bb7c4e8af2104999fc25dbb3 + package_name: footnote-scheme + version: 0.0.1 +- name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.hyph-english.0.0.1 + dependencies: [] + test_only: false + registered: + registry_hash_value: 6f2b80e9bb7c4e8af2104999fc25dbb3 + package_name: hyph-english + version: 0.0.1 +- name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.itemize.0.0.1 + dependencies: + - name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.stdlib.0.0.1 + used_as: Stdlib + test_only: false + registered: + registry_hash_value: 6f2b80e9bb7c4e8af2104999fc25dbb3 + package_name: itemize + version: 0.0.1 +- name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.math.0.0.1 + dependencies: + - name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.stdlib.0.0.1 + used_as: Stdlib + test_only: false + registered: + registry_hash_value: 6f2b80e9bb7c4e8af2104999fc25dbb3 + package_name: math + version: 0.0.1 +- name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.std-ja-book.0.0.1 + dependencies: + - name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.stdlib.0.0.1 + used_as: Stdlib + - name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.math.0.0.1 + used_as: Math + - name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.annot.0.0.1 + used_as: Annot + - name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.code.0.0.1 + used_as: Code + - name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.footnote-scheme.0.0.1 + used_as: FootnoteScheme + - name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.font-junicode.0.0.1 + used_as: FontJunicode + - name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.font-latin-modern.0.0.1 + used_as: FontLatinModern + - name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.font-ipa-ex.0.0.1 + used_as: FontIpaEx + - name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.font-latin-modern-math.0.0.1 + used_as: FontLatinModernMath + - name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.hyph-english.0.0.1 + used_as: HyphEnglish + - name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.unidata.0.0.1 + used_as: Unidata + test_only: false + registered: + registry_hash_value: 6f2b80e9bb7c4e8af2104999fc25dbb3 + package_name: std-ja-book + version: 0.0.1 +- name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.stdlib.0.0.1 + dependencies: [] + test_only: false + registered: + registry_hash_value: 6f2b80e9bb7c4e8af2104999fc25dbb3 + package_name: stdlib + version: 0.0.1 +- name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.unidata.0.0.1 + dependencies: [] + test_only: false + registered: + registry_hash_value: 6f2b80e9bb7c4e8af2104999fc25dbb3 + package_name: unidata + version: 0.0.1 +dependencies: +- name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.font-latin-modern.0.0.1 + used_as: FontLatinModern +- name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.itemize.0.0.1 + used_as: Itemize +- name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.math.0.0.1 + used_as: Math +- name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.std-ja-book.0.0.1 + used_as: StdJaBook +- name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.stdlib.0.0.1 + used_as: Stdlib +test_dependencies: [] diff --git a/doc/doc-primitives.saphe.yaml b/doc/doc-primitives.saphe.yaml new file mode 100644 index 000000000..c17493f9a --- /dev/null +++ b/doc/doc-primitives.saphe.yaml @@ -0,0 +1,37 @@ +saphe: "^0.1.0-alpha.1" +satysfi: "^0.1.0-alpha.1" +authors: + - "Takashi Suwa" +registries: + - name: "default" + git: + url: "https://github.com/SATySFi/default-registry" + branch: "temp-dev-saphe" +contents: + document: {} +dependencies: + - used_as: "Stdlib" + registered: + registry: "default" + name: "stdlib" + requirement: "^0.0.1" + - used_as: "Math" + registered: + registry: "default" + name: "math" + requirement: "^0.0.1" + - used_as: "Itemize" + registered: + registry: "default" + name: "itemize" + requirement: "^0.0.1" + - used_as: "StdJaBook" + registered: + registry: "default" + name: "std-ja-book" + requirement: "^0.0.1" + - used_as: "FontLatinModern" + registered: + registry: "default" + name: "font-latin-modern" + requirement: "^0.0.1" diff --git a/doc/doc-primitives.saty b/doc/doc-primitives.saty index d70ac6911..a129126a2 100644 --- a/doc/doc-primitives.saty +++ b/doc/doc-primitives.saty @@ -1,22 +1,5 @@ -#[config (| - registries = [ - (| - name = `default`, - remote = - Git(| - url = `https://github.com/SATySFi/default-registry`, - branch = `format-1`, - |) - |) - ], - dependencies = [ - (| name = `stdlib`, registry = `default`, requirement = `^0.0.1` |), - (| name = `math`, registry = `default`, requirement = `^0.0.1` |), - (| name = `itemize`, registry = `default`, requirement = `^0.0.1` |), - (| name = `std-ja-book`, registry = `default`, requirement = `^0.0.1` |), - ], -|)] -use package open Stdlib.Pervasives +use package open Stdlib +use package open Stdlib.Logo use package open Math use package open Itemize use package open StdJaBook @@ -27,8 +10,8 @@ document ?( show-toc = true, ) (| title = { - \SATySFi;の\fil-both;\no-break{基本型}と - \fil-both;\no-break{プリミティヴ} + \SATySFi;の\Inline.fil-both;\Inline.no-break{基本型}と + \Inline.fil-both;\Inline.no-break{プリミティヴ} }, author = {Takashi SUWA}, |) '< diff --git a/doc/doc-primitives.satysfi-lock-expected b/doc/doc-primitives.satysfi-lock-expected deleted file mode 100644 index e05106bef..000000000 --- a/doc/doc-primitives.satysfi-lock-expected +++ /dev/null @@ -1,105 +0,0 @@ -language: ^0.1.0 -locks: -- name: registered.d9b4b850ab61a7b68961c6315048b351.annot.0.0.1 - contents: - type: registered - registry_hash_value: d9b4b850ab61a7b68961c6315048b351 - package_name: annot - version: 0.0.1 - dependencies: - - registered.d9b4b850ab61a7b68961c6315048b351.stdlib.0.0.1 - test_only: false -- name: registered.d9b4b850ab61a7b68961c6315048b351.code.0.0.1 - contents: - type: registered - registry_hash_value: d9b4b850ab61a7b68961c6315048b351 - package_name: code - version: 0.0.1 - dependencies: - - registered.d9b4b850ab61a7b68961c6315048b351.stdlib.0.0.1 - - registered.d9b4b850ab61a7b68961c6315048b351.font-latin-modern.0.0.1 - test_only: false -- name: registered.d9b4b850ab61a7b68961c6315048b351.font-ipa-ex.0.0.1 - contents: - type: registered - registry_hash_value: d9b4b850ab61a7b68961c6315048b351 - package_name: font-ipa-ex - version: 0.0.1 - dependencies: [] - test_only: false -- name: registered.d9b4b850ab61a7b68961c6315048b351.font-junicode.0.0.1 - contents: - type: registered - registry_hash_value: d9b4b850ab61a7b68961c6315048b351 - package_name: font-junicode - version: 0.0.1 - dependencies: [] - test_only: false -- name: registered.d9b4b850ab61a7b68961c6315048b351.font-latin-modern.0.0.1 - contents: - type: registered - registry_hash_value: d9b4b850ab61a7b68961c6315048b351 - package_name: font-latin-modern - version: 0.0.1 - dependencies: [] - test_only: false -- name: registered.d9b4b850ab61a7b68961c6315048b351.font-latin-modern-math.0.0.1 - contents: - type: registered - registry_hash_value: d9b4b850ab61a7b68961c6315048b351 - package_name: font-latin-modern-math - version: 0.0.1 - dependencies: [] - test_only: false -- name: registered.d9b4b850ab61a7b68961c6315048b351.footnote-scheme.0.0.1 - contents: - type: registered - registry_hash_value: d9b4b850ab61a7b68961c6315048b351 - package_name: footnote-scheme - version: 0.0.1 - dependencies: - - registered.d9b4b850ab61a7b68961c6315048b351.stdlib.0.0.1 - test_only: false -- name: registered.d9b4b850ab61a7b68961c6315048b351.itemize.0.0.1 - contents: - type: registered - registry_hash_value: d9b4b850ab61a7b68961c6315048b351 - package_name: itemize - version: 0.0.1 - dependencies: - - registered.d9b4b850ab61a7b68961c6315048b351.stdlib.0.0.1 - test_only: false -- name: registered.d9b4b850ab61a7b68961c6315048b351.math.0.0.1 - contents: - type: registered - registry_hash_value: d9b4b850ab61a7b68961c6315048b351 - package_name: math - version: 0.0.1 - dependencies: - - registered.d9b4b850ab61a7b68961c6315048b351.stdlib.0.0.1 - test_only: false -- name: registered.d9b4b850ab61a7b68961c6315048b351.std-ja-book.0.0.1 - contents: - type: registered - registry_hash_value: d9b4b850ab61a7b68961c6315048b351 - package_name: std-ja-book - version: 0.0.1 - dependencies: - - registered.d9b4b850ab61a7b68961c6315048b351.stdlib.0.0.1 - - registered.d9b4b850ab61a7b68961c6315048b351.math.0.0.1 - - registered.d9b4b850ab61a7b68961c6315048b351.annot.0.0.1 - - registered.d9b4b850ab61a7b68961c6315048b351.code.0.0.1 - - registered.d9b4b850ab61a7b68961c6315048b351.footnote-scheme.0.0.1 - - registered.d9b4b850ab61a7b68961c6315048b351.font-junicode.0.0.1 - - registered.d9b4b850ab61a7b68961c6315048b351.font-latin-modern.0.0.1 - - registered.d9b4b850ab61a7b68961c6315048b351.font-ipa-ex.0.0.1 - - registered.d9b4b850ab61a7b68961c6315048b351.font-latin-modern-math.0.0.1 - test_only: false -- name: registered.d9b4b850ab61a7b68961c6315048b351.stdlib.0.0.1 - contents: - type: registered - registry_hash_value: d9b4b850ab61a7b68961c6315048b351 - package_name: stdlib - version: 0.0.1 - dependencies: [] - test_only: false diff --git a/doc/local.satyh b/doc/local.satyh index d3d0a1171..fb72fa4e3 100644 --- a/doc/local.satyh +++ b/doc/local.satyh @@ -13,22 +13,20 @@ module Local = struct | Record of list (inline-text * type-syntax) | FuncType of type-syntax * type-syntax - val ( --> ) ty1 ty2 = FuncType(ty1, ty2) - % ${\paren{#m1 \to #m2}} val type-name name = TypeName(name) - % text-in-math MathOrd (fun ctx -> read-inline ctx name) val type-constructor name tylst = TypeConstructor(name, tylst) - val type-tuple tylst = Tuple(tylst) - - val type-record tylst = Record(tylst) + val type-tuple tylst = + Tuple(tylst) + val type-record tylst = + Record(tylst) val tU = type-name {unit} val tI = type-name {int} @@ -71,15 +69,11 @@ module Local = struct val tPROD tylst = type-tuple tylst val tRECORD tylst = type-record tylst val tANY = type-name {Any} - % val token = type-name {list} in - % ${\paren{#m}\math-skip!(4pt)#token} - val rec math-of-type ctx ty = match ty with | TypeName(it) -> embed-inline-to-math MathOrd (read-inline ctx it) - | TypeConstructor(it, tylst) -> let mlst = tylst |> List.map (fun ty -> ( @@ -94,7 +88,6 @@ module Local = struct in Math.join-boxes ctx (read-math ctx ${\Math.math-skip!(4pt)}) (List.append mlst [ embed-inline-to-math MathOrd (read-inline ctx it) ]) - | Tuple(tylst) -> let mlst = tylst |> List.map (fun ty -> ( @@ -108,7 +101,6 @@ module Local = struct )) in Math.paren ctx (Math.join-boxes ctx (read-math ctx ${\Math.ast}) mlst) - | Record(lst) -> let mlst = lst |> List.map (fun (key, ty) -> ( @@ -118,7 +110,6 @@ module Local = struct in let m = Math.join-boxes ctx (read-math ctx ${\;\Math.math-skip!(4pt)}) mlst in LocalParen.record-paren ctx m - | FuncType(ty1, ty2) -> let m1 = math-of-type ctx ty1 in let m2 = math-of-type ctx ty2 in @@ -131,7 +122,6 @@ module Local = struct math-concat (math-concat m1 (read-math ctx ${\Math.to})) m2 end - val math ctx \math-of-type ty = math-of-type ctx ty @@ -143,17 +133,14 @@ module Local = struct if n <= 0 then ibacc else repeat-inline (ibacc ++ ib) (n - 1) ib - val inline ctx \repeat n inner = let ib = read-inline ctx inner in repeat-inline inline-nil n ib - val gap-paragraph = 12pt val gap-command = 6pt - val command-scheme ctx ib-name ty inner = let ib-colon = read-inline ctx {\ :\ } in let indent = (ctx |> get-font-size) *' 2. in @@ -164,31 +151,27 @@ module Local = struct +++ block-frame-breakable (ctx |> set-paragraph-margin gap-command gap-paragraph) (indent, 0pt, 0pt, 0pt) VDecoSet.empty (fun ctx -> - Pervasives.form-paragraph (ctx |> set-paragraph-margin 0pt 0pt) (ib-inner ++ inline-fil) - ) - + Block.form-paragraph (ctx |> set-paragraph-margin 0pt 0pt) (ib-inner ++ inline-fil) + ) val name-context ctx = ctx |> set-dominant-narrow-script Latin |> set-font Latin (FontLatinModern.mono, 1., 0.) |> set-text-color Color.red - val block ctx +command name ty inner = let ctx-name = name-context ctx in let ib-name = read-inline ctx-name (embed-string name) in - command-scheme ctx ib-name ty inner - + command-scheme ctx ib-name ty inner val mutable flag <- true - val block ctx +commands namelst ty inner = let ctx-name = name-context ctx in let ib-comma = read-inline ctx {,\ } in let () = flag <- true in let ib-name = - namelst |> List.fold-left (fun acc name -> ( + namelst |> List.fold (fun acc name -> ( let ib-name = read-inline ctx-name (embed-string name) in if !flag then let () = flag <- false in @@ -197,26 +180,22 @@ module Local = struct acc ++ ib-comma ++ ib-name )) inline-nil in - command-scheme ctx ib-name ty inner - + command-scheme ctx ib-name ty inner val block ctx +type ty inner = let font-size = get-font-size ctx in let quad = discretionary 1000 (inline-skip font-size) inline-nil inline-nil in let indent = (ctx |> get-font-size) *' 2. in let ib-inner = read-inline ctx inner in - block-frame-breakable ctx (indent, 0pt, 0pt, 0pt) VDecoSet.empty - (fun ctx -> - Pervasives.form-paragraph (ctx |> set-paragraph-margin 0pt 0pt) - (inline-skip (0pt -' indent) ++ embed-math ctx (math-of-type ctx ty) ++ quad ++ ib-inner ++ inline-fil) - ) - + block-frame-breakable ctx (indent, 0pt, 0pt, 0pt) VDecoSet.empty (fun ctx -> + Block.form-paragraph (ctx |> set-paragraph-margin 0pt 0pt) + (inline-skip (0pt -' indent) ++ embed-math ctx (math-of-type ctx ty) ++ quad ++ ib-inner ++ inline-fil) + ) val inline \subject-to-change = {\StdJaBook.emph{〔今後仕様変更の可能性あり〕}} val inline \discouraged = {\StdJaBook.emph{〔使用非推奨〕}} - val inline ctx \meta m = let ctx-meta = ctx |> set-text-color Color.orange @@ -224,7 +203,6 @@ module Local = struct in embed-math ctx-meta (read-math ctx-meta m) - val inline ctx \code inner = let pads-code = (2pt, 2pt, 2pt, 2pt) in let decoset-code = HDecoSet.rectangle-round-fill 4pt 2pt (Color.gray 0.9) in @@ -235,6 +213,6 @@ module Local = struct inline-frame-breakable pads-code decoset-code (read-inline ctx-code inner) in - script-guard Latin ib-frame + script-guard Latin ib-frame end diff --git a/doc/math1.saphe.lock.yaml.expected b/doc/math1.saphe.lock.yaml.expected new file mode 100644 index 000000000..29d2eaed9 --- /dev/null +++ b/doc/math1.saphe.lock.yaml.expected @@ -0,0 +1,137 @@ +saphe: ^0.1.0-alpha.1 +locks: +- name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.annot.0.0.1 + dependencies: + - name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.stdlib.0.0.1 + used_as: Stdlib + test_only: false + registered: + registry_hash_value: 6f2b80e9bb7c4e8af2104999fc25dbb3 + package_name: annot + version: 0.0.1 +- name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.code.0.0.1 + dependencies: + - name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.stdlib.0.0.1 + used_as: Stdlib + - name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.font-latin-modern.0.0.1 + used_as: FontLatinModern + test_only: false + registered: + registry_hash_value: 6f2b80e9bb7c4e8af2104999fc25dbb3 + package_name: code + version: 0.0.1 +- name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.font-ipa-ex.0.0.1 + dependencies: [] + test_only: false + registered: + registry_hash_value: 6f2b80e9bb7c4e8af2104999fc25dbb3 + package_name: font-ipa-ex + version: 0.0.1 +- name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.font-junicode.0.0.1 + dependencies: [] + test_only: false + registered: + registry_hash_value: 6f2b80e9bb7c4e8af2104999fc25dbb3 + package_name: font-junicode + version: 0.0.1 +- name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.font-latin-modern.0.0.1 + dependencies: [] + test_only: false + registered: + registry_hash_value: 6f2b80e9bb7c4e8af2104999fc25dbb3 + package_name: font-latin-modern + version: 0.0.1 +- name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.font-latin-modern-math.0.0.1 + dependencies: [] + test_only: false + registered: + registry_hash_value: 6f2b80e9bb7c4e8af2104999fc25dbb3 + package_name: font-latin-modern-math + version: 0.0.1 +- name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.hyph-english.0.0.1 + dependencies: [] + test_only: false + registered: + registry_hash_value: 6f2b80e9bb7c4e8af2104999fc25dbb3 + package_name: hyph-english + version: 0.0.1 +- name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.math.0.0.1 + dependencies: + - name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.stdlib.0.0.1 + used_as: Stdlib + test_only: false + registered: + registry_hash_value: 6f2b80e9bb7c4e8af2104999fc25dbb3 + package_name: math + version: 0.0.1 +- name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.proof.0.0.1 + dependencies: + - name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.stdlib.0.0.1 + used_as: Stdlib + test_only: false + registered: + registry_hash_value: 6f2b80e9bb7c4e8af2104999fc25dbb3 + package_name: proof + version: 0.0.1 +- name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.std-ja.0.0.1 + dependencies: + - name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.stdlib.0.0.1 + used_as: Stdlib + - name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.math.0.0.1 + used_as: Math + - name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.annot.0.0.1 + used_as: Annot + - name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.code.0.0.1 + used_as: Code + - name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.font-junicode.0.0.1 + used_as: FontJunicode + - name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.font-latin-modern.0.0.1 + used_as: FontLatinModern + - name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.font-ipa-ex.0.0.1 + used_as: FontIpaEx + - name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.font-latin-modern-math.0.0.1 + used_as: FontLatinModernMath + - name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.hyph-english.0.0.1 + used_as: HyphEnglish + - name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.unidata.0.0.1 + used_as: Unidata + test_only: false + registered: + registry_hash_value: 6f2b80e9bb7c4e8af2104999fc25dbb3 + package_name: std-ja + version: 0.0.1 +- name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.stdlib.0.0.1 + dependencies: [] + test_only: false + registered: + registry_hash_value: 6f2b80e9bb7c4e8af2104999fc25dbb3 + package_name: stdlib + version: 0.0.1 +- name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.tabular.0.0.1 + dependencies: + - name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.stdlib.0.0.1 + used_as: Stdlib + test_only: false + registered: + registry_hash_value: 6f2b80e9bb7c4e8af2104999fc25dbb3 + package_name: tabular + version: 0.0.1 +- name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.unidata.0.0.1 + dependencies: [] + test_only: false + registered: + registry_hash_value: 6f2b80e9bb7c4e8af2104999fc25dbb3 + package_name: unidata + version: 0.0.1 +dependencies: +- name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.math.0.0.1 + used_as: Math +- name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.proof.0.0.1 + used_as: Proof +- name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.std-ja.0.0.1 + used_as: StdJa +- name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.stdlib.0.0.1 + used_as: Stdlib +- name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.tabular.0.0.1 + used_as: Tabular +test_dependencies: [] diff --git a/doc/math1.saphe.yaml b/doc/math1.saphe.yaml new file mode 100644 index 000000000..39bbbd5a6 --- /dev/null +++ b/doc/math1.saphe.yaml @@ -0,0 +1,37 @@ +saphe: "^0.1.0-alpha.1" +satysfi: "^0.1.0-alpha.1" +authors: + - "Takashi Suwa" +registries: + - name: "default" + git: + url: "https://github.com/SATySFi/default-registry" + branch: "temp-dev-saphe" +contents: + document: {} +dependencies: + - used_as: "Stdlib" + registered: + registry: "default" + name: "stdlib" + requirement: "^0.0.1" + - used_as: "Math" + registered: + registry: "default" + name: "math" + requirement: "^0.0.1" + - used_as: "Proof" + registered: + registry: "default" + name: "proof" + requirement: "^0.0.1" + - used_as: "Tabular" + registered: + registry: "default" + name: "tabular" + requirement: "^0.0.1" + - used_as: "StdJa" + registered: + registry: "default" + name: "std-ja" + requirement: "^0.0.1" diff --git a/doc/math1.saty b/doc/math1.saty index 2fa08f52d..84fcf181b 100644 --- a/doc/math1.saty +++ b/doc/math1.saty @@ -1,24 +1,5 @@ -#[config (| - registries = [ - (| - name = `default`, - remote = - Git(| - url = `https://github.com/SATySFi/default-registry`, - branch = `format-1`, - |) - |) - ], - dependencies = [ - (| name = `stdlib`, registry = `default`, requirement = `^0.0.1` |), - (| name = `math`, registry = `default`, requirement = `^0.0.1` |), - (| name = `proof`, registry = `default`, requirement = `^0.0.1` |), - (| name = `tabular`, registry = `default`, requirement = `^0.0.1` |), - (| name = `std-ja`, registry = `default`, requirement = `^0.0.1` |), - ], -|)] use package open Stdlib -use package open Stdlib.Pervasives +use package open Stdlib.Logo use package open Math use package open Proof use package open Tabular @@ -27,6 +8,24 @@ use package open StdJa let math ctx \overwrite mf ma mb = read-math ctx ${#mf\sqbracket{#ma \mapsto #mb}} in +let math-space = + embed-inline-to-math MathOrd (inline-skip 30pt) +in +let math ctx \and-also = + math-space +in +let math ctx \tyjd tyenv tm ty = + read-math ctx ${#tyenv \vdash #tm \colon-rel #ty} +in +let math ctx \synteq = + read-math ctx ${\equiv} +in +let math ctx \dot-punct = + math-char ctx MathPunct `.` +in +let math ctx \tmabstyped var ty body = + read-math ctx ${\lambda #var \colon-rel #ty \dot-punct #body} +in document ?( show-title = false, @@ -41,11 +40,11 @@ document ?( Italics correction and kerning: ${\paren{F^n} \paren{F} = \paren{G \frac{M m}{R^2}}^{n + 1}}, - Big math: ${\paren{\frac{\paren{\frac{A}{B} + C}}{D^{\paren{n - 1}}}}_2},\fil; + Big math: ${\paren{\frac{\paren{\frac{A}{B} + C}}{D^{\paren{n - 1}}}}_2},\Inline.fil; parentheses: ${\paren{\paren{\paren{A} + B} + C}}, ${\brace{\brace{\brace{A} + B} + C}}, - radical: ${2 \sqrt{3} + \frac{2}{\sqrt{5}} + \frac{1}{\sqrt{x^2 + 1}}}.\fil; + radical: ${2 \sqrt{3} + \frac{2}{\sqrt{5}} + \frac{1}{\sqrt{x^2 + 1}}}.\Inline.fil; The solution of the equation ${a x^2 + b x + c = 0} as to ${x} is ${x = \frac{-b \pm \sqrt{b^2 - 4ac}}{2a}}. @@ -86,7 +85,7 @@ document ?( bold Fraktur: ${\math-style!(MathBoldFraktur ){#test}}, double struck: ${\math-style!(MathDoubleStruck){#test}}. }); - +p {Typing rule is defined as follows:} + +p {Typing rules are defined as follows:} +math(${ \derive{|\paren{\app{\Gamma}{x} \synteq \tau}|}{ \tyjd{\Gamma}{x}{\tau} @@ -113,6 +112,6 @@ document ?( \tabular(fun cellf multif empty -> [ [multif 2 1 {The}, cellf {quick}, cellf {brown}, multif 1 2 {fox jumps over}, empty,], [empty, multif 1 2 {the}, empty, cellf {lazy}, cellf {dog},], - ])(fun xs ys -> Gr.empty); + ])(fun xs ys -> Graphics.empty); } > diff --git a/doc/math1.satysfi-lock-expected b/doc/math1.satysfi-lock-expected deleted file mode 100644 index 2b5f553b9..000000000 --- a/doc/math1.satysfi-lock-expected +++ /dev/null @@ -1,104 +0,0 @@ -language: ^0.1.0 -locks: -- name: registered.d9b4b850ab61a7b68961c6315048b351.annot.0.0.1 - contents: - type: registered - registry_hash_value: d9b4b850ab61a7b68961c6315048b351 - package_name: annot - version: 0.0.1 - dependencies: - - registered.d9b4b850ab61a7b68961c6315048b351.stdlib.0.0.1 - test_only: false -- name: registered.d9b4b850ab61a7b68961c6315048b351.code.0.0.1 - contents: - type: registered - registry_hash_value: d9b4b850ab61a7b68961c6315048b351 - package_name: code - version: 0.0.1 - dependencies: - - registered.d9b4b850ab61a7b68961c6315048b351.stdlib.0.0.1 - - registered.d9b4b850ab61a7b68961c6315048b351.font-latin-modern.0.0.1 - test_only: false -- name: registered.d9b4b850ab61a7b68961c6315048b351.font-ipa-ex.0.0.1 - contents: - type: registered - registry_hash_value: d9b4b850ab61a7b68961c6315048b351 - package_name: font-ipa-ex - version: 0.0.1 - dependencies: [] - test_only: false -- name: registered.d9b4b850ab61a7b68961c6315048b351.font-junicode.0.0.1 - contents: - type: registered - registry_hash_value: d9b4b850ab61a7b68961c6315048b351 - package_name: font-junicode - version: 0.0.1 - dependencies: [] - test_only: false -- name: registered.d9b4b850ab61a7b68961c6315048b351.font-latin-modern.0.0.1 - contents: - type: registered - registry_hash_value: d9b4b850ab61a7b68961c6315048b351 - package_name: font-latin-modern - version: 0.0.1 - dependencies: [] - test_only: false -- name: registered.d9b4b850ab61a7b68961c6315048b351.font-latin-modern-math.0.0.1 - contents: - type: registered - registry_hash_value: d9b4b850ab61a7b68961c6315048b351 - package_name: font-latin-modern-math - version: 0.0.1 - dependencies: [] - test_only: false -- name: registered.d9b4b850ab61a7b68961c6315048b351.math.0.0.1 - contents: - type: registered - registry_hash_value: d9b4b850ab61a7b68961c6315048b351 - package_name: math - version: 0.0.1 - dependencies: - - registered.d9b4b850ab61a7b68961c6315048b351.stdlib.0.0.1 - test_only: false -- name: registered.d9b4b850ab61a7b68961c6315048b351.proof.0.0.1 - contents: - type: registered - registry_hash_value: d9b4b850ab61a7b68961c6315048b351 - package_name: proof - version: 0.0.1 - dependencies: - - registered.d9b4b850ab61a7b68961c6315048b351.stdlib.0.0.1 - test_only: false -- name: registered.d9b4b850ab61a7b68961c6315048b351.std-ja.0.0.1 - contents: - type: registered - registry_hash_value: d9b4b850ab61a7b68961c6315048b351 - package_name: std-ja - version: 0.0.1 - dependencies: - - registered.d9b4b850ab61a7b68961c6315048b351.stdlib.0.0.1 - - registered.d9b4b850ab61a7b68961c6315048b351.math.0.0.1 - - registered.d9b4b850ab61a7b68961c6315048b351.annot.0.0.1 - - registered.d9b4b850ab61a7b68961c6315048b351.code.0.0.1 - - registered.d9b4b850ab61a7b68961c6315048b351.font-junicode.0.0.1 - - registered.d9b4b850ab61a7b68961c6315048b351.font-latin-modern.0.0.1 - - registered.d9b4b850ab61a7b68961c6315048b351.font-ipa-ex.0.0.1 - - registered.d9b4b850ab61a7b68961c6315048b351.font-latin-modern-math.0.0.1 - test_only: false -- name: registered.d9b4b850ab61a7b68961c6315048b351.stdlib.0.0.1 - contents: - type: registered - registry_hash_value: d9b4b850ab61a7b68961c6315048b351 - package_name: stdlib - version: 0.0.1 - dependencies: [] - test_only: false -- name: registered.d9b4b850ab61a7b68961c6315048b351.tabular.0.0.1 - contents: - type: registered - registry_hash_value: d9b4b850ab61a7b68961c6315048b351 - package_name: tabular - version: 0.0.1 - dependencies: - - registered.d9b4b850ab61a7b68961c6315048b351.stdlib.0.0.1 - test_only: false diff --git a/download-fonts.sh b/download-fonts.sh deleted file mode 100755 index 07fd8712f..000000000 --- a/download-fonts.sh +++ /dev/null @@ -1,70 +0,0 @@ -#!/usr/bin/env bash - -set -ue - -CACHE=temp -PACKAGES=lib-satysfi/packages -MESSAGE_PREFIX="[download-fonts.sh]" -cd "$(dirname "$0")" -mkdir -p "$CACHE" - -show_message() { - echo "$MESSAGE_PREFIX $1." -} - -if command shasum --version >/dev/null 2>&1; then - show_message "Using shasum" - SHA1SUM=shasum -elif command sha1sum --version >/dev/null 2>&1; then - show_message "Using sha1sum" - SHA1SUM=sha1sum -else - echo "No SHA checksum checkers found. Please install shasum or sha1sum" >&2 - exit 1 -fi - -validate_file() { - ( - NAME="$1" - cd "$CACHE" - $SHA1SUM --check "$NAME.sha1" - ) -} - -download_file() { - ( - NAME="$1" - URL="$2" - if [ -f "$CACHE/$NAME" ] && validate_file "$NAME"; then - show_message "'$NAME' found in '$CACHE/'." - else - show_message "downloading '$NAME' ..." - wget -O "$CACHE/$NAME" "$URL" - show_message "finished downloading '$NAME'." - fi - ) -} - -# Latin Modern -NAME=lm2.004otf -download_file "$NAME.zip" "https://www.gust.org.pl/projects/e-foundry/latin-modern/download/lm2.004otf.zip" -unzip -o "$CACHE/$NAME.zip" "*.otf" -d "$PACKAGES"/font-latin-modern/font-latin-modern.0.0.1/fonts/ - -# Latin Modern Math -NAME=latinmodern-math-1959 -download_file "$NAME.zip" "https://www.gust.org.pl/projects/e-foundry/lm-math/download/latinmodern-math-1959.zip" -unzip -o "$CACHE/$NAME.zip" "*.otf" -d "$CACHE/" -cp "$CACHE"/latinmodern-math-1959/otf/latinmodern-math.otf "$PACKAGES"/font-latin-modern-math/font-latin-modern-math.0.0.1/fonts/ - -# Junicode -NAME=junicode-1.002 -download_file "$NAME.zip" "http://downloads.sourceforge.net/project/junicode/junicode/junicode-1.002/junicode-1.002.zip" -unzip -o "$CACHE/$NAME.zip" "*.ttf" -d "$PACKAGES"/font-junicode/font-junicode.0.0.1/fonts/ - -# IPAexfont -NAME=IPAexfont00401 -download_file "$NAME.zip" "https://moji.or.jp/wp-content/ipafont/IPAexfont/IPAexfont00401.zip" -unzip -o "$CACHE/$NAME.zip" "*.ttf" -d "$CACHE/" -cp "$CACHE"/IPAexfont00401/ipaexg.ttf "$PACKAGES"/font-ipa-ex/font-ipa-ex.0.0.1/fonts/ -cp "$CACHE"/IPAexfont00401/ipaexm.ttf "$PACKAGES"/font-ipa-ex/font-ipa-ex.0.0.1/fonts/ -show_message "end." diff --git a/dune-project b/dune-project index 66af931bf..bb438737c 100644 --- a/dune-project +++ b/dune-project @@ -1,6 +1,6 @@ (lang dune 3.16) -(using menhir 2.1) +(using menhir 3.0) (formatting (enabled_for dune)) @@ -20,6 +20,7 @@ (package (name satysfi) + (version 0.1.0~alpha.1) (synopsis "A statically-typed, functional typesetting system") (description "SATySFi is a typesetting system equipped with a statically-typed, functional programming language. It consists mainly of two “layers” ― the text layer and the program layer. The former is for writing documents in LaTeX-like syntax. The latter, which has OCaml-like syntax, is for defining functions and commands. SATySFi enables you to write documents markuped with flexible commands of your own making. In addition, its informative type error reporting will be a good help to your writing.") @@ -78,6 +79,8 @@ (and (>= 1.10.4) (< 2.0))) + satysfi-common + satysfi-util (semver2 (and (>= 1.2.0) @@ -100,11 +103,95 @@ (< 16.0))) (yaml (and - (>= 2.1.0) - (< 3.0))) + (>= 3.2.0) + (< 4.0))) (yojson-with-position (= 1.4.2+satysfi)) (0install-solver (and - (>= 2.0) + (>= 2.18) (< 3.0))))) + +(package + (name saphe) + (version 0.1.0~alpha.1) + (synopsis "A prototype ecosystem for SATySFi >= 0.1.0") + (depends + (0install-solver + (>= 2.18)) + (ocaml + (and + (>= 4.12.0) + (< 5.0.0))) + (alcotest + (and + :with-test + (>= 1.4.0))) + (cmdliner + (and + (>= 1.1.1) + (< 2.0))) + (ppx_deriving + (and + (>= 5.2.1) + (< 6.0))) + satysfi-common + satysfi-util + (uri + (and + (>= 4.2.0) + (< 5.0))))) + +(package + (name satysfi-util) + (version 0.1.0~alpha.1) + (synopsis "A utility library for SATySFi and Saphe") + (depends + (ocaml + (and + (>= 4.12.0) + (< 5.0.0))) + (alcotest + (and + :with-test + (>= 1.4.0))) + core_unix + (ocamlgraph + (and + (>= 2.0.0) + (< 3.0))) + (ppx_deriving + (and + (>= 5.2.1) + (< 6.0))) + (semver2 + (and + (>= 1.2.0) + (< 2.0))) + (uutf + (and + (>= 1.0.3) + (< 2.0))) + (yaml + (and + (>= 3.2.0) + (< 4.0))))) + +(package + (name satysfi-common) + (version 0.1.0~alpha.1) + (synopsis "A library of modules used by SATySFi and Saphe in common") + (depends + (ocaml + (and + (>= 4.12.0) + (< 5.0.0))) + (alcotest + (and + :with-test + (>= 1.4.0))) + (ppx_deriving + (and + (>= 5.2.1) + (< 6.0))) + satysfi-util)) diff --git a/install-libs.sh b/install-libs.sh deleted file mode 100755 index e9604fbed..000000000 --- a/install-libs.sh +++ /dev/null @@ -1,17 +0,0 @@ -#!/usr/bin/env bash - -LIBDIR=${1:-/usr/local/share/satysfi} - -install -d "${LIBDIR}" -install -m 644 lib-satysfi/satysfi-library-root.yaml "${LIBDIR}/satysfi-library-root.yaml" -install -d "${LIBDIR}/unidata" -install -m 644 lib-satysfi/unidata/*.txt "${LIBDIR}/unidata" -install -d "${LIBDIR}/hyph" -install -m 644 lib-satysfi/hyph/* "${LIBDIR}/hyph" - -# It is no longer necessary to install packages beforehand due to the package system: -# -# install -d "${LIBDIR}/packages" -# (cd lib-satysfi && find packages -type f -exec install -Dm 644 "{}" "${LIBDIR}/{}" \;) -# install -d "${LIBDIR}/registries" -# (cd lib-satysfi && find registries -type f -exec install -Dm 644 "{}" "${LIBDIR}/{}" \;) diff --git a/lib-satysfi/packages/.gitignore b/lib-satysfi/packages/.gitignore index 28e8ef900..f1af02d7b 100644 --- a/lib-satysfi/packages/.gitignore +++ b/lib-satysfi/packages/.gitignore @@ -1 +1,4 @@ *.satysfi-lock +saphe.lock.yaml +satysfi-envelope.yaml +satysfi-deps.yaml diff --git a/lib-satysfi/packages/annot/annot.0.0.1/package.satysfi-lock-expected b/lib-satysfi/packages/annot/annot.0.0.1/package.satysfi-lock-expected deleted file mode 100644 index 22b630ca5..000000000 --- a/lib-satysfi/packages/annot/annot.0.0.1/package.satysfi-lock-expected +++ /dev/null @@ -1,10 +0,0 @@ -language: ^0.1.0 -locks: -- name: registered.d9b4b850ab61a7b68961c6315048b351.stdlib.0.0.1 - contents: - type: registered - registry_hash_value: d9b4b850ab61a7b68961c6315048b351 - package_name: stdlib - version: 0.0.1 - dependencies: [] - test_only: false diff --git a/lib-satysfi/packages/annot/annot.0.0.1/saphe.lock.yaml.expected b/lib-satysfi/packages/annot/annot.0.0.1/saphe.lock.yaml.expected new file mode 100644 index 000000000..5ac1e2cee --- /dev/null +++ b/lib-satysfi/packages/annot/annot.0.0.1/saphe.lock.yaml.expected @@ -0,0 +1,13 @@ +saphe: ^0.1.0-alpha.1 +locks: +- name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.stdlib.0.0.1 + dependencies: [] + test_only: false + registered: + registry_hash_value: 6f2b80e9bb7c4e8af2104999fc25dbb3 + package_name: stdlib + version: 0.0.1 +dependencies: +- name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.stdlib.0.0.1 + used_as: Stdlib +test_dependencies: [] diff --git a/lib-satysfi/packages/annot/annot.0.0.1/saphe.yaml b/lib-satysfi/packages/annot/annot.0.0.1/saphe.yaml new file mode 100644 index 000000000..a96c30bd6 --- /dev/null +++ b/lib-satysfi/packages/annot/annot.0.0.1/saphe.yaml @@ -0,0 +1,22 @@ +saphe: "^0.1.0-alpha.1" +satysfi: "^0.1.0-alpha.1" +name: "annot" +authors: + - "Daiki Matsunaga <@matsud224>" + - "Takashi Suwa <@gfngfn>" +registries: + - name: "default" + git: + url: "https://github.com/SATySFi/default-registry" + branch: "temp-dev-saphe" +contents: + library: + main_module: "Annot" + source_directories: + - "./src" +dependencies: + - used_as: "Stdlib" + registered: + registry: "default" + name: "stdlib" + requirement: "^0.0.1" diff --git a/lib-satysfi/packages/annot/annot.0.0.1/satysfi-envelope.yaml.expected b/lib-satysfi/packages/annot/annot.0.0.1/satysfi-envelope.yaml.expected new file mode 100644 index 000000000..36b1fd1fc --- /dev/null +++ b/lib-satysfi/packages/annot/annot.0.0.1/satysfi-envelope.yaml.expected @@ -0,0 +1,5 @@ +library: + main_module: Annot + source_directories: + - ./src + test_directories: [] diff --git a/lib-satysfi/packages/annot/annot.0.0.1/satysfi.yaml b/lib-satysfi/packages/annot/annot.0.0.1/satysfi.yaml deleted file mode 100644 index 60fa6d891..000000000 --- a/lib-satysfi/packages/annot/annot.0.0.1/satysfi.yaml +++ /dev/null @@ -1,22 +0,0 @@ -language: "^0.1.0" -name: "annot" -authors: - - "Daiki Matsunaga <@matsud224>" - - "Takashi Suwa <@gfngfn>" -registries: - - name: "default" - remote: - type: "git" - url: "https://github.com/SATySFi/default-registry" - branch: "format-1" -contents: - type: "library" - main_module: "Annot" - source_directories: - - "./src" - dependencies: - - name: "stdlib" - spec: - type: "registered" - registry: "default" - requirement: "^0.0.1" diff --git a/lib-satysfi/packages/annot/annot.0.0.1/src/annot.satyh b/lib-satysfi/packages/annot/annot.0.0.1/src/annot.satyh index 2486289b8..bcfb15cd7 100644 --- a/lib-satysfi/packages/annot/annot.0.0.1/src/annot.satyh +++ b/lib-satysfi/packages/annot/annot.0.0.1/src/annot.satyh @@ -10,15 +10,15 @@ end = struct val link-to-uri-frame uri borderopt = let deco (x, y) w h d = let () = register-link-to-uri uri (x, y) w h d borderopt in - Gr.empty + Graphics.empty in - (deco, deco, deco, deco) + (deco, deco, deco, deco) val link-to-location-frame name borderopt = let deco (x, y) w h d = let () = register-link-to-location name (x, y) w h d borderopt in - Gr.empty + Graphics.empty in (deco, deco, deco, deco) @@ -46,9 +46,9 @@ end = struct val register-location-frame key = let decoR (x, y) w h d = let () = register-destination key (x, y +' h) in - Gr.empty + Graphics.empty in - let decoI _ _ _ _ = Gr.empty in + let decoI = Deco.empty in (decoR, decoR, decoI, decoI) end diff --git a/lib-satysfi/packages/code/code.0.0.1/package.satysfi-lock-expected b/lib-satysfi/packages/code/code.0.0.1/package.satysfi-lock-expected deleted file mode 100644 index afd0f0594..000000000 --- a/lib-satysfi/packages/code/code.0.0.1/package.satysfi-lock-expected +++ /dev/null @@ -1,18 +0,0 @@ -language: ^0.1.0 -locks: -- name: registered.d9b4b850ab61a7b68961c6315048b351.font-latin-modern.0.0.1 - contents: - type: registered - registry_hash_value: d9b4b850ab61a7b68961c6315048b351 - package_name: font-latin-modern - version: 0.0.1 - dependencies: [] - test_only: false -- name: registered.d9b4b850ab61a7b68961c6315048b351.stdlib.0.0.1 - contents: - type: registered - registry_hash_value: d9b4b850ab61a7b68961c6315048b351 - package_name: stdlib - version: 0.0.1 - dependencies: [] - test_only: false diff --git a/lib-satysfi/packages/code/code.0.0.1/saphe.lock.yaml.expected b/lib-satysfi/packages/code/code.0.0.1/saphe.lock.yaml.expected new file mode 100644 index 000000000..4273567a7 --- /dev/null +++ b/lib-satysfi/packages/code/code.0.0.1/saphe.lock.yaml.expected @@ -0,0 +1,22 @@ +saphe: ^0.1.0-alpha.1 +locks: +- name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.font-latin-modern.0.0.1 + dependencies: [] + test_only: false + registered: + registry_hash_value: 6f2b80e9bb7c4e8af2104999fc25dbb3 + package_name: font-latin-modern + version: 0.0.1 +- name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.stdlib.0.0.1 + dependencies: [] + test_only: false + registered: + registry_hash_value: 6f2b80e9bb7c4e8af2104999fc25dbb3 + package_name: stdlib + version: 0.0.1 +dependencies: +- name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.font-latin-modern.0.0.1 + used_as: FontLatinModern +- name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.stdlib.0.0.1 + used_as: Stdlib +test_dependencies: [] diff --git a/lib-satysfi/packages/code/code.0.0.1/saphe.yaml b/lib-satysfi/packages/code/code.0.0.1/saphe.yaml new file mode 100644 index 000000000..8be72a9cd --- /dev/null +++ b/lib-satysfi/packages/code/code.0.0.1/saphe.yaml @@ -0,0 +1,27 @@ +saphe: "^0.1.0-alpha.1" +satysfi: "^0.1.0-alpha.1" +name: "code" +authors: + - "Takashi Suwa <@gfngfn>" + - "Naoki Kaneko <@puripuri2100>" +registries: + - name: "default" + git: + url: "https://github.com/SATySFi/default-registry" + branch: "temp-dev-saphe" +contents: + library: + main_module: "Code" + source_directories: + - "./src" +dependencies: + - used_as: "Stdlib" + registered: + registry: "default" + name: "stdlib" + requirement: "^0.0.1" + - used_as: "FontLatinModern" + registered: + registry: "default" + name: "font-latin-modern" + requirement: "^0.0.1" diff --git a/lib-satysfi/packages/code/code.0.0.1/satysfi-envelope.yaml.expected b/lib-satysfi/packages/code/code.0.0.1/satysfi-envelope.yaml.expected new file mode 100644 index 000000000..0d383b35a --- /dev/null +++ b/lib-satysfi/packages/code/code.0.0.1/satysfi-envelope.yaml.expected @@ -0,0 +1,5 @@ +library: + main_module: Code + source_directories: + - ./src + test_directories: [] diff --git a/lib-satysfi/packages/code/code.0.0.1/satysfi.yaml b/lib-satysfi/packages/code/code.0.0.1/satysfi.yaml deleted file mode 100644 index be5d1c00a..000000000 --- a/lib-satysfi/packages/code/code.0.0.1/satysfi.yaml +++ /dev/null @@ -1,27 +0,0 @@ -language: "^0.1.0" -name: "code" -authors: - - "Takashi Suwa <@gfngfn>" - - "Naoki Kaneko <@puripuri2100>" -registries: - - name: "default" - remote: - type: "git" - url: "https://github.com/SATySFi/default-registry" - branch: "format-1" -contents: - type: "library" - main_module: "Code" - source_directories: - - "./src" - dependencies: - - name: "stdlib" - spec: - type: "registered" - registry: "default" - requirement: "^0.0.1" - - name: "font-latin-modern" - spec: - type: "registered" - registry: "default" - requirement: "^0.0.1" diff --git a/lib-satysfi/packages/code/code.0.0.1/src/code.satyh b/lib-satysfi/packages/code/code.0.0.1/src/code.satyh index 910188696..b6a0782af 100644 --- a/lib-satysfi/packages/code/code.0.0.1/src/code.satyh +++ b/lib-satysfi/packages/code/code.0.0.1/src/code.satyh @@ -1,53 +1,63 @@ use package open Stdlib - use package FontLatinModern -module Code -% :> sig -% -% val scheme : deco-set -> color -> context -> string -> block-boxes -% direct +code : [string] block-cmd -% direct +console : [string] block-cmd -% direct \code : [string] inline-cmd -% direct \console : [string] inline-cmd -% direct \d-code : [string] inline-cmd -% direct +file-code : [string] block-cmd -% direct \file-code : [string] inline-cmd -% -% end - = struct - - signature S = sig - val font-family : font - val text-color : color - val fill-color : color - val stroke-color : color +module Code :> sig + signature Settings = sig + val font-family : font + val text-color : color + val fill-color : color + val stroke-color : color + val stroke-thickness : length + end + signature Interface = sig + val scheme : deco-set -> context -> string -> block-boxes + val +code : block [string] + val \d-code : inline [string] + val \code : inline [string] + val +file-code : block [string] + val \file-code : inline [string] + end + module Make : (X : Settings) -> Interface + module Default : Interface + module Console : Interface + val +console : block [string] + val \console : inline [string] +end = struct + + signature Settings = sig + val font-family : font + val text-color : color + val fill-color : color + val stroke-color : color val stroke-thickness : length end + signature Interface = sig + val scheme : deco-set -> context -> string -> block-boxes + val +code : block [string] + val \d-code : inline [string] + val \code : inline [string] + val +file-code : block [string] + val \file-code : inline [string] + end - module Make = fun(X : S) -> struct + module Make = fun(X : Settings) -> struct val decoset-code = VDecoSet.simple-frame X.stroke-thickness X.stroke-color X.fill-color - val set-code-font ctx = ctx |> set-font Latin (X.font-family, 1., 0.) |> set-hyphen-penalty 100000 - val scheme decoset ctx code = let pads = (5pt, 5pt, 5pt, 5pt) in block-frame-breakable ctx pads decoset (fun ctx -> let fontsize = get-font-size ctx in let ctx = ctx |> set-code-font in - let charwid = - Pervasives.get-natural-width - (read-inline ctx {0}) - in + let charwid = Inline.get-natural-advance (read-inline ctx {0}) in let ctx-code = ctx |> set-space-ratio (charwid /' fontsize) 0. 0. @@ -63,7 +73,7 @@ module Code end in let ib-code = - lst |> List.fold-left-adjacent (fun ibacc (i, s) _ optnext -> ( + lst |> List.fold-adjacent (fun ibacc (i, s) _ optnext -> ( let ib-last = match optnext with | Some(_) -> inline-fil ++ discretionary 0 (inline-skip ((get-text-width ctx) *' 2.)) inline-nil inline-nil @@ -81,75 +91,61 @@ module Code line-break true true ctx ib-code ) - val block ctx +code code = scheme decoset-code ctx code - val inline ctx \d-code code = inline-fil ++ embed-block-breakable ctx (read-block ctx '<+code(code);>) - val inline ctx \code code = script-guard Latin (read-inline (ctx |> set-code-font) (embed-string code)) - val block ctx +file-code file-name = let lf = string-unexplode [10] in let join s1 s2 = s1 ^ lf ^ s2 in let str-list = read-file file-name in - let code = List.fold-left join ` ` str-list in + let code = List.fold join ` ` str-list in scheme decoset-code ctx code - val inline ctx \file-code file-name = inline-fil ++ embed-block-breakable ctx (read-block ctx '<+file-code(file-name);>) end - module DefaultSettings = struct - val font-family = FontLatinModern.mono - val text-color = Gray(0.) - val fill-color = Gray(0.875) - val stroke-color = Gray(0.625) + val font-family = FontLatinModern.mono + val text-color = Gray(0.) + val fill-color = Gray(0.875) + val stroke-color = Gray(0.625) val stroke-thickness = 1pt end - - include Make DefaultSettings - + module Default = Make DefaultSettings module ConsoleSettings = struct - val font-family = FontLatinModern.mono - val text-color = Gray(1.) - val fill-color = Gray(0.25) - val stroke-color = Gray(0.25) + val font-family = FontLatinModern.mono + val text-color = Gray(1.) + val fill-color = Gray(0.25) + val stroke-color = Gray(0.25) val stroke-thickness = 0pt end - module Console = Make ConsoleSettings - val decoset-console = let deco (x, y) w h d = - fill ConsoleSettings.fill-color (Gr.rectangle (x, y -' d) (x +' w, y +' h)) + fill ConsoleSettings.fill-color (Path.rectangle (x, y -' d) (x +' w, y +' h)) in (deco, deco, deco, deco) - val block ctx +console code = Console.scheme decoset-console ctx code - val inline ctx \console code = inline-fil ++ embed-block-breakable ctx (read-block ctx '<+console(code);>) - - end diff --git a/lib-satysfi/packages/font-ipa-ex/font-ipa-ex.0.0.1/package.satysfi-lock-expected b/lib-satysfi/packages/font-ipa-ex/font-ipa-ex.0.0.1/package.satysfi-lock-expected deleted file mode 100644 index cac2e8573..000000000 --- a/lib-satysfi/packages/font-ipa-ex/font-ipa-ex.0.0.1/package.satysfi-lock-expected +++ /dev/null @@ -1,2 +0,0 @@ -language: ^0.1.0 -locks: [] diff --git a/lib-satysfi/packages/font-ipa-ex/font-ipa-ex.0.0.1/saphe.lock.yaml.expected b/lib-satysfi/packages/font-ipa-ex/font-ipa-ex.0.0.1/saphe.lock.yaml.expected new file mode 100644 index 000000000..25b368126 --- /dev/null +++ b/lib-satysfi/packages/font-ipa-ex/font-ipa-ex.0.0.1/saphe.lock.yaml.expected @@ -0,0 +1,4 @@ +saphe: ^0.1.0-alpha.1 +locks: [] +dependencies: [] +test_dependencies: [] diff --git a/lib-satysfi/packages/font-ipa-ex/font-ipa-ex.0.0.1/saphe.yaml b/lib-satysfi/packages/font-ipa-ex/font-ipa-ex.0.0.1/saphe.yaml new file mode 100644 index 000000000..4851ef363 --- /dev/null +++ b/lib-satysfi/packages/font-ipa-ex/font-ipa-ex.0.0.1/saphe.yaml @@ -0,0 +1,24 @@ +saphe: "^0.1.0-alpha.1" +satysfi: "^0.1.0-alpha.1" +name: "font-ipa-ex" +authors: [] +external_resources: + - name: "IPAexfont00401" + zip: + url: "https://moji.or.jp/wp-content/ipafont/IPAexfont/IPAexfont00401.zip" + checksum: "57f2631833c1049ea89320971cc74ce5" + extractions: + - from: "IPAexfont00401/ipaexg.ttf" + to: "./fonts/ipaexg.ttf" + - from: "IPAexfont00401/ipaexm.ttf" + to: "./fonts/ipaexm.ttf" +contents: + font: + main_module: "FontIpaEx" + files: + - path: "./fonts/ipaexm.ttf" + opentype_single: + name: "mincho" + - path: "./fonts/ipaexg.ttf" + opentype_single: + name: "gothic" diff --git a/lib-satysfi/packages/font-ipa-ex/font-ipa-ex.0.0.1/satysfi-envelope.yaml.expected b/lib-satysfi/packages/font-ipa-ex/font-ipa-ex.0.0.1/satysfi-envelope.yaml.expected new file mode 100644 index 000000000..cbfc8b84d --- /dev/null +++ b/lib-satysfi/packages/font-ipa-ex/font-ipa-ex.0.0.1/satysfi-envelope.yaml.expected @@ -0,0 +1,11 @@ +font: + main_module: FontIpaEx + files: + - path: ./fonts/ipaexm.ttf + opentype_single: + name: mincho + math: false + - path: ./fonts/ipaexg.ttf + opentype_single: + name: gothic + math: false diff --git a/lib-satysfi/packages/font-ipa-ex/font-ipa-ex.0.0.1/satysfi.yaml b/lib-satysfi/packages/font-ipa-ex/font-ipa-ex.0.0.1/satysfi.yaml deleted file mode 100644 index 16f13493c..000000000 --- a/lib-satysfi/packages/font-ipa-ex/font-ipa-ex.0.0.1/satysfi.yaml +++ /dev/null @@ -1,25 +0,0 @@ -language: "^0.1.0" -name: "font-ipa-ex" -authors: [] -external_sources: - - name: "IPAexfont00401" - type: "zip" - url: "https://moji.or.jp/wp-content/ipafont/IPAexfont/IPAexfont00401.zip" - checksum: "57f2631833c1049ea89320971cc74ce5" - extractions: - - from: "IPAexfont00401/ipaexg.ttf" - to: "./fonts/ipaexg.ttf" - - from: "IPAexfont00401/ipaexm.ttf" - to: "./fonts/ipaexm.ttf" -contents: - type: "font" - main_module: "FontIpaEx" - elements: - - path: "./fonts/ipaexm.ttf" - contents: - type: "opentype_single" - name: "mincho" - - path: "./fonts/ipaexg.ttf" - contents: - type: "opentype_single" - name: "gothic" diff --git a/lib-satysfi/packages/font-junicode/font-junicode.0.0.1/package.satysfi-lock-expected b/lib-satysfi/packages/font-junicode/font-junicode.0.0.1/package.satysfi-lock-expected deleted file mode 100644 index cac2e8573..000000000 --- a/lib-satysfi/packages/font-junicode/font-junicode.0.0.1/package.satysfi-lock-expected +++ /dev/null @@ -1,2 +0,0 @@ -language: ^0.1.0 -locks: [] diff --git a/lib-satysfi/packages/font-junicode/font-junicode.0.0.1/saphe.lock.yaml.expected b/lib-satysfi/packages/font-junicode/font-junicode.0.0.1/saphe.lock.yaml.expected new file mode 100644 index 000000000..25b368126 --- /dev/null +++ b/lib-satysfi/packages/font-junicode/font-junicode.0.0.1/saphe.lock.yaml.expected @@ -0,0 +1,4 @@ +saphe: ^0.1.0-alpha.1 +locks: [] +dependencies: [] +test_dependencies: [] diff --git a/lib-satysfi/packages/font-junicode/font-junicode.0.0.1/saphe.yaml b/lib-satysfi/packages/font-junicode/font-junicode.0.0.1/saphe.yaml new file mode 100644 index 000000000..fc92fde58 --- /dev/null +++ b/lib-satysfi/packages/font-junicode/font-junicode.0.0.1/saphe.yaml @@ -0,0 +1,34 @@ +saphe: "^0.1.0-alpha.1" +satysfi: "^0.1.0-alpha.1" +name: "font-junicode" +authors: [] +external_resources: + - name: "junicode-1.002" + zip: + url: "https://downloads.sourceforge.net/project/junicode/junicode/junicode-1.002/junicode-1.002.zip" + checksum: "b1d6ed8796d8d1eacd733c0d568d939f" + extractions: + - from: "Junicode.ttf" + to: "./fonts/Junicode.ttf" + - from: "Junicode-Bold.ttf" + to: "./fonts/Junicode-Bold.ttf" + - from: "Junicode-Italic.ttf" + to: "./fonts/Junicode-Italic.ttf" + - from: "Junicode-BoldItalic.ttf" + to: "./fonts/Junicode-BoldItalic.ttf" +contents: + font: + main_module: "FontJunicode" + files: + - path: "./fonts/Junicode.ttf" + opentype_single: + name: "normal" + - path: "./fonts/Junicode-Bold.ttf" + opentype_single: + name: "bold" + - path: "./fonts/Junicode-Italic.ttf" + opentype_single: + name: "italic" + - path: "./fonts/Junicode-BoldItalic.ttf" + opentype_single: + name: "bold-italic" diff --git a/lib-satysfi/packages/font-junicode/font-junicode.0.0.1/satysfi-envelope.yaml.expected b/lib-satysfi/packages/font-junicode/font-junicode.0.0.1/satysfi-envelope.yaml.expected new file mode 100644 index 000000000..9256223e0 --- /dev/null +++ b/lib-satysfi/packages/font-junicode/font-junicode.0.0.1/satysfi-envelope.yaml.expected @@ -0,0 +1,19 @@ +font: + main_module: FontJunicode + files: + - path: ./fonts/Junicode.ttf + opentype_single: + name: normal + math: false + - path: ./fonts/Junicode-Bold.ttf + opentype_single: + name: bold + math: false + - path: ./fonts/Junicode-Italic.ttf + opentype_single: + name: italic + math: false + - path: ./fonts/Junicode-BoldItalic.ttf + opentype_single: + name: bold-italic + math: false diff --git a/lib-satysfi/packages/font-junicode/font-junicode.0.0.1/satysfi.yaml b/lib-satysfi/packages/font-junicode/font-junicode.0.0.1/satysfi.yaml deleted file mode 100644 index 173c09d7f..000000000 --- a/lib-satysfi/packages/font-junicode/font-junicode.0.0.1/satysfi.yaml +++ /dev/null @@ -1,37 +0,0 @@ -language: "^0.1.0" -name: "font-junicode" -authors: [] -external_sources: - - name: "junicode-1.002" - type: "zip" - url: "http://downloads.sourceforge.net/project/junicode/junicode/junicode-1.002/junicode-1.002.zip" - checksum: "b1d6ed8796d8d1eacd733c0d568d939f" - extractions: - - from: "Junicode.ttf" - to: "./fonts/Junicode.ttf" - - from: "Junicode-Bold.ttf" - to: "./fonts/Junicode-Bold.ttf" - - from: "Junicode-Italic.ttf" - to: "./fonts/Junicode-Italic.ttf" - - from: "Junicode-BoldItalic.ttf" - to: "./fonts/Junicode-BoldItalic.ttf" -contents: - type: "font" - main_module: "FontJunicode" - elements: - - path: "./fonts/Junicode.ttf" - contents: - type: "opentype_single" - name: "normal" - - path: "./fonts/Junicode-Bold.ttf" - contents: - type: "opentype_single" - name: "bold" - - path: "./fonts/Junicode-Italic.ttf" - contents: - type: "opentype_single" - name: "italic" - - path: "./fonts/Junicode-BoldItalic.ttf" - contents: - type: "opentype_single" - name: "bold-italic" diff --git a/lib-satysfi/packages/font-latin-modern-math/font-latin-modern-math.0.0.1/package.satysfi-lock-expected b/lib-satysfi/packages/font-latin-modern-math/font-latin-modern-math.0.0.1/package.satysfi-lock-expected deleted file mode 100644 index cac2e8573..000000000 --- a/lib-satysfi/packages/font-latin-modern-math/font-latin-modern-math.0.0.1/package.satysfi-lock-expected +++ /dev/null @@ -1,2 +0,0 @@ -language: ^0.1.0 -locks: [] diff --git a/lib-satysfi/packages/font-latin-modern-math/font-latin-modern-math.0.0.1/saphe.lock.yaml.expected b/lib-satysfi/packages/font-latin-modern-math/font-latin-modern-math.0.0.1/saphe.lock.yaml.expected new file mode 100644 index 000000000..25b368126 --- /dev/null +++ b/lib-satysfi/packages/font-latin-modern-math/font-latin-modern-math.0.0.1/saphe.lock.yaml.expected @@ -0,0 +1,4 @@ +saphe: ^0.1.0-alpha.1 +locks: [] +dependencies: [] +test_dependencies: [] diff --git a/lib-satysfi/packages/font-latin-modern-math/font-latin-modern-math.0.0.1/saphe.yaml b/lib-satysfi/packages/font-latin-modern-math/font-latin-modern-math.0.0.1/saphe.yaml new file mode 100644 index 000000000..c7230c2fe --- /dev/null +++ b/lib-satysfi/packages/font-latin-modern-math/font-latin-modern-math.0.0.1/saphe.yaml @@ -0,0 +1,20 @@ +saphe: "^0.1.0-alpha.1" +satysfi: "^0.1.0-alpha.1" +name: "font-latin-modern-math" +authors: [] +external_resources: + - name: "latinmodern-math-1959" + zip: + url: "https://www.gust.org.pl/projects/e-foundry/lm-math/download/latinmodern-math-1959.zip" + checksum: "bc82f6d4184ec0ea3ba2c0798e6be719" + extractions: + - from: "latinmodern-math-1959/otf/latinmodern-math.otf" + to: "./fonts/latinmodern-math.otf" +contents: + font: + main_module: "FontLatinModernMath" + files: + - path: "./fonts/latinmodern-math.otf" + opentype_single: + name: "main" + math: true diff --git a/lib-satysfi/packages/font-latin-modern-math/font-latin-modern-math.0.0.1/satysfi-envelope.yaml.expected b/lib-satysfi/packages/font-latin-modern-math/font-latin-modern-math.0.0.1/satysfi-envelope.yaml.expected new file mode 100644 index 000000000..c9d1f0661 --- /dev/null +++ b/lib-satysfi/packages/font-latin-modern-math/font-latin-modern-math.0.0.1/satysfi-envelope.yaml.expected @@ -0,0 +1,7 @@ +font: + main_module: FontLatinModernMath + files: + - path: ./fonts/latinmodern-math.otf + opentype_single: + name: main + math: true diff --git a/lib-satysfi/packages/font-latin-modern-math/font-latin-modern-math.0.0.1/satysfi.yaml b/lib-satysfi/packages/font-latin-modern-math/font-latin-modern-math.0.0.1/satysfi.yaml deleted file mode 100644 index ec0f93e5b..000000000 --- a/lib-satysfi/packages/font-latin-modern-math/font-latin-modern-math.0.0.1/satysfi.yaml +++ /dev/null @@ -1,20 +0,0 @@ -language: "^0.1.0" -name: "font-latin-modern-math" -authors: [] -external_sources: - - name: "latinmodern-math-1959" - type: "zip" - url: "http://www.gust.org.pl/projects/e-foundry/lm-math/download/latinmodern-math-1959.zip" - checksum: "bc82f6d4184ec0ea3ba2c0798e6be719" - extractions: - - from: "latinmodern-math-1959/otf/latinmodern-math.otf" - to: "./fonts/latinmodern-math.otf" -contents: - type: "font" - main_module: "FontLatinModernMath" - elements: - - path: "./fonts/latinmodern-math.otf" - math: true - contents: - type: "opentype_single" - name: "main" diff --git a/lib-satysfi/packages/font-latin-modern/font-latin-modern.0.0.1/package.satysfi-lock-expected b/lib-satysfi/packages/font-latin-modern/font-latin-modern.0.0.1/package.satysfi-lock-expected deleted file mode 100644 index cac2e8573..000000000 --- a/lib-satysfi/packages/font-latin-modern/font-latin-modern.0.0.1/package.satysfi-lock-expected +++ /dev/null @@ -1,2 +0,0 @@ -language: ^0.1.0 -locks: [] diff --git a/lib-satysfi/packages/font-latin-modern/font-latin-modern.0.0.1/saphe.lock.yaml.expected b/lib-satysfi/packages/font-latin-modern/font-latin-modern.0.0.1/saphe.lock.yaml.expected new file mode 100644 index 000000000..25b368126 --- /dev/null +++ b/lib-satysfi/packages/font-latin-modern/font-latin-modern.0.0.1/saphe.lock.yaml.expected @@ -0,0 +1,4 @@ +saphe: ^0.1.0-alpha.1 +locks: [] +dependencies: [] +test_dependencies: [] diff --git a/lib-satysfi/packages/font-latin-modern/font-latin-modern.0.0.1/saphe.yaml b/lib-satysfi/packages/font-latin-modern/font-latin-modern.0.0.1/saphe.yaml new file mode 100644 index 000000000..a6841b086 --- /dev/null +++ b/lib-satysfi/packages/font-latin-modern/font-latin-modern.0.0.1/saphe.yaml @@ -0,0 +1,24 @@ +saphe: "^0.1.0-alpha.1" +satysfi: "^0.1.0-alpha.1" +name: "font-latin-modern" +authors: [] +external_resources: + - name: "lm2.004otf" + zip: + url: "https://www.gust.org.pl/projects/e-foundry/latin-modern/download/lm2.004otf.zip" + checksum: "0bc81a83fe37416b67b69ab3a6593ef5" + extractions: + - from: "lmmono10-regular.otf" + to: "./fonts/lmmono10-regular.otf" + - from: "lmsans10-regular.otf" + to: "./fonts/lmsans10-regular.otf" +contents: + font: + main_module: "FontLatinModern" + files: + - path: "./fonts/lmmono10-regular.otf" + opentype_single: + name: "mono" + - path: "./fonts/lmsans10-regular.otf" + opentype_single: + name: "sans" diff --git a/lib-satysfi/packages/font-latin-modern/font-latin-modern.0.0.1/satysfi-envelope.yaml.expected b/lib-satysfi/packages/font-latin-modern/font-latin-modern.0.0.1/satysfi-envelope.yaml.expected new file mode 100644 index 000000000..a134d4ecf --- /dev/null +++ b/lib-satysfi/packages/font-latin-modern/font-latin-modern.0.0.1/satysfi-envelope.yaml.expected @@ -0,0 +1,11 @@ +font: + main_module: FontLatinModern + files: + - path: ./fonts/lmmono10-regular.otf + opentype_single: + name: mono + math: false + - path: ./fonts/lmsans10-regular.otf + opentype_single: + name: sans + math: false diff --git a/lib-satysfi/packages/font-latin-modern/font-latin-modern.0.0.1/satysfi.yaml b/lib-satysfi/packages/font-latin-modern/font-latin-modern.0.0.1/satysfi.yaml deleted file mode 100644 index c7de98058..000000000 --- a/lib-satysfi/packages/font-latin-modern/font-latin-modern.0.0.1/satysfi.yaml +++ /dev/null @@ -1,25 +0,0 @@ -language: "^0.1.0" -name: "font-latin-modern" -authors: [] -external_sources: - - name: "lm2.004otf" - type: "zip" - url: "https://www.gust.org.pl/projects/e-foundry/latin-modern/download/lm2.004otf.zip" - checksum: "0bc81a83fe37416b67b69ab3a6593ef5" - extractions: - - from: "lmmono10-regular.otf" - to: "./fonts/lmmono10-regular.otf" - - from: "lmsans10-regular.otf" - to: "./fonts/lmsans10-regular.otf" -contents: - type: "font" - main_module: "FontLatinModern" - elements: - - path: "./fonts/lmmono10-regular.otf" - contents: - type: "opentype_single" - name: "mono" - - path: "./fonts/lmsans10-regular.otf" - contents: - type: "opentype_single" - name: "sans" diff --git a/lib-satysfi/packages/footnote-scheme/footnote-scheme.0.0.1/package.satysfi-lock-expected b/lib-satysfi/packages/footnote-scheme/footnote-scheme.0.0.1/package.satysfi-lock-expected deleted file mode 100644 index 22b630ca5..000000000 --- a/lib-satysfi/packages/footnote-scheme/footnote-scheme.0.0.1/package.satysfi-lock-expected +++ /dev/null @@ -1,10 +0,0 @@ -language: ^0.1.0 -locks: -- name: registered.d9b4b850ab61a7b68961c6315048b351.stdlib.0.0.1 - contents: - type: registered - registry_hash_value: d9b4b850ab61a7b68961c6315048b351 - package_name: stdlib - version: 0.0.1 - dependencies: [] - test_only: false diff --git a/lib-satysfi/packages/footnote-scheme/footnote-scheme.0.0.1/saphe.lock.yaml.expected b/lib-satysfi/packages/footnote-scheme/footnote-scheme.0.0.1/saphe.lock.yaml.expected new file mode 100644 index 000000000..5ac1e2cee --- /dev/null +++ b/lib-satysfi/packages/footnote-scheme/footnote-scheme.0.0.1/saphe.lock.yaml.expected @@ -0,0 +1,13 @@ +saphe: ^0.1.0-alpha.1 +locks: +- name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.stdlib.0.0.1 + dependencies: [] + test_only: false + registered: + registry_hash_value: 6f2b80e9bb7c4e8af2104999fc25dbb3 + package_name: stdlib + version: 0.0.1 +dependencies: +- name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.stdlib.0.0.1 + used_as: Stdlib +test_dependencies: [] diff --git a/lib-satysfi/packages/footnote-scheme/footnote-scheme.0.0.1/saphe.yaml b/lib-satysfi/packages/footnote-scheme/footnote-scheme.0.0.1/saphe.yaml new file mode 100644 index 000000000..671d46acc --- /dev/null +++ b/lib-satysfi/packages/footnote-scheme/footnote-scheme.0.0.1/saphe.yaml @@ -0,0 +1,21 @@ +saphe: "^0.1.0-alpha.1" +satysfi: "^0.1.0-alpha.1" +name: "footnote-scheme" +authors: + - "Takashi Suwa <@gfngfn>" +registries: + - name: "default" + git: + url: "https://github.com/SATySFi/default-registry" + branch: "temp-dev-saphe" +contents: + library: + main_module: "FootnoteScheme" + source_directories: + - "./src" +dependencies: + - used_as: "Stdlib" + registered: + registry: "default" + name: "stdlib" + requirement: "^0.0.1" diff --git a/lib-satysfi/packages/footnote-scheme/footnote-scheme.0.0.1/satysfi-envelope.yaml.expected b/lib-satysfi/packages/footnote-scheme/footnote-scheme.0.0.1/satysfi-envelope.yaml.expected new file mode 100644 index 000000000..d2287e522 --- /dev/null +++ b/lib-satysfi/packages/footnote-scheme/footnote-scheme.0.0.1/satysfi-envelope.yaml.expected @@ -0,0 +1,5 @@ +library: + main_module: FootnoteScheme + source_directories: + - ./src + test_directories: [] diff --git a/lib-satysfi/packages/footnote-scheme/footnote-scheme.0.0.1/satysfi.yaml b/lib-satysfi/packages/footnote-scheme/footnote-scheme.0.0.1/satysfi.yaml deleted file mode 100644 index b273dad90..000000000 --- a/lib-satysfi/packages/footnote-scheme/footnote-scheme.0.0.1/satysfi.yaml +++ /dev/null @@ -1,21 +0,0 @@ -language: "^0.1.0" -name: "footnote-scheme" -authors: - - "Takashi Suwa <@gfngfn>" -registries: - - name: "default" - remote: - type: "git" - url: "https://github.com/SATySFi/default-registry" - branch: "format-1" -contents: - type: "library" - main_module: "FootnoteScheme" - source_directories: - - "./src" - dependencies: - - name: "stdlib" - spec: - type: "registered" - registry: "default" - requirement: "^0.0.1" diff --git a/lib-satysfi/packages/footnote-scheme/footnote-scheme.0.0.1/src/footnote-scheme.satyh b/lib-satysfi/packages/footnote-scheme/footnote-scheme.0.0.1/src/footnote-scheme.satyh index a9459e6d1..7a6df9227 100644 --- a/lib-satysfi/packages/footnote-scheme/footnote-scheme.0.0.1/src/footnote-scheme.satyh +++ b/lib-satysfi/packages/footnote-scheme/footnote-scheme.0.0.1/src/footnote-scheme.satyh @@ -63,7 +63,7 @@ end = struct let wid = get-text-width ctx *' bar-ratio in let ib = inline-graphics wid bar-top-margin bar-bottom-margin (fun (x, y) -> - stroke 0.5pt Color.black (Gr.line (x, y) (x +' wid, y)) + stroke 0.5pt Color.black (Path.line (x, y) (x +' wid, y)) ) ++ inline-fil in line-break false false (ctx |> set-paragraph-margin 0pt 0pt) ib @@ -73,7 +73,7 @@ end = struct block-skip (size *' 0.5) end in - Pervasives.no-break + Inline.no-break (add-footnote (bb-before +++ bb) ++ ib-num ++ hook-page-break (fun _ _ -> ( let () = diff --git a/lib-satysfi/hyph/english.satysfi-hyph b/lib-satysfi/packages/hyph-english/hyph-english.0.0.1/hyph/english.satysfi-hyph similarity index 100% rename from lib-satysfi/hyph/english.satysfi-hyph rename to lib-satysfi/packages/hyph-english/hyph-english.0.0.1/hyph/english.satysfi-hyph diff --git a/lib-satysfi/packages/hyph-english/hyph-english.0.0.1/saphe.lock.yaml.expected b/lib-satysfi/packages/hyph-english/hyph-english.0.0.1/saphe.lock.yaml.expected new file mode 100644 index 000000000..25b368126 --- /dev/null +++ b/lib-satysfi/packages/hyph-english/hyph-english.0.0.1/saphe.lock.yaml.expected @@ -0,0 +1,4 @@ +saphe: ^0.1.0-alpha.1 +locks: [] +dependencies: [] +test_dependencies: [] diff --git a/lib-satysfi/packages/hyph-english/hyph-english.0.0.1/saphe.yaml b/lib-satysfi/packages/hyph-english/hyph-english.0.0.1/saphe.yaml new file mode 100644 index 000000000..732c5f831 --- /dev/null +++ b/lib-satysfi/packages/hyph-english/hyph-english.0.0.1/saphe.yaml @@ -0,0 +1,11 @@ +saphe: "^0.1.0-alpha.1" +satysfi: "^0.1.0-alpha.1" +name: "hyph-english" +authors: + - "Takashi Suwa <@gfngfn>" +contents: + library: + main_module: "HyphEnglish" + source_directories: + - "./src" +dependencies: [] diff --git a/lib-satysfi/packages/hyph-english/hyph-english.0.0.1/satysfi-envelope.yaml.expected b/lib-satysfi/packages/hyph-english/hyph-english.0.0.1/satysfi-envelope.yaml.expected new file mode 100644 index 000000000..b9f156209 --- /dev/null +++ b/lib-satysfi/packages/hyph-english/hyph-english.0.0.1/satysfi-envelope.yaml.expected @@ -0,0 +1,5 @@ +library: + main_module: HyphEnglish + source_directories: + - ./src + test_directories: [] diff --git a/lib-satysfi/packages/hyph-english/hyph-english.0.0.1/src/hyph-english.satyh b/lib-satysfi/packages/hyph-english/hyph-english.0.0.1/src/hyph-english.satyh new file mode 100644 index 000000000..fe9c3e1a6 --- /dev/null +++ b/lib-satysfi/packages/hyph-english/hyph-english.0.0.1/src/hyph-english.satyh @@ -0,0 +1,7 @@ +module HyphEnglish :> sig + val hyphenation : hyphenation +end = struct + val hyphenation = + load-hyphenation-dictionary + (here ^ `/../hyph/english.satysfi-hyph`) +end diff --git a/lib-satysfi/packages/itemize/itemize.0.0.1/package.satysfi-lock-expected b/lib-satysfi/packages/itemize/itemize.0.0.1/package.satysfi-lock-expected deleted file mode 100644 index 22b630ca5..000000000 --- a/lib-satysfi/packages/itemize/itemize.0.0.1/package.satysfi-lock-expected +++ /dev/null @@ -1,10 +0,0 @@ -language: ^0.1.0 -locks: -- name: registered.d9b4b850ab61a7b68961c6315048b351.stdlib.0.0.1 - contents: - type: registered - registry_hash_value: d9b4b850ab61a7b68961c6315048b351 - package_name: stdlib - version: 0.0.1 - dependencies: [] - test_only: false diff --git a/lib-satysfi/packages/itemize/itemize.0.0.1/saphe.lock.yaml.expected b/lib-satysfi/packages/itemize/itemize.0.0.1/saphe.lock.yaml.expected new file mode 100644 index 000000000..5ac1e2cee --- /dev/null +++ b/lib-satysfi/packages/itemize/itemize.0.0.1/saphe.lock.yaml.expected @@ -0,0 +1,13 @@ +saphe: ^0.1.0-alpha.1 +locks: +- name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.stdlib.0.0.1 + dependencies: [] + test_only: false + registered: + registry_hash_value: 6f2b80e9bb7c4e8af2104999fc25dbb3 + package_name: stdlib + version: 0.0.1 +dependencies: +- name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.stdlib.0.0.1 + used_as: Stdlib +test_dependencies: [] diff --git a/lib-satysfi/packages/itemize/itemize.0.0.1/saphe.yaml b/lib-satysfi/packages/itemize/itemize.0.0.1/saphe.yaml new file mode 100644 index 000000000..4242f3eb7 --- /dev/null +++ b/lib-satysfi/packages/itemize/itemize.0.0.1/saphe.yaml @@ -0,0 +1,21 @@ +saphe: "^0.1.0-alpha.1" +satysfi: "^0.1.0-alpha.1" +name: "itemize" +authors: + - "Takashi Suwa <@gfngfn>" +registries: + - name: "default" + git: + url: "https://github.com/SATySFi/default-registry" + branch: "temp-dev-saphe" +contents: + library: + main_module: "Itemize" + source_directories: + - "./src" +dependencies: + - used_as: "Stdlib" + registered: + registry: "default" + name: "stdlib" + requirement: "^0.0.1" diff --git a/lib-satysfi/packages/itemize/itemize.0.0.1/satysfi-envelope.yaml.expected b/lib-satysfi/packages/itemize/itemize.0.0.1/satysfi-envelope.yaml.expected new file mode 100644 index 000000000..c37b9d25b --- /dev/null +++ b/lib-satysfi/packages/itemize/itemize.0.0.1/satysfi-envelope.yaml.expected @@ -0,0 +1,5 @@ +library: + main_module: Itemize + source_directories: + - ./src + test_directories: [] diff --git a/lib-satysfi/packages/itemize/itemize.0.0.1/satysfi.yaml b/lib-satysfi/packages/itemize/itemize.0.0.1/satysfi.yaml deleted file mode 100644 index 25ac2fd3e..000000000 --- a/lib-satysfi/packages/itemize/itemize.0.0.1/satysfi.yaml +++ /dev/null @@ -1,21 +0,0 @@ -language: "^0.1.0" -name: "itemize" -authors: - - "Takashi Suwa <@gfngfn>" -registries: - - name: "default" - remote: - type: "git" - url: "https://github.com/SATySFi/default-registry" - branch: "format-1" -contents: - type: "library" - main_module: "Itemize" - source_directories: - - "./src" - dependencies: - - name: "stdlib" - spec: - type: "registered" - registry: "default" - requirement: "^0.0.1" diff --git a/lib-satysfi/packages/itemize/itemize.0.0.1/src/itemize.satyh b/lib-satysfi/packages/itemize/itemize.0.0.1/src/itemize.satyh index 33fb33dcb..7ce42a7f2 100644 --- a/lib-satysfi/packages/itemize/itemize.0.0.1/src/itemize.satyh +++ b/lib-satysfi/packages/itemize/itemize.0.0.1/src/itemize.satyh @@ -7,7 +7,7 @@ module Itemize :> sig val \enumerate : inline [itemize] end = struct - val (+++>) = List.fold-left (+++) + val (+++>) = List.fold (+++) val concat-blocks = (+++>) block-nil @@ -20,7 +20,7 @@ end = struct let cx = x +' 4pt in let cy = y +' 4pt in let r = 2pt in - fill color (Gr.circle (cx, cy) r) + fill color (Path.circle (cx, cy) r) val make-bullet ctx = @@ -30,16 +30,16 @@ end = struct val rec listing-item ctx depth is-first is-last (Item(parent, children)) = let ib-bullet = make-bullet ctx in - let bullet-width = Pervasives.get-natural-width ib-bullet in + let bullet-width = Inline.get-natural-advance ib-bullet in let parent-indent = item-indent *' (float depth) in let ib-parent = embed-block-top ctx ((get-text-width ctx) -' parent-indent -' bullet-width) (fun ctx -> - Pervasives.form-paragraph (ctx |> set-paragraph-margin item-gap item-gap) + Block.form-paragraph (ctx |> set-paragraph-margin item-gap item-gap) (read-inline ctx parent ++ inline-fil) ) in let bb-parent = - Pervasives.form-paragraph (ctx |> set-paragraph-margin item-gap item-gap) + Block.form-paragraph (ctx |> set-paragraph-margin item-gap item-gap) ((inline-skip parent-indent) ++ ib-bullet ++ ib-parent) in let bbs-children = List.map-with-ends (listing-item ctx (depth + 1)) children in @@ -48,13 +48,10 @@ end = struct val rec listing-item-breakable ctx depth is-first is-last (Item(parent, children)) = let ib-bullet = make-bullet ctx in - let bullet-width = Pervasives.get-natural-width ib-bullet in + let bullet-width = Inline.get-natural-advance ib-bullet in let parent-indent = item-indent *' (float depth) in let pads = (parent-indent +' bullet-width, 0pt, 0pt, 0pt) in - let decos = - let deco _ _ _ _ = Gr.empty in - (deco, deco, deco, deco) - in + let decos = HDecoSet.empty in let bb-parent = let ctx-frame = let len-top = if is-first then item-gap-outer +' item-gap else item-gap in @@ -62,7 +59,7 @@ end = struct ctx |> set-paragraph-margin len-top len-bottom in block-frame-breakable ctx-frame pads decos (fun ctx -> - Pervasives.form-paragraph ctx + Block.form-paragraph ctx (inline-skip (0pt -' bullet-width) ++ ib-bullet ++ read-inline ctx parent ++ inline-fil) ) in @@ -97,19 +94,19 @@ end = struct let it-num = (embed-string (arabic index)) in read-inline ctx {(#it-num;)\ } in - let index-width = Pervasives.get-natural-width ib-index in + let index-width = Inline.get-natural-advance ib-index in let ib-parent = embed-block-top ctx ((get-text-width ctx) -' parent-indent -' index-width) (fun ctx -> - Pervasives.form-paragraph (ctx |> set-paragraph-margin item-gap item-gap) + Block.form-paragraph (ctx |> set-paragraph-margin item-gap item-gap) (read-inline ctx parent ++ inline-fil) ) in - Pervasives.form-paragraph (ctx |> set-paragraph-margin item-gap item-gap) + Block.form-paragraph (ctx |> set-paragraph-margin item-gap item-gap) ((inline-skip parent-indent) ++ ib-index ++ ib-parent) val enumerate ctx (Item(_, itmzlst)) = - let bblst = List.mapi (fun i -> enumerate-item (i + 1) ctx 0) itmzlst in + let bblst = List.map-indexed (fun i -> enumerate-item (i + 1) ctx 0) itmzlst in concat-blocks bblst diff --git a/lib-satysfi/packages/math/math.0.0.1/package.satysfi-lock-expected b/lib-satysfi/packages/math/math.0.0.1/package.satysfi-lock-expected deleted file mode 100644 index 22b630ca5..000000000 --- a/lib-satysfi/packages/math/math.0.0.1/package.satysfi-lock-expected +++ /dev/null @@ -1,10 +0,0 @@ -language: ^0.1.0 -locks: -- name: registered.d9b4b850ab61a7b68961c6315048b351.stdlib.0.0.1 - contents: - type: registered - registry_hash_value: d9b4b850ab61a7b68961c6315048b351 - package_name: stdlib - version: 0.0.1 - dependencies: [] - test_only: false diff --git a/lib-satysfi/packages/math/math.0.0.1/saphe.lock.yaml.expected b/lib-satysfi/packages/math/math.0.0.1/saphe.lock.yaml.expected new file mode 100644 index 000000000..5ac1e2cee --- /dev/null +++ b/lib-satysfi/packages/math/math.0.0.1/saphe.lock.yaml.expected @@ -0,0 +1,13 @@ +saphe: ^0.1.0-alpha.1 +locks: +- name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.stdlib.0.0.1 + dependencies: [] + test_only: false + registered: + registry_hash_value: 6f2b80e9bb7c4e8af2104999fc25dbb3 + package_name: stdlib + version: 0.0.1 +dependencies: +- name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.stdlib.0.0.1 + used_as: Stdlib +test_dependencies: [] diff --git a/lib-satysfi/packages/math/math.0.0.1/satysfi.yaml b/lib-satysfi/packages/math/math.0.0.1/saphe.yaml similarity index 52% rename from lib-satysfi/packages/math/math.0.0.1/satysfi.yaml rename to lib-satysfi/packages/math/math.0.0.1/saphe.yaml index f600c6d59..790f3c6e9 100644 --- a/lib-satysfi/packages/math/math.0.0.1/satysfi.yaml +++ b/lib-satysfi/packages/math/math.0.0.1/saphe.yaml @@ -1,4 +1,5 @@ -language: "^0.1.0" +saphe: "^0.1.0-alpha.1" +satysfi: "^0.1.0-alpha.1" name: "math" authors: - "Takashi Suwa <@gfngfn>" @@ -10,18 +11,17 @@ authors: - "SnO₂WMaN <@SnO2WMaN>" registries: - name: "default" - remote: - type: "git" + git: url: "https://github.com/SATySFi/default-registry" - branch: "format-1" + branch: "temp-dev-saphe" contents: - type: "library" - main_module: "Math" - source_directories: - - "./src" - dependencies: - - name: "stdlib" - spec: - type: "registered" - registry: "default" - requirement: "^0.0.1" + library: + main_module: "Math" + source_directories: + - "./src" +dependencies: + - used_as: "Stdlib" + registered: + registry: "default" + name: "stdlib" + requirement: "^0.0.1" diff --git a/lib-satysfi/packages/math/math.0.0.1/satysfi-envelope.yaml.expected b/lib-satysfi/packages/math/math.0.0.1/satysfi-envelope.yaml.expected new file mode 100644 index 000000000..8b8798cad --- /dev/null +++ b/lib-satysfi/packages/math/math.0.0.1/satysfi-envelope.yaml.expected @@ -0,0 +1,5 @@ +library: + main_module: Math + source_directories: + - ./src + test_directories: [] diff --git a/lib-satysfi/packages/math/math.0.0.1/src/math.satyh b/lib-satysfi/packages/math/math.0.0.1/src/math.satyh index 72fd7c102..5d3e5f30c 100644 --- a/lib-satysfi/packages/math/math.0.0.1/src/math.satyh +++ b/lib-satysfi/packages/math/math.0.0.1/src/math.satyh @@ -396,7 +396,6 @@ module Math :> sig val \setsep : math [math-text, math-text] val \cases : math [list (math-text * inline-text)] - type paren = Pervasives.paren %TODO (enhance): remove this val paren-left : paren val paren-right : paren val paren : context -> math-boxes -> math-boxes @@ -418,17 +417,11 @@ module Math :> sig val bar-middle : paren val slash-middle : paren -% % -- temporary -- %TODO: remove this - val \synteq : math [] - val \tyjd : math [math-text, math-text, math-text] - val \and-also : math [] - val \tmabstyped : math [math-text, math-text, math-text] -% end = struct val join (msep : math-text) (ms : list math-text) = match - ms |> List.fold-left (fun maccopt m -> ( + ms |> List.fold (fun maccopt m -> ( match maccopt with | None -> Some(m) | Some(macc) -> Some(${#macc #msep #m}) @@ -442,7 +435,7 @@ end = struct val join-boxes ctx (mbsep : math-boxes) (mbs : list math-boxes) = match - mbs |> List.fold-left (fun mbaccopt mb -> ( + mbs |> List.fold (fun mbaccopt mb -> ( match mbaccopt with | None -> Some(mb) | Some(mbacc) -> Some(math-concat (math-concat mbacc mbsep) mb) @@ -537,7 +530,7 @@ end = struct discretionary 100 (inline-skip mingap ++ inline-fil) inline-fil inline-fil in let ib = - mlst |> List.fold-left-adjacent (fun ibacc m _ optnext -> ( + mlst |> List.fold-adjacent (fun ibacc m _ optnext -> ( let ib-after = match optnext with | None -> inline-fil @@ -567,7 +560,7 @@ end = struct let celllstlst = mlstlst |> List.map (fun mlst -> ( let mbs = mlst |> List.map (read-math ctx) in - mbs |> List.mapi-adjacent (fun index mb _ mb-next-opt -> ( + mbs |> List.map-indexed-adjacent (fun index mb _ mb-next-opt -> ( let ibm = embed-math ctx mb in let ib = match mb-next-opt with @@ -597,7 +590,7 @@ end = struct in let margin = get-font-size ctx *' margin-ratio in line-break true true (ctx |> set-paragraph-margin margin margin) - (inline-fil ++ (tabular celllstlst (fun _ _ -> Gr.empty)) ++ inline-fil) + (inline-fil ++ (tabular celllstlst (fun _ _ -> Graphics.empty)) ++ inline-fil) % temporary @@ -1021,35 +1014,13 @@ end = struct % let kernfR fontsize ypos = fontsize *' 0.2 in % math-big-char-with-kern MathOp `∫` kernfL kernfR - val math-space = - embed-inline-to-math MathOrd (inline-skip 30pt) - - val math ctx \and-also = math-space - - val math ctx \tyjd tyenv tm ty = - read-math ctx ${#tyenv \vdash #tm \colon-rel #ty} - - val math ctx \synteq = - read-math ctx ${\equiv} - val math ctx \dot-punct = math-char ctx MathPunct `.` - val math ctx \tmabstyped var ty body = - read-math ctx ${\lambda #var \colon-rel #ty \dot-punct #body} - - val math ctx \npe = - read-math (ctx |> set-text-color (RGB(1., 0., 0.)) |> set-math-char-class MathRoman) ${e} - - val math ctx \bi m = - read-math (ctx |> set-math-char-class MathBoldItalic) m - - type paren = Pervasives.paren %TODO (enhance): remove this - val half-length hgt dpt hgtaxis fontsize = let minhalflen = fontsize *' 0.5 in let lenappend = fontsize *' 0.1 in - Pervasives.length-max minhalflen ((Pervasives.length-max (hgt -' hgtaxis) (hgtaxis +' dpt)) +' lenappend) + Length.max minhalflen ((Length.max (hgt -' hgtaxis) (hgtaxis +' dpt)) +' lenappend) val extract-spec-from-context ctx = let fontsize = get-font-size ctx in @@ -1072,7 +1043,7 @@ end = struct let kerninfo y = let widkern = widparen in let r = 0. in - let gap = Pervasives.length-abs (y -' hgtaxis) in + let gap = Length.abs (y -' hgtaxis) in if halflen *' r <' gap then widkern *' ((gap -' halflen *' r) /' (halflen *' (1. -. r))) else @@ -1095,7 +1066,7 @@ end = struct let kerninfo y = let widkern = widparen in let r = 0. in - let gap = Pervasives.length-abs (y -' hgtaxis) in + let gap = Length.abs (y -' hgtaxis) in if halflen *' r <' gap then widkern *' ((gap -' halflen *' r) /' (halflen *' (1. -. r))) else @@ -1177,8 +1148,8 @@ end = struct let kerninfo y = let widkern = widparen *' 0.5 in let r = 0.25 in - let gap = Pervasives.length-abs (y -' hgtaxis) in - let diff = Pervasives.length-min (gap -' halflen *' r) (halflen *' (1. -. r)) in + let gap = Length.abs (y -' hgtaxis) in + let diff = Length.min (gap -' halflen *' r) (halflen *' (1. -. r)) in if 0pt <' diff then widkern *' (diff /' (halflen *' (1. -. r))) else @@ -1390,7 +1361,7 @@ end = struct % |> bezier-to (fP (p0B, q0B)) (fP (p1A, q1A)) (fP (x1, y1)) % |> bezier-to (fP (p1B, q1B)) (fP (p2A, q2A)) (fP (x2, y2)) % |> close-with-line - Gr.poly-line (fP (x0, y0)) [ + Path.poly-line (fP (x0, y0)) [ fP (p0B, q0B), fP (p1A, q1A), fP (x1, y1), fP (p1B, q1B), fP (p2A, q2A), fP (x2, y2), fP (p2B, q2B), fP (p3A, q3A), fP (x3, y3), @@ -1411,7 +1382,7 @@ end = struct let halfwid = fontsize *' 0.5 in let graphics (x, y) = stroke 0.5pt color - (Gr.line (x +' halfwid, y +' hgtaxis -' halflen) (x +' halfwid, y +' hgtaxis +' halflen)) + (Path.line (x +' halfwid, y +' hgtaxis -' halflen) (x +' halfwid, y +' hgtaxis +' halflen)) in let kerninfo _ = 0pt in (inline-graphics (halfwid *' 2.) (hgtaxis +' halflen) (halflen -' hgtaxis) graphics, kerninfo) @@ -1427,7 +1398,7 @@ end = struct let halfwid = halflen *' 0.5 in let graphics (x, y) = stroke 0.5pt color - (Gr.line (x, y +' hgtaxis -' halflen) (x +' halfwid *' 2., y +' hgtaxis +' halflen)) + (Path.line (x, y +' hgtaxis -' halflen) (x +' halfwid *' 2., y +' hgtaxis +' halflen)) in let kerninfo _ = 0pt in (inline-graphics (halfwid *' 2.) (hgtaxis +' halflen) (halflen -' hgtaxis) graphics, kerninfo) @@ -1622,7 +1593,7 @@ end = struct [NormalCell(pads, ib1), NormalCell(pads, ib2)] )) in - let ib = tabular celllstlst (fun _ _ -> Gr.empty) in + let ib = tabular celllstlst (fun _ _ -> Graphics.empty) in let (_, hgt, dpt) = get-natural-metrics ib in let hgtaxis = size *' get-math-axis-height-ratio ctx in raise-inline (hgtaxis -' (hgt +' dpt) *' 0.5) ib diff --git a/lib-satysfi/packages/md-ja/md-ja.0.0.1/package.satysfi-lock-expected b/lib-satysfi/packages/md-ja/md-ja.0.0.1/package.satysfi-lock-expected deleted file mode 100644 index d0d1db2bd..000000000 --- a/lib-satysfi/packages/md-ja/md-ja.0.0.1/package.satysfi-lock-expected +++ /dev/null @@ -1,88 +0,0 @@ -language: ^0.1.0 -locks: -- name: registered.d9b4b850ab61a7b68961c6315048b351.annot.0.0.1 - contents: - type: registered - registry_hash_value: d9b4b850ab61a7b68961c6315048b351 - package_name: annot - version: 0.0.1 - dependencies: - - registered.d9b4b850ab61a7b68961c6315048b351.stdlib.0.0.1 - test_only: false -- name: registered.d9b4b850ab61a7b68961c6315048b351.code.0.0.1 - contents: - type: registered - registry_hash_value: d9b4b850ab61a7b68961c6315048b351 - package_name: code - version: 0.0.1 - dependencies: - - registered.d9b4b850ab61a7b68961c6315048b351.stdlib.0.0.1 - - registered.d9b4b850ab61a7b68961c6315048b351.font-latin-modern.0.0.1 - test_only: false -- name: registered.d9b4b850ab61a7b68961c6315048b351.font-ipa-ex.0.0.1 - contents: - type: registered - registry_hash_value: d9b4b850ab61a7b68961c6315048b351 - package_name: font-ipa-ex - version: 0.0.1 - dependencies: [] - test_only: false -- name: registered.d9b4b850ab61a7b68961c6315048b351.font-junicode.0.0.1 - contents: - type: registered - registry_hash_value: d9b4b850ab61a7b68961c6315048b351 - package_name: font-junicode - version: 0.0.1 - dependencies: [] - test_only: false -- name: registered.d9b4b850ab61a7b68961c6315048b351.font-latin-modern.0.0.1 - contents: - type: registered - registry_hash_value: d9b4b850ab61a7b68961c6315048b351 - package_name: font-latin-modern - version: 0.0.1 - dependencies: [] - test_only: false -- name: registered.d9b4b850ab61a7b68961c6315048b351.font-latin-modern-math.0.0.1 - contents: - type: registered - registry_hash_value: d9b4b850ab61a7b68961c6315048b351 - package_name: font-latin-modern-math - version: 0.0.1 - dependencies: [] - test_only: false -- name: registered.d9b4b850ab61a7b68961c6315048b351.footnote-scheme.0.0.1 - contents: - type: registered - registry_hash_value: d9b4b850ab61a7b68961c6315048b351 - package_name: footnote-scheme - version: 0.0.1 - dependencies: - - registered.d9b4b850ab61a7b68961c6315048b351.stdlib.0.0.1 - test_only: false -- name: registered.d9b4b850ab61a7b68961c6315048b351.itemize.0.0.1 - contents: - type: registered - registry_hash_value: d9b4b850ab61a7b68961c6315048b351 - package_name: itemize - version: 0.0.1 - dependencies: - - registered.d9b4b850ab61a7b68961c6315048b351.stdlib.0.0.1 - test_only: false -- name: registered.d9b4b850ab61a7b68961c6315048b351.math.0.0.1 - contents: - type: registered - registry_hash_value: d9b4b850ab61a7b68961c6315048b351 - package_name: math - version: 0.0.1 - dependencies: - - registered.d9b4b850ab61a7b68961c6315048b351.stdlib.0.0.1 - test_only: false -- name: registered.d9b4b850ab61a7b68961c6315048b351.stdlib.0.0.1 - contents: - type: registered - registry_hash_value: d9b4b850ab61a7b68961c6315048b351 - package_name: stdlib - version: 0.0.1 - dependencies: [] - test_only: false diff --git a/lib-satysfi/packages/md-ja/md-ja.0.0.1/saphe.lock.yaml.expected b/lib-satysfi/packages/md-ja/md-ja.0.0.1/saphe.lock.yaml.expected new file mode 100644 index 000000000..93108d7ff --- /dev/null +++ b/lib-satysfi/packages/md-ja/md-ja.0.0.1/saphe.lock.yaml.expected @@ -0,0 +1,124 @@ +saphe: ^0.1.0-alpha.1 +locks: +- name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.annot.0.0.1 + dependencies: + - name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.stdlib.0.0.1 + used_as: Stdlib + test_only: false + registered: + registry_hash_value: 6f2b80e9bb7c4e8af2104999fc25dbb3 + package_name: annot + version: 0.0.1 +- name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.code.0.0.1 + dependencies: + - name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.stdlib.0.0.1 + used_as: Stdlib + - name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.font-latin-modern.0.0.1 + used_as: FontLatinModern + test_only: false + registered: + registry_hash_value: 6f2b80e9bb7c4e8af2104999fc25dbb3 + package_name: code + version: 0.0.1 +- name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.font-ipa-ex.0.0.1 + dependencies: [] + test_only: false + registered: + registry_hash_value: 6f2b80e9bb7c4e8af2104999fc25dbb3 + package_name: font-ipa-ex + version: 0.0.1 +- name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.font-junicode.0.0.1 + dependencies: [] + test_only: false + registered: + registry_hash_value: 6f2b80e9bb7c4e8af2104999fc25dbb3 + package_name: font-junicode + version: 0.0.1 +- name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.font-latin-modern.0.0.1 + dependencies: [] + test_only: false + registered: + registry_hash_value: 6f2b80e9bb7c4e8af2104999fc25dbb3 + package_name: font-latin-modern + version: 0.0.1 +- name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.font-latin-modern-math.0.0.1 + dependencies: [] + test_only: false + registered: + registry_hash_value: 6f2b80e9bb7c4e8af2104999fc25dbb3 + package_name: font-latin-modern-math + version: 0.0.1 +- name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.footnote-scheme.0.0.1 + dependencies: + - name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.stdlib.0.0.1 + used_as: Stdlib + test_only: false + registered: + registry_hash_value: 6f2b80e9bb7c4e8af2104999fc25dbb3 + package_name: footnote-scheme + version: 0.0.1 +- name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.hyph-english.0.0.1 + dependencies: [] + test_only: false + registered: + registry_hash_value: 6f2b80e9bb7c4e8af2104999fc25dbb3 + package_name: hyph-english + version: 0.0.1 +- name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.itemize.0.0.1 + dependencies: + - name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.stdlib.0.0.1 + used_as: Stdlib + test_only: false + registered: + registry_hash_value: 6f2b80e9bb7c4e8af2104999fc25dbb3 + package_name: itemize + version: 0.0.1 +- name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.math.0.0.1 + dependencies: + - name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.stdlib.0.0.1 + used_as: Stdlib + test_only: false + registered: + registry_hash_value: 6f2b80e9bb7c4e8af2104999fc25dbb3 + package_name: math + version: 0.0.1 +- name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.stdlib.0.0.1 + dependencies: [] + test_only: false + registered: + registry_hash_value: 6f2b80e9bb7c4e8af2104999fc25dbb3 + package_name: stdlib + version: 0.0.1 +- name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.unidata.0.0.1 + dependencies: [] + test_only: false + registered: + registry_hash_value: 6f2b80e9bb7c4e8af2104999fc25dbb3 + package_name: unidata + version: 0.0.1 +dependencies: +- name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.annot.0.0.1 + used_as: Annot +- name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.code.0.0.1 + used_as: Code +- name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.font-ipa-ex.0.0.1 + used_as: FontIpaEx +- name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.font-junicode.0.0.1 + used_as: FontJunicode +- name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.font-latin-modern.0.0.1 + used_as: FontLatinModern +- name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.font-latin-modern-math.0.0.1 + used_as: FontLatinModernMath +- name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.footnote-scheme.0.0.1 + used_as: FootnoteScheme +- name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.hyph-english.0.0.1 + used_as: HyphEnglish +- name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.itemize.0.0.1 + used_as: Itemize +- name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.math.0.0.1 + used_as: Math +- name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.stdlib.0.0.1 + used_as: Stdlib +- name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.unidata.0.0.1 + used_as: Unidata +test_dependencies: [] diff --git a/lib-satysfi/packages/md-ja/md-ja.0.0.1/saphe.yaml b/lib-satysfi/packages/md-ja/md-ja.0.0.1/saphe.yaml new file mode 100644 index 000000000..8cbb9bfbc --- /dev/null +++ b/lib-satysfi/packages/md-ja/md-ja.0.0.1/saphe.yaml @@ -0,0 +1,97 @@ +saphe: "^0.1.0-alpha.1" +satysfi: "^0.1.0-alpha.1" +name: "md-ja" +authors: + - "Takashi Suwa <@gfngfn>" + - "hikalium <@hikalium>" +registries: + - name: "default" + git: + url: "https://github.com/SATySFi/default-registry" + branch: "temp-dev-saphe" +contents: + library: + main_module: "MDJa" + source_directories: + - "./src" + markdown_conversion: + document: "MDJa.document" + paragraph: "+MDJa.p" + hr: "+MDJa.hr" + h1: "+MDJa.h1" + h2: "+MDJa.h2" + h3: "+MDJa.h3" + h4: "+MDJa.h4" + h5: "+MDJa.h5" + h6: "+MDJa.h6" + ul: "+MDJa.ul-block" + ol: "+MDJa.ol-block" + code_block: "+MDJa.code" + blockquote: "+MDJa.quote" + emph: "\\MDJa.emph" + strong: "\\MDJa.string" + hard_break: null + code: "\\MDJa.code" + link: "\\MDJa.link" + img: "\\MDJa.img" +dependencies: + - used_as: "Stdlib" + registered: + registry: "default" + name: "stdlib" + requirement: "^0.0.1" + - used_as: "Math" + registered: + registry: "default" + name: "math" + requirement: "^0.0.1" + - used_as: "Annot" + registered: + registry: "default" + name: "annot" + requirement: "^0.0.1" + - used_as: "Code" + registered: + registry: "default" + name: "code" + requirement: "^0.0.1" + - used_as: "FootnoteScheme" + registered: + registry: "default" + name: "footnote-scheme" + requirement: "^0.0.1" + - used_as: "Itemize" + registered: + registry: "default" + name: "itemize" + requirement: "^0.0.1" + - used_as: "FontJunicode" + registered: + registry: "default" + name: "font-junicode" + requirement: "^0.0.1" + - used_as: "FontLatinModern" + registered: + registry: "default" + name: "font-latin-modern" + requirement: "^0.0.1" + - used_as: "FontIpaEx" + registered: + registry: "default" + name: "font-ipa-ex" + requirement: "^0.0.1" + - used_as: "FontLatinModernMath" + registered: + registry: "default" + name: "font-latin-modern-math" + requirement: "^0.0.1" + - used_as: "HyphEnglish" + registered: + registry: "default" + name: "hyph-english" + requirement: "^0.0.1" + - used_as: "Unidata" + registered: + registry: "default" + name: "unidata" + requirement: "^0.0.1" diff --git a/lib-satysfi/packages/md-ja/md-ja.0.0.1/satysfi-envelope.yaml.expected b/lib-satysfi/packages/md-ja/md-ja.0.0.1/satysfi-envelope.yaml.expected new file mode 100644 index 000000000..787901b18 --- /dev/null +++ b/lib-satysfi/packages/md-ja/md-ja.0.0.1/satysfi-envelope.yaml.expected @@ -0,0 +1,25 @@ +library: + main_module: MDJa + source_directories: + - ./src + test_directories: [] + markdown_conversion: + document: MDJa.document + paragraph: +MDJa.p + hr: +MDJa.hr + h1: +MDJa.h1 + h2: +MDJa.h2 + h3: +MDJa.h3 + h4: +MDJa.h4 + h5: +MDJa.h5 + h6: +MDJa.h6 + ul: +MDJa.ul-block + ol: +MDJa.ol-block + code_block: +MDJa.code + blockquote: +MDJa.quote + emph: \MDJa.emph + strong: \MDJa.string + hard_break: + code: \MDJa.code + link: \MDJa.link + img: \MDJa.img diff --git a/lib-satysfi/packages/md-ja/md-ja.0.0.1/satysfi.yaml b/lib-satysfi/packages/md-ja/md-ja.0.0.1/satysfi.yaml deleted file mode 100644 index 4e55aca25..000000000 --- a/lib-satysfi/packages/md-ja/md-ja.0.0.1/satysfi.yaml +++ /dev/null @@ -1,90 +0,0 @@ -language: "^0.1.0" -name: "md-ja" -authors: - - "Takashi Suwa <@gfngfn>" - - "hikalium <@hikalium>" -registries: - - name: "default" - remote: - type: "git" - url: "https://github.com/SATySFi/default-registry" - branch: "format-1" -contents: - type: "library" - main_module: "MDJa" - source_directories: - - "./src" - dependencies: - - name: "stdlib" - spec: - type: "registered" - registry: "default" - requirement: "^0.0.1" - - name: "math" - spec: - type: "registered" - registry: "default" - requirement: "^0.0.1" - - name: "annot" - spec: - type: "registered" - registry: "default" - requirement: "^0.0.1" - - name: "code" - spec: - type: "registered" - registry: "default" - requirement: "^0.0.1" - - name: "footnote-scheme" - spec: - type: "registered" - registry: "default" - requirement: "^0.0.1" - - name: "itemize" - spec: - type: "registered" - registry: "default" - requirement: "^0.0.1" - - name: "font-junicode" - spec: - type: "registered" - registry: "default" - requirement: "^0.0.1" - - name: "font-latin-modern" - spec: - type: "registered" - registry: "default" - requirement: "^0.0.1" - - name: "font-ipa-ex" - spec: - type: "registered" - registry: "default" - requirement: "^0.0.1" - - name: "font-latin-modern-math" - spec: - type: "registered" - registry: "default" - requirement: "^0.0.1" - conversion: - - type: "markdown" - document: "MDJa.document" - paragraph: "+MDJa.p" - hr: "+MDJa.hr" - h1: "+MDJa.h1" - h2: "+MDJa.h2" - h3: "+MDJa.h3" - h4: "+MDJa.h4" - h5: "+MDJa.h5" - h6: "+MDJa.h6" - ul: "+MDJa.ul-block" - ol: "+MDJa.ol-block" - code_block: "+MDJa.code" - blockquote: "+MDJa.quote" - - emph: "\\MDJa.emph" - strong: "\\MDJa.string" - hard_break: - type: "none" - code: "\\MDJa.code" - link: "\\MDJa.link" - img: "\\MDJa.img" diff --git a/lib-satysfi/packages/md-ja/md-ja.0.0.1/src/md-ja.satyh b/lib-satysfi/packages/md-ja/md-ja.0.0.1/src/md-ja.satyh index 8b041b578..08fae4101 100644 --- a/lib-satysfi/packages/md-ja/md-ja.0.0.1/src/md-ja.satyh +++ b/lib-satysfi/packages/md-ja/md-ja.0.0.1/src/md-ja.satyh @@ -4,6 +4,9 @@ use package Code use package Itemize use package Annot +use package HyphEnglish +use package Unidata + use package FontJunicode use package FontIpaEx use package FontLatinModern @@ -88,6 +91,8 @@ end = struct val initial-context = get-initial-context text-width (command \Math.math) + |> set-hyphenation-dictionary HyphEnglish.hyphenation + |> set-unicode-char-database Unidata.unidata |> set-dominant-narrow-script Latin |> set-dominant-wide-script Kana |> set-latin-font font-latin-roman @@ -162,7 +167,7 @@ end = struct let decoset = Annot.register-location-frame key-pdf-loc in let ib = inline-frame-breakable pads-zero decoset (read-inline ctx it) in line-break true true ctx (ib ++ inline-fil) - )) |> List.fold-left (+++) block-nil + )) |> List.fold (+++) block-nil in let bb-heading = let ctx = ctx |> h1-heading in @@ -186,7 +191,7 @@ end = struct |) in page-break paper pagecontf pagepartsf - (List.fold-left (+++) block-nil [ + (List.fold (+++) block-nil [ bb-title, bb-author, block-skip skip-before-content, bb-main, @@ -294,7 +299,7 @@ end = struct if string-same name `console` then '<+Code.console(fix-block-code s);> else - '<+Code.code(fix-block-code s);> + '<+Code.Default.code(fix-block-code s);> in read-block ctx bt @@ -313,7 +318,7 @@ end = struct let color = (Gray(0.75)) in line-break true true ctx (inline-graphics w h h (fun (x, y) -> - stroke hr-thickness color (Gr.line (x, y) (x +' w, y)) + stroke hr-thickness color (Path.line (x, y) (x +' w, y)) )) @@ -373,6 +378,6 @@ end = struct val inline ctx \hard-break = - Pervasives.mandatory-break ctx + Inline.mandatory-break ctx end diff --git a/lib-satysfi/packages/proof/proof.0.0.1/package.satysfi-lock-expected b/lib-satysfi/packages/proof/proof.0.0.1/package.satysfi-lock-expected deleted file mode 100644 index 22b630ca5..000000000 --- a/lib-satysfi/packages/proof/proof.0.0.1/package.satysfi-lock-expected +++ /dev/null @@ -1,10 +0,0 @@ -language: ^0.1.0 -locks: -- name: registered.d9b4b850ab61a7b68961c6315048b351.stdlib.0.0.1 - contents: - type: registered - registry_hash_value: d9b4b850ab61a7b68961c6315048b351 - package_name: stdlib - version: 0.0.1 - dependencies: [] - test_only: false diff --git a/lib-satysfi/packages/proof/proof.0.0.1/saphe.lock.yaml.expected b/lib-satysfi/packages/proof/proof.0.0.1/saphe.lock.yaml.expected new file mode 100644 index 000000000..5ac1e2cee --- /dev/null +++ b/lib-satysfi/packages/proof/proof.0.0.1/saphe.lock.yaml.expected @@ -0,0 +1,13 @@ +saphe: ^0.1.0-alpha.1 +locks: +- name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.stdlib.0.0.1 + dependencies: [] + test_only: false + registered: + registry_hash_value: 6f2b80e9bb7c4e8af2104999fc25dbb3 + package_name: stdlib + version: 0.0.1 +dependencies: +- name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.stdlib.0.0.1 + used_as: Stdlib +test_dependencies: [] diff --git a/lib-satysfi/packages/proof/proof.0.0.1/saphe.yaml b/lib-satysfi/packages/proof/proof.0.0.1/saphe.yaml new file mode 100644 index 000000000..df6017f5a --- /dev/null +++ b/lib-satysfi/packages/proof/proof.0.0.1/saphe.yaml @@ -0,0 +1,21 @@ +saphe: "^0.1.0-alpha.1" +satysfi: "^0.1.0-alpha.1" +name: "proof" +authors: + - "Takashi Suwa <@gfngfn>" +registries: + - name: "default" + git: + url: "https://github.com/SATySFi/default-registry" + branch: "temp-dev-saphe" +contents: + library: + main_module: "Proof" + source_directories: + - "./src" +dependencies: + - used_as: "Stdlib" + registered: + registry: "default" + name: "stdlib" + requirement: "^0.0.1" diff --git a/lib-satysfi/packages/proof/proof.0.0.1/satysfi-envelope.yaml.expected b/lib-satysfi/packages/proof/proof.0.0.1/satysfi-envelope.yaml.expected new file mode 100644 index 000000000..739da3499 --- /dev/null +++ b/lib-satysfi/packages/proof/proof.0.0.1/satysfi-envelope.yaml.expected @@ -0,0 +1,5 @@ +library: + main_module: Proof + source_directories: + - ./src + test_directories: [] diff --git a/lib-satysfi/packages/proof/proof.0.0.1/satysfi.yaml b/lib-satysfi/packages/proof/proof.0.0.1/satysfi.yaml deleted file mode 100644 index c0a2b7eb0..000000000 --- a/lib-satysfi/packages/proof/proof.0.0.1/satysfi.yaml +++ /dev/null @@ -1,21 +0,0 @@ -language: "^0.1.0" -name: "proof" -authors: - - "Takashi Suwa <@gfngfn>" -registries: - - name: "default" - remote: - type: "git" - url: "https://github.com/SATySFi/default-registry" - branch: "format-1" -contents: - type: "library" - main_module: "Proof" - source_directories: - - "./src" - dependencies: - - name: "stdlib" - spec: - type: "registered" - registry: "default" - requirement: "^0.0.1" diff --git a/lib-satysfi/packages/proof/proof.0.0.1/src/proof.satyh b/lib-satysfi/packages/proof/proof.0.0.1/src/proof.satyh index e9dffdcc5..d72929a51 100644 --- a/lib-satysfi/packages/proof/proof.0.0.1/src/proof.satyh +++ b/lib-satysfi/packages/proof/proof.0.0.1/src/proof.satyh @@ -11,10 +11,6 @@ end = struct embed-inline-to-math MathOrd (inline-skip len) - val length-max len1 len2 = - if len1 <' len2 then len2 else len1 - - val derive ctx nameopt bopt widopt (mlst1 : list math-text) (m2 : math-text) = let ib-space = match widopt with @@ -24,7 +20,7 @@ end = struct in embed-inline-to-math MathInner ( let ibacc1 = - (mlst1 |> List.fold-left-adjacent (fun ibacc1 m prevopt _ -> ( + (mlst1 |> List.fold-adjacent (fun ibacc1 m prevopt _ -> ( let ibm = embed-math ctx (read-math ctx m) in match prevopt with | None -> inline-fil ++ ibm @@ -41,8 +37,8 @@ end = struct let ib2 = inline-fil ++ (embed-math ctx (read-math ctx m2)) ++ inline-fil in let w = match widopt with - | None -> length-max (Pervasives.get-natural-width ib1) (Pervasives.get-natural-width ib2) - | Some(wid) -> length-max wid (Pervasives.get-natural-width ib2) + | None -> Length.max (Inline.get-natural-advance ib1) (Inline.get-natural-advance ib2) + | Some(wid) -> Length.max wid (Inline.get-natural-advance ib2) end in let color = get-text-color ctx in @@ -63,14 +59,14 @@ end = struct | Some(true) -> 0pt end in - ((fun pt -> [Gr.text-rightward pt ib]), wname) + ((fun pt -> [Graphics.text-rightward pt ib]), wname) end in let axis-height = get-font-size ctx *' get-math-axis-height-ratio ctx in let bar = inline-graphics w (thickness +' gap) gap (fun (x, y) -> ( let grs = - fill color (Gr.rectangle (x, y) (x +' w, y +' thickness)) + fill color (Path.rectangle (x, y) (x +' w, y +' thickness)) :: (glnamef (x +' w, y -' axis-height)) in unite-graphics grs diff --git a/lib-satysfi/packages/std-ja-book/std-ja-book.0.0.1/package.satysfi-lock-expected b/lib-satysfi/packages/std-ja-book/std-ja-book.0.0.1/package.satysfi-lock-expected deleted file mode 100644 index 24180faa1..000000000 --- a/lib-satysfi/packages/std-ja-book/std-ja-book.0.0.1/package.satysfi-lock-expected +++ /dev/null @@ -1,79 +0,0 @@ -language: ^0.1.0 -locks: -- name: registered.d9b4b850ab61a7b68961c6315048b351.annot.0.0.1 - contents: - type: registered - registry_hash_value: d9b4b850ab61a7b68961c6315048b351 - package_name: annot - version: 0.0.1 - dependencies: - - registered.d9b4b850ab61a7b68961c6315048b351.stdlib.0.0.1 - test_only: false -- name: registered.d9b4b850ab61a7b68961c6315048b351.code.0.0.1 - contents: - type: registered - registry_hash_value: d9b4b850ab61a7b68961c6315048b351 - package_name: code - version: 0.0.1 - dependencies: - - registered.d9b4b850ab61a7b68961c6315048b351.stdlib.0.0.1 - - registered.d9b4b850ab61a7b68961c6315048b351.font-latin-modern.0.0.1 - test_only: false -- name: registered.d9b4b850ab61a7b68961c6315048b351.font-ipa-ex.0.0.1 - contents: - type: registered - registry_hash_value: d9b4b850ab61a7b68961c6315048b351 - package_name: font-ipa-ex - version: 0.0.1 - dependencies: [] - test_only: false -- name: registered.d9b4b850ab61a7b68961c6315048b351.font-junicode.0.0.1 - contents: - type: registered - registry_hash_value: d9b4b850ab61a7b68961c6315048b351 - package_name: font-junicode - version: 0.0.1 - dependencies: [] - test_only: false -- name: registered.d9b4b850ab61a7b68961c6315048b351.font-latin-modern.0.0.1 - contents: - type: registered - registry_hash_value: d9b4b850ab61a7b68961c6315048b351 - package_name: font-latin-modern - version: 0.0.1 - dependencies: [] - test_only: false -- name: registered.d9b4b850ab61a7b68961c6315048b351.font-latin-modern-math.0.0.1 - contents: - type: registered - registry_hash_value: d9b4b850ab61a7b68961c6315048b351 - package_name: font-latin-modern-math - version: 0.0.1 - dependencies: [] - test_only: false -- name: registered.d9b4b850ab61a7b68961c6315048b351.footnote-scheme.0.0.1 - contents: - type: registered - registry_hash_value: d9b4b850ab61a7b68961c6315048b351 - package_name: footnote-scheme - version: 0.0.1 - dependencies: - - registered.d9b4b850ab61a7b68961c6315048b351.stdlib.0.0.1 - test_only: false -- name: registered.d9b4b850ab61a7b68961c6315048b351.math.0.0.1 - contents: - type: registered - registry_hash_value: d9b4b850ab61a7b68961c6315048b351 - package_name: math - version: 0.0.1 - dependencies: - - registered.d9b4b850ab61a7b68961c6315048b351.stdlib.0.0.1 - test_only: false -- name: registered.d9b4b850ab61a7b68961c6315048b351.stdlib.0.0.1 - contents: - type: registered - registry_hash_value: d9b4b850ab61a7b68961c6315048b351 - package_name: stdlib - version: 0.0.1 - dependencies: [] - test_only: false diff --git a/lib-satysfi/packages/std-ja-book/std-ja-book.0.0.1/saphe.lock.yaml.expected b/lib-satysfi/packages/std-ja-book/std-ja-book.0.0.1/saphe.lock.yaml.expected new file mode 100644 index 000000000..b3f12adda --- /dev/null +++ b/lib-satysfi/packages/std-ja-book/std-ja-book.0.0.1/saphe.lock.yaml.expected @@ -0,0 +1,113 @@ +saphe: ^0.1.0-alpha.1 +locks: +- name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.annot.0.0.1 + dependencies: + - name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.stdlib.0.0.1 + used_as: Stdlib + test_only: false + registered: + registry_hash_value: 6f2b80e9bb7c4e8af2104999fc25dbb3 + package_name: annot + version: 0.0.1 +- name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.code.0.0.1 + dependencies: + - name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.stdlib.0.0.1 + used_as: Stdlib + - name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.font-latin-modern.0.0.1 + used_as: FontLatinModern + test_only: false + registered: + registry_hash_value: 6f2b80e9bb7c4e8af2104999fc25dbb3 + package_name: code + version: 0.0.1 +- name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.font-ipa-ex.0.0.1 + dependencies: [] + test_only: false + registered: + registry_hash_value: 6f2b80e9bb7c4e8af2104999fc25dbb3 + package_name: font-ipa-ex + version: 0.0.1 +- name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.font-junicode.0.0.1 + dependencies: [] + test_only: false + registered: + registry_hash_value: 6f2b80e9bb7c4e8af2104999fc25dbb3 + package_name: font-junicode + version: 0.0.1 +- name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.font-latin-modern.0.0.1 + dependencies: [] + test_only: false + registered: + registry_hash_value: 6f2b80e9bb7c4e8af2104999fc25dbb3 + package_name: font-latin-modern + version: 0.0.1 +- name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.font-latin-modern-math.0.0.1 + dependencies: [] + test_only: false + registered: + registry_hash_value: 6f2b80e9bb7c4e8af2104999fc25dbb3 + package_name: font-latin-modern-math + version: 0.0.1 +- name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.footnote-scheme.0.0.1 + dependencies: + - name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.stdlib.0.0.1 + used_as: Stdlib + test_only: false + registered: + registry_hash_value: 6f2b80e9bb7c4e8af2104999fc25dbb3 + package_name: footnote-scheme + version: 0.0.1 +- name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.hyph-english.0.0.1 + dependencies: [] + test_only: false + registered: + registry_hash_value: 6f2b80e9bb7c4e8af2104999fc25dbb3 + package_name: hyph-english + version: 0.0.1 +- name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.math.0.0.1 + dependencies: + - name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.stdlib.0.0.1 + used_as: Stdlib + test_only: false + registered: + registry_hash_value: 6f2b80e9bb7c4e8af2104999fc25dbb3 + package_name: math + version: 0.0.1 +- name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.stdlib.0.0.1 + dependencies: [] + test_only: false + registered: + registry_hash_value: 6f2b80e9bb7c4e8af2104999fc25dbb3 + package_name: stdlib + version: 0.0.1 +- name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.unidata.0.0.1 + dependencies: [] + test_only: false + registered: + registry_hash_value: 6f2b80e9bb7c4e8af2104999fc25dbb3 + package_name: unidata + version: 0.0.1 +dependencies: +- name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.annot.0.0.1 + used_as: Annot +- name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.code.0.0.1 + used_as: Code +- name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.font-ipa-ex.0.0.1 + used_as: FontIpaEx +- name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.font-junicode.0.0.1 + used_as: FontJunicode +- name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.font-latin-modern.0.0.1 + used_as: FontLatinModern +- name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.font-latin-modern-math.0.0.1 + used_as: FontLatinModernMath +- name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.footnote-scheme.0.0.1 + used_as: FootnoteScheme +- name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.hyph-english.0.0.1 + used_as: HyphEnglish +- name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.math.0.0.1 + used_as: Math +- name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.stdlib.0.0.1 + used_as: Stdlib +- name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.unidata.0.0.1 + used_as: Unidata +test_dependencies: [] diff --git a/lib-satysfi/packages/std-ja-book/std-ja-book.0.0.1/saphe.yaml b/lib-satysfi/packages/std-ja-book/std-ja-book.0.0.1/saphe.yaml new file mode 100644 index 000000000..b19092ce8 --- /dev/null +++ b/lib-satysfi/packages/std-ja-book/std-ja-book.0.0.1/saphe.yaml @@ -0,0 +1,74 @@ +saphe: "^0.1.0-alpha.1" +satysfi: "^0.1.0-alpha.1" +name: "std-ja-book" +authors: + - "Takashi Suwa <@gfngfn>" + - "Daiki Matsunaga <@matsud224>" + - "Takuma Ishikawa <@nekketsuuu>" + - "Naoki Kaneko <@puripuri2100>" +registries: + - name: "default" + git: + url: "https://github.com/SATySFi/default-registry" + branch: "temp-dev-saphe" +contents: + library: + main_module: "StdJaBook" + source_directories: + - "./src" +dependencies: + - used_as: "Stdlib" + registered: + registry: "default" + name: "stdlib" + requirement: "^0.0.1" + - used_as: "Math" + registered: + registry: "default" + name: "math" + requirement: "^0.0.1" + - used_as: "Annot" + registered: + registry: "default" + name: "annot" + requirement: "^0.0.1" + - used_as: "Code" + registered: + registry: "default" + name: "code" + requirement: "^0.0.1" + - used_as: "FootnoteScheme" + registered: + registry: "default" + name: "footnote-scheme" + requirement: "^0.0.1" + - used_as: "FontJunicode" + registered: + registry: "default" + name: "font-junicode" + requirement: "^0.0.1" + - used_as: "FontLatinModern" + registered: + registry: "default" + name: "font-latin-modern" + requirement: "^0.0.1" + - used_as: "FontIpaEx" + registered: + registry: "default" + name: "font-ipa-ex" + requirement: "^0.0.1" + - used_as: "FontLatinModernMath" + registered: + registry: "default" + name: "font-latin-modern-math" + requirement: "^0.0.1" + - used_as: "HyphEnglish" + registered: + registry: "default" + name: "hyph-english" + requirement: "^0.0.1" + - used_as: "Unidata" + registered: + registry: "default" + name: "unidata" + requirement: "^0.0.1" diff --git a/lib-satysfi/packages/std-ja-book/std-ja-book.0.0.1/satysfi-envelope.yaml.expected b/lib-satysfi/packages/std-ja-book/std-ja-book.0.0.1/satysfi-envelope.yaml.expected new file mode 100644 index 000000000..7b216ed5b --- /dev/null +++ b/lib-satysfi/packages/std-ja-book/std-ja-book.0.0.1/satysfi-envelope.yaml.expected @@ -0,0 +1,5 @@ +library: + main_module: StdJaBook + source_directories: + - ./src + test_directories: [] diff --git a/lib-satysfi/packages/std-ja-book/std-ja-book.0.0.1/satysfi.yaml b/lib-satysfi/packages/std-ja-book/std-ja-book.0.0.1/satysfi.yaml deleted file mode 100644 index 92eaa07e4..000000000 --- a/lib-satysfi/packages/std-ja-book/std-ja-book.0.0.1/satysfi.yaml +++ /dev/null @@ -1,64 +0,0 @@ -language: "^0.1.0" -name: "std-ja-book" -authors: - - "Takashi Suwa <@gfngfn>" - - "Daiki Matsunaga <@matsud224>" - - "Takuma Ishikawa <@nekketsuuu>" - - "Naoki Kaneko <@puripuri2100>" -registries: - - name: "default" - remote: - type: "git" - url: "https://github.com/SATySFi/default-registry" - branch: "format-1" -contents: - type: "library" - main_module: "StdJaBook" - source_directories: - - "./src" - dependencies: - - name: "stdlib" - spec: - type: "registered" - registry: "default" - requirement: "^0.0.1" - - name: "math" - spec: - type: "registered" - registry: "default" - requirement: "^0.0.1" - - name: "annot" - spec: - type: "registered" - registry: "default" - requirement: "^0.0.1" - - name: "code" - spec: - type: "registered" - registry: "default" - requirement: "^0.0.1" - - name: "footnote-scheme" - spec: - type: "registered" - registry: "default" - requirement: "^0.0.1" - - name: "font-junicode" - spec: - type: "registered" - registry: "default" - requirement: "^0.0.1" - - name: "font-latin-modern" - spec: - type: "registered" - registry: "default" - requirement: "^0.0.1" - - name: "font-ipa-ex" - spec: - type: "registered" - registry: "default" - requirement: "^0.0.1" - - name: "font-latin-modern-math" - spec: - type: "registered" - registry: "default" - requirement: "^0.0.1" diff --git a/lib-satysfi/packages/std-ja-book/std-ja-book.0.0.1/src/std-ja-book.satyh b/lib-satysfi/packages/std-ja-book/std-ja-book.0.0.1/src/std-ja-book.satyh index eff36ca92..2064849bc 100644 --- a/lib-satysfi/packages/std-ja-book/std-ja-book.0.0.1/src/std-ja-book.satyh +++ b/lib-satysfi/packages/std-ja-book/std-ja-book.0.0.1/src/std-ja-book.satyh @@ -4,6 +4,9 @@ use package Annot use package Code use package FootnoteScheme +use package HyphEnglish +use package Unidata + use package FontJunicode use package FontIpaEx use package FontLatinModern @@ -19,9 +22,9 @@ module StdJaBook :> sig paper-size : length * length, text-width : length, text-height : length, - text-origin : Pervasives.point, %- TODO: remove this by using 'open' - header-origin : Pervasives.point, - footer-origin : Pervasives.point, + text-origin : point, + header-origin : point, + footer-origin : point, header-width : length, footer-width : length, ) (| @@ -55,7 +58,6 @@ end = struct | TOCElementSection of string * inline-text | TOCElementSubsection of string * inline-text - val generate-fresh-label = let mutable count <- 0 in (fun () -> ( @@ -63,10 +65,8 @@ end = struct `generated:` ^ (arabic (!count)) )) - val no-pads = (0pt, 0pt, 0pt, 0pt) - val inline ctx \ref key = let opt = get-cross-reference (key ^ `:num`) in let it = @@ -77,7 +77,6 @@ end = struct in script-guard Latin (inline-frame-breakable no-pads (Annot.link-to-location-frame key None) (read-inline ctx it)) - val inline ctx \ref-page key = let opt = get-cross-reference (key ^ `:page`) in let it = @@ -88,7 +87,6 @@ end = struct in inline-frame-breakable no-pads (Annot.link-to-location-frame key None) (read-inline ctx it) - val font-size-normal = 12pt val font-size-title = 32pt val font-size-author = 16pt @@ -119,19 +117,18 @@ end = struct val font-cjk-mincho = (FontIpaEx.mincho , font-ratio-cjk , 0.) val font-cjk-gothic = (FontIpaEx.gothic , font-ratio-cjk , 0.) - val set-latin-font font ctx = ctx |> set-font Latin font - val set-cjk-font font ctx = ctx |> set-font HanIdeographic font |> set-font Kana font - val get-standard-context wid = get-initial-context wid (command \Math.math) - |> set-code-text-command (command \Code.code) + |> set-code-text-command (command \Code.Default.code) + |> set-hyphenation-dictionary HyphEnglish.hyphenation + |> set-unicode-char-database Unidata.unidata |> set-dominant-wide-script Kana |> set-language Kana Japanese |> set-language HanIdeographic Japanese @@ -144,20 +141,16 @@ end = struct |> set-math-font FontLatinModernMath.main |> set-hyphen-penalty 100 - val mutable ref-float-boxes <- [] - val height-of-float-boxes pageno = % let () = display-message `get height` in - (!ref-float-boxes) |> List.fold-left (fun h (pn, bb) -> ( + (!ref-float-boxes) |> List.fold (fun h (pn, bb) -> ( if pn < pageno then h +' (get-natural-length bb) else h )) 0pt - val mutable ref-figure <- 0 - val inline ctx \figure ?(label = labelopt) caption inner = let () = ref-figure <- !ref-figure + 1 in let s-num = arabic (!ref-figure) in @@ -171,7 +164,7 @@ end = struct let ds = match labelopt with | Some(label) -> Annot.register-location-frame label - | None -> let d (_, _) _ _ _ = Gr.empty in (d, d, d, d) + | None -> VDecoSet.empty end in let bb-inner = @@ -180,11 +173,10 @@ end = struct +++ line-break true true ctx (inline-fil ++ read-inline ctx {図#it-num; #caption;} ++ inline-fil) )) in - hook-page-break (fun pbinfo _ -> ( -% let () = display-message (`register` ^ (arabic pbinfo#page-number)) in - ref-float-boxes <- (pbinfo#page-number, bb-inner) :: !ref-float-boxes - )) - + hook-page-break (fun pbinfo _ -> ( +% let () = display-message (`register` ^ (arabic pbinfo#page-number)) in + ref-float-boxes <- (pbinfo#page-number, bb-inner) :: !ref-float-boxes + )) val title-deco = let pads = (5pt, 5pt, 10pt, 10pt) in @@ -254,48 +246,42 @@ val title-deco = % if get-text-width ctx <' Pervasives.get-natural-width ib-title then % Pervasives.form-paragraph ctx-title (ib-title ++ inline-fil) % else - Pervasives.form-paragraph (ctx-title |> set-paragraph-margin 12pt 0pt) + Block.form-paragraph (ctx-title |> set-paragraph-margin 12pt 0pt) (inline-fil ++ ib-title ++ inline-fil) in let bb-line = - Pervasives.form-paragraph (ctx |> set-paragraph-margin title-line-margin title-line-margin) + Block.form-paragraph (ctx |> set-paragraph-margin title-line-margin title-line-margin) (ib-line ++ inline-fil) in - let bb-author = Pervasives.form-paragraph ctx-author (inline-fil ++ ib-author) in - bb-title +++ bb-line +++ bb-author + let bb-author = Block.form-paragraph ctx-author (inline-fil ++ ib-author) in + bb-title +++ bb-line +++ bb-author )) - val make-section-title ctx = ctx |> set-font-size font-size-section |> set-font Latin font-latin-sans |> set-cjk-font font-cjk-gothic - val make-subsection-title ctx = ctx |> set-font-size font-size-subsection |> set-font Latin font-latin-sans |> set-cjk-font font-cjk-gothic - val mutable toc-acc-ref <- [] val mutable outline-ref <- [] - val get-cross-reference-number label = match get-cross-reference (label ^ `:num`) with | None -> `?` | Some(s) -> s end - val get-cross-reference-page label = match get-cross-reference (label ^ `:page`) with | None -> `?` | Some(s) -> s end - val section-heading ctx ib-heading = let wid = get-text-width ctx in let h = section-line-sep in @@ -305,8 +291,8 @@ val title-deco = line-break true false (ctx |> set-paragraph-margin section-top-margin 0pt) (inline-graphics wid h 0pt (fun (x, y) -> unite-graphics [ - stroke th1 color (Gr.line (x, y +' h) (x +' wid, y +' h)), - stroke th2 color (Gr.line (x, y) (x +' wid, y)), + stroke th1 color (Path.line (x, y +' h) (x +' wid, y +' h)), + stroke th2 color (Path.line (x, y) (x +' wid, y)), ])) +++ line-break false false (ctx |> set-paragraph-margin section-top-padding section-bottom-padding) @@ -315,29 +301,26 @@ val title-deco = line-break false false (ctx |> set-paragraph-margin 0pt section-bottom-margin) (inline-graphics wid h 0pt (fun (x, y) -> unite-graphics [ - stroke th2 color (Gr.line (x, y +' h) (x +' wid, y +' h)), - stroke th1 color (Gr.line (x, y) (x +' wid, y)), + stroke th2 color (Path.line (x, y +' h) (x +' wid, y +' h)), + stroke th1 color (Path.line (x, y) (x +' wid, y)), ])) val inline ctx \dummy it = let ib = read-inline (ctx |> set-text-color Color.white) it in - let w = Pervasives.get-natural-width ib in + let w = Inline.get-natural-advance ib in ib ++ inline-skip (0pt -' w) - val rec repeat-inline n ib = if n <= 0 then inline-nil else ib ++ (repeat-inline (n - 1) ib) - val make-dots-line ctx w = let ib = read-inline ctx {.} ++ inline-skip 1pt in - let wdot = Pervasives.get-natural-width ib in + let wdot = Inline.get-natural-advance ib in let n = round (w /' wdot) in inline-fil ++ (repeat-inline n ib) - val document ?( show-page-number = show-page-number-opt, @@ -399,7 +382,7 @@ val title-deco = read-inline (make-section-title ctx-doc) {目次} ++ inline-fil in let bb-toc-main = - (!toc-acc-ref) |> List.reverse |> List.fold-left (fun bbacc tocelem -> ( + (!toc-acc-ref) |> List.reverse |> List.fold (fun bbacc tocelem -> ( match tocelem with | TOCElementSection(label, title) -> let it-num = embed-string (get-cross-reference-number label) in @@ -407,7 +390,7 @@ val title-deco = let ib-title = read-inline ctx-doc {#it-num;. #title;} ++ inline-skip 3pt in let ib-page = inline-skip 3pt ++ read-inline ctx-doc it-page in let ib-middle = - let w = (get-text-width ctx-doc) -' (Pervasives.get-natural-width ib-title) -' (Pervasives.get-natural-width ib-page) in + let w = (get-text-width ctx-doc) -' (Inline.get-natural-advance ib-title) -' (Inline.get-natural-advance ib-page) in if w <' 0pt then inline-fil else make-dots-line ctx-doc w in @@ -424,17 +407,19 @@ val title-deco = in let ib-page = inline-skip 3pt ++ read-inline ctx-doc it-page in let ib-middle = - let w = (get-text-width ctx-doc) -' (Pervasives.get-natural-width ib-indent) - -' (Pervasives.get-natural-width ib-title) -' (Pervasives.get-natural-width ib-page) in - if w <' 0pt then inline-fil else - make-dots-line ctx-doc w + let w = + (get-text-width ctx-doc) -' (Inline.get-natural-advance ib-indent) + -' (Inline.get-natural-advance ib-title) -' (Inline.get-natural-advance ib-page) + in + if w <' 0pt then inline-fil else + make-dots-line ctx-doc w in - bbacc +++ line-break true true ctx-doc - (ib-indent ++ (inline-frame-breakable no-pads (Annot.link-to-location-frame label None) (ib-title ++ ib-middle ++ ib-page))) + bbacc +++ line-break true true ctx-doc + (ib-indent ++ (inline-frame-breakable no-pads (Annot.link-to-location-frame label None) (ib-title ++ ib-middle ++ ib-page))) end )) block-nil in - (section-heading ctx-doc ib-toc-title) +++ bb-toc-main + (section-heading ctx-doc ib-toc-title) +++ bb-toc-main in % -- page settings -- @@ -462,7 +447,7 @@ val title-deco = in % let () = display-message `insert` in let (bb-float-boxes, acc) = - (!ref-float-boxes) |> List.fold-left (fun (bbacc, acc) elem -> ( + (!ref-float-boxes) |> List.fold (fun (bbacc, acc) elem -> ( let (pn, bb) = elem in if pn < pageno then let bbs = @@ -476,11 +461,11 @@ val title-deco = )) (block-nil, []) in let () = ref-float-boxes <- acc in - line-break true true ctx ib-text - +++ line-break true true (ctx |> set-paragraph-margin header-line-margin-top header-line-margin-bottom) - ((inline-graphics hdrwid thickness 0pt - (fun (x, y) -> fill Color.black (Gr.rectangle (x, y) (x +' hdrwid, y +' thickness)))) ++ inline-fil) - +++ bb-float-boxes + line-break true true ctx ib-text + +++ line-break true true (ctx |> set-paragraph-margin header-line-margin-top header-line-margin-bottom) + ((inline-graphics hdrwid thickness 0pt + (fun (x, y) -> fill Color.black (Path.rectangle (x, y) (x +' hdrwid, y +' thickness)))) ++ inline-fil) + +++ bb-float-boxes in let footer = if show-pages then @@ -500,19 +485,16 @@ val title-deco = in let doc = page-break page pagecontf pagepartsf (bb-title +++ bb-toc +++ bb-main) in let () = register-outline (List.reverse !outline-ref) in - doc - + doc val mutable needs-indentation-ref <- true val mutable num-section <- 0 val mutable num-subsection <- 0 - val quad-indent ctx = inline-skip (get-font-size ctx) - val block ctx +p inner = let needs-indentation = if !needs-indentation-ref then true else @@ -526,14 +508,12 @@ val title-deco = else ib-inner ++ inline-fil in - Pervasives.form-paragraph ctx br-parag - + Block.form-paragraph ctx br-parag val block ctx +pn inner = let () = needs-indentation-ref <- true in let ib-inner = read-inline ctx inner in - Pervasives.form-paragraph ctx (ib-inner ++ inline-fil) - + Block.form-paragraph ctx (ib-inner ++ inline-fil) val section-scheme ctx label title outline-title-opt inner = let ctx-title = make-section-title ctx in @@ -558,8 +538,7 @@ val title-deco = section-heading ctx ib in let bb-inner = read-block ctx inner in - bb-title +++ bb-inner - + bb-title +++ bb-inner val subsection-scheme ctx label title outline-title-opt inner = let () = num-subsection <- !num-subsection + 1 in @@ -581,8 +560,7 @@ val title-deco = (ib-num ++ (inline-skip 10pt) ++ ib-title ++ (inline-fil))) in let bb-inner = read-block ctx inner in - bb-title +++ bb-inner - + bb-title +++ bb-inner val block ctx +section ?(label = labelopt, outline-title = outline-title-opt) title inner = let label = @@ -593,7 +571,6 @@ val title-deco = in section-scheme ctx label title outline-title-opt inner - val block ctx +subsection ?(label = labelopt, outline-title = outline-title-opt) title inner = let label = match labelopt with @@ -601,8 +578,7 @@ val title-deco = | Some(label) -> label end in - subsection-scheme ctx label title outline-title-opt inner - + subsection-scheme ctx label title outline-title-opt inner val inline ctx \emph inner = let ctx-emph = @@ -610,8 +586,7 @@ val title-deco = |> set-cjk-font font-cjk-gothic |> set-text-color (CMYK(1., 0., 0., 0.)) in - read-inline ctx-emph inner - + read-inline ctx-emph inner val inline ctx \footnote it = let size = get-font-size ctx in @@ -631,8 +606,8 @@ val title-deco = |> set-paragraph-margin (size *' 0.5) (size *' 0.5) %temporary in - line-break false false ctx (read-inline ctx {#it-num; #it;} ++ inline-fil) + line-break false false ctx (read-inline ctx {#it-num; #it;} ++ inline-fil) in - FootnoteScheme.main ctx ibf bbf + FootnoteScheme.main ctx ibf bbf end diff --git a/lib-satysfi/packages/std-ja-report/std-ja-report.0.0.1/package.satysfi-lock-expected b/lib-satysfi/packages/std-ja-report/std-ja-report.0.0.1/package.satysfi-lock-expected deleted file mode 100644 index 24180faa1..000000000 --- a/lib-satysfi/packages/std-ja-report/std-ja-report.0.0.1/package.satysfi-lock-expected +++ /dev/null @@ -1,79 +0,0 @@ -language: ^0.1.0 -locks: -- name: registered.d9b4b850ab61a7b68961c6315048b351.annot.0.0.1 - contents: - type: registered - registry_hash_value: d9b4b850ab61a7b68961c6315048b351 - package_name: annot - version: 0.0.1 - dependencies: - - registered.d9b4b850ab61a7b68961c6315048b351.stdlib.0.0.1 - test_only: false -- name: registered.d9b4b850ab61a7b68961c6315048b351.code.0.0.1 - contents: - type: registered - registry_hash_value: d9b4b850ab61a7b68961c6315048b351 - package_name: code - version: 0.0.1 - dependencies: - - registered.d9b4b850ab61a7b68961c6315048b351.stdlib.0.0.1 - - registered.d9b4b850ab61a7b68961c6315048b351.font-latin-modern.0.0.1 - test_only: false -- name: registered.d9b4b850ab61a7b68961c6315048b351.font-ipa-ex.0.0.1 - contents: - type: registered - registry_hash_value: d9b4b850ab61a7b68961c6315048b351 - package_name: font-ipa-ex - version: 0.0.1 - dependencies: [] - test_only: false -- name: registered.d9b4b850ab61a7b68961c6315048b351.font-junicode.0.0.1 - contents: - type: registered - registry_hash_value: d9b4b850ab61a7b68961c6315048b351 - package_name: font-junicode - version: 0.0.1 - dependencies: [] - test_only: false -- name: registered.d9b4b850ab61a7b68961c6315048b351.font-latin-modern.0.0.1 - contents: - type: registered - registry_hash_value: d9b4b850ab61a7b68961c6315048b351 - package_name: font-latin-modern - version: 0.0.1 - dependencies: [] - test_only: false -- name: registered.d9b4b850ab61a7b68961c6315048b351.font-latin-modern-math.0.0.1 - contents: - type: registered - registry_hash_value: d9b4b850ab61a7b68961c6315048b351 - package_name: font-latin-modern-math - version: 0.0.1 - dependencies: [] - test_only: false -- name: registered.d9b4b850ab61a7b68961c6315048b351.footnote-scheme.0.0.1 - contents: - type: registered - registry_hash_value: d9b4b850ab61a7b68961c6315048b351 - package_name: footnote-scheme - version: 0.0.1 - dependencies: - - registered.d9b4b850ab61a7b68961c6315048b351.stdlib.0.0.1 - test_only: false -- name: registered.d9b4b850ab61a7b68961c6315048b351.math.0.0.1 - contents: - type: registered - registry_hash_value: d9b4b850ab61a7b68961c6315048b351 - package_name: math - version: 0.0.1 - dependencies: - - registered.d9b4b850ab61a7b68961c6315048b351.stdlib.0.0.1 - test_only: false -- name: registered.d9b4b850ab61a7b68961c6315048b351.stdlib.0.0.1 - contents: - type: registered - registry_hash_value: d9b4b850ab61a7b68961c6315048b351 - package_name: stdlib - version: 0.0.1 - dependencies: [] - test_only: false diff --git a/lib-satysfi/packages/std-ja-report/std-ja-report.0.0.1/saphe.lock.yaml.expected b/lib-satysfi/packages/std-ja-report/std-ja-report.0.0.1/saphe.lock.yaml.expected new file mode 100644 index 000000000..b3f12adda --- /dev/null +++ b/lib-satysfi/packages/std-ja-report/std-ja-report.0.0.1/saphe.lock.yaml.expected @@ -0,0 +1,113 @@ +saphe: ^0.1.0-alpha.1 +locks: +- name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.annot.0.0.1 + dependencies: + - name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.stdlib.0.0.1 + used_as: Stdlib + test_only: false + registered: + registry_hash_value: 6f2b80e9bb7c4e8af2104999fc25dbb3 + package_name: annot + version: 0.0.1 +- name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.code.0.0.1 + dependencies: + - name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.stdlib.0.0.1 + used_as: Stdlib + - name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.font-latin-modern.0.0.1 + used_as: FontLatinModern + test_only: false + registered: + registry_hash_value: 6f2b80e9bb7c4e8af2104999fc25dbb3 + package_name: code + version: 0.0.1 +- name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.font-ipa-ex.0.0.1 + dependencies: [] + test_only: false + registered: + registry_hash_value: 6f2b80e9bb7c4e8af2104999fc25dbb3 + package_name: font-ipa-ex + version: 0.0.1 +- name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.font-junicode.0.0.1 + dependencies: [] + test_only: false + registered: + registry_hash_value: 6f2b80e9bb7c4e8af2104999fc25dbb3 + package_name: font-junicode + version: 0.0.1 +- name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.font-latin-modern.0.0.1 + dependencies: [] + test_only: false + registered: + registry_hash_value: 6f2b80e9bb7c4e8af2104999fc25dbb3 + package_name: font-latin-modern + version: 0.0.1 +- name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.font-latin-modern-math.0.0.1 + dependencies: [] + test_only: false + registered: + registry_hash_value: 6f2b80e9bb7c4e8af2104999fc25dbb3 + package_name: font-latin-modern-math + version: 0.0.1 +- name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.footnote-scheme.0.0.1 + dependencies: + - name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.stdlib.0.0.1 + used_as: Stdlib + test_only: false + registered: + registry_hash_value: 6f2b80e9bb7c4e8af2104999fc25dbb3 + package_name: footnote-scheme + version: 0.0.1 +- name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.hyph-english.0.0.1 + dependencies: [] + test_only: false + registered: + registry_hash_value: 6f2b80e9bb7c4e8af2104999fc25dbb3 + package_name: hyph-english + version: 0.0.1 +- name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.math.0.0.1 + dependencies: + - name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.stdlib.0.0.1 + used_as: Stdlib + test_only: false + registered: + registry_hash_value: 6f2b80e9bb7c4e8af2104999fc25dbb3 + package_name: math + version: 0.0.1 +- name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.stdlib.0.0.1 + dependencies: [] + test_only: false + registered: + registry_hash_value: 6f2b80e9bb7c4e8af2104999fc25dbb3 + package_name: stdlib + version: 0.0.1 +- name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.unidata.0.0.1 + dependencies: [] + test_only: false + registered: + registry_hash_value: 6f2b80e9bb7c4e8af2104999fc25dbb3 + package_name: unidata + version: 0.0.1 +dependencies: +- name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.annot.0.0.1 + used_as: Annot +- name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.code.0.0.1 + used_as: Code +- name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.font-ipa-ex.0.0.1 + used_as: FontIpaEx +- name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.font-junicode.0.0.1 + used_as: FontJunicode +- name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.font-latin-modern.0.0.1 + used_as: FontLatinModern +- name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.font-latin-modern-math.0.0.1 + used_as: FontLatinModernMath +- name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.footnote-scheme.0.0.1 + used_as: FootnoteScheme +- name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.hyph-english.0.0.1 + used_as: HyphEnglish +- name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.math.0.0.1 + used_as: Math +- name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.stdlib.0.0.1 + used_as: Stdlib +- name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.unidata.0.0.1 + used_as: Unidata +test_dependencies: [] diff --git a/lib-satysfi/packages/std-ja-report/std-ja-report.0.0.1/saphe.yaml b/lib-satysfi/packages/std-ja-report/std-ja-report.0.0.1/saphe.yaml new file mode 100644 index 000000000..53881f208 --- /dev/null +++ b/lib-satysfi/packages/std-ja-report/std-ja-report.0.0.1/saphe.yaml @@ -0,0 +1,75 @@ +saphe: "^0.1.0-alpha.1" +satysfi: "^0.1.0-alpha.1" +name: "std-ja-book" +authors: + - "Takashi Suwa <@gfngfn>" + - "Takuma Ishikawa <@nekketsuuu>" + - "Naoki Kaneko <@puripuri2100>" + - "Daiki Matsunaga <@matsud224>" + - "El Pin Al <@elpinal>" +registries: + - name: "default" + git: + url: "https://github.com/SATySFi/default-registry" + branch: "temp-dev-saphe" +contents: + library: + main_module: "StdJaReport" + source_directories: + - "./src" +dependencies: + - used_as: "Stdlib" + registered: + registry: "default" + name: "stdlib" + requirement: "^0.0.1" + - used_as: "Math" + registered: + registry: "default" + name: "math" + requirement: "^0.0.1" + - used_as: "Annot" + registered: + registry: "default" + name: "annot" + requirement: "^0.0.1" + - used_as: "Code" + registered: + registry: "default" + name: "code" + requirement: "^0.0.1" + - used_as: "FootnoteScheme" + registered: + registry: "default" + name: "footnote-scheme" + requirement: "^0.0.1" + - used_as: "FontJunicode" + registered: + registry: "default" + name: "font-junicode" + requirement: "^0.0.1" + - used_as: "FontLatinModern" + registered: + registry: "default" + name: "font-latin-modern" + requirement: "^0.0.1" + - used_as: "FontIpaEx" + registered: + registry: "default" + name: "font-ipa-ex" + requirement: "^0.0.1" + - used_as: "FontLatinModernMath" + registered: + registry: "default" + name: "font-latin-modern-math" + requirement: "^0.0.1" + - used_as: "HyphEnglish" + registered: + registry: "default" + name: "hyph-english" + requirement: "^0.0.1" + - used_as: "Unidata" + registered: + registry: "default" + name: "unidata" + requirement: "^0.0.1" diff --git a/lib-satysfi/packages/std-ja-report/std-ja-report.0.0.1/satysfi-envelope.yaml.expected b/lib-satysfi/packages/std-ja-report/std-ja-report.0.0.1/satysfi-envelope.yaml.expected new file mode 100644 index 000000000..2a54e31ed --- /dev/null +++ b/lib-satysfi/packages/std-ja-report/std-ja-report.0.0.1/satysfi-envelope.yaml.expected @@ -0,0 +1,5 @@ +library: + main_module: StdJaReport + source_directories: + - ./src + test_directories: [] diff --git a/lib-satysfi/packages/std-ja-report/std-ja-report.0.0.1/satysfi.yaml b/lib-satysfi/packages/std-ja-report/std-ja-report.0.0.1/satysfi.yaml deleted file mode 100644 index 0dbdb99d2..000000000 --- a/lib-satysfi/packages/std-ja-report/std-ja-report.0.0.1/satysfi.yaml +++ /dev/null @@ -1,65 +0,0 @@ -language: "^0.1.0" -name: "std-ja-book" -authors: - - "Takashi Suwa <@gfngfn>" - - "Takuma Ishikawa <@nekketsuuu>" - - "Naoki Kaneko <@puripuri2100>" - - "Daiki Matsunaga <@matsud224>" - - "El Pin Al <@elpinal>" -registries: - - name: "default" - remote: - type: "git" - url: "https://github.com/SATySFi/default-registry" - branch: "format-1" -contents: - type: "library" - main_module: "StdJaReport" - source_directories: - - "./src" - dependencies: - - name: "stdlib" - spec: - type: "registered" - registry: "default" - requirement: "^0.0.1" - - name: "math" - spec: - type: "registered" - registry: "default" - requirement: "^0.0.1" - - name: "annot" - spec: - type: "registered" - registry: "default" - requirement: "^0.0.1" - - name: "code" - spec: - type: "registered" - registry: "default" - requirement: "^0.0.1" - - name: "footnote-scheme" - spec: - type: "registered" - registry: "default" - requirement: "^0.0.1" - - name: "font-junicode" - spec: - type: "registered" - registry: "default" - requirement: "^0.0.1" - - name: "font-latin-modern" - spec: - type: "registered" - registry: "default" - requirement: "^0.0.1" - - name: "font-ipa-ex" - spec: - type: "registered" - registry: "default" - requirement: "^0.0.1" - - name: "font-latin-modern-math" - spec: - type: "registered" - registry: "default" - requirement: "^0.0.1" diff --git a/lib-satysfi/packages/std-ja-report/std-ja-report.0.0.1/src/std-ja-report.satyh b/lib-satysfi/packages/std-ja-report/std-ja-report.0.0.1/src/std-ja-report.satyh index 8970a17e1..3f8b2d0fe 100644 --- a/lib-satysfi/packages/std-ja-report/std-ja-report.0.0.1/src/std-ja-report.satyh +++ b/lib-satysfi/packages/std-ja-report/std-ja-report.0.0.1/src/std-ja-report.satyh @@ -4,6 +4,9 @@ use package Code use package Annot use package FootnoteScheme +use package HyphEnglish +use package Unidata + use package FontJunicode use package FontIpaEx use package FontLatinModern @@ -16,9 +19,9 @@ module StdJaReport :> sig show-page-number : bool, text-width : length, text-height : length, - text-origin : Pervasives.point, %- TODO: remove this by using 'open' - header-origin : Pervasives.point, - footer-origin : Pervasives.point, + text-origin : point, + header-origin : point, + footer-origin : point, header-width : length, footer-width : length, ) (| @@ -54,12 +57,6 @@ module StdJaReport :> sig end = struct -% type toc-element = -% | TOCElementChapter of string * inline-text -% | TOCElementSection of string * inline-text -% | TOCElementSubsection of string * inline-text - - val generate-fresh-label = let mutable count <- 0 in (fun () -> ( @@ -67,10 +64,8 @@ end = struct `generated:` ^ (arabic (!count)) )) - val no-pads = (0pt, 0pt, 0pt, 0pt) - val inline ctx \ref key = let opt = get-cross-reference (key ^ `:num`) in let it = @@ -81,7 +76,6 @@ end = struct in inline-frame-breakable no-pads (Annot.link-to-location-frame key None) (read-inline ctx it) - val inline ctx \ref-page key = let opt = get-cross-reference (key ^ `:page`) in let it = @@ -92,7 +86,6 @@ end = struct in inline-frame-breakable no-pads (Annot.link-to-location-frame key None) (read-inline ctx it) - val font-size-normal = 12pt val font-size-title = 18pt val font-size-author = 16pt @@ -117,19 +110,18 @@ end = struct val font-cjk-mincho = (FontIpaEx.mincho , font-ratio-cjk , 0.) val font-cjk-gothic = (FontIpaEx.gothic , font-ratio-cjk , 0.) - val set-latin-font font ctx = ctx |> set-font Latin font - val set-cjk-font font ctx = ctx |> set-font HanIdeographic font |> set-font Kana font - val get-standard-context wid = get-initial-context wid (command \Math.math) - |> set-code-text-command (command \Code.code) + |> set-code-text-command (command \Code.Default.code) + |> set-hyphenation-dictionary HyphEnglish.hyphenation + |> set-unicode-char-database Unidata.unidata |> set-dominant-wide-script Kana |> set-language Kana Japanese |> set-language HanIdeographic Japanese @@ -142,20 +134,16 @@ end = struct |> set-math-font FontLatinModernMath.main |> set-hyphen-penalty 100 - val mutable ref-float-boxes <- [] - val height-of-float-boxes pageno = % let () = display-message `get height` in - (!ref-float-boxes) |> List.fold-left (fun h (pn, bb) -> ( + (!ref-float-boxes) |> List.fold (fun h (pn, bb) -> ( if pn < pageno then h +' (get-natural-length bb) else h )) 0pt - val mutable ref-figure <- 0 - val inline ctx \figure ?(label = label-opt) caption inner = let () = ref-figure <- !ref-figure + 1 in let s-num = arabic (!ref-figure) in @@ -168,11 +156,8 @@ end = struct let it-num = embed-string s-num in let ds = match label-opt with - | Some(label) -> - Annot.register-location-frame label - - | None -> - let d (_, _) _ _ _ = Gr.empty in (d, d, d, d) + | Some(label) -> Annot.register-location-frame label + | None -> VDecoSet.empty end in let bb-inner = @@ -186,64 +171,52 @@ end = struct ref-float-boxes <- (pbinfo#page-number, bb-inner) :: !ref-float-boxes )) - val make-chapter-title ctx = ctx |> set-font-size font-size-chapter |> set-font Latin font-latin-sans |> set-cjk-font font-cjk-gothic - val make-section-title ctx = ctx |> set-font-size font-size-section |> set-font Latin font-latin-sans |> set-cjk-font font-cjk-gothic - val make-subsection-title ctx = ctx |> set-font-size font-size-subsection |> set-font Latin font-latin-sans |> set-cjk-font font-cjk-gothic - -% val mutable toc-acc-ref <- [] val mutable outline-ref <- [] val mutable does-page-breaking-reach-last <- false val mutable ref-current-page <- 0 - val get-cross-reference-number label = match get-cross-reference (label ^ `:num`) with | None -> `?` | Some(s) -> s end - val get-cross-reference-page label = match get-cross-reference (label ^ `:page`) with | None -> `?` | Some(s) -> s end - val chapter-heading ctx ib-heading = line-break true false (ctx |> set-paragraph-margin chapter-top-margin chapter-bottom-margin) ib-heading - val section-heading ctx ib-heading = line-break true false (ctx |> set-paragraph-margin section-top-margin section-bottom-margin) ib-heading - val inline ctx \dummy it = - let open Pervasives in let ib = read-inline (ctx |> set-text-color Color.white) it in - let w = get-natural-width ib in + let w = Inline.get-natural-advance ib in ib ++ inline-skip (0pt -' w) - val document ?( show-page-number = show-page-number-opt, @@ -329,7 +302,7 @@ end = struct in % let () = display-message `insert` in let (bb-float-boxes, acc) = - (!ref-float-boxes) |> List.fold-left (fun (bbacc, acc) elem -> ( + (!ref-float-boxes) |> List.fold (fun (bbacc, acc) elem -> ( let (pn, bb) = elem in if pn < pageno then let () = display-message (`use `# ^ arabic pn) in @@ -373,7 +346,7 @@ end = struct let pageno = !ref-current-page in let last = !does-page-breaking-reach-last in let remains = - (!ref-float-boxes) |> List.fold-left (fun b (pn, _) -> ( + (!ref-float-boxes) |> List.fold (fun b (pn, _) -> ( if pn < pageno then b else true )) false in @@ -402,40 +375,33 @@ end = struct (bb-title +++ bb-main +++ bb-last) in let () = register-outline (List.reverse !outline-ref) in - doc - + doc val mutable num-chapter <- 0 val mutable num-section <- 0 val mutable num-subsection <- 0 val mutable num-theorems <- 0 - val quad-indent ctx = inline-skip (get-font-size ctx *' font-ratio-cjk) - val block ctx +p inner = - let open Pervasives in let ib-inner = read-inline ctx inner in let ib-parag = (quad-indent ctx) ++ ib-inner ++ inline-fil in - form-paragraph ctx ib-parag - + Block.form-paragraph ctx ib-parag val chapter-scheme ctx label title outline-title-opt inner = - let open Pervasives in let ctx-title = make-chapter-title ctx in - let () = increment num-chapter in + let () = Ref.increment num-chapter in let () = num-section <- 0 in let () = num-subsection <- 0 in let s-num = arabic (!num-chapter) in let () = register-cross-reference (label ^ `:num`) s-num in -% let () = toc-acc-ref <- (TOCElementChapter(label, title)) :: !toc-acc-ref in let ib-num = read-inline ctx-title (embed-string (s-num ^ `.`)) ++ hook-page-break (fun pbinfo _ -> ( let pageno = pbinfo#page-number in - register-cross-reference (label ^ `:page`) (arabic pageno))) + register-cross-reference (label ^ `:page`) (arabic pageno))) in let ib-title = read-inline ctx-title title in let outline-title = Option.from (extract-string ib-title) outline-title-opt in @@ -448,17 +414,14 @@ end = struct chapter-heading ctx ib in let bb-inner = read-block ctx inner in - bb-title +++ bb-inner - + bb-title +++ bb-inner val section-scheme ctx label title outline-title-opt inner = - let open Pervasives in let ctx-title = make-section-title ctx in - let () = increment num-section in + let () = Ref.increment num-section in let () = num-subsection <- 0 in let s-num = arabic (!num-chapter) ^ `.` ^ arabic (!num-section) in let () = register-cross-reference (label ^ `:num`) s-num in -% let () = toc-acc-ref <- (TOCElementSection(label, title)) :: !toc-acc-ref in let ib-num = read-inline ctx-title (embed-string (s-num ^ `.`)) ++ hook-page-break (fun pbinfo _ -> ( @@ -476,14 +439,12 @@ end = struct section-heading ctx ib in let bb-inner = read-block ctx inner in - bb-title +++ bb-inner - + bb-title +++ bb-inner val subsection-scheme ctx label title outline-title-opt inner = let () = num-subsection <- !num-subsection + 1 in let s-num = arabic (!num-chapter) ^ `.` ^ arabic (!num-section) ^ `.` ^ arabic (!num-subsection) in let () = register-cross-reference (label ^ `:num`) s-num in -% let () = toc-acc-ref <- (TOCElementSubsection(label, title)) :: !toc-acc-ref in let ctx-title = make-subsection-title ctx in let ib-num = read-inline ctx-title (embed-string (s-num ^ `.`)) @@ -500,7 +461,6 @@ end = struct let bb-inner = read-block ctx inner in bb-title +++ bb-inner - val block ctx +chapter ?(label = label-opt, outline-title = outline-title-opt) title inner = let label = match label-opt with @@ -510,7 +470,6 @@ end = struct in chapter-scheme ctx label title outline-title-opt inner - val block ctx +section ?(label = label-opt, outline-title = outline-title-opt) title inner = let label = match label-opt with @@ -520,7 +479,6 @@ end = struct in section-scheme ctx label title outline-title-opt inner - val block ctx +subsection ?(label = label-opt, outline-title = outline-title-opt) title inner = let label = match label-opt with @@ -530,10 +488,8 @@ end = struct in subsection-scheme ctx label title outline-title-opt inner - val theorem-scheme ctx ctxf category wordopt label inner = - let open Pervasives in - let () = increment num-theorems in + let () = Ref.increment num-theorems in let s-num = (arabic (!num-chapter)) ^ `.` ^ (arabic (!num-section)) ^ `.` ^ (arabic (!num-theorems)) in @@ -552,39 +508,32 @@ end = struct line-break true true ctx (ib-dfn ++ ib-word ++ inline-skip (get-font-size ctx) ++ ib-inner ++ inline-fil) - val make-label prefix labelopt = match labelopt with | None -> generate-fresh-label () | Some(s) -> prefix ^ s end - val block ctx +definition ?(word = word-opt, label = label-opt) inner = let label = make-label `definition:` label-opt in theorem-scheme ctx (fun x -> x) {Definition} word-opt label inner - val block ctx +theorem ?(word = word-opt, label = label-opt) inner = let label = make-label `theorem:` label-opt in theorem-scheme ctx (set-latin-font font-latin-italic) {Theorem} word-opt label inner - val block ctx +lemma ?(word = word-opt, label = label-opt) inner = let label = make-label `lemma:` label-opt in theorem-scheme ctx (set-latin-font font-latin-italic) {Lemma} word-opt label inner - val block ctx +corollary ?(word = word-opt, label = label-opt) inner = let label = make-label `corollary:` label-opt in theorem-scheme ctx (set-latin-font font-latin-italic) {Corollary} word-opt label inner - val block ctx +example ?(word = word-opt, label = label-opt) inner = let label = make-label `example:` label-opt in theorem-scheme ctx (fun x -> x) {Example} word-opt label inner - val block ctx +proof ?(word = word-opt) inner = let ib-heading = let ctx = ctx |> set-latin-font font-latin-italic in @@ -597,7 +546,6 @@ end = struct line-break true true ctx (ib-heading ++ inline-skip (get-font-size ctx) ++ read-inline ctx inner ++ inline-fil ++ ib-box) - val inline ctx \emph inner = let ctx = ctx |> set-font Latin font-latin-sans @@ -605,10 +553,8 @@ end = struct in read-inline ctx inner - val inline \dfn inner = {\emph{#inner;}} - val inline ctx \footnote it = let size = get-font-size ctx in let ibf num = diff --git a/lib-satysfi/packages/std-ja/std-ja.0.0.1/package.satysfi-lock-expected b/lib-satysfi/packages/std-ja/std-ja.0.0.1/package.satysfi-lock-expected deleted file mode 100644 index 3ab5d99cb..000000000 --- a/lib-satysfi/packages/std-ja/std-ja.0.0.1/package.satysfi-lock-expected +++ /dev/null @@ -1,70 +0,0 @@ -language: ^0.1.0 -locks: -- name: registered.d9b4b850ab61a7b68961c6315048b351.annot.0.0.1 - contents: - type: registered - registry_hash_value: d9b4b850ab61a7b68961c6315048b351 - package_name: annot - version: 0.0.1 - dependencies: - - registered.d9b4b850ab61a7b68961c6315048b351.stdlib.0.0.1 - test_only: false -- name: registered.d9b4b850ab61a7b68961c6315048b351.code.0.0.1 - contents: - type: registered - registry_hash_value: d9b4b850ab61a7b68961c6315048b351 - package_name: code - version: 0.0.1 - dependencies: - - registered.d9b4b850ab61a7b68961c6315048b351.stdlib.0.0.1 - - registered.d9b4b850ab61a7b68961c6315048b351.font-latin-modern.0.0.1 - test_only: false -- name: registered.d9b4b850ab61a7b68961c6315048b351.font-ipa-ex.0.0.1 - contents: - type: registered - registry_hash_value: d9b4b850ab61a7b68961c6315048b351 - package_name: font-ipa-ex - version: 0.0.1 - dependencies: [] - test_only: false -- name: registered.d9b4b850ab61a7b68961c6315048b351.font-junicode.0.0.1 - contents: - type: registered - registry_hash_value: d9b4b850ab61a7b68961c6315048b351 - package_name: font-junicode - version: 0.0.1 - dependencies: [] - test_only: false -- name: registered.d9b4b850ab61a7b68961c6315048b351.font-latin-modern.0.0.1 - contents: - type: registered - registry_hash_value: d9b4b850ab61a7b68961c6315048b351 - package_name: font-latin-modern - version: 0.0.1 - dependencies: [] - test_only: false -- name: registered.d9b4b850ab61a7b68961c6315048b351.font-latin-modern-math.0.0.1 - contents: - type: registered - registry_hash_value: d9b4b850ab61a7b68961c6315048b351 - package_name: font-latin-modern-math - version: 0.0.1 - dependencies: [] - test_only: false -- name: registered.d9b4b850ab61a7b68961c6315048b351.math.0.0.1 - contents: - type: registered - registry_hash_value: d9b4b850ab61a7b68961c6315048b351 - package_name: math - version: 0.0.1 - dependencies: - - registered.d9b4b850ab61a7b68961c6315048b351.stdlib.0.0.1 - test_only: false -- name: registered.d9b4b850ab61a7b68961c6315048b351.stdlib.0.0.1 - contents: - type: registered - registry_hash_value: d9b4b850ab61a7b68961c6315048b351 - package_name: stdlib - version: 0.0.1 - dependencies: [] - test_only: false diff --git a/lib-satysfi/packages/std-ja/std-ja.0.0.1/saphe.lock.yaml.expected b/lib-satysfi/packages/std-ja/std-ja.0.0.1/saphe.lock.yaml.expected new file mode 100644 index 000000000..eeecc83ac --- /dev/null +++ b/lib-satysfi/packages/std-ja/std-ja.0.0.1/saphe.lock.yaml.expected @@ -0,0 +1,102 @@ +saphe: ^0.1.0-alpha.1 +locks: +- name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.annot.0.0.1 + dependencies: + - name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.stdlib.0.0.1 + used_as: Stdlib + test_only: false + registered: + registry_hash_value: 6f2b80e9bb7c4e8af2104999fc25dbb3 + package_name: annot + version: 0.0.1 +- name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.code.0.0.1 + dependencies: + - name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.stdlib.0.0.1 + used_as: Stdlib + - name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.font-latin-modern.0.0.1 + used_as: FontLatinModern + test_only: false + registered: + registry_hash_value: 6f2b80e9bb7c4e8af2104999fc25dbb3 + package_name: code + version: 0.0.1 +- name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.font-ipa-ex.0.0.1 + dependencies: [] + test_only: false + registered: + registry_hash_value: 6f2b80e9bb7c4e8af2104999fc25dbb3 + package_name: font-ipa-ex + version: 0.0.1 +- name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.font-junicode.0.0.1 + dependencies: [] + test_only: false + registered: + registry_hash_value: 6f2b80e9bb7c4e8af2104999fc25dbb3 + package_name: font-junicode + version: 0.0.1 +- name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.font-latin-modern.0.0.1 + dependencies: [] + test_only: false + registered: + registry_hash_value: 6f2b80e9bb7c4e8af2104999fc25dbb3 + package_name: font-latin-modern + version: 0.0.1 +- name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.font-latin-modern-math.0.0.1 + dependencies: [] + test_only: false + registered: + registry_hash_value: 6f2b80e9bb7c4e8af2104999fc25dbb3 + package_name: font-latin-modern-math + version: 0.0.1 +- name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.hyph-english.0.0.1 + dependencies: [] + test_only: false + registered: + registry_hash_value: 6f2b80e9bb7c4e8af2104999fc25dbb3 + package_name: hyph-english + version: 0.0.1 +- name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.math.0.0.1 + dependencies: + - name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.stdlib.0.0.1 + used_as: Stdlib + test_only: false + registered: + registry_hash_value: 6f2b80e9bb7c4e8af2104999fc25dbb3 + package_name: math + version: 0.0.1 +- name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.stdlib.0.0.1 + dependencies: [] + test_only: false + registered: + registry_hash_value: 6f2b80e9bb7c4e8af2104999fc25dbb3 + package_name: stdlib + version: 0.0.1 +- name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.unidata.0.0.1 + dependencies: [] + test_only: false + registered: + registry_hash_value: 6f2b80e9bb7c4e8af2104999fc25dbb3 + package_name: unidata + version: 0.0.1 +dependencies: +- name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.annot.0.0.1 + used_as: Annot +- name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.code.0.0.1 + used_as: Code +- name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.font-ipa-ex.0.0.1 + used_as: FontIpaEx +- name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.font-junicode.0.0.1 + used_as: FontJunicode +- name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.font-latin-modern.0.0.1 + used_as: FontLatinModern +- name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.font-latin-modern-math.0.0.1 + used_as: FontLatinModernMath +- name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.hyph-english.0.0.1 + used_as: HyphEnglish +- name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.math.0.0.1 + used_as: Math +- name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.stdlib.0.0.1 + used_as: Stdlib +- name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.unidata.0.0.1 + used_as: Unidata +test_dependencies: [] diff --git a/lib-satysfi/packages/std-ja/std-ja.0.0.1/saphe.yaml b/lib-satysfi/packages/std-ja/std-ja.0.0.1/saphe.yaml new file mode 100644 index 000000000..144237302 --- /dev/null +++ b/lib-satysfi/packages/std-ja/std-ja.0.0.1/saphe.yaml @@ -0,0 +1,69 @@ +saphe: "^0.1.0-alpha.1" +satysfi: "^0.1.0-alpha.1" +name: "std-ja" +authors: + - "Takashi Suwa <@gfngfn>" + - "pandaman <@pandaman64>" + - "Takuma Ishikawa <@nekketsuuu>" + - "Daiki Matsunaga <@matsud224>" +registries: + - name: "default" + git: + url: "https://github.com/SATySFi/default-registry" + branch: "temp-dev-saphe" +contents: + library: + main_module: "StdJa" + source_directories: + - "./src" +dependencies: + - used_as: "Stdlib" + registered: + registry: "default" + name: "stdlib" + requirement: "^0.0.1" + - used_as: "Math" + registered: + registry: "default" + name: "math" + requirement: "^0.0.1" + - used_as: "Annot" + registered: + registry: "default" + name: "annot" + requirement: "^0.0.1" + - used_as: "Code" + registered: + registry: "default" + name: "code" + requirement: "^0.0.1" + - used_as: "FontJunicode" + registered: + registry: "default" + name: "font-junicode" + requirement: "^0.0.1" + - used_as: "FontLatinModern" + registered: + registry: "default" + name: "font-latin-modern" + requirement: "^0.0.1" + - used_as: "FontIpaEx" + registered: + registry: "default" + name: "font-ipa-ex" + requirement: "^0.0.1" + - used_as: "FontLatinModernMath" + registered: + registry: "default" + name: "font-latin-modern-math" + requirement: "^0.0.1" + - used_as: "HyphEnglish" + registered: + registry: "default" + name: "hyph-english" + requirement: "^0.0.1" + - used_as: "Unidata" + registered: + registry: "default" + name: "unidata" + requirement: "^0.0.1" diff --git a/lib-satysfi/packages/std-ja/std-ja.0.0.1/satysfi-envelope.yaml.expected b/lib-satysfi/packages/std-ja/std-ja.0.0.1/satysfi-envelope.yaml.expected new file mode 100644 index 000000000..da9f3400c --- /dev/null +++ b/lib-satysfi/packages/std-ja/std-ja.0.0.1/satysfi-envelope.yaml.expected @@ -0,0 +1,5 @@ +library: + main_module: StdJa + source_directories: + - ./src + test_directories: [] diff --git a/lib-satysfi/packages/std-ja/std-ja.0.0.1/satysfi.yaml b/lib-satysfi/packages/std-ja/std-ja.0.0.1/satysfi.yaml deleted file mode 100644 index a7e4de5e1..000000000 --- a/lib-satysfi/packages/std-ja/std-ja.0.0.1/satysfi.yaml +++ /dev/null @@ -1,59 +0,0 @@ -language: "^0.1.0" -name: "std-ja" -authors: - - "Takashi Suwa <@gfngfn>" - - "pandaman <@pandaman64>" - - "Takuma Ishikawa <@nekketsuuu>" - - "Daiki Matsunaga <@matsud224>" -registries: - - name: "default" - remote: - type: "git" - url: "https://github.com/SATySFi/default-registry" - branch: "format-1" -contents: - type: "library" - main_module: "StdJa" - source_directories: - - "./src" - dependencies: - - name: "stdlib" - spec: - type: "registered" - registry: "default" - requirement: "^0.0.1" - - name: "math" - spec: - type: "registered" - registry: "default" - requirement: "^0.0.1" - - name: "annot" - spec: - type: "registered" - registry: "default" - requirement: "^0.0.1" - - name: "code" - spec: - type: "registered" - registry: "default" - requirement: "^0.0.1" - - name: "font-junicode" - spec: - type: "registered" - registry: "default" - requirement: "^0.0.1" - - name: "font-latin-modern" - spec: - type: "registered" - registry: "default" - requirement: "^0.0.1" - - name: "font-ipa-ex" - spec: - type: "registered" - registry: "default" - requirement: "^0.0.1" - - name: "font-latin-modern-math" - spec: - type: "registered" - registry: "default" - requirement: "^0.0.1" diff --git a/lib-satysfi/packages/std-ja/std-ja.0.0.1/src/std-ja.satyh b/lib-satysfi/packages/std-ja/std-ja.0.0.1/src/std-ja.satyh index 93ef91e2d..d8ae5543c 100644 --- a/lib-satysfi/packages/std-ja/std-ja.0.0.1/src/std-ja.satyh +++ b/lib-satysfi/packages/std-ja/std-ja.0.0.1/src/std-ja.satyh @@ -3,6 +3,9 @@ use package Math use package Code use package Annot +use package HyphEnglish +use package Unidata + use package FontJunicode use package FontIpaEx use package FontLatinModern @@ -18,13 +21,13 @@ module StdJa :> sig paper-size : length * length, text-width : length, text-height : length, - text-origin : Pervasives.point, %- TODO: remove this by using 'open' - header-origin : Pervasives.point, - footer-origin : Pervasives.point, + text-origin : point, + header-origin : point, + footer-origin : point, header-width : length, footer-width : length, ) (| - title : inline-text, + title : inline-text, author : inline-text, |) -> block-text -> document @@ -112,7 +115,9 @@ end = struct val get-standard-context wid = get-initial-context wid (command \Math.math) - |> set-code-text-command (command \Code.code) + |> set-code-text-command (command \Code.Default.code) + |> set-hyphenation-dictionary HyphEnglish.hyphenation + |> set-unicode-char-database Unidata.unidata |> set-dominant-wide-script Kana |> set-language Kana Japanese |> set-language HanIdeographic Japanese @@ -131,7 +136,7 @@ end = struct val height-of-float-boxes pageno = % let () = display-message `get height` in - (!ref-float-boxes) |> List.fold-left (fun h (pn, bb) -> ( + (!ref-float-boxes) |> List.fold (fun h (pn, bb) -> ( if pn < pageno then h +' (get-natural-length bb) else h )) 0pt @@ -143,8 +148,7 @@ end = struct let () = ref-figure <- !ref-figure + 1 in let s-num = embed-string (arabic (!ref-figure)) in let bb-inner = - let d (_, _) _ _ _ = Gr.empty in - block-frame-breakable ctx (2pt, 2pt, 2pt, 2pt) (d, d, d, d) (fun ctx -> ( + block-frame-breakable ctx (2pt, 2pt, 2pt, 2pt) VDecoSet.empty (fun ctx -> ( read-block ctx inner +++ line-break true true ctx (inline-fil ++ read-inline ctx {図#s-num; #caption;} ++ inline-fil) )) @@ -223,11 +227,11 @@ end = struct % if get-text-width ctx <' get-natural-width ib-title then % form-paragraph ctx-title (ib-title ++ inline-fil) % else - Pervasives.form-paragraph ctx-title (inline-fil ++ ib-title ++ inline-fil) + Block.form-paragraph ctx-title (inline-fil ++ ib-title ++ inline-fil) in - let bb-line = Pervasives.form-paragraph ctx (ib-line ++ inline-fil) in - let bb-author = Pervasives.form-paragraph ctx-author (inline-fil ++ ib-author) in - bb-title +++ bb-line +++ bb-author + let bb-line = Block.form-paragraph ctx (ib-line ++ inline-fil) in + let bb-author = Block.form-paragraph ctx-author (inline-fil ++ ib-author) in + bb-title +++ bb-line +++ bb-author )) @@ -317,22 +321,22 @@ end = struct line-break true false ctx-doc (read-inline (make-section-title ctx-doc) {目次} ++ inline-fil) in let bb-toc-main = - (!toc-acc-ref) |> List.reverse |> List.fold-left (fun bbacc tocelem -> ( + (!toc-acc-ref) |> List.reverse |> List.fold (fun bbacc tocelem -> ( match tocelem with | TOCElementSection(label, title) -> let it-num = embed-string (get-cross-reference-number label) in let it-page = embed-string (get-cross-reference-page label) in - bbacc +++ line-break true true ctx-doc - (inline-frame-breakable no-pads (Annot.link-to-location-frame label None) - (read-inline ctx-doc {#it-num;. #title;} ++ inline-fil ++ read-inline ctx-doc it-page)) + bbacc +++ line-break true true ctx-doc + (inline-frame-breakable no-pads (Annot.link-to-location-frame label None) + (read-inline ctx-doc {#it-num;. #title;} ++ inline-fil ++ read-inline ctx-doc it-page)) | TOCElementSubsection(label, title) -> let it-num = embed-string (get-cross-reference-number label) in let it-page = embed-string (get-cross-reference-page label) in - bbacc +++ line-break true true ctx-doc - (inline-skip 20pt ++ (inline-frame-breakable no-pads - (Annot.link-to-location-frame label None) - (read-inline ctx-doc {#it-num;. #title;} ++ inline-fil ++ read-inline ctx-doc it-page))) + bbacc +++ line-break true true ctx-doc + (inline-skip 20pt ++ (inline-frame-breakable no-pads + (Annot.link-to-location-frame label None) + (read-inline ctx-doc {#it-num;. #title;} ++ inline-fil ++ read-inline ctx-doc it-page))) end )) block-nil in @@ -363,7 +367,7 @@ end = struct in % let () = display-message `insert` in let (bb-float-boxes, acc) = - (!ref-float-boxes) |> List.fold-left (fun (bbacc, acc) elem -> ( + (!ref-float-boxes) |> List.fold (fun (bbacc, acc) elem -> ( let (pn, bb) = elem in if pn < pageno then let bbs = @@ -371,7 +375,7 @@ end = struct (inline-fil ++ embed-block-top ctx txtwid (fun _ -> bb) ++ inline-fil) % 'ctx' is a dummy context in - (bbacc +++ bbs, acc) + (bbacc +++ bbs, acc) else (bbacc, elem :: acc) )) (block-nil, []) @@ -380,45 +384,42 @@ end = struct line-break true true ctx ib-text +++ line-break true true (ctx |> set-paragraph-margin 0pt 6pt) ((inline-graphics hdrwid thickness 0pt - (fun (x, y) -> fill Color.black (Gr.rectangle (x, y) (x +' hdrwid, y +' thickness)))) ++ inline-fil) + (fun (x, y) -> fill Color.black (Path.rectangle (x, y) (x +' hdrwid, y +' thickness)))) ++ inline-fil) +++ bb-float-boxes in let footer = if show-pages then let ctx = get-standard-context ftrwid in let it-pageno = embed-string (arabic pbinfo#page-number) in - line-break true true ctx - (inline-fil ++ (read-inline ctx {— #it-pageno; —}) ++ inline-fil) + line-break true true ctx + (inline-fil ++ (read-inline ctx {— #it-pageno; —}) ++ inline-fil) else block-nil in - (| - header-origin = hdrorg, - header-content = header, - footer-origin = ftrorg, - footer-content = footer, - |) + (| + header-origin = hdrorg, + header-content = header, + footer-origin = ftrorg, + footer-content = footer, + |) in let doc = page-break page pagecontf pagepartsf (bb-title +++ bb-toc +++ bb-main) in let () = register-outline (List.reverse !outline-ref) in - doc - + doc val mutable needs-indentation-ref <- true val mutable num-section <- 0 val mutable num-subsection <- 0 - val quad-indent ctx = inline-skip (get-font-size ctx) - val block ctx +p inner = let needs-indentation = if !needs-indentation-ref then true else let () = needs-indentation-ref <- true in - false + false in let ib-inner = read-inline ctx inner in let br-parag = @@ -427,14 +428,12 @@ end = struct else ib-inner ++ inline-fil in - Pervasives.form-paragraph ctx br-parag - + Block.form-paragraph ctx br-parag val block ctx +pn inner = let () = needs-indentation-ref <- true in let ib-inner = read-inline ctx inner in - Pervasives.form-paragraph ctx (ib-inner ++ inline-fil) - + Block.form-paragraph ctx (ib-inner ++ inline-fil) val section-scheme ctx label title outline-title-opt inner = let ctx-title = make-section-title ctx in @@ -457,7 +456,7 @@ end = struct (ib-num ++ (inline-skip 10pt) ++ ib-title ++ (inline-fil))) in let bb-inner = read-block ctx inner in - bb-title +++ bb-inner + bb-title +++ bb-inner val subsection-scheme ctx label title outline-title-opt inner = @@ -480,8 +479,7 @@ end = struct (ib-num ++ (inline-skip 10pt) ++ ib-title ++ (inline-fil))) in let bb-inner = read-block ctx inner in - bb-title +++ bb-inner - + bb-title +++ bb-inner val block ctx +section ?(label = labelopt, outline-title = outline-title-opt) title inner = let label = @@ -490,8 +488,7 @@ end = struct | Some(label) -> label end in - section-scheme ctx label title outline-title-opt inner - + section-scheme ctx label title outline-title-opt inner val block ctx +subsection ?(label = labelopt, outline-title = outline-title-opt) title inner = let label = @@ -500,8 +497,7 @@ end = struct | Some(label) -> label end in - subsection-scheme ctx label title outline-title-opt inner - + subsection-scheme ctx label title outline-title-opt inner val inline ctx \emph inner = let ctx-emph = diff --git a/lib-satysfi/packages/stdlib/stdlib.0.0.1/package.satysfi-lock-expected b/lib-satysfi/packages/stdlib/stdlib.0.0.1/package.satysfi-lock-expected deleted file mode 100644 index 5ba8cdf16..000000000 --- a/lib-satysfi/packages/stdlib/stdlib.0.0.1/package.satysfi-lock-expected +++ /dev/null @@ -1,10 +0,0 @@ -language: ^0.1.0 -locks: -- name: registered.d9b4b850ab61a7b68961c6315048b351.testing.0.0.1 - contents: - type: registered - registry_hash_value: d9b4b850ab61a7b68961c6315048b351 - package_name: testing - version: 0.0.1 - dependencies: [] - test_only: true diff --git a/lib-satysfi/packages/stdlib/stdlib.0.0.1/saphe.lock.yaml.expected b/lib-satysfi/packages/stdlib/stdlib.0.0.1/saphe.lock.yaml.expected new file mode 100644 index 000000000..8b68cac07 --- /dev/null +++ b/lib-satysfi/packages/stdlib/stdlib.0.0.1/saphe.lock.yaml.expected @@ -0,0 +1,13 @@ +saphe: ^0.1.0-alpha.1 +locks: +- name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.testing.0.0.1 + dependencies: [] + test_only: true + registered: + registry_hash_value: 6f2b80e9bb7c4e8af2104999fc25dbb3 + package_name: testing + version: 0.0.1 +dependencies: [] +test_dependencies: +- name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.testing.0.0.1 + used_as: Testing diff --git a/lib-satysfi/packages/stdlib/stdlib.0.0.1/saphe.yaml b/lib-satysfi/packages/stdlib/stdlib.0.0.1/saphe.yaml new file mode 100644 index 000000000..48d397d73 --- /dev/null +++ b/lib-satysfi/packages/stdlib/stdlib.0.0.1/saphe.yaml @@ -0,0 +1,25 @@ +saphe: "^0.1.0-alpha.1" +satysfi: "^0.1.0-alpha.1" +name: "stdlib" +authors: + - "Takashi Suwa <@gfngfn>" + - "yozu <@yasuo-ozu>" +registries: + - name: "default" + git: + url: "https://github.com/SATySFi/default-registry" + branch: "temp-dev-saphe" +contents: + library: + main_module: "Stdlib" + source_directories: + - "./src" + test_directories: + - "./test" +dependencies: [] +test_dependencies: +- used_as: "Testing" + registered: + registry: "default" + name: "testing" + requirement: "^0.0.1" diff --git a/lib-satysfi/packages/stdlib/stdlib.0.0.1/satysfi-envelope.yaml.expected b/lib-satysfi/packages/stdlib/stdlib.0.0.1/satysfi-envelope.yaml.expected new file mode 100644 index 000000000..d00660425 --- /dev/null +++ b/lib-satysfi/packages/stdlib/stdlib.0.0.1/satysfi-envelope.yaml.expected @@ -0,0 +1,6 @@ +library: + main_module: Stdlib + source_directories: + - ./src + test_directories: + - ./test diff --git a/lib-satysfi/packages/stdlib/stdlib.0.0.1/satysfi.yaml b/lib-satysfi/packages/stdlib/stdlib.0.0.1/satysfi.yaml deleted file mode 100644 index c560fa662..000000000 --- a/lib-satysfi/packages/stdlib/stdlib.0.0.1/satysfi.yaml +++ /dev/null @@ -1,25 +0,0 @@ -language: "^0.1.0" -name: "stdlib" -authors: - - "Takashi Suwa <@gfngfn>" - - "yozu <@yasuo-ozu>" -registries: - - name: "default" - remote: - type: "git" - url: "https://github.com/SATySFi/default-registry" - branch: "format-1" -contents: - type: "library" - main_module: "Stdlib" - source_directories: - - "./src" - test_directories: - - "./test" - dependencies: [] - test_dependencies: - - name: "testing" - spec: - type: "registered" - registry: "default" - requirement: "^0.0.1" diff --git a/lib-satysfi/packages/stdlib/stdlib.0.0.1/src/basic.satyg b/lib-satysfi/packages/stdlib/stdlib.0.0.1/src/basic.satyg new file mode 100644 index 000000000..67713965f --- /dev/null +++ b/lib-satysfi/packages/stdlib/stdlib.0.0.1/src/basic.satyg @@ -0,0 +1,18 @@ +module Basic = struct + + type ordering = Less | Equal | Greater + + type vector = length * length + + type point = length * length + + type paren = length -> length -> context -> inline-boxes * (length -> length) + + type paddings = length * length * length * length + + signature Ord = sig + type t :: o + val compare : t -> t -> ordering + end + +end diff --git a/lib-satysfi/packages/stdlib/stdlib.0.0.1/src/block.satyh b/lib-satysfi/packages/stdlib/stdlib.0.0.1/src/block.satyh new file mode 100644 index 000000000..b71fa59c5 --- /dev/null +++ b/lib-satysfi/packages/stdlib/stdlib.0.0.1/src/block.satyh @@ -0,0 +1,49 @@ +use List +use Inline + +module Block :> sig + val nil : block-boxes + val concat : list block-boxes -> block-boxes + val skip : length -> block-boxes + val clear-page : block-boxes + val line-break : bool -> bool -> context -> inline-boxes -> block-boxes + val form-paragraph : context -> inline-boxes -> block-boxes + val +skip : block [length] + val +clear-page : block [] + val +ragged-right : block [inline-text] + val +centering : block [inline-text] + val \skip : inline [length] +end = struct + + val nil = block-nil %PRIMITIVE + + val concat bbs = + List.fold ( +++ ) nil bbs + + val skip = block-skip %PRIMITIVE + + val clear-page = clear-page %PRIMITIVE + + val line-break = line-break %PRIMITIVE + + val form-paragraph = + line-break true true + + val block ctx +skip len = + block-skip len + + val block ctx +clear-page = + clear-page + + val block ctx +ragged-right it = + form-paragraph ctx (Inline.fil ++ read-inline ctx it) + + val block ctx +centering it = + form-paragraph ctx (Inline.fil ++ read-inline ctx it ++ Inline.fil) + + val inline ctx \skip len = + Inline.fil + ++ Inline.embed-block-breakable ctx (skip len) + ++ Inline.omit-skip-after + +end diff --git a/lib-satysfi/packages/stdlib/stdlib.0.0.1/src/context.satyh b/lib-satysfi/packages/stdlib/stdlib.0.0.1/src/context.satyh new file mode 100644 index 000000000..440babdcf --- /dev/null +++ b/lib-satysfi/packages/stdlib/stdlib.0.0.1/src/context.satyh @@ -0,0 +1,85 @@ +module Context :> sig + val initial : length -> inline [math-text] -> context + val set-math-command : inline [math-text] -> context -> context + val set-code-text-command : inline [string] -> context -> context + val set-hyphenation-dictionary : hyphenation -> context -> context + val set-unicode-char-database : unicode-char-database -> context -> context + val set-hyphen-min : int -> int -> context -> context + val set-min-gap-of-lines : length -> context -> context + val set-space-ratio : float -> float -> float -> context -> context + val set-adjacent-stretch-ratio : float -> context -> context + val get-math-axis-height-ratio : context -> float + val set-paragraph-margin : length -> length -> context -> context + val set-min-paragraph-ascender-and-descender : length -> length -> context -> context + val set-font-size : length -> context -> context + val get-font-size : context -> length + val set-text-color : color -> context -> context + val get-text-color : context -> color + val set-leading : length -> context -> context + val get-text-width : context -> length + val set-manual-rising : length -> context -> context + val set-hyphen-penalty : int -> context -> context + val set-math-variant-char : int -> (math-char-class -> int) -> context -> context + val set-math-char : int -> int -> math-class -> context -> context + val set-math-char-class : math-char-class -> context -> context + val get-math-char-class : context -> math-char-class + val set-word-break-penalty : int -> context -> context + val set-every-word-break : inline-boxes -> inline-boxes -> context -> context + val get-every-word-break : context -> inline-boxes * inline-boxes +end = struct + + val initial = get-initial-context %PRIMITIVE + + val set-math-command = set-math-command %PRIMITIVE + + val set-code-text-command = set-code-text-command %PRIMITIVE + + val set-hyphenation-dictionary = set-hyphenation-dictionary %PRIMITIVE + + val set-unicode-char-database = set-unicode-char-database %PRIMITIVE + + val set-hyphen-min = set-hyphen-min %PRIMITIVE + + val set-min-gap-of-lines = set-min-gap-of-lines %PRIMITIVE + + val set-space-ratio = set-space-ratio %PRIMITIVE + + val set-adjacent-stretch-ratio = set-adjacent-stretch-ratio %PRIMITIVE + + val get-math-axis-height-ratio = get-math-axis-height-ratio %PRIMITIVE + + val set-paragraph-margin = set-paragraph-margin %PRIMITIVE + + val set-min-paragraph-ascender-and-descender = set-min-paragraph-ascender-and-descender %PRIMITIVE + + val set-font-size = set-font-size %PRIMITIVE + + val get-font-size = get-font-size %PRIMITIVE + + val set-text-color = set-text-color %PRIMITIVE + + val get-text-color = get-text-color %PRIMITIVE + + val set-leading = set-leading %PRIMITIVE + + val get-text-width = get-text-width %PRIMITIVE + + val set-manual-rising = set-manual-rising %PRIMITIVE + + val set-hyphen-penalty = set-hyphen-penalty %PRIMITIVE + + val set-math-variant-char = set-math-variant-char %PRIMITIVE + + val set-math-char = set-math-char %PRIMITIVE + + val set-math-char-class = set-math-char-class %PRIMITIVE + + val get-math-char-class = get-math-char-class %PRIMITIVE + + val set-word-break-penalty = set-word-break-penalty %PRIMITIVE + + val set-every-word-break = set-every-word-break %PRIMITIVE + + val get-every-word-break = get-every-word-break %PRIMITIVE + +end diff --git a/lib-satysfi/packages/stdlib/stdlib.0.0.1/src/cross-ref.satyg b/lib-satysfi/packages/stdlib/stdlib.0.0.1/src/cross-ref.satyg new file mode 100644 index 000000000..44104925e --- /dev/null +++ b/lib-satysfi/packages/stdlib/stdlib.0.0.1/src/cross-ref.satyg @@ -0,0 +1,19 @@ +module CrossRef :> sig + type key = string + type data = string + val register : key -> data -> unit + val get : key -> option data + val probe : key -> option data +end = struct + + type key = string + + type data = string + + val register = register-cross-reference %PRIMITIVE + + val get = get-cross-reference %PRIMITIVE + + val probe = probe-cross-reference %PRIMITIVE + +end diff --git a/lib-satysfi/packages/stdlib/stdlib.0.0.1/src/deco.satyh b/lib-satysfi/packages/stdlib/stdlib.0.0.1/src/deco.satyh index b3ec2a55c..7b63cb166 100644 --- a/lib-satysfi/packages/stdlib/stdlib.0.0.1/src/deco.satyh +++ b/lib-satysfi/packages/stdlib/stdlib.0.0.1/src/deco.satyh @@ -1,4 +1,5 @@ -use Gr +use Graphics +use Path module Deco :> sig val empty : deco @@ -6,11 +7,11 @@ module Deco :> sig end = struct val empty _ _ _ _ = - unite-graphics [] + Graphics.empty val simple-frame t scolor fcolor (x, y) w h d = - let path = Gr.rectangle (x, y -' d) (x +' w, y +' h) in - unite-graphics [ + let path = Path.rectangle (x, y -' d) (x +' w, y +' h) in + Graphics.overlay [ fill fcolor path, stroke t scolor path, ] diff --git a/lib-satysfi/packages/stdlib/stdlib.0.0.1/src/float.satyg b/lib-satysfi/packages/stdlib/stdlib.0.0.1/src/float.satyg new file mode 100644 index 000000000..5a9b8047f --- /dev/null +++ b/lib-satysfi/packages/stdlib/stdlib.0.0.1/src/float.satyg @@ -0,0 +1,37 @@ +use open Basic + +module Float :> sig + type t = float + val ~lift : float -> code float + val persistent ~abs : float -> float + val persistent ~max : float -> float -> float + val persistent ~min : float -> float -> float + val persistent ~pi : float + val persistent ~power : float -> float -> float + val persistent ~sqrt : float -> float +end = struct + + type t = float + + val ~lift x = + lift-float x + + val persistent ~abs x = + if x >=. 0. then x else 0. -. x + + val persistent ~max x1 x2 = + if x1 >=. x2 then x1 else x2 + + val persistent ~min x1 x2 = + if x1 <=. x2 then x1 else x2 + + val persistent ~pi = + 3.1415926536 + + val persistent ~power y x = + exp (y *. log x) + + val persistent ~sqrt = + power 0.5 + +end diff --git a/lib-satysfi/packages/stdlib/stdlib.0.0.1/src/geom.satyh b/lib-satysfi/packages/stdlib/stdlib.0.0.1/src/geom.satyh deleted file mode 100644 index 67c4d2bab..000000000 --- a/lib-satysfi/packages/stdlib/stdlib.0.0.1/src/geom.satyh +++ /dev/null @@ -1,22 +0,0 @@ -use Pervasives - -module Geom :> sig - type point = Pervasives.point %TODO (enhance): remove this - val atan2-point : point -> point -> float - val div-perp : point -> point -> float -> length -> point -end = struct - - type point = Pervasives.point %TODO (enhance): remove this - - - val atan2-point (x1, y1) (x2, y2) = - atan2 ((y2 -' y1) /' 1pt) ((x2 -' x1) /' 1pt) - - - val div-perp (x1, y1) (x2, y2) t len = - let cx = x1 *' (1. -. t) +' x2 *' t in - let cy = y1 *' (1. -. t) +' y2 *' t in - let theta = atan2 ((y2 -' y1) /' 1pt) ((x2 -' x1) /' 1pt) +. Pervasives.math-pi /. 2. in - (cx +' len *' (cos theta), cy +' len *' (sin theta)) - -end diff --git a/lib-satysfi/packages/stdlib/stdlib.0.0.1/src/gr.satyh b/lib-satysfi/packages/stdlib/stdlib.0.0.1/src/gr.satyh deleted file mode 100644 index e878d438b..000000000 --- a/lib-satysfi/packages/stdlib/stdlib.0.0.1/src/gr.satyh +++ /dev/null @@ -1,218 +0,0 @@ -use Pervasives -use Geom -use List - -module Gr :> sig - type point = Pervasives.point %TODO (enhance): erase this - val rectangle : point -> point -> path - val rectangle-round : length -> point -> point -> path - val rectangle-round-left : length -> point -> point -> path - val rectangle-round-left-lower : length -> point -> point -> path - val rectangle-round-left-upper : length -> point -> point -> path - val rectangle-round-right : length -> point -> point -> path - val poly-line : point -> list point -> path - val polygon : point -> list point -> path - val line : point -> point -> path - val circle : point -> length -> path - val empty : graphics - val text-centering : point -> inline-boxes -> graphics - val text-leftward : point -> inline-boxes -> graphics - val text-rightward : point -> inline-boxes -> graphics - val arrow : length -> color -> length -> length -> length -> point -> point -> graphics - val dashed-arrow : length -> length * length * length -> color -> length -> length -> length -> point -> point -> graphics - val rotate-path : point -> float -> path -> path - val scale-path : point -> float -> float -> path -> path - val rotate-graphics : point -> float -> graphics -> graphics - val scale-graphics : point -> float -> float -> graphics -> graphics -end = struct - - type point = Pervasives.point %TODO (enhance): erase this - - val rectangle (x1, y1) (x2, y2) = - start-path (x1, y1) - |> line-to (x1, y2) - |> line-to (x2, y2) - |> line-to (x2, y1) - |> close-with-line - - - val rectangle-round r (xA, yA) (xB, yB) = - let t = r *' 0.4 in - let x1 = Pervasives.length-min xA xB in - let x2 = Pervasives.length-max xA xB in - let y1 = Pervasives.length-min yA yB in - let y2 = Pervasives.length-max yA yB in - start-path (x1, y1 +' r) - |> bezier-to (x1, y1 +' t) (x1 +' t, y1) (x1 +' r, y1) - |> line-to (x2 -' r, y1) - |> bezier-to (x2 -' t, y1) (x2, y1 +' t) (x2, y1 +' r) - |> line-to (x2, y2 -' r) - |> bezier-to (x2, y2 -' t) (x2 -' t, y2) (x2 -' r, y2) - |> line-to (x1 +' r, y2) - |> bezier-to (x1 +' t, y2) (x1, y2 -' t) (x1, y2 -' r) - |> close-with-line - - - val rectangle-round-left r (xA, yA) (xB, yB) = - let t = r *' 0.4 in - let x1 = Pervasives.length-min xA xB in - let x2 = Pervasives.length-max xA xB in - let y1 = Pervasives.length-min yA yB in - let y2 = Pervasives.length-max yA yB in - start-path (x1, y1 +' r) - |> bezier-to (x1, y1 +' t) (x1 +' t, y1) (x1 +' r, y1) - |> line-to (x2, y1) - |> line-to (x2, y2) - |> line-to (x1 +' r, y2) - |> bezier-to (x1 +' t, y2) (x1, y2 -' t) (x1, y2 -' r) - |> close-with-line - - - val rectangle-round-left-lower r (xA, yA) (xB, yB) = - let t = r *' 0.4 in - let x1 = Pervasives.length-min xA xB in - let x2 = Pervasives.length-max xA xB in - let y1 = Pervasives.length-min yA yB in - let y2 = Pervasives.length-max yA yB in - start-path (x1, y1 +' r) - |> bezier-to (x1, y1 +' t) (x1 +' t, y1) (x1 +' r, y1) - |> line-to (x2, y1) - |> line-to (x2, y2) - |> line-to (x1, y2) - |> close-with-line - - - val rectangle-round-left-upper r (xA, yA) (xB, yB) = - let t = r *' 0.4 in - let x1 = Pervasives.length-min xA xB in - let x2 = Pervasives.length-max xA xB in - let y1 = Pervasives.length-min yA yB in - let y2 = Pervasives.length-max yA yB in - start-path (x1, y1) - |> line-to (x2, y1) - |> line-to (x2, y2) - |> line-to (x1 +' r, y2) - |> bezier-to (x1 +' t, y2) (x1, y2 -' t) (x1, y1 -' t) - |> close-with-line - - - val rectangle-round-right r (xA, yA) (xB, yB) = - let t = r *' 0.4 in - let x1 = Pervasives.length-min xA xB in - let x2 = Pervasives.length-max xA xB in - let y1 = Pervasives.length-min yA yB in - let y2 = Pervasives.length-max yA yB in - start-path (x1, y1) - |> line-to (x2 -' r, y1) - |> bezier-to (x2 -' t, y1) (x2, y1 +' t) (x2, y1 +' r) - |> line-to (x2, y2 -' r) - |> bezier-to (x2, y2 -' t) (x2 -' t, y2) (x2 -' r, y2) - |> line-to (x1, y2) - |> close-with-line - - - val poly-line ptinit ptlst = - ptlst |> List.fold-left (fun acc pt -> ( - acc |> line-to pt - )) (start-path ptinit) |> terminate-path - - - val polygon ptinit ptlst = - ptlst |> List.fold-left (fun acc pt -> ( - acc |> line-to pt - )) (start-path ptinit) |> close-with-line - - - val line pt1 pt2 = - start-path pt1 |> line-to pt2 |> terminate-path - - - val circle (cx, cy) r = - let t = r *' 0.55228 in - start-path (cx -' r, cy) - |> bezier-to (cx -' r, cy +' t) (cx -' t, cy +' r) (cx, cy +' r) - |> bezier-to (cx +' t, cy +' r) (cx +' r, cy +' t) (cx +' r, cy) - |> bezier-to (cx +' r, cy -' t) (cx +' t, cy -' r) (cx, cy -' r) - |> close-with-bezier (cx -' t, cy -' r) (cx -' r, cy -' t) - - - val empty = - unite-graphics [] - - - val get-nonempty-graphics-bbox gr = - match get-graphics-bbox gr with - | None -> abort-with-message `get-nonempty-graphics-bbox` - | Some(bbox) -> bbox - end - - - val text-centering pt ib = - let gr = draw-text pt ib in - let ((xmin, _), (xmax, _)) = get-nonempty-graphics-bbox gr in - let wid = xmax -' xmin in - shift-graphics (0pt -' wid *' 0.5, 0pt) gr - - - val text-rightward = - draw-text - - - val text-leftward pt ib = - let gr = draw-text pt ib in - let ((xmin, _), (xmax, _)) = get-nonempty-graphics-bbox gr in - let wid = xmax -' xmin in - shift-graphics (0pt -' wid, 0pt) gr - - - val arrow-scheme strokef color lenL lenM lenP ((x1, y1) as pt1) ((x2, y2) as pt2) = - let theta = Geom.atan2-point pt2 pt1 in - let (cx, cy) = (x2 +' lenL *' (cos theta), y2 +' lenL *' (sin theta)) in - let (mx, my) = (x2 +' lenM *' (cos theta), y2 +' lenM *' (sin theta)) in - let phi = theta +. Pervasives.math-pi /. 2. in - let (p1, q1) = (cx +' lenP *' (cos phi), cy +' lenP *' (sin phi)) in - let (p2, q2) = (cx -' lenP *' (cos phi), cy -' lenP *' (sin phi)) in - unite-graphics [ - strokef color (line pt1 (mx, my)), - fill color (polygon pt2 [(p1, q1), (mx, my), (p2, q2)]), - ] - - - val arrow thkns = - arrow-scheme (stroke thkns) - - - val dashed-arrow thkns dash = - arrow-scheme (dashed-stroke thkns dash) - - - val rotate-path centpt angle path = - let (centx, centy) = centpt in - let rad = angle *. Pervasives.math-pi /. 180. in - path |> shift-path (0pt -' centx, 0pt -' centy) - |> linear-transform-path (cos rad) (0. -. (sin rad)) (sin rad) (cos rad) - |> shift-path centpt - - - val scale-path centpt scalex scaley path = - let (centx, centy) = centpt in - path |> shift-path (0pt -' centx, 0pt -' centy) - |> linear-transform-path scalex 0. 0. scaley - |> shift-path centpt - - - val rotate-graphics centpt angle gr = - let (centx, centy) = centpt in - let rad = angle *. Pervasives.math-pi /. 180. in - gr |> shift-graphics (0pt -' centx, 0pt -' centy) - |> linear-transform-graphics (cos rad) (0. -. (sin rad)) (sin rad) (cos rad) - |> shift-graphics centpt - - - val scale-graphics centpt scalex scaley gr = - let (centx, centy) = centpt in - gr |> shift-graphics (0pt -' centx, 0pt -' centy) - |> linear-transform-graphics scalex 0. 0. scaley - |> shift-graphics centpt - -end diff --git a/lib-satysfi/packages/stdlib/stdlib.0.0.1/src/graphics.satyh b/lib-satysfi/packages/stdlib/stdlib.0.0.1/src/graphics.satyh new file mode 100644 index 000000000..dc5972179 --- /dev/null +++ b/lib-satysfi/packages/stdlib/stdlib.0.0.1/src/graphics.satyh @@ -0,0 +1,83 @@ +use open Basic +use Float +use Point +use Path +use List +use Length + +module Graphics :> sig + val overlay : list graphics -> graphics + val shift : length * length -> graphics -> graphics + val linear-transform : float -> float -> float -> float -> graphics -> graphics + val rotate : point -> float -> graphics -> graphics + val scale : point -> float -> float -> graphics -> graphics + val empty : graphics + val text-centering : point -> inline-boxes -> graphics + val text-leftward : point -> inline-boxes -> graphics + val text-rightward : point -> inline-boxes -> graphics + val arrow : length -> color -> length -> length -> length -> point -> point -> graphics + val dashed-arrow : length -> length * length * length -> color -> length -> length -> length -> point -> point -> graphics +end = struct + + val overlay = unite-graphics %PRIMITIVE + + val shift = shift-graphics %PRIMITIVE + + val linear-transform = linear-transform-graphics %PRIMITIVE + + val rotate centpt angle gr = + let (centx, centy) = centpt in + let rad = angle *. Float.pi /. 180. in + gr |> shift (0pt -' centx, 0pt -' centy) + |> linear-transform (cos rad) (0. -. (sin rad)) (sin rad) (cos rad) + |> shift centpt + + val scale centpt scalex scaley gr = + let (centx, centy) = centpt in + gr |> shift (0pt -' centx, 0pt -' centy) + |> linear-transform scalex 0. 0. scaley + |> shift centpt + + val empty = + overlay [] + + val get-nonempty-graphics-bbox gr = + match get-graphics-bbox gr with + | None -> abort-with-message `get-nonempty-graphics-bbox` + | Some(bbox) -> bbox + end + + val text-centering pt ib = + let gr = draw-text pt ib in + let ((xmin, _), (xmax, _)) = get-nonempty-graphics-bbox gr in + let wid = xmax -' xmin in + shift (0pt -' wid *' 0.5, 0pt) gr + + val text-rightward = + draw-text + + val text-leftward pt ib = + let gr = draw-text pt ib in + let ((xmin, _), (xmax, _)) = get-nonempty-graphics-bbox gr in + let wid = xmax -' xmin in + shift (0pt -' wid, 0pt) gr + + val arrow-scheme strokef color lenL lenM lenP ((x1, y1) as pt1) ((x2, y2) as pt2) = + let theta = Point.atan2 pt2 pt1 in + let (cx, cy) = (x2 +' lenL *' (cos theta), y2 +' lenL *' (sin theta)) in + let (mx, my) = (x2 +' lenM *' (cos theta), y2 +' lenM *' (sin theta)) in + let phi = theta +. Float.pi /. 2. in + let (p1, q1) = (cx +' lenP *' (cos phi), cy +' lenP *' (sin phi)) in + let (p2, q2) = (cx -' lenP *' (cos phi), cy -' lenP *' (sin phi)) in + overlay [ + strokef color (Path.line pt1 (mx, my)), + fill color (Path.polygon pt2 [(p1, q1), (mx, my), (p2, q2)]), + ] + + val arrow thkns = + arrow-scheme (stroke thkns) + + val dashed-arrow thkns dash = + arrow-scheme (dashed-stroke thkns dash) + +end diff --git a/lib-satysfi/packages/stdlib/stdlib.0.0.1/src/hdecoset.satyh b/lib-satysfi/packages/stdlib/stdlib.0.0.1/src/hdecoset.satyh index 2c9d5ac3c..90a4bc5c9 100644 --- a/lib-satysfi/packages/stdlib/stdlib.0.0.1/src/hdecoset.satyh +++ b/lib-satysfi/packages/stdlib/stdlib.0.0.1/src/hdecoset.satyh @@ -1,4 +1,5 @@ -use Gr +use Graphics +use Path module HDecoSet :> sig val empty : deco-set @@ -7,42 +8,40 @@ module HDecoSet :> sig end = struct val empty = - let deco _ _ _ _ = Gr.empty in + let deco _ _ _ _ = Graphics.empty in (deco, deco, deco, deco) - val simple-frame-stroke t scolor = let strokef = stroke t scolor in let decoS (x, y) w h d = - strokef (Gr.rectangle (x, y -' d) (x +' w, y +' h)) + strokef (Path.rectangle (x, y -' d) (x +' w, y +' h)) in let decoH (x, y) w h d = - strokef (Gr.poly-line (x +' w, y -' d) [ (x, y -' d), (x, y +' h), (x +' w, y +' h) ]) + strokef (Path.poly-line (x +' w, y -' d) [ (x, y -' d), (x, y +' h), (x +' w, y +' h) ]) in let decoM (x, y) w h d = - unite-graphics [ - strokef (Gr.line (x, y -' d) (x +' w, y -' d)), - strokef (Gr.line (x, y +' h) (x +' w, y +' h)), + Graphics.overlay [ + strokef (Path.line (x, y -' d) (x +' w, y -' d)), + strokef (Path.line (x, y +' h) (x +' w, y +' h)), ] in let decoT (x, y) w h d = - strokef (Gr.poly-line (x, y -' d) [ (x +' w, y -' d), (x +' w, y +' h), (x, y +' h) ]) + strokef (Path.poly-line (x, y -' d) [ (x +' w, y -' d), (x +' w, y +' h), (x, y +' h) ]) in (decoS, decoH, decoM, decoT) - val rectangle-round-fill r extra color = let decoS (x, y) wid hgt dpt = - fill color (Gr.rectangle-round r (x, y -' dpt) (x +' wid, y +' hgt)) + fill color (Path.rectangle-round r (x, y -' dpt) (x +' wid, y +' hgt)) in let decoH (x, y) wid hgt dpt = - fill color (Gr.rectangle-round-left r (x, y -' dpt) (x +' wid +' extra, y +' hgt)) + fill color (Path.rectangle-round-left r (x, y -' dpt) (x +' wid +' extra, y +' hgt)) in let decoM (x, y) wid hgt dpt = - fill color (Gr.rectangle (x, y -' dpt) (x +' wid +' extra, y +' hgt)) + fill color (Path.rectangle (x, y -' dpt) (x +' wid +' extra, y +' hgt)) in let decoT (x, y) wid hgt dpt = - fill color (Gr.rectangle-round-right r (x -' extra, y -' dpt) (x +' wid, y +' hgt)) + fill color (Path.rectangle-round-right r (x -' extra, y -' dpt) (x +' wid, y +' hgt)) in (decoS, decoH, decoM, decoT) diff --git a/lib-satysfi/packages/stdlib/stdlib.0.0.1/src/inline.satyh b/lib-satysfi/packages/stdlib/stdlib.0.0.1/src/inline.satyh new file mode 100644 index 000000000..aeddff884 --- /dev/null +++ b/lib-satysfi/packages/stdlib/stdlib.0.0.1/src/inline.satyh @@ -0,0 +1,111 @@ +use open Basic +use List +use Deco + +module Inline :> sig + val nil : inline-boxes + val concat : list inline-boxes -> inline-boxes + val fil : inline-boxes + val get-natural-metrics : inline-boxes -> length * length * length + val get-natural-advance : inline-boxes -> length + val skip : length -> inline-boxes + val kern : length -> inline-boxes + val glue : length -> length -> length -> inline-boxes + val frame-inner : paddings -> deco -> inline-boxes -> inline-boxes + val frame-outer : paddings -> deco -> inline-boxes -> inline-boxes + val frame-fixed : length -> paddings -> deco -> inline-boxes -> inline-boxes + val frame-breakable : paddings -> deco-set -> inline-boxes -> inline-boxes + val embed-block-breakable : context -> block-boxes -> inline-boxes + val graphics-fixed : length -> length -> length -> (point -> graphics) -> inline-boxes + val graphics-outer : length -> length -> (length -> point -> graphics) -> inline-boxes + val embed-block-top : context -> length -> (context -> block-boxes) -> inline-boxes + val embed-block-bottom : context -> length -> (context -> block-boxes) -> inline-boxes + val line-stack-top : list inline-boxes -> inline-boxes + val line-stack-bottom : list inline-boxes -> inline-boxes + val embed-string : string -> inline-text + val embed-math : context -> math-boxes -> inline-boxes + val no-break : inline-boxes -> inline-boxes + val mandatory-break : context -> inline-boxes + val omit-skip-after : inline-boxes + val \skip : inline [length] + val \no-break : inline [inline-text] + val \fil : inline [] + val \fil-both : inline [] + val \mandatory-break : inline [] +end = struct + + val nil = inline-nil %PRIMITIVE + + val concat ibs = + List.fold ( ++ ) nil ibs + + val fil = inline-fil %PRIMITIVE + + val get-natural-metrics = get-natural-metrics %PRIMITIVE + + val get-natural-advance ib = + let (wid, _, _) = get-natural-metrics ib in + wid + + val skip = inline-skip %PRIMITIVE + + val kern len = + skip (0pt -' len) + + val glue = inline-glue %PRIMITIVE + + val discretionary = discretionary %PRIMITIVE + + val mandatory-break ctx = + discretionary 0 (skip (get-text-width ctx *' 2.)) fil nil + + val frame-inner = inline-frame-inner %PRIMITIVE + + val frame-outer = inline-frame-outer %PRIMITIVE + + val frame-fixed = inline-frame-fixed %PRIMITIVE + + val frame-breakable = inline-frame-breakable %PRIMITIVE + + val embed-block-breakable = embed-block-breakable %PRIMITIVE + + val graphics-fixed = inline-graphics %PRIMITIVE + + val graphics-outer = inline-graphics-outer %PRIMITIVE + + val embed-block-top = embed-block-top %PRIMITIVE + + val embed-block-bottom = embed-block-bottom %PRIMITIVE + + val line-stack-top = line-stack-top %PRIMITIVE + + val line-stack-bottom = line-stack-bottom %PRIMITIVE + + val embed-string = embed-string %PRIMITIVE + + val embed-math = embed-math %PRIMITIVE + + val no-break ib = + inline-frame-outer (0pt, 0pt, 0pt, 0pt) Deco.empty ib + + val omit-skip-after = omit-skip-after %PRIMITIVE + + val inline ctx \skip len = + skip len + + val inline ctx \kern len = + kern len + + val inline ctx \fil = + discretionary 0 nil fil nil + + val inline ctx \fil-both = + discretionary 0 nil fil fil + + val inline ctx \mandatory-break = + mandatory-break ctx + + val inline ctx \no-break inner = + no-break (read-inline ctx inner) + +end diff --git a/lib-satysfi/packages/stdlib/stdlib.0.0.1/src/int.satyg b/lib-satysfi/packages/stdlib/stdlib.0.0.1/src/int.satyg new file mode 100644 index 000000000..52fd0bf55 --- /dev/null +++ b/lib-satysfi/packages/stdlib/stdlib.0.0.1/src/int.satyg @@ -0,0 +1,36 @@ +use open Basic + +module Int :> sig + type t = int + val ~lift : int -> code int + val persistent ~compare : int -> int -> ordering + val persistent ~equal : int -> int -> bool + val persistent ~abs : int -> int + val persistent ~max : int -> int -> int + val persistent ~min : int -> int -> int +end = struct + + type t = int + + val ~lift = lift-int + + val persistent ~compare n1 n2 = + if n1 == n2 then + Equal + else if n1 > n2 then + Greater + else + Less + + val persistent ~equal = ( == ) + + val persistent ~abs n = + if n >= 0 then n else - n + + val persistent ~max n1 n2 = + if n1 >= n2 then n1 else n2 + + val persistent ~min n1 n2 = + if n1 <= n2 then n1 else n2 + +end diff --git a/lib-satysfi/packages/stdlib/stdlib.0.0.1/src/length.satyh b/lib-satysfi/packages/stdlib/stdlib.0.0.1/src/length.satyh new file mode 100644 index 000000000..c554ec6b3 --- /dev/null +++ b/lib-satysfi/packages/stdlib/stdlib.0.0.1/src/length.satyh @@ -0,0 +1,27 @@ +module Length :> sig + type t = length + val ~lift : length -> code length + val persistent ~max : length -> length -> length + val persistent ~min : length -> length -> length + val persistent ~abs : length -> length + val persistent ~atan2 : length -> length -> float +end = struct + + type t = length + + val ~lift = + lift-length + + val persistent ~max len1 len2 = + if len1 <' len2 then len2 else len1 + + val persistent ~min len1 len2 = + if len1 <' len2 then len1 else len2 + + val persistent ~abs len = + if len <' 0pt then 0pt -' len else len + + val persistent ~atan2 y x = + atan2 (y /' 1pt) (x /' 1pt) + +end diff --git a/lib-satysfi/packages/stdlib/stdlib.0.0.1/src/list.satyg b/lib-satysfi/packages/stdlib/stdlib.0.0.1/src/list.satyg index 333544519..a57401f68 100644 --- a/lib-satysfi/packages/stdlib/stdlib.0.0.1/src/list.satyg +++ b/lib-satysfi/packages/stdlib/stdlib.0.0.1/src/list.satyg @@ -1,173 +1,262 @@ +use open Basic use Option module List :> sig - val persistent ~map 'a 'b : ('a -> 'b) -> list 'a -> list 'b - val persistent ~mapi 'a 'b : (int -> 'a -> 'b) -> list 'a -> list 'b - val persistent ~iter 'a : ('a -> unit) -> list 'a -> unit - val persistent ~iteri 'a : (int -> 'a -> unit) -> list 'a -> unit - val persistent ~fold-left 'a 'b : ('a -> 'b -> 'a) -> 'a -> list 'b -> 'a - val persistent ~fold-lefti 'a 'b : (int -> 'a -> 'b -> 'a) -> 'a -> list 'b -> 'a - val persistent ~fold-right 'a 'b : ('a -> 'b -> 'b) -> 'b -> list 'a -> 'b - val persistent ~filter 'a : ('a -> bool) -> list 'a -> list 'a - val persistent ~assoc 'a 'b : ('a -> 'a -> bool) -> 'a -> list ('a * 'b) -> option 'b + type t 'a = list 'a + val ~lift 'a : ('a -> code 'a) -> list 'a -> code (list 'a) + val persistent ~compare 'a : ('a -> 'a -> ordering) -> list 'a -> list 'a -> ordering + val persistent ~equal 'a : ('a -> 'a -> bool) -> list 'a -> list 'a -> bool + val persistent ~show 'a : ('a -> string) -> list 'a -> string + val persistent ~fold 'a 'b : ('a -> 'b -> 'a) -> 'a -> list 'b -> 'a + val persistent ~fold-indexed 'a 'b : ('a -> int -> 'b -> 'a) -> 'a -> list 'b -> 'a + val persistent ~fold-back 'a 'b : ('a -> 'b -> 'b) -> list 'a -> 'b -> 'b + val persistent ~fold-adjacent 'a 'b : ('a -> 'b -> option 'b -> option 'b -> 'a) -> 'a -> list 'b -> 'a + val persistent ~fold-indexed-adjacent 'a 'b : ('a -> int -> 'b -> option 'b -> option 'b -> 'a) -> 'a -> list 'b -> 'a val persistent ~reverse 'a : list 'a -> list 'a + val persistent ~map 'a 'b : ('a -> 'b) -> list 'a -> list 'b + val persistent ~map-indexed 'a 'b : (int -> 'a -> 'b) -> list 'a -> list 'b + val persistent ~map-adjacent 'a 'b : ('a -> option 'a -> option 'a -> 'b) -> list 'a -> list 'b + val persistent ~map-indexed-adjacent 'a 'b : (int -> 'a -> option 'a -> option 'a -> 'b) -> list 'a -> list 'b + val persistent ~map-with-ends 'a 'b : (bool -> bool -> 'a -> 'b) -> list 'a -> list 'b val persistent ~append 'a : list 'a -> list 'a -> list 'a val persistent ~concat 'a : list (list 'a) -> list 'a - val persistent ~fold-left-adjacent 'a 'b : ('a -> 'b -> option 'b -> option 'b -> 'a) -> 'a -> list 'b -> 'a - val persistent ~map-adjacent 'a 'b : ('a -> option 'a -> option 'a -> 'b) -> list 'a -> list 'b - val persistent ~mapi-adjacent 'a 'b : (int -> 'a -> option 'a -> option 'a -> 'b) -> list 'a -> list 'b + val persistent ~pure 'a : 'a -> list 'a + val persistent ~bind 'a 'b : list 'a -> ('a -> list 'b) -> list 'b + val persistent ~iter 'a : ('a -> unit) -> list 'a -> unit + val persistent ~iter-indexed 'a : (int -> 'a -> unit) -> list 'a -> unit + val persistent ~filter 'a : ('a -> bool) -> list 'a -> list 'a + val persistent ~filter-map 'a 'b : ('a -> option 'b) -> list 'a -> list 'b + val persistent ~find 'a : ('a -> bool) -> list 'a -> option 'a + val persistent ~find-map 'a 'b : ('a -> option 'b) -> list 'a -> option 'b val persistent ~length 'a : list 'a -> int val persistent ~nth 'a : int -> list 'a -> option 'a val persistent ~is-empty 'a : list 'a -> bool - val persistent ~map-with-ends 'a 'b : (bool -> bool -> 'a -> 'b) -> list 'a -> list 'b + val persistent ~zip-exact 'a 'b : list 'a -> list 'b -> option (list ('a * 'b)) + val persistent ~zip-shorter 'a 'b : list 'a -> list 'b -> list ('a * 'b) end = struct - val persistent ~rec map f ys = - match ys with - | [] -> [] - | x :: xs -> (f x) :: map f xs - end - - - val persistent ~mapi f = - let rec aux i f ys = - match ys with - | [] -> [] - | x :: xs -> (f i x) :: aux (i + 1) f xs + type t 'a = list 'a + + val ~rec lift lf xs = + match xs with + | [] -> &[] + | x :: xs -> &(~(lf x) :: ~(lift lf xs)) + end + + val persistent ~rec compare comp xs1 xs2 = + match (xs1, xs2) with + | ([], []) -> + Equal + | (x1 :: ys1, x2 :: ys2) -> + match comp x1 x2 with + | Equal -> compare comp ys1 ys2 + | other -> other end - in - aux 0 f + | ([], _ :: _) -> + Less + | (_ :: _, []) -> + Greater + end + + val persistent ~rec equal eq xs1 xs2 = + match (xs1, xs2) with + | ([], []) -> true + | (x1 :: ys1, x2 :: ys2) -> if eq x1 x2 then equal eq ys1 ys2 else false + | _ -> false + end + + val persistent ~show sh = + let rec aux xs = + match xs with + | [] -> ` ` + | [x] -> sh x + | x :: ys -> sh x ^ `, `# ^ aux ys + end + in + (fun xs -> `[` ^ aux xs ^ `]`) + val persistent ~rec fold f acc ys = + match ys with + | [] -> acc + | x :: xs -> fold f (f acc x) xs + end - val persistent ~rec iter f ys = + val persistent ~fold-indexed f = + let rec aux i f acc ys = match ys with - | [] -> () - | x :: xs -> let () = f x in iter f xs + | [] -> acc + | x :: xs -> aux (i + 1) f (f acc i x) xs end + in + aux 0 f + val persistent ~rec fold-back f ys acc = + match ys with + | [] -> acc + | x :: xs -> f x (fold-back f xs acc) + end - val persistent ~iteri f = - let rec aux i f ys = - match ys with - | [] -> () - | x :: xs -> let () = f i x in aux (i + 1) f xs - end - in - aux 0 f - - - val persistent ~rec fold-left f init ys = + val persistent ~fold-adjacent f = + let rec aux prev-opt acc xs = + match xs with + | [] -> + acc + | head :: [] -> + f acc head prev-opt None + | head :: ((right :: _) as tail) -> + let acc-new = f acc head prev-opt (Some(right)) in + aux (Some(head)) acc-new tail + end + in + aux None + + val persistent ~fold-indexed-adjacent f init xs = + let (_, acc) = + xs |> fold-adjacent (fun (i, acc) x prev-opt next-opt -> + (i + 1, f acc i x prev-opt next-opt) + ) (0, init) + in + acc + + val persistent ~reverse xs = + fold (fun acc x -> x :: acc) [] xs + + val persistent ~rec map f ys = + match ys with + | [] -> [] + | x :: xs -> (f x) :: map f xs + end + + val persistent ~map-indexed f = + let rec aux i f ys = match ys with - | [] -> init - | x :: xs -> fold-left f (f init x) xs + | [] -> [] + | x :: xs -> (f i x) :: aux (i + 1) f xs end - - - val persistent ~fold-lefti f = - let rec aux i f init ys = - match ys with - | [] -> init - | x :: xs -> aux (i + 1) f (f i init x) xs - end - in - aux 0 f - - - val persistent ~rec fold-right f init ys = + in + aux 0 f + + val persistent ~map-adjacent f xs = + xs |> fold-adjacent (fun acc x prev-opt next-opt -> + f x prev-opt next-opt :: acc + ) [] |> reverse + + val persistent ~map-indexed-adjacent f xs = + xs |> fold-indexed-adjacent (fun acc i x prev-opt next-opt -> + f i x prev-opt next-opt :: acc + ) [] |> reverse + + val persistent ~map-with-ends f xs = + fold-adjacent (fun acc x prev-opt next-opt -> + let is-first = Option.is-none prev-opt in + let is-last = Option.is-none next-opt in + let y = f is-first is-last x in + y :: acc + ) [] xs |> reverse + + val persistent ~rec append xs1 xs2 = + match xs1 with + | [] -> xs2 + | x :: xs -> x :: append xs xs2 + end + + val persistent ~concat xs = + fold-back append xs [] + + val persistent ~pure x = + [x] + + val persistent ~bind xs f = + concat (map f xs) + + val persistent ~rec iter f ys = + match ys with + | [] -> () + | x :: xs -> let () = f x in iter f xs + end + + val persistent ~iter-indexed f = + let rec aux i f ys = match ys with - | [] -> init - | x :: xs -> f x (fold-right f init xs) + | [] -> () + | x :: xs -> let () = f i x in aux (i + 1) f xs end + in + aux 0 f + + val persistent ~rec filter p ys = + match ys with + | [] -> [] + | x :: xs -> if p x then x :: filter p xs else filter p xs + end + + val persistent ~rec filter-map f ys = + match ys with + | [] -> + [] + | x :: xs -> + match f x with + | None -> filter-map f xs + | Some(v) -> v :: filter-map f xs + end + end + val persistent ~rec find p ys = + match ys with + | [] -> None + | x :: xs -> if p x then Some(x) else find p ys + end - val persistent ~rec filter p ys = + val persistent ~find-map f = + let rec aux ys = match ys with - | [] -> [] - | x :: xs -> if p x then x :: filter p xs else filter p xs + | [] -> + None + | x :: xs -> + match f x with + | Some(v) -> Some(v) + | None -> aux xs + end end + in + aux + val persistent ~length xs = + fold (fun i _ -> i + 1) 0 xs - val persistent ~rec assoc eq a ys = + val persistent ~nth n = + let rec aux i ys = match ys with - | [] -> None - | (x, y) :: xs -> if eq a x then Some(y) else assoc eq a xs + | [] -> None + | x :: xs -> if i == n then Some(x) else aux (i + 1) xs end - - - val persistent ~reverse lst = - fold-left (fun acc x -> x :: acc) [] lst - - - val persistent ~rec append lst1 lst2 = - match lst1 with - | [] -> lst2 - | x :: xs -> x :: append xs lst2 + in + aux 0 + + val persistent ~is-empty xs = + match xs with + | [] -> true + | _ :: _ -> false + end + + val persistent ~zip-exact ys1 ys2 = + let rec aux acc ys1 ys2 = + match (ys1, ys2) with + | (x1 :: xs1, x2 :: xs2) -> aux ((x1, x2) :: acc) xs1 xs2 + | ([], []) -> Some(reverse acc) + | _ -> None end - - - val persistent ~concat lst = fold-right append [] lst - - - val persistent ~fold-left-adjacent f = - let rec aux leftopt init lst = - match lst with - | [] -> - init - - | head :: [] -> - let initnew = f init head leftopt None in - initnew - - | head :: ((right :: _) as tail) -> - let initnew = f init head leftopt (Some(right)) in - aux (Some(head)) initnew tail - end - in - aux None - - - val persistent ~map-adjacent f lst = - lst |> fold-left-adjacent (fun acc x leftopt rightopt -> ( - f x leftopt rightopt :: acc - )) [] |> reverse - - - val persistent ~mapi-adjacent f lst = - let (_, acc) = - lst |> fold-left-adjacent (fun (i, acc) x leftopt rightopt -> ( - (i + 1, f i x leftopt rightopt :: acc) - )) (0, []) - in - reverse acc - - - val persistent ~length lst = - fold-right (fun _ i -> i + 1) 0 lst - - - val persistent ~nth lst = - let rec aux i n xs = - match xs with - | [] -> None - | head :: tail -> if n == i then Some(head) else aux (i + 1) n tail - end - in - aux 0 lst - - - val persistent ~is-empty xs = - match xs with - | [] -> true - | _ :: _ -> false + in + aux [] ys1 ys2 + + val persistent ~zip-shorter ys1 ys2 = + let rec aux acc ys1 ys2 = + match (ys1, ys2) with + | (x1 :: xs1, x2 :: xs2) -> aux ((x1, x2) :: acc) xs1 xs2 + | ([], _) -> reverse acc + | (_, []) -> reverse acc end + in + aux [] ys1 ys2 - - val persistent ~map-with-ends f xs = - fold-left-adjacent (fun acc x prev next -> ( - let is-first = Option.is-none prev in - let is-last = Option.is-none next in - let y = f is-first is-last x in - y :: acc - )) [] xs |> reverse - - end +end diff --git a/lib-satysfi/packages/stdlib/stdlib.0.0.1/src/logo.satyh b/lib-satysfi/packages/stdlib/stdlib.0.0.1/src/logo.satyh new file mode 100644 index 000000000..351e26ac9 --- /dev/null +++ b/lib-satysfi/packages/stdlib/stdlib.0.0.1/src/logo.satyh @@ -0,0 +1,45 @@ +use open Inline + +module Logo :> sig + val \SATySFi : inline [] + val \LaTeX : inline [] + val \TeX : inline [] +end = struct + + val inline ctx \SATySFi = + let size = get-font-size ctx in + let f = read-inline ctx in + let fd = ctx |> set-manual-rising (0pt -' (size *' 0.25)) |> read-inline in + let ib = + f {SAT} ++ kern (size *' 0.15) ++ fd {Y} ++ f {SF} ++ kern (size *' 0.05) ++ fd {I} + in + script-guard Latin (no-break ib) + + val inline ctx \LaTeX = + let size = get-font-size ctx in + let f = read-inline ctx in + let fA = ctx |> set-font-size (size *' 0.7) + |> set-manual-rising (size *' 0.2) + |> read-inline + in + let fE = ctx |> set-manual-rising (0pt -' (size *' 0.25)) + |> read-inline + in + let ib = + f {L} ++ kern (size *' 0.2) ++ fA {A} + ++ f {T} ++ kern (size *' 0.125) ++ fE {E} ++ f {X} + in + script-guard Latin (no-break ib) + + val inline ctx \TeX = + let size = get-font-size ctx in + let f = read-inline ctx in + let fE = ctx |> set-manual-rising (0pt -' (size *' 0.25)) + |> read-inline + in + let ib = + f {T} ++ kern (size *' 0.125) ++ fE {E} ++ f {X} + in + script-guard Latin (no-break ib) + +end diff --git a/lib-satysfi/packages/stdlib/stdlib.0.0.1/src/map.satyg b/lib-satysfi/packages/stdlib/stdlib.0.0.1/src/map.satyg new file mode 100644 index 000000000..605becdf0 --- /dev/null +++ b/lib-satysfi/packages/stdlib/stdlib.0.0.1/src/map.satyg @@ -0,0 +1,641 @@ +use open Basic +use Int +use List +use package open #[test-only] Testing + +module Map :> sig + module Make : (Key : Ord) -> sig + type t :: o -> o + val empty 'v : t 'v + val singleton 'v : Key.t -> 'v -> t 'v + val add 'v : Key.t -> 'v -> t 'v -> t 'v + val remove 'v : Key.t -> t 'v -> t 'v + val find 'v : Key.t -> t 'v -> option 'v + val map-with-key 'u 'v : (Key.t -> 'u -> 'v) -> t 'u -> t 'v + val map 'u 'v : ('u -> 'v) -> t 'u -> t 'v + val fold 'a 'v : ('a -> Key.t -> 'v -> 'a) -> 'a -> t 'v -> 'a + val fold-back 'a 'v : ('a -> Key.t -> 'v -> 'a) -> 'a -> t 'v -> 'a + val to-list 'v : t 'v -> list (Key.t * 'v) + val to-list-reversed 'v : t 'v -> list (Key.t * 'v) + val from-list 'v : list (Key.t * 'v) -> t 'v + end +end = struct + + module Make = fun(Key : Ord) -> struct + + type t 'a = + | Empty + | Node of (| + key : Key.t, + data : 'a, + left : t 'a, + right : t 'a, + height : int, + |) + + val get-height mp = + match mp with + | Empty -> 0 + | Node(r) -> r#height + end + + val empty = + Empty + + val singleton k v = + Node(| + key = k, + data = v, + left = Empty, + right = Empty, + height = 1, + |) + + val build-node tL k v tR = + Node(| + key = k, + data = v, + left = tL, + right = tR, + height = Int.max (get-height tL) (get-height tR) + 1, + |) + + %% Rebalances a tree after inserting or removing one element. + val rebalance tL k v tR = + let hL = get-height tL in + let hR = get-height tR in + if hL == hR + 2 then + match tL with + | Empty -> + abort-with-message `Map, rebalance, empty left` + | Node(nL) -> + let tLL = nL#left in + let tLR = nL#right in + let hLL = get-height tLL in + let hLR = get-height tLR in + if hLL > hLR then + % N L + % / \ / \ + % L R ====> LL N + % / \ | | / \ + % LL LR | | LR R + % | | | | | | + % | | # | | | + % | | | | | + % | o x o # + % | + % x + build-node tLL nL#key nL#data (build-node tLR k v tR) + else + % Actually, we can assume `hLL < hLR` here, although we do not utilize it. + % This is because, if `hLL == hLR`, + % it means at least two elements were modified in a balanced tree before rebalancing + % and thereby contradicts the invariant (i.e., that any use-space maps are balanced). + match tLR with + | Empty -> + abort-with-message `Map, rebalance, empty left-right` + | Node(nLR) -> + let tLRL = nLR#left in + let tLRR = nLR#right in + let hLRL = get-height tLRL in + let hLRR = get-height tLRR in + % N LR + % / \ / \ + % L R ====> L N + % / \ | / \ / \ + % LL LR | LL LRL LRR R + % | / \ | | | | | + % | LRL LRR # | | | | + % | | | | | | | + % | | | | x x # + % | | | | + % y x x y + build-node + (build-node tLL nL#key nL#data tLRL) + nLR#key + nLR#data + (build-node tLRR k v tR) + end + end + else if hL + 2 == hR then + match tR with + | Empty -> + abort-with-message `Map, rebalance, empty right` + | Node(nR) -> + let tRL = nR#left in + let tRR = nR#right in + let hRL = get-height tRL in + let hRR = get-height tRR in + if hRL < hRR then + % N R + % / \ / \ + % L R ====> N RR + % | / \ / \ | + % | RL RR L RL | + % | | | | | | + % # | | | | | + % | | | | | + % o | # o x + % | + % x + build-node (build-node tL k v tRL) nR#key nR#data tRR + else + % Actually, we can assume `hRL > hRR` here, although we do not utilize it. + % This is because, if `hRL == hRR`, + % it means at least two elements were modified in a balanced tree before rebalancing + % and thereby contradicts the invariant (i.e., that any use-space maps are balanced). + match tRL with + | Empty -> + abort-with-message `Map, rebalance, empty right-left` + | Node(nRL) -> + let tRLL = nRL#left in + let tRLR = nRL#right in + let hRLL = get-height tRLL in + let hRLR = get-height tRLR in + % N RL + % / \ / \ + % L R ====> N R + % | / \ / \ / \ + % | RL RR L RLL RLR RR + % | / \ | | | | | + % # RLL RLR | | | | | + % | | | | | | | + % | | | # x x | + % | | | | + % x x y y + build-node + (build-node tL k v tRLL) + nRL#key + nRL#data + (build-node tRLR nR#key nR#data tRR) + end + end + else + build-node tL k v tR + + val add k v = + let rec aux mp = + match mp with + | Empty -> + (true, singleton k v) + | Node(n) -> + match Key.compare k n#key with + | Equal -> + (false, Node(| n with data = v |)) + | Less -> + let (enlarged, left-new) = aux n#left in + if enlarged then + (true, rebalance left-new n#key n#data n#right) + else + (false, Node(| n with left = left-new |)) + | Greater -> + let (enlarged, right-new) = aux n#right in + if enlarged then + (true, rebalance n#left n#key n#data right-new) + else + (false, Node(| n with right = right-new |)) + end + end + in + (fun mp -> + let (_, mp-new) = aux mp in + mp-new + ) + + val trim-minimum = + let rec aux n = + match n#left with + | Empty -> + ((n#key, n#data), n#right) + % Since `n` is balanced, + % `n#right` has 0 or 1 node. + | Node(nL) -> + let (kv-min, tL) = aux nL in + (kv-min, rebalance tL n#key n#data n#right) + end + in + (fun t -> + match t with + | Empty -> None + | Node(n) -> Some(aux n) + end + ) + + % Merges two trees `t1` and `t2`, + % where the maximum key in `t1` is less than the minimum key in `t2` + % and the difference of height between `t1` and `t2` is less than 2. + val merge-separated t1 t2 = + match trim-minimum t2 with + | None -> t1 + | Some(((k, v), t2-removed)) -> rebalance t1 k v t2-removed + end + + val remove k = + let rec aux mp = + match mp with + | Empty -> + None + | Node(n) -> + match Key.compare k n#key with + | Equal -> + Some(merge-separated n#left n#right) + | Less -> + match aux n#left with + | None -> + None + | Some(left-new) -> + Some(rebalance left-new n#key n#data n#right) + end + | Greater -> + match aux n#right with + | None -> + None + | Some(right-new) -> + Some(rebalance n#left n#key n#data right-new) + end + end + end + in + (fun mp -> + match aux mp with + | None -> mp + | Some(mp-new) -> mp-new + end + ) + + val find k = + let rec aux mp = + match mp with + | Empty -> + None + | Node(n) -> + match Key.compare k n#key with + | Equal -> Some(n#data) + | Less -> aux n#left + | Greater -> aux n#right + end + end + in + aux + + val map-with-key f = + let rec aux mp = + match mp with + | Empty -> + Empty + | Node(n) -> + Node(| + key = n#key, + data = f n#key n#data, + left = aux n#left, + right = aux n#right, + height = n#height, + |) + end + in + aux + + val map f mp = + map-with-key (fun _ -> f) mp + + val fold f = + let rec aux acc mp = + match mp with + | Empty -> + acc + | Node(n) -> + let acc = aux acc n#left in + let acc = f acc n#key n#data in + let acc = aux acc n#right in + acc + end + in + aux + + val fold-back f = + let rec aux acc mp = + match mp with + | Empty -> + acc + | Node(n) -> + let acc = aux acc n#right in + let acc = f acc n#key n#data in + let acc = aux acc n#left in + acc + end + in + aux + + val to-list mp = + fold-back (fun acc k v -> (k, v) :: acc) [] mp + + val to-list-reversed mp = + fold (fun acc k v -> (k, v) :: acc) [] mp + + % TODO: make this more efficient + val from-list kvs = + List.fold (fun mp (k, v) -> add k v mp) empty kvs + + end + + #[test-only] + module Test = struct + + include Make Int + + val eq-key = Equality.int + + val eq-internal eq-data = + let key-equal = (Equality.get eq-key)#equal in + let key-show = (Equality.get eq-key)#show in + let data-equal = (Equality.get eq-data)#equal in + let data-show = (Equality.get eq-data)#show in + let rec equal t1 t2 = + match (t1, t2) with + | (Empty, Empty) -> + true + | (Node(n1), Node(n2)) -> + n1#height == n2#height + && equal n1#left n2#left + && key-equal n1#key n2#key + && data-equal n1#data n2#data + && equal n1#right n2#right + | _ -> + false + end + in + let rec show t = + match t with + | Empty -> + `Empty` + | Node(n) -> + `Node(| height = `# ^ arabic n#height + ^ `, key = `# ^ key-show n#key + ^ `, data = `# ^ data-show n#data + ^ `, left = `# ^ show n#left + ^ `, right = `# ^ show n#right ^ #` |)` + end + in + Equality.make (| equal = equal, show = show |) + + #[test] + val singleton-test () = + let got = singleton 42 `foo` in + let expected = + Node(| + height = 1, + left = Empty, + key = 42, + data = `foo`, + right = Empty, + |) + in + assert-equal (eq-internal Equality.string) expected got + + val node k v left right = + Node(| + height = 1 + Int.max (get-height left) (get-height right), + key = k, + data = v, + left = left, + right = right, + |) + + val leaf = + singleton + % Since `singleton` has already been tested, we can use it here. + + val rec is-well-formed t = + match t with + | Empty -> + true + | Node(n) -> + let tL = n#left in + let tR = n#right in + if is-well-formed tL && is-well-formed tR then + let hL = get-height tL in + let hR = get-height tR in + Int.abs (hL - hR) <= 1 && n#height == 1 + Int.max hL hR + else + false + end + + #[test] + val add-test () = + List.iter (fun r -> + let title = r#title in + let input = r#input in + let expected = r#expected in + let () = assert ?(title = title ^ `: input well-formedness`) (is-well-formed input) in + let () = assert ?(title = title ^ `: expected well-formedness`) (is-well-formed expected) in + let got = r#operation r#input in + let () = assert ?(title = title ^ `: output well-formedness`) (is-well-formed got) in + assert-equal ?(title = title) (eq-internal Equality.string) expected got + ) [ + (| + title = `added to the left`, + input = + leaf 42 `foo`, + operation = + add 29 `bar`, + expected = + node 42 `foo` + (leaf 29 `bar`) + empty, + |), + (| + title = `added to the right`, + input = + leaf 42 `foo`, + operation = + add 57 `bar`, + expected = + node 42 `foo` + empty + (leaf 57 `bar`), + |), + (| + title = `rebalance left-left`, + % 42 29 + % / ==== add 20 ===> / \ + % 29 20 42 + input = + node 42 `foo` + (leaf 29 `bar`) + empty, + operation = + add 20 `baz`, + expected = + node 29 `bar` + (leaf 20 `baz`) + (leaf 42 `foo`), + |), + (| + title = `rebalance left-right 1`, + % 42 35 + % / ==== add 35 ===> / \ + % 29 29 42 + input = + node 42 `foo` + (leaf 29 `bar`) + empty, + operation = + add 35 `baz`, + expected = + node 35 `baz` + (leaf 29 `bar`) + (leaf 42 `foo`), + |), + (| + title = `rebalance left-right 2`, + % 42 42 + % / \ ==== add 30 ===> / \ + % 29 57 30 57 + % \ / \ + % 35 29 35 + input = + node 42 `foo` + (node 29 `bar` + empty + (leaf 35 `baz`)) + (leaf 57 `qux`), + operation = + add 30 `quux`, + expected = + node 42 `foo` + (node 30 `quux` + (leaf 29 `bar`) + (leaf 35 `baz`)) + (leaf 57 `qux`), + |), + (| + title = `rebalance left-right-right 1`, + % 42 42 + % / \ ==== add 38 ===> / \ + % 29 57 35 57 + % \ / \ + % 35 29 38 + input = + node 42 `foo` + (node 29 `bar` + empty + (leaf 35 `baz`)) + (leaf 57 `qux`), + operation = + add 38 `quux`, + expected = + node 42 `foo` + (node 35 `baz` + (leaf 29 `bar`) + (leaf 38 `quux`)) + (leaf 57 `qux`), + |), + (| + title = `rebalance left-right-right 2`, + % 42 42 + % / \ ==== add 38 ===> / \ + % 29 57 29 57 + % / \ \ / \ \ + % 23 35 61 23 38 61 + % \ / \ + % 40 35 40 + input = + node 42 `T` + (node 29 `L` + (leaf 23 `LL`) + (node 35 `LR` + empty + (leaf 40 `LRR`))) + (node 57 `R` + empty + (leaf 61 `RR`)), + operation = + add 38 `X`, + expected = + node 42 `T` + (node 29 `L` + (leaf 23 `LL`) + (node 38 `X` + (leaf 35 `LR`) + (leaf 40 `LRR`))) + (node 57 `R` + empty + (leaf 61 `RR`)), + |), + (| + title = `rebalance left-right-right 3`, + % 42 42 + % / \ ==== add 38 ===> / \ + % 29 57 *35* 57 + % / \ \ / \ \ + % 23 35 61 *29* *40* 61 + % / \ / \ / + % 32 40 23 *32* (38) + input = + node 42 `T` + (node 29 `L` + (leaf 23 `LL`) + (node 35 `LR` + (leaf 32 `LRL`) + (leaf 40 `LRR`))) + (node 57 `R` + empty + (leaf 61 `RR`)), + operation = + add 38 `X`, + expected = + node 42 `T` + (node 35 `LR` + (node 29 `L` + (leaf 23 `LL`) + (leaf 32 `LRL`)) + (node 40 `LRR` + (leaf 38 `X`) + empty)) + (node 57 `R` + empty + (leaf 61 `RR`)), + |), + (| + title = `rebalance left-right-right 4`, + % 42 *35* + % / \ ==== add 38 ===> / \ + % 29 57 29 *42* + % / \ \ / \ / \ + % 23 35 61 23 *32* *40* 57 + % / / \ / \ \ + % 16 32 40 16 (38) 61 + input = + node 42 `T` + (node 29 `L` + (node 23 `LL` + (leaf 16 `LLL`) + empty) + (node 35 `LR` + (leaf 32 `LRL`) + (leaf 40 `LRR`))) + (node 57 `R` + empty + (leaf 61 `RR`)), + operation = + add 38 `X`, + expected = + node 35 `LR` + (node 29 `L` + (node 23 `LL` + (leaf 16 `LLL`) + empty) + (leaf 32 `LRL`)) + (node 42 `T` + (node 40 `LRR` + (leaf 38 `X`) + empty) + (node 57 `R` + empty + (leaf 61 `RR`))), + |), + ] + + end + +end diff --git a/lib-satysfi/packages/stdlib/stdlib.0.0.1/src/option.satyg b/lib-satysfi/packages/stdlib/stdlib.0.0.1/src/option.satyg index 4e38d0e7a..3a38924a4 100644 --- a/lib-satysfi/packages/stdlib/stdlib.0.0.1/src/option.satyg +++ b/lib-satysfi/packages/stdlib/stdlib.0.0.1/src/option.satyg @@ -1,22 +1,48 @@ +use open Basic module Option :> sig + type t 'a = option 'a + val ~lift 'a : ('a -> code 'a) -> option 'a -> code (option 'a) + val persistent ~compare 'a : ('a -> 'a -> ordering) -> option 'a -> option 'a -> ordering + val persistent ~equal 'a : ('a -> 'a -> bool) -> option 'a -> option 'a -> bool val persistent ~map 'a 'b : ('a -> 'b) -> option 'a -> option 'b - val persistent ~from 'a : 'a -> option 'a -> 'a + val persistent ~pure 'a : 'a -> option 'a val persistent ~bind 'a 'b : option 'a -> ('a -> option 'b) -> option 'b + val persistent ~from 'a : 'a -> option 'a -> 'a val persistent ~is-none 'a : option 'a -> bool end = struct + type t 'a = option 'a + + val ~lift lf opt = + match opt with + | None -> &(None) + | Some(v) -> &(Some(~(lf v))) + end + + val persistent ~compare comp opt1 opt2 = + match (opt1, opt2) with + | (None, None) -> Equal + | (None, Some(_)) -> Less + | (Some(_), None) -> Greater + | (Some(v1), Some(v2)) -> comp v1 v2 + end + + val persistent ~equal eq opt1 opt2 = + match (opt1, opt2) with + | (None, None) -> true + | (Some(v1), Some(v2)) -> eq v1 v2 + | _ -> false + end + val persistent ~map f opt = match opt with | None -> None | Some(v) -> Some(f v) end - val persistent ~from a opt = - match opt with - | None -> a - | Some(a) -> a - end + val persistent ~pure v = + Some(v) val persistent ~bind opt f = match opt with @@ -24,6 +50,12 @@ end = struct | Some(v) -> f v end + val persistent ~from a opt = + match opt with + | None -> a + | Some(v) -> v + end + val persistent ~is-none opt = match opt with | None -> true diff --git a/lib-satysfi/packages/stdlib/stdlib.0.0.1/src/ordering.satyg b/lib-satysfi/packages/stdlib/stdlib.0.0.1/src/ordering.satyg new file mode 100644 index 000000000..524ee6296 --- /dev/null +++ b/lib-satysfi/packages/stdlib/stdlib.0.0.1/src/ordering.satyg @@ -0,0 +1,44 @@ +use open Basic + +module Ordering :> sig + type t = ordering + val ~lift : ordering -> code ordering + val persistent ~compare : ordering -> ordering -> ordering + val persistent ~equal : ordering -> ordering -> bool + val persistent ~show : ordering -> string +end = struct + + type t = ordering + + val ~lift o = + match o with + | Less -> &(Less) + | Equal -> &(Equal) + | Greater -> &(Greater) + end + + val persistent ~compare o1 o2 = + match (o1, o2) with + | (Less, Less) -> Equal + | (Less, _) -> Less + | (_, Less) -> Greater + | (Equal, Equal) -> Equal + | (Equal, Greater) -> Less + | (Greater, Equal) -> Greater + | (Greater, Greater) -> Equal + end + + val persistent ~equal o1 o2 = + match compare o1 o2 with + | Equal -> true + | _ -> false + end + + val persistent ~show o = + match o with + | Less -> `Less` + | Equal -> `Equal` + | Greater -> `Greater` + end + +end diff --git a/lib-satysfi/packages/stdlib/stdlib.0.0.1/src/pair.satyg b/lib-satysfi/packages/stdlib/stdlib.0.0.1/src/pair.satyg new file mode 100644 index 000000000..c4a07d920 --- /dev/null +++ b/lib-satysfi/packages/stdlib/stdlib.0.0.1/src/pair.satyg @@ -0,0 +1,41 @@ +use open Basic + +module Pair :> sig + val ~lift 'a 'b : ('a -> code 'a) -> ('b -> code 'b) -> 'a * 'b -> code ('a * 'b) + val persistent ~compare 'a 'b : ('a -> 'a -> ordering) -> ('b -> 'b -> ordering) -> 'a * 'b -> 'a * 'b -> ordering + val persistent ~equal 'a 'b : ('a -> 'a -> bool) -> ('b -> 'b -> bool) -> 'a * 'b -> 'a * 'b -> bool + val persistent ~show 'a 'b : ('a -> string) -> ('b -> string) -> 'a * 'b -> string + val persistent ~first 'a 'b : 'a * 'b -> 'a + val persistent ~second 'a 'b : 'a * 'b -> 'b + val persistent ~map-first 'a1 'a2 'b : ('a1 -> 'a2) -> 'a1 * 'b -> 'a2 * 'b + val persistent ~map-second 'a 'b1 'b2 : ('b1 -> 'b2) -> 'a * 'b1 -> 'a * 'b2 +end = struct + + val ~lift lf-x lf-y (x, y) = + &(~(lf-x x), ~(lf-y y)) + + val persistent ~compare comp-x comp-y (x1, y1) (x2, y2) = + match comp-x x1 x2 with + | Equal -> comp-y y1 y2 + | other -> other + end + + val persistent ~equal eq-x eq-y (x1, y1) (x2, y2) = + eq-x x1 x2 && eq-y y1 y2 + + val persistent ~show sh-x sh-y (x, y) = + `(` ^ sh-x x ^ `, `# ^ sh-y y ^ `)` + + val persistent ~first (x, _) = + x + + val persistent ~second (_, y) = + y + + val persistent ~map-first f (x, y) = + (f x, y) + + val persistent ~map-second f (x, y) = + (x, f y) + +end diff --git a/lib-satysfi/packages/stdlib/stdlib.0.0.1/src/path.satyh b/lib-satysfi/packages/stdlib/stdlib.0.0.1/src/path.satyh new file mode 100644 index 000000000..2dc30c5f0 --- /dev/null +++ b/lib-satysfi/packages/stdlib/stdlib.0.0.1/src/path.satyh @@ -0,0 +1,141 @@ +use open Basic +use Length +use List +use Float + +module Path :> sig + val rectangle : point -> point -> path + val rectangle-round : length -> point -> point -> path + val rectangle-round-left : length -> point -> point -> path + val rectangle-round-left-lower : length -> point -> point -> path + val rectangle-round-left-upper : length -> point -> point -> path + val rectangle-round-right : length -> point -> point -> path + val poly-line : point -> list point -> path + val polygon : point -> list point -> path + val line : point -> point -> path + val circle : point -> length -> path + val linear-transform : float -> float -> float -> float -> path -> path + val shift : length * length -> path -> path + val rotate : point -> float -> path -> path + val scale : point -> float -> float -> path -> path + val get-bounding-box : path -> point * point +end = struct + + val rectangle (x1, y1) (x2, y2) = + start-path (x1, y1) + |> line-to (x1, y2) + |> line-to (x2, y2) + |> line-to (x2, y1) + |> close-with-line + + val rectangle-round r (xA, yA) (xB, yB) = + let t = r *' 0.4 in + let x1 = Length.min xA xB in + let x2 = Length.max xA xB in + let y1 = Length.min yA yB in + let y2 = Length.max yA yB in + start-path (x1, y1 +' r) + |> bezier-to (x1, y1 +' t) (x1 +' t, y1) (x1 +' r, y1) + |> line-to (x2 -' r, y1) + |> bezier-to (x2 -' t, y1) (x2, y1 +' t) (x2, y1 +' r) + |> line-to (x2, y2 -' r) + |> bezier-to (x2, y2 -' t) (x2 -' t, y2) (x2 -' r, y2) + |> line-to (x1 +' r, y2) + |> bezier-to (x1 +' t, y2) (x1, y2 -' t) (x1, y2 -' r) + |> close-with-line + + val rectangle-round-left r (xA, yA) (xB, yB) = + let t = r *' 0.4 in + let x1 = Length.min xA xB in + let x2 = Length.max xA xB in + let y1 = Length.min yA yB in + let y2 = Length.max yA yB in + start-path (x1, y1 +' r) + |> bezier-to (x1, y1 +' t) (x1 +' t, y1) (x1 +' r, y1) + |> line-to (x2, y1) + |> line-to (x2, y2) + |> line-to (x1 +' r, y2) + |> bezier-to (x1 +' t, y2) (x1, y2 -' t) (x1, y2 -' r) + |> close-with-line + + val rectangle-round-left-lower r (xA, yA) (xB, yB) = + let t = r *' 0.4 in + let x1 = Length.min xA xB in + let x2 = Length.max xA xB in + let y1 = Length.min yA yB in + let y2 = Length.max yA yB in + start-path (x1, y1 +' r) + |> bezier-to (x1, y1 +' t) (x1 +' t, y1) (x1 +' r, y1) + |> line-to (x2, y1) + |> line-to (x2, y2) + |> line-to (x1, y2) + |> close-with-line + + val rectangle-round-left-upper r (xA, yA) (xB, yB) = + let t = r *' 0.4 in + let x1 = Length.min xA xB in + let x2 = Length.max xA xB in + let y1 = Length.min yA yB in + let y2 = Length.max yA yB in + start-path (x1, y1) + |> line-to (x2, y1) + |> line-to (x2, y2) + |> line-to (x1 +' r, y2) + |> bezier-to (x1 +' t, y2) (x1, y2 -' t) (x1, y1 -' t) + |> close-with-line + + val rectangle-round-right r (xA, yA) (xB, yB) = + let t = r *' 0.4 in + let x1 = Length.min xA xB in + let x2 = Length.max xA xB in + let y1 = Length.min yA yB in + let y2 = Length.max yA yB in + start-path (x1, y1) + |> line-to (x2 -' r, y1) + |> bezier-to (x2 -' t, y1) (x2, y1 +' t) (x2, y1 +' r) + |> line-to (x2, y2 -' r) + |> bezier-to (x2, y2 -' t) (x2 -' t, y2) (x2 -' r, y2) + |> line-to (x1, y2) + |> close-with-line + + val poly-line pt-init pts = + pts |> List.fold (fun acc pt -> + acc |> line-to pt + ) (start-path pt-init) |> terminate-path + + val polygon pt-init pts = + pts |> List.fold (fun acc pt -> + acc |> line-to pt + ) (start-path pt-init) |> close-with-line + + val line pt1 pt2 = + start-path pt1 |> line-to pt2 |> terminate-path + + val circle (cx, cy) r = + let t = r *' 0.55228 in + start-path (cx -' r, cy) + |> bezier-to (cx -' r, cy +' t) (cx -' t, cy +' r) (cx, cy +' r) + |> bezier-to (cx +' t, cy +' r) (cx +' r, cy +' t) (cx +' r, cy) + |> bezier-to (cx +' r, cy -' t) (cx +' t, cy -' r) (cx, cy -' r) + |> close-with-bezier (cx -' t, cy -' r) (cx -' r, cy -' t) + + val linear-transform = linear-transform-path %PRIMITIVE + + val shift = shift-path %PRIMITIVE + + val rotate centpt angle path = + let (centx, centy) = centpt in + let rad = angle *. Float.pi /. 180. in + path |> shift (0pt -' centx, 0pt -' centy) + |> linear-transform (cos rad) (0. -. (sin rad)) (sin rad) (cos rad) + |> shift centpt + + val scale centpt scalex scaley path = + let (centx, centy) = centpt in + path |> shift (0pt -' centx, 0pt -' centy) + |> linear-transform scalex 0. 0. scaley + |> shift centpt + + val get-bounding-box = get-path-bbox %PRIMITIVE + +end diff --git a/lib-satysfi/packages/stdlib/stdlib.0.0.1/src/pervasives.satyh b/lib-satysfi/packages/stdlib/stdlib.0.0.1/src/pervasives.satyh deleted file mode 100644 index f50c994d4..000000000 --- a/lib-satysfi/packages/stdlib/stdlib.0.0.1/src/pervasives.satyh +++ /dev/null @@ -1,107 +0,0 @@ -module Pervasives = struct - - type point = length * length - - type paren = length -> length -> context -> inline-boxes * (length -> length) - - - val get-natural-width ib = - let (wid, _, _) = get-natural-metrics ib in - wid - - - val form-paragraph = line-break true true - - - val kern len = inline-skip (0pt -' len) - - - val inline ctx \hskip len = - inline-skip len - - - val no-break ib = - inline-frame-outer (0pt, 0pt, 0pt, 0pt) (fun _ _ _ _ -> unite-graphics []) ib - - - val inline ctx \no-break inner = - no-break (read-inline ctx inner) - - - val inline ctx \SATySFi = - let size = get-font-size ctx in - let f = read-inline ctx in - let fd = ctx |> set-manual-rising (0pt -' (size *' 0.25)) |> read-inline in - let ib = - f {SAT} ++ kern (size *' 0.15) ++ fd {Y} ++ f {SF} ++ kern (size *' 0.05) ++ fd {I} - in - script-guard Latin (no-break ib) - - - val inline ctx \LaTeX = - let size = get-font-size ctx in - let f = read-inline ctx in - let fA = ctx |> set-font-size (size *' 0.7) - |> set-manual-rising (size *' 0.2) - |> read-inline - in - let fE = ctx |> set-manual-rising (0pt -' (size *' 0.25)) - |> read-inline - in - let ib = - f {L} ++ kern (size *' 0.2) ++ fA {A} - ++ f {T} ++ kern (size *' 0.125) ++ fE {E} ++ f {X} - in - script-guard Latin (no-break ib) - - - val inline ctx \TeX = - let size = get-font-size ctx in - let f = read-inline ctx in - let fE = ctx |> set-manual-rising (0pt -' (size *' 0.25)) - |> read-inline - in - let ib = - f {T} ++ kern (size *' 0.125) ++ fE {E} ++ f {X} - in - script-guard Latin (no-break ib) - - - val length-max len1 len2 = - if len1 <' len2 then len2 else len1 - - - val length-min len1 len2 = - if len1 <' len2 then len1 else len2 - - - val length-abs len = - if len <' 0pt then 0pt -' len else len - - - val inline ctx \fil = - discretionary 0 inline-nil inline-fil inline-nil - - - val inline ctx \fil-both = - discretionary 0 inline-nil inline-fil inline-fil - - - val mandatory-break ctx = - discretionary 0 (inline-skip (get-text-width ctx *' 2.)) inline-fil inline-nil - - - val destruct-option default opt = - match opt with - | None -> default - | Some(v) -> v - end - - - val math-pi = 3.1415926536 - - - val increment r = - r <- !r + 1 - -end diff --git a/lib-satysfi/packages/stdlib/stdlib.0.0.1/src/point.satyh b/lib-satysfi/packages/stdlib/stdlib.0.0.1/src/point.satyh new file mode 100644 index 000000000..69076565f --- /dev/null +++ b/lib-satysfi/packages/stdlib/stdlib.0.0.1/src/point.satyh @@ -0,0 +1,41 @@ +use open Basic +use Float +use Length +use Pair +use Vector + +module Point :> sig + type t = point + val ~lift : point -> code point + val persistent ~get-x : point -> length + val persistent ~get-y : point -> length + val persistent ~add : point -> vector -> point + val persistent ~subtract : point -> point -> vector + val persistent ~atan2 : point -> point -> float + val persistent ~dividing-point : float -> point -> point -> point +end = struct + + type t = point + + val ~lift = + Vector.lift + + val persistent ~get-x = + Vector.get-x + + val persistent ~get-y = + Vector.get-y + + val persistent ~add = + Vector.add + + val persistent ~subtract = + Vector.subtract + + val persistent ~atan2 (x1, y1) (x2, y2) = + Length.atan2 (y2 -' y1) (x2 -' x1) + + val persistent ~dividing-point t pt1 pt2 = + Vector.add (Vector.scale (1. -. t) pt1) (Vector.scale t pt2) + +end diff --git a/lib-satysfi/packages/stdlib/stdlib.0.0.1/src/ref.satyg b/lib-satysfi/packages/stdlib/stdlib.0.0.1/src/ref.satyg new file mode 100644 index 000000000..638d4f587 --- /dev/null +++ b/lib-satysfi/packages/stdlib/stdlib.0.0.1/src/ref.satyg @@ -0,0 +1,12 @@ +module Ref :> sig + val persistent ~increment : ref int -> unit + val persistent ~decrement : ref int -> unit +end = struct + + val persistent ~increment r = + r <- !r + 1 + + val persistent ~decrement r = + r <- !r - 1 + +end diff --git a/lib-satysfi/packages/stdlib/stdlib.0.0.1/src/set.satyg b/lib-satysfi/packages/stdlib/stdlib.0.0.1/src/set.satyg new file mode 100644 index 000000000..0df804e5f --- /dev/null +++ b/lib-satysfi/packages/stdlib/stdlib.0.0.1/src/set.satyg @@ -0,0 +1,59 @@ +use open Basic +use List +use Map + +module Set :> sig + module Make : (Elem : Ord) -> sig + type t :: o + val empty : t + val add : Elem.t -> t -> t + val remove : Elem.t -> t -> t + val is-member : Elem.t -> t -> bool + val fold 'a : ('a -> Elem.t -> 'a) -> 'a -> t -> 'a + val fold-back 'a : ('a -> Elem.t -> 'a) -> 'a -> t -> 'a + val to-list : t -> list Elem.t + val to-list-reversed : t -> list Elem.t + val from-list : list Elem.t -> t + end +end = struct + + module Make = fun(Elem : Ord) -> struct + + module Impl = Map.Make Elem + + type t = Impl.t unit + + val empty = + Impl.empty + + val add e = + Impl.add e () + + val remove e = + Impl.remove e + + val is-member e s = + match Impl.find e s with + | None -> false + | Some(_) -> true + end + + val fold f acc s = + Impl.fold (fun acc e () -> f acc e) acc s + + val fold-back f acc s = + Impl.fold-back (fun acc e () -> f acc e) acc s + + val to-list s = + Impl.fold-back (fun acc e () -> e :: acc) [] s + + val to-list-reversed s = + Impl.fold (fun acc e () -> e :: acc) [] s + + % TODO: more efficient implementation + val from-list es = + Impl.from-list (List.map (fun e -> (e, ())) es) + + end + +end diff --git a/lib-satysfi/packages/stdlib/stdlib.0.0.1/src/stdlib.satyh b/lib-satysfi/packages/stdlib/stdlib.0.0.1/src/stdlib.satyh index 03d2e842b..b8cbc2917 100644 --- a/lib-satysfi/packages/stdlib/stdlib.0.0.1/src/stdlib.satyh +++ b/lib-satysfi/packages/stdlib/stdlib.0.0.1/src/stdlib.satyh @@ -1,68 +1,280 @@ +use Basic +use Int +use Float +use String +use Ordering use Option use List -use Pervasives -use Geom +use Pair +use Map +use Set +use Length +use Vector +use Point +use Logo +use Inline +use Block +use Context +use Ref use Color -use Gr +use Path +use Graphics use PaperSize use Deco use HDecoSet use VDecoSet +use CrossRef module Stdlib :> sig + % Basic + type ordering = Less | Equal | Greater + type vector = length * length + type point = length * length + type paren = length -> length -> context -> inline-boxes * (length -> length) + type paddings = length * length * length * length + signature Ord = sig + type t :: o + val compare : t -> t -> ordering + end + module Int : sig + type t = int + val ~lift : int -> code int + val persistent ~compare : int -> int -> ordering + val persistent ~equal : int -> int -> bool + val persistent ~abs : int -> int + val persistent ~max : int -> int -> int + val persistent ~min : int -> int -> int + end + module Float : sig + type t = float + val ~lift : float -> code float + val persistent ~abs : float -> float + val persistent ~max : float -> float -> float + val persistent ~min : float -> float -> float + val persistent ~pi : float + end + module String : sig + type t = string + val ~lift : string -> code string + val persistent ~compare : string -> string -> ordering + val persistent ~equal : string -> string -> bool + val persistent ~append : string -> string -> string + val persistent ~length : string -> int + val persistent ~byte-length : string -> int + val persistent ~sub : string -> int -> int -> string + val persistent ~sub-bytes : string -> int -> int -> string + val persistent ~to-scalar-values : string -> list int + val persistent ~from-scalar-values : list int -> string + val persistent ~normalize-to-nfc : string -> string + val persistent ~normalize-to-nfd : string -> string + val persistent ~split-into-grapheme-clusters : string -> list string + val persistent ~empty : string + val persistent ~split-into-lines : string -> list (int * string) + val persistent ~concat : string -> list string -> string + val persistent ~chop-prefix : string -> string -> option string + val persistent ~chop-suffix : string -> string -> option string + end + module Ordering : sig + type t = ordering + val ~lift : ordering -> code ordering + val persistent ~compare : ordering -> ordering -> ordering + val persistent ~equal : ordering -> ordering -> bool + val persistent ~show : ordering -> string + end module Option : sig + type t 'a = option 'a + val ~lift 'a : ('a -> code 'a) -> option 'a -> code (option 'a) + val persistent ~compare 'a : ('a -> 'a -> ordering) -> option 'a -> option 'a -> ordering + val persistent ~equal 'a : ('a -> 'a -> bool) -> option 'a -> option 'a -> bool val persistent ~map 'a 'b : ('a -> 'b) -> option 'a -> option 'b - val persistent ~from 'a : 'a -> option 'a -> 'a + val persistent ~pure 'a : 'a -> option 'a val persistent ~bind 'a 'b : option 'a -> ('a -> option 'b) -> option 'b + val persistent ~from 'a : 'a -> option 'a -> 'a val persistent ~is-none 'a : option 'a -> bool end module List : sig - val persistent ~map 'a 'b : ('a -> 'b) -> list 'a -> list 'b - val persistent ~mapi 'a 'b : (int -> 'a -> 'b) -> list 'a -> list 'b - val persistent ~iter 'a : ('a -> unit) -> list 'a -> unit - val persistent ~iteri 'a : (int -> 'a -> unit) -> list 'a -> unit - val persistent ~fold-left 'a 'b : ('a -> 'b -> 'a) -> 'a -> list 'b -> 'a - val persistent ~fold-lefti 'a 'b : (int -> 'a -> 'b -> 'a) -> 'a -> list 'b -> 'a - val persistent ~fold-right 'a 'b : ('a -> 'b -> 'b) -> 'b -> list 'a -> 'b - val persistent ~filter 'a : ('a -> bool) -> list 'a -> list 'a - val persistent ~assoc 'a 'b : ('a -> 'a -> bool) -> 'a -> list ('a * 'b) -> option 'b + type t 'a = list 'a + val ~lift 'a : ('a -> code 'a) -> list 'a -> code (list 'a) + val persistent ~compare 'a : ('a -> 'a -> ordering) -> list 'a -> list 'a -> ordering + val persistent ~equal 'a : ('a -> 'a -> bool) -> list 'a -> list 'a -> bool + val persistent ~show 'a : ('a -> string) -> list 'a -> string + val persistent ~fold 'a 'b : ('a -> 'b -> 'a) -> 'a -> list 'b -> 'a + val persistent ~fold-indexed 'a 'b : ('a -> int -> 'b -> 'a) -> 'a -> list 'b -> 'a + val persistent ~fold-back 'a 'b : ('a -> 'b -> 'b) -> list 'a -> 'b -> 'b + val persistent ~fold-adjacent 'a 'b : ('a -> 'b -> option 'b -> option 'b -> 'a) -> 'a -> list 'b -> 'a + val persistent ~fold-indexed-adjacent 'a 'b : ('a -> int -> 'b -> option 'b -> option 'b -> 'a) -> 'a -> list 'b -> 'a val persistent ~reverse 'a : list 'a -> list 'a + val persistent ~map 'a 'b : ('a -> 'b) -> list 'a -> list 'b + val persistent ~map-indexed 'a 'b : (int -> 'a -> 'b) -> list 'a -> list 'b + val persistent ~map-with-ends 'a 'b : (bool -> bool -> 'a -> 'b) -> list 'a -> list 'b + val persistent ~map-adjacent 'a 'b : ('a -> option 'a -> option 'a -> 'b) -> list 'a -> list 'b + val persistent ~map-indexed-adjacent 'a 'b : (int -> 'a -> option 'a -> option 'a -> 'b) -> list 'a -> list 'b val persistent ~append 'a : list 'a -> list 'a -> list 'a val persistent ~concat 'a : list (list 'a) -> list 'a - val persistent ~fold-left-adjacent 'a 'b : ('a -> 'b -> option 'b -> option 'b -> 'a) -> 'a -> list 'b -> 'a - val persistent ~map-adjacent 'a 'b : ('a -> option 'a -> option 'a -> 'b) -> list 'a -> list 'b - val persistent ~mapi-adjacent 'a 'b : (int -> 'a -> option 'a -> option 'a -> 'b) -> list 'a -> list 'b + val persistent ~pure 'a : 'a -> list 'a + val persistent ~bind 'a 'b : list 'a -> ('a -> list 'b) -> list 'b + val persistent ~iter 'a : ('a -> unit) -> list 'a -> unit + val persistent ~iter-indexed 'a : (int -> 'a -> unit) -> list 'a -> unit + val persistent ~filter 'a : ('a -> bool) -> list 'a -> list 'a + val persistent ~filter-map 'a 'b : ('a -> option 'b) -> list 'a -> list 'b + val persistent ~find 'a : ('a -> bool) -> list 'a -> option 'a + val persistent ~find-map 'a 'b : ('a -> option 'b) -> list 'a -> option 'b val persistent ~length 'a : list 'a -> int val persistent ~nth 'a : int -> list 'a -> option 'a val persistent ~is-empty 'a : list 'a -> bool - val persistent ~map-with-ends 'a 'b : (bool -> bool -> 'a -> 'b) -> list 'a -> list 'b + val persistent ~zip-exact 'a 'b : list 'a -> list 'b -> option (list ('a * 'b)) + val persistent ~zip-shorter 'a 'b : list 'a -> list 'b -> list ('a * 'b) end - module Pervasives : sig - type point = length * length - type paren = length -> length -> context -> inline-boxes * (length -> length) - val get-natural-width : inline-boxes -> length - val form-paragraph : context -> inline-boxes -> block-boxes - val kern : length -> inline-boxes - val \hskip : inline [length] - val no-break : inline-boxes -> inline-boxes - val \no-break : inline [inline-text] + module Pair : sig + val ~lift 'a 'b : ('a -> code 'a) -> ('b -> code 'b) -> 'a * 'b -> code ('a * 'b) + val persistent ~compare 'a 'b : ('a -> 'a -> ordering) -> ('b -> 'b -> ordering) -> 'a * 'b -> 'a * 'b -> ordering + val persistent ~equal 'a 'b : ('a -> 'a -> bool) -> ('b -> 'b -> bool) -> 'a * 'b -> 'a * 'b -> bool + val persistent ~show 'a 'b : ('a -> string) -> ('b -> string) -> 'a * 'b -> string + val persistent ~first 'a 'b : 'a * 'b -> 'a + val persistent ~second 'a 'b : 'a * 'b -> 'b + val persistent ~map-first 'a1 'a2 'b : ('a1 -> 'a2) -> 'a1 * 'b -> 'a2 * 'b + val persistent ~map-second 'a 'b1 'b2 : ('b1 -> 'b2) -> 'a * 'b1 -> 'a * 'b2 + end + module Map : sig + module Make : (Key : Ord) -> sig + type t :: o -> o + val empty 'v : t 'v + val singleton 'v : Key.t -> 'v -> t 'v + val add 'v : Key.t -> 'v -> t 'v -> t 'v + val remove 'v : Key.t -> t 'v -> t 'v + val find 'v : Key.t -> t 'v -> option 'v + val map 'u 'v : ('u -> 'v) -> t 'u -> t 'v + val map-with-key 'u 'v : (Key.t -> 'u -> 'v) -> t 'u -> t 'v + val fold 'a 'v : ('a -> Key.t -> 'v -> 'a) -> 'a -> t 'v -> 'a + val fold-back 'a 'v : ('a -> Key.t -> 'v -> 'a) -> 'a -> t 'v -> 'a + val to-list 'v : t 'v -> list (Key.t * 'v) + val to-list-reversed 'v : t 'v -> list (Key.t * 'v) + val from-list 'v : list (Key.t * 'v) -> t 'v + end + end + module Set : sig + module Make : (Elem : Ord) -> sig + type t :: o + val empty : t + val add : Elem.t -> t -> t + val remove : Elem.t -> t -> t + val is-member : Elem.t -> t -> bool + val fold 'a : ('a -> Elem.t -> 'a) -> 'a -> t -> 'a + val fold-back 'a : ('a -> Elem.t -> 'a) -> 'a -> t -> 'a + val to-list : t -> list Elem.t + val to-list-reversed : t -> list Elem.t + val from-list : list Elem.t -> t + end + end + module Length : sig + type t = length + val ~lift : length -> code length + val persistent ~max : length -> length -> length + val persistent ~min : length -> length -> length + val persistent ~abs : length -> length + val persistent ~atan2 : length -> length -> float + end + module Vector : sig + type t = vector + val ~lift : vector -> code vector + val persistent ~get-x : vector -> length + val persistent ~get-y : vector -> length + val persistent ~scale : float -> vector -> vector + val persistent ~add : vector -> vector -> vector + val persistent ~subtract : vector -> vector -> vector + val persistent ~length : vector -> length + end + module Point : sig + type t = point + val ~lift : point -> code point + val persistent ~get-x : point -> length + val persistent ~get-y : point -> length + val persistent ~add : point -> vector -> point + val persistent ~subtract : point -> point -> vector + val persistent ~atan2 : point -> point -> float + val persistent ~dividing-point : float -> point -> point -> point + end + module Logo : sig val \SATySFi : inline [] val \LaTeX : inline [] val \TeX : inline [] - val length-max : length -> length -> length - val length-min : length -> length -> length - val length-abs : length -> length + end + module Inline : sig + val nil : inline-boxes + val concat : list inline-boxes -> inline-boxes + val fil : inline-boxes + val get-natural-metrics : inline-boxes -> length * length * length + val get-natural-advance : inline-boxes -> length + val skip : length -> inline-boxes + val kern : length -> inline-boxes + val glue : length -> length -> length -> inline-boxes + val frame-inner : paddings -> deco -> inline-boxes -> inline-boxes + val frame-outer : paddings -> deco -> inline-boxes -> inline-boxes + val frame-fixed : length -> paddings -> deco -> inline-boxes -> inline-boxes + val frame-breakable : paddings -> deco-set -> inline-boxes -> inline-boxes + val embed-block-breakable : context -> block-boxes -> inline-boxes + val graphics-fixed : length -> length -> length -> (point -> graphics) -> inline-boxes + val graphics-outer : length -> length -> (length -> point -> graphics) -> inline-boxes + val embed-block-top : context -> length -> (context -> block-boxes) -> inline-boxes + val embed-block-bottom : context -> length -> (context -> block-boxes) -> inline-boxes + val line-stack-top : list inline-boxes -> inline-boxes + val line-stack-bottom : list inline-boxes -> inline-boxes + val embed-string : string -> inline-text + val embed-math : context -> math-boxes -> inline-boxes + val no-break : inline-boxes -> inline-boxes + val mandatory-break : context -> inline-boxes + val omit-skip-after : inline-boxes + val \skip : inline [length] + val \no-break : inline [inline-text] val \fil : inline [] val \fil-both : inline [] - val mandatory-break : context -> inline-boxes - val destruct-option 'a : 'a -> option 'a -> 'a - val math-pi : float - val increment : ref int -> unit + val \mandatory-break : inline [] end - module Geom : sig - type point = Pervasives.point %TODO (enhance): remove this - val atan2-point : point -> point -> float - val div-perp : point -> point -> float -> length -> point + module Block : sig + val nil : block-boxes + val concat : list block-boxes -> block-boxes + val clear-page : block-boxes + val skip : length -> block-boxes + val line-break : bool -> bool -> context -> inline-boxes -> block-boxes + val form-paragraph : context -> inline-boxes -> block-boxes + val +skip : block [length] + val +clear-page : block [] + val +ragged-right : block [inline-text] + val +centering : block [inline-text] + val \skip : inline [length] + end + module Context : sig + val initial : length -> inline [math-text] -> context + val set-math-command : inline [math-text] -> context -> context + val set-code-text-command : inline [string] -> context -> context + val set-hyphenation-dictionary : hyphenation -> context -> context + val set-unicode-char-database : unicode-char-database -> context -> context + val set-hyphen-min : int -> int -> context -> context + val set-min-gap-of-lines : length -> context -> context + val set-space-ratio : float -> float -> float -> context -> context + val set-adjacent-stretch-ratio : float -> context -> context + val get-math-axis-height-ratio : context -> float + val set-paragraph-margin : length -> length -> context -> context + val set-min-paragraph-ascender-and-descender : length -> length -> context -> context + val set-font-size : length -> context -> context + val get-font-size : context -> length + val set-text-color : color -> context -> context + val get-text-color : context -> color + val set-leading : length -> context -> context + val get-text-width : context -> length + val set-manual-rising : length -> context -> context + val set-hyphen-penalty : int -> context -> context + val set-math-variant-char : int -> (math-char-class -> int) -> context -> context + val set-math-char : int -> int -> math-class -> context -> context + val set-math-char-class : math-char-class -> context -> context + val get-math-char-class : context -> math-char-class + val set-word-break-penalty : int -> context -> context + val set-every-word-break : inline-boxes -> inline-boxes -> context -> context + val get-every-word-break : context -> inline-boxes * inline-boxes + end + module Ref : sig + val persistent ~increment : ref int -> unit + val persistent ~decrement : ref int -> unit end module Color : sig val gray : float -> color @@ -82,8 +294,7 @@ module Stdlib :> sig val pink : color val purple : color end - module Gr : sig - type point = Pervasives.point %TODO (enhance): erase this + module Path : sig val rectangle : point -> point -> path val rectangle-round : length -> point -> point -> path val rectangle-round-left : length -> point -> point -> path @@ -94,16 +305,24 @@ module Stdlib :> sig val polygon : point -> list point -> path val line : point -> point -> path val circle : point -> length -> path + val linear-transform : float -> float -> float -> float -> path -> path + val shift : length * length -> path -> path + val rotate : point -> float -> path -> path + val scale : point -> float -> float -> path -> path + val get-bounding-box : path -> point * point + end + module Graphics : sig + val overlay : list graphics -> graphics + val shift : length * length -> graphics -> graphics + val linear-transform : float -> float -> float -> float -> graphics -> graphics + val rotate : point -> float -> graphics -> graphics + val scale : point -> float -> float -> graphics -> graphics val empty : graphics val text-centering : point -> inline-boxes -> graphics val text-leftward : point -> inline-boxes -> graphics val text-rightward : point -> inline-boxes -> graphics val arrow : length -> color -> length -> length -> length -> point -> point -> graphics val dashed-arrow : length -> length * length * length -> color -> length -> length -> length -> point -> point -> graphics - val rotate-path : point -> float -> path -> path - val scale-path : point -> float -> float -> path -> path - val rotate-graphics : point -> float -> graphics -> graphics - val scale-graphics : point -> float -> float -> graphics -> graphics end module PaperSize : sig val persistent ~a0 : length * length @@ -137,15 +356,38 @@ module Stdlib :> sig val paper : deco-set val quote-round : length -> length -> color -> deco-set end + module CrossRef : sig + type key = string + type data = string + val register : key -> data -> unit + val get : key -> option data + val probe : key -> option data + end end = struct + include Basic + module Int = Int + module Float = Float + module String = String + module Ordering = Ordering module Option = Option module List = List - module Pervasives = Pervasives - module Geom = Geom + module Pair = Pair + module Map = Map + module Set = Set + module Length = Length + module Vector = Vector + module Point = Point + module Logo = Logo + module Inline = Inline + module Block = Block + module Context = Context + module Ref = Ref module Color = Color - module Gr = Gr + module Path = Path + module Graphics = Graphics module PaperSize = PaperSize module Deco = Deco module HDecoSet = HDecoSet module VDecoSet = VDecoSet + module CrossRef = CrossRef end diff --git a/lib-satysfi/packages/stdlib/stdlib.0.0.1/src/string.satyg b/lib-satysfi/packages/stdlib/stdlib.0.0.1/src/string.satyg new file mode 100644 index 000000000..59d5bfc15 --- /dev/null +++ b/lib-satysfi/packages/stdlib/stdlib.0.0.1/src/string.satyg @@ -0,0 +1,91 @@ +use open Basic +use Int +use Option +use List + +module String :> sig + type t = string + val ~lift : string -> code string + val persistent ~compare : string -> string -> ordering + val persistent ~equal : string -> string -> bool + val persistent ~append : string -> string -> string + val persistent ~length : string -> int + val persistent ~byte-length : string -> int + val persistent ~sub : string -> int -> int -> string + val persistent ~sub-bytes : string -> int -> int -> string + val persistent ~to-scalar-values : string -> list int + val persistent ~from-scalar-values : list int -> string + val persistent ~normalize-to-nfc : string -> string + val persistent ~normalize-to-nfd : string -> string + val persistent ~split-into-grapheme-clusters : string -> list string + val persistent ~empty : string + val persistent ~split-into-lines : string -> list (int * string) + val persistent ~concat : string -> list string -> string + val persistent ~chop-prefix : string -> string -> option string + val persistent ~chop-suffix : string -> string -> option string +end = struct + + type t = string + + val ~lift = lift-string %PRIMITIVE + + val persistent ~equal = string-same %PRIMITIVE + + val persistent ~append = ( ^ ) %PRIMITIVE + + val persistent ~length = string-length %PRIMITIVE + + val persistent ~byte-length = string-byte-length %PRIMITIVE + + val persistent ~sub = string-sub %PRIMITIVE + + val persistent ~sub-bytes = string-sub-bytes %PRIMITIVE + + val persistent ~to-scalar-values = string-explode %PRIMITIVE + + val persistent ~from-scalar-values = string-unexplode %PRIMITIVE + + val persistent ~normalize-to-nfc = normalize-string-to-nfc %PRIMITIVE + + val persistent ~normalize-to-nfd = normalize-string-to-nfd %PRIMITIVE + + val persistent ~split-into-grapheme-clusters = split-grapheme-cluster %PRIMITIVE + + val persistent ~compare s1 s2 = + List.compare Int.compare (to-scalar-values s1) (to-scalar-values s2) + + val persistent ~empty = + ` ` + + val persistent ~split-into-lines = split-into-lines %PRIMITIVE + + val persistent ~concat sep elems = + elems |> List.fold-adjacent (fun s elem _ next-opt -> + match next-opt with + | None -> s ^ elem + | Some(_) -> s ^ elem ^ sep + end + ) ` ` + + val persistent ~rec chop-aux chars-prefix chars-target = + match (chars-prefix, chars-target) with + | ([], _) -> + Some(chars-target) + | (prefix-head :: prefix-tail, target-head :: target-tail) -> + if prefix-head == target-head then + chop-aux prefix-tail target-tail + else + None + | (_, []) -> + None + end + + val persistent ~chop-prefix prefix target = + Option.map from-scalar-values (chop-aux (to-scalar-values prefix) (to-scalar-values target)) + + val persistent ~chop-suffix suffix target = + let decompose s = List.reverse (to-scalar-values s) in + let compose chars = from-scalar-values (List.reverse chars) in + Option.map compose (chop-aux (decompose suffix) (decompose target)) + +end diff --git a/lib-satysfi/packages/stdlib/stdlib.0.0.1/src/vdecoset.satyh b/lib-satysfi/packages/stdlib/stdlib.0.0.1/src/vdecoset.satyh index 30611a39b..aca78ebdc 100644 --- a/lib-satysfi/packages/stdlib/stdlib.0.0.1/src/vdecoset.satyh +++ b/lib-satysfi/packages/stdlib/stdlib.0.0.1/src/vdecoset.satyh @@ -1,5 +1,6 @@ use Color -use Gr +use Graphics +use Path module VDecoSet :> sig val empty : deco-set @@ -10,63 +11,60 @@ module VDecoSet :> sig end = struct val empty = - let deco _ _ _ _ = Gr.empty in + let deco _ _ _ _ = Graphics.empty in (deco, deco, deco, deco) - val simple-frame-stroke t scolor = let strokef = stroke t scolor in let decoS (x, y) w h d = - strokef (Gr.rectangle (x, y -' d) (x +' w, y +' h)) + strokef (Path.rectangle (x, y -' d) (x +' w, y +' h)) in let decoH (x, y) w h d = - strokef (Gr.poly-line (x, y -' d) [ (x, y +' h), (x +' w, y +' h), (x +' w, y -' d) ]) + strokef (Path.poly-line (x, y -' d) [ (x, y +' h), (x +' w, y +' h), (x +' w, y -' d) ]) in let decoM (x, y) w h d = unite-graphics [ - strokef (Gr.line (x, y -' d) (x, y +' h)), - strokef (Gr.line (x +' w, y -' d) (x +' w, y +' h)), + strokef (Path.line (x, y -' d) (x, y +' h)), + strokef (Path.line (x +' w, y -' d) (x +' w, y +' h)), ] in let decoT (x, y) w h d = - strokef (Gr.poly-line (x, y +' h) [ (x, y -' d), (x +' w, y -' d), (x +' w, y +' h) ]) + strokef (Path.poly-line (x, y +' h) [ (x, y -' d), (x +' w, y -' d), (x +' w, y +' h) ]) in (decoS, decoH, decoM, decoT) - val simple-frame t scolor fcolor = let strokef = stroke t scolor in let gr-back x y w d h = - fill fcolor (Gr.rectangle (x, y -' d) (x +' w, y +' h)) + fill fcolor (Path.rectangle (x, y -' d) (x +' w, y +' h)) in let decoS (x, y) w h d = unite-graphics [ gr-back x y w d h, - strokef (Gr.rectangle (x, y -' d) (x +' w, y +' h)), + strokef (Path.rectangle (x, y -' d) (x +' w, y +' h)), ] in let decoH (x, y) w h d = unite-graphics [ gr-back x y w d h, - strokef (Gr.poly-line (x, y -' d) [(x, y +' h), (x +' w, y +' h), (x +' w, y -' d),]) + strokef (Path.poly-line (x, y -' d) [(x, y +' h), (x +' w, y +' h), (x +' w, y -' d),]) ] in let decoM (x, y) w h d = unite-graphics [ gr-back x y w d h, - strokef (Gr.line (x, y -' d) (x, y +' h)), - strokef (Gr.line (x +' w, y -' d) (x +' w, y +' h)), + strokef (Path.line (x, y -' d) (x, y +' h)), + strokef (Path.line (x +' w, y -' d) (x +' w, y +' h)), ] in let decoT (x, y) w h d = unite-graphics [ gr-back x y w d h, - strokef (Gr.poly-line (x, y +' h) [(x, y -' d), (x +' w, y -' d), (x +' w, y +' h)]) + strokef (Path.poly-line (x, y +' h) [(x, y -' d), (x +' w, y -' d), (x +' w, y +' h)]) ] in (decoS, decoH, decoM, decoT) - val paper = let xshift = 2pt in let yshift = 1pt in @@ -75,7 +73,7 @@ end = struct let thk = 0.5pt in let shadowL (x, y) w h d = fill shadow-color - (Gr.polygon (x +' w, y +' h) [ + (Path.polygon (x +' w, y +' h) [ (x +' w +' xshift, y +' h -' yshift), (x +' w +' xshift, y -' d -' yshift), (x +' xshift, y -' d -' yshift), @@ -85,7 +83,7 @@ end = struct in let shadowI (x, y) w h d = fill shadow-color - (Gr.polygon (x +' w, y -' d) [ + (Path.polygon (x +' w, y -' d) [ (x +' w +' xshift, y -' d), (x +' w +' xshift, y +' h -' yshift), (x +' w, y +' h), @@ -94,14 +92,14 @@ end = struct let decoS (x, y) w h d = unite-graphics [ shadowL (x, y) w h d, - stroke thk edge-color (Gr.rectangle (x, y -' d) (x +' w, y +' h)), + stroke thk edge-color (Path.rectangle (x, y -' d) (x +' w, y +' h)), ] in let decoH (x, y) w h d = unite-graphics [ shadowI (x, y) w h d, stroke thk edge-color - (Gr.poly-line (x, y -' d) [ + (Path.poly-line (x, y -' d) [ (x, y +' h), (x +' w, y +' h), (x +' w, y -' d), @@ -111,15 +109,15 @@ end = struct let decoM (x, y) w h d = unite-graphics [ shadowI (x, y) w h d, - stroke thk edge-color (Gr.line (x, y -' d) (x, y +' h)), - stroke thk edge-color (Gr.line (x +' w, y -' d) (x +' w, y +' h)), + stroke thk edge-color (Path.line (x, y -' d) (x, y +' h)), + stroke thk edge-color (Path.line (x +' w, y -' d) (x +' w, y +' h)), ] in let decoT (x, y) w h d = unite-graphics [ shadowL (x, y) w h d, stroke thk edge-color - (Gr.poly-line (x, y +' h) [ + (Path.poly-line (x, y +' h) [ (x, y -' d), (x +' w, y -' d), (x +' w, y +' h), @@ -128,19 +126,18 @@ end = struct in (decoS, decoH, decoM, decoT) - val quote-round qw r color = let decoS (x, y) _ h d = - fill color (Gr.rectangle-round-left r (x, y -' d) (x +' qw, y +' h)) + fill color (Path.rectangle-round-left r (x, y -' d) (x +' qw, y +' h)) in let decoH (x, y) _ h d = - fill color (Gr.rectangle-round-left-upper r (x, y -' d) (x +' qw, y +' h)) + fill color (Path.rectangle-round-left-upper r (x, y -' d) (x +' qw, y +' h)) in let decoM (x, y) _ h d = - fill color (Gr.rectangle (x, y -' d) (x +' qw, y +' h)) + fill color (Path.rectangle (x, y -' d) (x +' qw, y +' h)) in let decoT (x, y) _ h d = - fill color (Gr.rectangle-round-left-lower r (x, y -' d) (x +' qw, y +' h)) + fill color (Path.rectangle-round-left-lower r (x, y -' d) (x +' qw, y +' h)) in (decoS, decoH, decoM, decoT) diff --git a/lib-satysfi/packages/stdlib/stdlib.0.0.1/src/vector.satyg b/lib-satysfi/packages/stdlib/stdlib.0.0.1/src/vector.satyg new file mode 100644 index 000000000..88d3f4181 --- /dev/null +++ b/lib-satysfi/packages/stdlib/stdlib.0.0.1/src/vector.satyg @@ -0,0 +1,42 @@ +use open Basic +use Float +use Length +use Pair + +module Vector :> sig + type t = vector + val ~lift : vector -> code vector + val persistent ~get-x : vector -> length + val persistent ~get-y : vector -> length + val persistent ~scale : float -> vector -> vector + val persistent ~add : vector -> vector -> vector + val persistent ~subtract : vector -> vector -> vector + val persistent ~length : vector -> length +end = struct + + type t = vector + + val ~lift = + Pair.lift Length.lift Length.lift + + val persistent ~get-x = + Pair.first + + val persistent ~get-y = + Pair.second + + val persistent ~scale t (x, y) = + (x *' t, y *' t) + + val persistent ~add (x1, y1) (x2, y2) = + (x1 +' x2, y1 +' y2) + + val persistent ~subtract (x1, y1) (x2, y2) = + (x1 -' x2, y1 -' y2) + + val persistent ~length (x, y) = + let sx = x /' 1pt in + let sy = y /' 1pt in + 1pt *' Float.sqrt (sx *. sx +. sy *. sy) + +end diff --git a/lib-satysfi/packages/stdlib/stdlib.0.0.1/test/list-test.satyg b/lib-satysfi/packages/stdlib/stdlib.0.0.1/test/list-test.satyg index 4fbdabb77..670e84115 100644 --- a/lib-satysfi/packages/stdlib/stdlib.0.0.1/test/list-test.satyg +++ b/lib-satysfi/packages/stdlib/stdlib.0.0.1/test/list-test.satyg @@ -1,21 +1,177 @@ +use package open Testing +use open Basic +use Int +use Ordering +use Option use List -use package Testing module ListTest = struct - module IntTarget = struct - type t = int - val equal m n = (m == n) - val show = arabic - end - module TEM = Testing.Equality.Make - module IntEquality = TEM IntTarget + val eq-ordering = + Equality.make (| + equal = Ordering.equal, + show = Ordering.show, + |) #[test] - val fold-left-test = + val iter-test () = + let mutable r <- [3] in + let inputs = [1, 4, 1, 5, 9, 2] in + let () = + List.iter (fun n -> + r <- n :: !r + ) inputs + in + let got = !r in + let expected = [2, 9, 5, 1, 4, 1, 3] in + assert-equal Equality.(list int) expected got + + #[test] + val compare-test () = + List.iter (fun r -> + let got = List.compare Int.compare r#input1 r#input2 in + assert-equal ?(title = r#title) eq-ordering r#expected got + ) [ + (| + title = `prefix is smaller 1`, + input1 = [], + input2 = [1], + expected = Less, + |), + (| + title = `prefix is smaller 2`, + input1 = [1], + input2 = [1, 2], + expected = Less, + |), + (| + title = `prefix is smaller 3`, + input1 = [2], + input2 = [2, 1], + expected = Less, + |), + (| + title = `lexicographic`, + input1 = [4, 2], + input2 = [4, 1, 3], + expected = Greater, + |), + ] + + #[test] + val show-test () = + List.iter (fun r -> + let got = List.show arabic r#input in + assert-equal ?(title = r#title) Equality.string r#expected got + ) [ + (| + title = `empty`, + input = [], + expected = `[]`, + |), + (| + title = `singleton`, + input = [42], + expected = `[42]`, + |), + (| + title = `normal`, + input = [3, 1, 4, 1, 5, 9, 2], + expected = `[3, 1, 4, 1, 5, 9, 2]`, + |), + ] + + #[test] + val fold-test () = + let () = + let input = [3, 1, 4, 1, 5, 9, 2] in + let expected = 25 in + let got = List.fold ( + ) 0 input in + assert-equal ?(title = `sum`) Equality.int expected got + in + let () = + let input = [`foo`, `bar`, `baz`] in + let expected = `quxfoobarbaz` in + let got = List.fold ( ^ ) `qux` input in + assert-equal ?(title = `cat`) Equality.string expected got + in + () + + #[test] + val fold-indexed-test () = + let input = [`foo`, `bar`, `baz`] in + let expected = `0foo1bar2baz` in + let got = List.fold-indexed (fun acc i s -> acc ^ arabic i ^ s) ` ` input in + assert-equal Equality.string expected got + + #[test] + val fold-adjacent-test () = + let input = [`a`, `b`, `c`, `d`] in + let expected = [`cdY`, `bcd`, `abc`, `Xab`] in + let got = + List.fold-adjacent (fun acc s prev next -> + let s-prev = Option.from `X` prev in + let s-next = Option.from `Y` next in + (s-prev ^ s ^ s-next) :: acc + ) [] input + in + assert-equal Equality.(list string) expected got + + #[test] + val fold-indexed-adjacent-test () = + let input = [`a`, `b`, `c`, `d`] in + let expected = [`3cdY`, `2bcd`, `1abc`, `0Xab`] in + let got = + List.fold-indexed-adjacent (fun acc i s prev next -> + let s-prev = Option.from `X` prev in + let s-next = Option.from `Y` next in + (arabic i ^ s-prev ^ s ^ s-next) :: acc + ) [] input + in + assert-equal Equality.(list string) expected got + + #[test] + val reverse-test () = + let input = [3, 1, 4, 1, 5, 9, 2] in + let expected = [2, 9, 5, 1, 4, 1, 3] in + let got = List.reverse input in + assert-equal Equality.(list int) expected got + + #[test] + val map-test () = + let input = [3, 1, 4, 1, 5, 9, 2] in + let expected = [`3`, `1`, `4`, `1`, `5`, `9`, `2`] in + let got = List.map arabic input in + assert-equal Equality.(list string) expected got + + #[test] + val map-adjacent-test () = let input = [3, 1, 4, 1, 5, 9, 2] in - let expected = 24 in - let got = List.fold-left ( + ) 0 input in - IntEquality.assert-equal expected got + let expected = [`X31`, `314`, `141`, `415`, `159`, `592`, `92Y`] in + let got = + List.map-adjacent (fun n prev next -> + let s-prev = Option.from `X` (Option.map arabic prev) in + let s-next = Option.from `Y` (Option.map arabic next) in + s-prev ^ arabic n ^ s-next + ) input + in + assert-equal Equality.(list string) expected got + + #[test] + val append-test () = + let input1 = [3, 1, 4, 1, 5] in + let input2 = [9, 2, 6] in + let expected = [3, 1, 4, 1, 5, 9, 2, 6] in + let got = List.append input1 input2 in + assert-equal Equality.(list int) expected got + + #[test] + val length-test () = + let input = [3, 1, 4, 1, 5, 9, 2] in + let expected = 7 in + let got = List.length input in + assert-equal Equality.int expected got + + % TODO: add more tests end diff --git a/lib-satysfi/packages/stdlib/stdlib.0.0.1/test/string-test.satyg b/lib-satysfi/packages/stdlib/stdlib.0.0.1/test/string-test.satyg new file mode 100644 index 000000000..b3eba3a3e --- /dev/null +++ b/lib-satysfi/packages/stdlib/stdlib.0.0.1/test/string-test.satyg @@ -0,0 +1,34 @@ +use package open Testing +use String +use List + +module StringTest = struct + + #[test] + val chop-prefix-test () = + List.iter (fun r -> + assert-equal ?(title = r#title) Equality.(option string) + r#expected + (String.chop-prefix r#prefix r#data) + ) [ + (| + title = `removes a prefix (1)`, + prefix = `foo`, + data = `foobar`, + expected = Some(`bar`), + |), + (| + title = `removes a prefix (2)`, + prefix = `foo`, + data = `foo`, + expected = Some(` `), + |), + (| + title = `fail`, + prefix = `foo`, + data = `fob`, + expected = None, + |), + ] + +end diff --git a/lib-satysfi/packages/tabular/tabular.0.0.1/package.satysfi-lock-expected b/lib-satysfi/packages/tabular/tabular.0.0.1/package.satysfi-lock-expected deleted file mode 100644 index 22b630ca5..000000000 --- a/lib-satysfi/packages/tabular/tabular.0.0.1/package.satysfi-lock-expected +++ /dev/null @@ -1,10 +0,0 @@ -language: ^0.1.0 -locks: -- name: registered.d9b4b850ab61a7b68961c6315048b351.stdlib.0.0.1 - contents: - type: registered - registry_hash_value: d9b4b850ab61a7b68961c6315048b351 - package_name: stdlib - version: 0.0.1 - dependencies: [] - test_only: false diff --git a/lib-satysfi/packages/tabular/tabular.0.0.1/saphe.lock.yaml.expected b/lib-satysfi/packages/tabular/tabular.0.0.1/saphe.lock.yaml.expected new file mode 100644 index 000000000..5ac1e2cee --- /dev/null +++ b/lib-satysfi/packages/tabular/tabular.0.0.1/saphe.lock.yaml.expected @@ -0,0 +1,13 @@ +saphe: ^0.1.0-alpha.1 +locks: +- name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.stdlib.0.0.1 + dependencies: [] + test_only: false + registered: + registry_hash_value: 6f2b80e9bb7c4e8af2104999fc25dbb3 + package_name: stdlib + version: 0.0.1 +dependencies: +- name: registered.6f2b80e9bb7c4e8af2104999fc25dbb3.stdlib.0.0.1 + used_as: Stdlib +test_dependencies: [] diff --git a/lib-satysfi/packages/tabular/tabular.0.0.1/saphe.yaml b/lib-satysfi/packages/tabular/tabular.0.0.1/saphe.yaml new file mode 100644 index 000000000..d382538fd --- /dev/null +++ b/lib-satysfi/packages/tabular/tabular.0.0.1/saphe.yaml @@ -0,0 +1,21 @@ +saphe: "^0.1.0-alpha.1" +satysfi: "^0.1.0-alpha.1" +name: "tabular" +authors: + - "Takashi Suwa <@gfngfn>" +registries: + - name: "default" + git: + url: "https://github.com/SATySFi/default-registry" + branch: "temp-dev-saphe" +contents: + library: + main_module: "Tabular" + source_directories: + - "./src" +dependencies: + - used_as: "Stdlib" + registered: + name: "stdlib" + registry: "default" + requirement: "^0.0.1" diff --git a/lib-satysfi/packages/tabular/tabular.0.0.1/satysfi-envelope.yaml.expected b/lib-satysfi/packages/tabular/tabular.0.0.1/satysfi-envelope.yaml.expected new file mode 100644 index 000000000..01f6c0ee0 --- /dev/null +++ b/lib-satysfi/packages/tabular/tabular.0.0.1/satysfi-envelope.yaml.expected @@ -0,0 +1,5 @@ +library: + main_module: Tabular + source_directories: + - ./src + test_directories: [] diff --git a/lib-satysfi/packages/tabular/tabular.0.0.1/satysfi.yaml b/lib-satysfi/packages/tabular/tabular.0.0.1/satysfi.yaml deleted file mode 100644 index 81a914723..000000000 --- a/lib-satysfi/packages/tabular/tabular.0.0.1/satysfi.yaml +++ /dev/null @@ -1,21 +0,0 @@ -language: "^0.1.0" -name: "tabular" -authors: - - "Takashi Suwa <@gfngfn>" -registries: - - name: "default" - remote: - type: "git" - url: "https://github.com/SATySFi/default-registry" - branch: "format-1" -contents: - type: "library" - main_module: "Tabular" - source_directories: - - "./src" - dependencies: - - name: "stdlib" - spec: - type: "registered" - registry: "default" - requirement: "^0.0.1" diff --git a/lib-satysfi/packages/testing/testing.0.0.1/package.satysfi-lock-expected b/lib-satysfi/packages/testing/testing.0.0.1/package.satysfi-lock-expected deleted file mode 100644 index cac2e8573..000000000 --- a/lib-satysfi/packages/testing/testing.0.0.1/package.satysfi-lock-expected +++ /dev/null @@ -1,2 +0,0 @@ -language: ^0.1.0 -locks: [] diff --git a/lib-satysfi/packages/testing/testing.0.0.1/saphe.lock.yaml.expected b/lib-satysfi/packages/testing/testing.0.0.1/saphe.lock.yaml.expected new file mode 100644 index 000000000..25b368126 --- /dev/null +++ b/lib-satysfi/packages/testing/testing.0.0.1/saphe.lock.yaml.expected @@ -0,0 +1,4 @@ +saphe: ^0.1.0-alpha.1 +locks: [] +dependencies: [] +test_dependencies: [] diff --git a/lib-satysfi/packages/testing/testing.0.0.1/saphe.yaml b/lib-satysfi/packages/testing/testing.0.0.1/saphe.yaml new file mode 100644 index 000000000..3e6e33584 --- /dev/null +++ b/lib-satysfi/packages/testing/testing.0.0.1/saphe.yaml @@ -0,0 +1,11 @@ +saphe: "^0.1.0-alpha.1" +satysfi: "^0.1.0-alpha.1" +name: "testing" +authors: + - "Takashi Suwa <@gfngfn>" +contents: + library: + main_module: "Testing" + source_directories: + - "./src" + dependencies: [] diff --git a/lib-satysfi/packages/testing/testing.0.0.1/satysfi-envelope.yaml.expected b/lib-satysfi/packages/testing/testing.0.0.1/satysfi-envelope.yaml.expected new file mode 100644 index 000000000..a01fe3965 --- /dev/null +++ b/lib-satysfi/packages/testing/testing.0.0.1/satysfi-envelope.yaml.expected @@ -0,0 +1,5 @@ +library: + main_module: Testing + source_directories: + - ./src + test_directories: [] diff --git a/lib-satysfi/packages/testing/testing.0.0.1/satysfi.yaml b/lib-satysfi/packages/testing/testing.0.0.1/satysfi.yaml deleted file mode 100644 index 3632920cc..000000000 --- a/lib-satysfi/packages/testing/testing.0.0.1/satysfi.yaml +++ /dev/null @@ -1,10 +0,0 @@ -language: "^0.1.0" -name: "testing" -authors: - - "Takashi Suwa <@gfngfn>" -contents: - type: "library" - main_module: "Testing" - source_directories: - - "./src" - dependencies: [] diff --git a/lib-satysfi/packages/testing/testing.0.0.1/src/testing.satyg b/lib-satysfi/packages/testing/testing.0.0.1/src/testing.satyg index 81940ecc4..a43105132 100644 --- a/lib-satysfi/packages/testing/testing.0.0.1/src/testing.satyg +++ b/lib-satysfi/packages/testing/testing.0.0.1/src/testing.satyg @@ -1,25 +1,127 @@ -module Testing = struct +module Testing :> sig + module Equality : sig + type t :: o -> o + val make 'a : (| + equal : 'a -> 'a -> bool, + show : 'a -> string, + |) -> t 'a + val get 'a : t 'a -> (| + equal : 'a -> 'a -> bool, + show : 'a -> string, + |) + val from-show 'a : ('a -> string) -> t 'a + val bool : t bool + val int : t int + val string : t string + val option 'a : t 'a -> t (option 'a) + val list 'a : t 'a -> t (list 'a) + val pair 'a 'b : t 'a -> t 'b -> t ('a * 'b) + end + val assert 'a : ?(title : string) bool -> unit + val assert-equal 'a : ?(title : string) Equality.t 'a -> 'a -> 'a -> unit +end = struct module Equality = struct - signature TargetType = sig - type t :: o - val equal : t -> t -> bool - val show : t -> string - end + type t 'a = (| + equal : 'a -> 'a -> bool, + show : 'a -> string, + |) - module Make = fun(Target : TargetType) -> struct + val make r = r - val assert-equal (x1 : Target.t) (x2 : Target.t) = - if Target.equal x1 x2 then - () - else - let s1 = Target.show x1 in - let s2 = Target.show x2 in - abort-with-message (`expected: `# ^ s1 ^ `, got: `# ^ s2) + val get r = r - end + val from-show show = + let equal x1 x2 = string-same (show x1) (show x2) in + (| equal = equal, show = show |) + + val bool = + let equal b1 b2 = + match (b1, b2) with + | (true, true) -> true + | (false, false) -> true + | _ -> false + end + in + let show b = if b then `true` else `false` in + make (| equal = equal, show = show |) + + val int = + make (| equal = (==), show = arabic |) + + val string = + make (| equal = string-same, show = (fun s -> s) |) + + val option elem = + let elem-equal = elem#equal in + let elem-show = elem#show in + % Re-implements `Option.equal` + % because `Testing` cannot depend on `Stdlib` owing to the converse dependency. + let equal opt1 opt2 = + match (opt1, opt2) with + | (None, None) -> true + | (Some(x1), Some(x2)) -> elem-equal x1 x2 + | _ -> false + end + in + let show opt = + match opt with + | None -> `None` + | Some(x) -> `Some(` ^ elem-show x ^ `)` + end + in + (| equal = equal, show = show |) + + val list elem = + let elem-equal = elem#equal in + let elem-show = elem#show in + % Re-implements `List.equal` and `List.show` + % because `Testing` cannot depend on `Stdlib` owing to the converse dependency. + let rec equal xs1 xs2 = + match (xs1, xs2) with + | ([], []) -> true + | (x1 :: ys1, x2 :: ys2) -> if elem-equal x1 x2 then equal ys1 ys2 else false + | _ -> false + end + in + let rec show-aux xs = + match xs with + | [] -> ` ` + | [x] -> elem-show x + | x :: ys -> elem-show x ^ `, `# ^ show-aux ys + end + in + let show xs = `[` ^ show-aux xs ^ `]` in + (| equal = equal, show = show |) + + val pair elem-x elem-y = + let equal (x1, y1) (x2, y2) = elem-x#equal x1 x2 && elem-y#equal y1 y2 in + let show (x, y) = `(` ^ elem-x#show x ^ `, `# ^ elem-y#show y ^ `)` in + (| equal = equal, show = show |) end + val make-title-prefix title-opt = + match title-opt with + | None -> ` ` + | Some(title) -> `[` ^ title ^ `] `# + end + + val assert ?(title = title-opt) b = + if b then + () + else + let s-title = make-title-prefix title-opt in + abort-with-message (s-title ^ `assertion failed`) + + val assert-equal ?(title = title-opt) eq x1 x2 = + if eq#equal x1 x2 then + () + else + let s1 = eq#show x1 in + let s2 = eq#show x2 in + let s-title = make-title-prefix title-opt in + abort-with-message (s-title ^ `expected: `# ^ s1 ^ `, got: `# ^ s2) + end diff --git a/lib-satysfi/packages/unidata/unidata.0.0.1/saphe.lock.yaml.expected b/lib-satysfi/packages/unidata/unidata.0.0.1/saphe.lock.yaml.expected new file mode 100644 index 000000000..25b368126 --- /dev/null +++ b/lib-satysfi/packages/unidata/unidata.0.0.1/saphe.lock.yaml.expected @@ -0,0 +1,4 @@ +saphe: ^0.1.0-alpha.1 +locks: [] +dependencies: [] +test_dependencies: [] diff --git a/lib-satysfi/packages/unidata/unidata.0.0.1/saphe.yaml b/lib-satysfi/packages/unidata/unidata.0.0.1/saphe.yaml new file mode 100644 index 000000000..2a1481e49 --- /dev/null +++ b/lib-satysfi/packages/unidata/unidata.0.0.1/saphe.yaml @@ -0,0 +1,11 @@ +saphe: "^0.1.0-alpha.1" +satysfi: "^0.1.0-alpha.1" +name: "unidata" +authors: + - "Takashi Suwa <@gfngfn>" +contents: + library: + main_module: "Unidata" + source_directories: + - "./src" +dependencies: [] diff --git a/lib-satysfi/packages/unidata/unidata.0.0.1/satysfi-envelope.yaml.expected b/lib-satysfi/packages/unidata/unidata.0.0.1/satysfi-envelope.yaml.expected new file mode 100644 index 000000000..ae88aab8e --- /dev/null +++ b/lib-satysfi/packages/unidata/unidata.0.0.1/satysfi-envelope.yaml.expected @@ -0,0 +1,5 @@ +library: + main_module: Unidata + source_directories: + - ./src + test_directories: [] diff --git a/lib-satysfi/packages/unidata/unidata.0.0.1/src/unidata.satyh b/lib-satysfi/packages/unidata/unidata.0.0.1/src/unidata.satyh new file mode 100644 index 000000000..f2acf9af8 --- /dev/null +++ b/lib-satysfi/packages/unidata/unidata.0.0.1/src/unidata.satyh @@ -0,0 +1,9 @@ +module Unidata :> sig + val unidata : unicode-char-database +end = struct + val unidata = + load-unicode-char-database + (here ^ `/../unidata/Scripts.txt`) + (here ^ `/../unidata/EastAsianWidth.txt`) + (here ^ `/../unidata/LineBreak.txt`) +end diff --git a/lib-satysfi/unidata/.gitignore b/lib-satysfi/packages/unidata/unidata.0.0.1/unidata/.gitignore similarity index 100% rename from lib-satysfi/unidata/.gitignore rename to lib-satysfi/packages/unidata/unidata.0.0.1/unidata/.gitignore diff --git a/lib-satysfi/unidata/EastAsianWidth.txt b/lib-satysfi/packages/unidata/unidata.0.0.1/unidata/EastAsianWidth.txt similarity index 100% rename from lib-satysfi/unidata/EastAsianWidth.txt rename to lib-satysfi/packages/unidata/unidata.0.0.1/unidata/EastAsianWidth.txt diff --git a/lib-satysfi/unidata/LineBreak.txt b/lib-satysfi/packages/unidata/unidata.0.0.1/unidata/LineBreak.txt similarity index 100% rename from lib-satysfi/unidata/LineBreak.txt rename to lib-satysfi/packages/unidata/unidata.0.0.1/unidata/LineBreak.txt diff --git a/lib-satysfi/unidata/Scripts.txt b/lib-satysfi/packages/unidata/unidata.0.0.1/unidata/Scripts.txt similarity index 100% rename from lib-satysfi/unidata/Scripts.txt rename to lib-satysfi/packages/unidata/unidata.0.0.1/unidata/Scripts.txt diff --git a/lib-satysfi/registries/.gitkeep b/lib-satysfi/registries/.gitkeep deleted file mode 100644 index e69de29bb..000000000 diff --git a/lib-satysfi/satysfi-library-root.yaml b/lib-satysfi/satysfi-library-root.yaml deleted file mode 100644 index 9d5489225..000000000 --- a/lib-satysfi/satysfi-library-root.yaml +++ /dev/null @@ -1,7 +0,0 @@ -language: ^0.1.0 -registries: -- hash_value: d9b4b850ab61a7b68961c6315048b351 - remote: - type: git - url: https://github.com/SATySFi/default-registry - branch: format-1 diff --git a/lib-satysfi/unidata/PropList.txt b/lib-satysfi/unidata/PropList.txt deleted file mode 100644 index 9a2d0e4b1..000000000 --- a/lib-satysfi/unidata/PropList.txt +++ /dev/null @@ -1,1618 +0,0 @@ -# PropList-10.0.0.txt -# Date: 2017-03-10, 08:25:30 GMT -# © 2017 Unicode®, Inc. -# Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries. -# For terms of use, see http://www.unicode.org/terms_of_use.html -# -# Unicode Character Database -# For documentation, see http://www.unicode.org/reports/tr44/ - -# ================================================ - -0009..000D ; White_Space # Cc [5] .. -0020 ; White_Space # Zs SPACE -0085 ; White_Space # Cc -00A0 ; White_Space # Zs NO-BREAK SPACE -1680 ; White_Space # Zs OGHAM SPACE MARK -2000..200A ; White_Space # Zs [11] EN QUAD..HAIR SPACE -2028 ; White_Space # Zl LINE SEPARATOR -2029 ; White_Space # Zp PARAGRAPH SEPARATOR -202F ; White_Space # Zs NARROW NO-BREAK SPACE -205F ; White_Space # Zs MEDIUM MATHEMATICAL SPACE -3000 ; White_Space # Zs IDEOGRAPHIC SPACE - -# Total code points: 25 - -# ================================================ - -061C ; Bidi_Control # Cf ARABIC LETTER MARK -200E..200F ; Bidi_Control # Cf [2] LEFT-TO-RIGHT MARK..RIGHT-TO-LEFT MARK -202A..202E ; Bidi_Control # Cf [5] LEFT-TO-RIGHT EMBEDDING..RIGHT-TO-LEFT OVERRIDE -2066..2069 ; Bidi_Control # Cf [4] LEFT-TO-RIGHT ISOLATE..POP DIRECTIONAL ISOLATE - -# Total code points: 12 - -# ================================================ - -200C..200D ; Join_Control # Cf [2] ZERO WIDTH NON-JOINER..ZERO WIDTH JOINER - -# Total code points: 2 - -# ================================================ - -002D ; Dash # Pd HYPHEN-MINUS -058A ; Dash # Pd ARMENIAN HYPHEN -05BE ; Dash # Pd HEBREW PUNCTUATION MAQAF -1400 ; Dash # Pd CANADIAN SYLLABICS HYPHEN -1806 ; Dash # Pd MONGOLIAN TODO SOFT HYPHEN -2010..2015 ; Dash # Pd [6] HYPHEN..HORIZONTAL BAR -2053 ; Dash # Po SWUNG DASH -207B ; Dash # Sm SUPERSCRIPT MINUS -208B ; Dash # Sm SUBSCRIPT MINUS -2212 ; Dash # Sm MINUS SIGN -2E17 ; Dash # Pd DOUBLE OBLIQUE HYPHEN -2E1A ; Dash # Pd HYPHEN WITH DIAERESIS -2E3A..2E3B ; Dash # Pd [2] TWO-EM DASH..THREE-EM DASH -2E40 ; Dash # Pd DOUBLE HYPHEN -301C ; Dash # Pd WAVE DASH -3030 ; Dash # Pd WAVY DASH -30A0 ; Dash # Pd KATAKANA-HIRAGANA DOUBLE HYPHEN -FE31..FE32 ; Dash # Pd [2] PRESENTATION FORM FOR VERTICAL EM DASH..PRESENTATION FORM FOR VERTICAL EN DASH -FE58 ; Dash # Pd SMALL EM DASH -FE63 ; Dash # Pd SMALL HYPHEN-MINUS -FF0D ; Dash # Pd FULLWIDTH HYPHEN-MINUS - -# Total code points: 28 - -# ================================================ - -002D ; Hyphen # Pd HYPHEN-MINUS -00AD ; Hyphen # Cf SOFT HYPHEN -058A ; Hyphen # Pd ARMENIAN HYPHEN -1806 ; Hyphen # Pd MONGOLIAN TODO SOFT HYPHEN -2010..2011 ; Hyphen # Pd [2] HYPHEN..NON-BREAKING HYPHEN -2E17 ; Hyphen # Pd DOUBLE OBLIQUE HYPHEN -30FB ; Hyphen # Po KATAKANA MIDDLE DOT -FE63 ; Hyphen # Pd SMALL HYPHEN-MINUS -FF0D ; Hyphen # Pd FULLWIDTH HYPHEN-MINUS -FF65 ; Hyphen # Po HALFWIDTH KATAKANA MIDDLE DOT - -# Total code points: 11 - -# ================================================ - -0022 ; Quotation_Mark # Po QUOTATION MARK -0027 ; Quotation_Mark # Po APOSTROPHE -00AB ; Quotation_Mark # Pi LEFT-POINTING DOUBLE ANGLE QUOTATION MARK -00BB ; Quotation_Mark # Pf RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK -2018 ; Quotation_Mark # Pi LEFT SINGLE QUOTATION MARK -2019 ; Quotation_Mark # Pf RIGHT SINGLE QUOTATION MARK -201A ; Quotation_Mark # Ps SINGLE LOW-9 QUOTATION MARK -201B..201C ; Quotation_Mark # Pi [2] SINGLE HIGH-REVERSED-9 QUOTATION MARK..LEFT DOUBLE QUOTATION MARK -201D ; Quotation_Mark # Pf RIGHT DOUBLE QUOTATION MARK -201E ; Quotation_Mark # Ps DOUBLE LOW-9 QUOTATION MARK -201F ; Quotation_Mark # Pi DOUBLE HIGH-REVERSED-9 QUOTATION MARK -2039 ; Quotation_Mark # Pi SINGLE LEFT-POINTING ANGLE QUOTATION MARK -203A ; Quotation_Mark # Pf SINGLE RIGHT-POINTING ANGLE QUOTATION MARK -2E42 ; Quotation_Mark # Ps DOUBLE LOW-REVERSED-9 QUOTATION MARK -300C ; Quotation_Mark # Ps LEFT CORNER BRACKET -300D ; Quotation_Mark # Pe RIGHT CORNER BRACKET -300E ; Quotation_Mark # Ps LEFT WHITE CORNER BRACKET -300F ; Quotation_Mark # Pe RIGHT WHITE CORNER BRACKET -301D ; Quotation_Mark # Ps REVERSED DOUBLE PRIME QUOTATION MARK -301E..301F ; Quotation_Mark # Pe [2] DOUBLE PRIME QUOTATION MARK..LOW DOUBLE PRIME QUOTATION MARK -FE41 ; Quotation_Mark # Ps PRESENTATION FORM FOR VERTICAL LEFT CORNER BRACKET -FE42 ; Quotation_Mark # Pe PRESENTATION FORM FOR VERTICAL RIGHT CORNER BRACKET -FE43 ; Quotation_Mark # Ps PRESENTATION FORM FOR VERTICAL LEFT WHITE CORNER BRACKET -FE44 ; Quotation_Mark # Pe PRESENTATION FORM FOR VERTICAL RIGHT WHITE CORNER BRACKET -FF02 ; Quotation_Mark # Po FULLWIDTH QUOTATION MARK -FF07 ; Quotation_Mark # Po FULLWIDTH APOSTROPHE -FF62 ; Quotation_Mark # Ps HALFWIDTH LEFT CORNER BRACKET -FF63 ; Quotation_Mark # Pe HALFWIDTH RIGHT CORNER BRACKET - -# Total code points: 30 - -# ================================================ - -0021 ; Terminal_Punctuation # Po EXCLAMATION MARK -002C ; Terminal_Punctuation # Po COMMA -002E ; Terminal_Punctuation # Po FULL STOP -003A..003B ; Terminal_Punctuation # Po [2] COLON..SEMICOLON -003F ; Terminal_Punctuation # Po QUESTION MARK -037E ; Terminal_Punctuation # Po GREEK QUESTION MARK -0387 ; Terminal_Punctuation # Po GREEK ANO TELEIA -0589 ; Terminal_Punctuation # Po ARMENIAN FULL STOP -05C3 ; Terminal_Punctuation # Po HEBREW PUNCTUATION SOF PASUQ -060C ; Terminal_Punctuation # Po ARABIC COMMA -061B ; Terminal_Punctuation # Po ARABIC SEMICOLON -061F ; Terminal_Punctuation # Po ARABIC QUESTION MARK -06D4 ; Terminal_Punctuation # Po ARABIC FULL STOP -0700..070A ; Terminal_Punctuation # Po [11] SYRIAC END OF PARAGRAPH..SYRIAC CONTRACTION -070C ; Terminal_Punctuation # Po SYRIAC HARKLEAN METOBELUS -07F8..07F9 ; Terminal_Punctuation # Po [2] NKO COMMA..NKO EXCLAMATION MARK -0830..083E ; Terminal_Punctuation # Po [15] SAMARITAN PUNCTUATION NEQUDAA..SAMARITAN PUNCTUATION ANNAAU -085E ; Terminal_Punctuation # Po MANDAIC PUNCTUATION -0964..0965 ; Terminal_Punctuation # Po [2] DEVANAGARI DANDA..DEVANAGARI DOUBLE DANDA -0E5A..0E5B ; Terminal_Punctuation # Po [2] THAI CHARACTER ANGKHANKHU..THAI CHARACTER KHOMUT -0F08 ; Terminal_Punctuation # Po TIBETAN MARK SBRUL SHAD -0F0D..0F12 ; Terminal_Punctuation # Po [6] TIBETAN MARK SHAD..TIBETAN MARK RGYA GRAM SHAD -104A..104B ; Terminal_Punctuation # Po [2] MYANMAR SIGN LITTLE SECTION..MYANMAR SIGN SECTION -1361..1368 ; Terminal_Punctuation # Po [8] ETHIOPIC WORDSPACE..ETHIOPIC PARAGRAPH SEPARATOR -166D..166E ; Terminal_Punctuation # Po [2] CANADIAN SYLLABICS CHI SIGN..CANADIAN SYLLABICS FULL STOP -16EB..16ED ; Terminal_Punctuation # Po [3] RUNIC SINGLE PUNCTUATION..RUNIC CROSS PUNCTUATION -1735..1736 ; Terminal_Punctuation # Po [2] PHILIPPINE SINGLE PUNCTUATION..PHILIPPINE DOUBLE PUNCTUATION -17D4..17D6 ; Terminal_Punctuation # Po [3] KHMER SIGN KHAN..KHMER SIGN CAMNUC PII KUUH -17DA ; Terminal_Punctuation # Po KHMER SIGN KOOMUUT -1802..1805 ; Terminal_Punctuation # Po [4] MONGOLIAN COMMA..MONGOLIAN FOUR DOTS -1808..1809 ; Terminal_Punctuation # Po [2] MONGOLIAN MANCHU COMMA..MONGOLIAN MANCHU FULL STOP -1944..1945 ; Terminal_Punctuation # Po [2] LIMBU EXCLAMATION MARK..LIMBU QUESTION MARK -1AA8..1AAB ; Terminal_Punctuation # Po [4] TAI THAM SIGN KAAN..TAI THAM SIGN SATKAANKUU -1B5A..1B5B ; Terminal_Punctuation # Po [2] BALINESE PANTI..BALINESE PAMADA -1B5D..1B5F ; Terminal_Punctuation # Po [3] BALINESE CARIK PAMUNGKAH..BALINESE CARIK PAREREN -1C3B..1C3F ; Terminal_Punctuation # Po [5] LEPCHA PUNCTUATION TA-ROL..LEPCHA PUNCTUATION TSHOOK -1C7E..1C7F ; Terminal_Punctuation # Po [2] OL CHIKI PUNCTUATION MUCAAD..OL CHIKI PUNCTUATION DOUBLE MUCAAD -203C..203D ; Terminal_Punctuation # Po [2] DOUBLE EXCLAMATION MARK..INTERROBANG -2047..2049 ; Terminal_Punctuation # Po [3] DOUBLE QUESTION MARK..EXCLAMATION QUESTION MARK -2E2E ; Terminal_Punctuation # Po REVERSED QUESTION MARK -2E3C ; Terminal_Punctuation # Po STENOGRAPHIC FULL STOP -2E41 ; Terminal_Punctuation # Po REVERSED COMMA -3001..3002 ; Terminal_Punctuation # Po [2] IDEOGRAPHIC COMMA..IDEOGRAPHIC FULL STOP -A4FE..A4FF ; Terminal_Punctuation # Po [2] LISU PUNCTUATION COMMA..LISU PUNCTUATION FULL STOP -A60D..A60F ; Terminal_Punctuation # Po [3] VAI COMMA..VAI QUESTION MARK -A6F3..A6F7 ; Terminal_Punctuation # Po [5] BAMUM FULL STOP..BAMUM QUESTION MARK -A876..A877 ; Terminal_Punctuation # Po [2] PHAGS-PA MARK SHAD..PHAGS-PA MARK DOUBLE SHAD -A8CE..A8CF ; Terminal_Punctuation # Po [2] SAURASHTRA DANDA..SAURASHTRA DOUBLE DANDA -A92F ; Terminal_Punctuation # Po KAYAH LI SIGN SHYA -A9C7..A9C9 ; Terminal_Punctuation # Po [3] JAVANESE PADA PANGKAT..JAVANESE PADA LUNGSI -AA5D..AA5F ; Terminal_Punctuation # Po [3] CHAM PUNCTUATION DANDA..CHAM PUNCTUATION TRIPLE DANDA -AADF ; Terminal_Punctuation # Po TAI VIET SYMBOL KOI KOI -AAF0..AAF1 ; Terminal_Punctuation # Po [2] MEETEI MAYEK CHEIKHAN..MEETEI MAYEK AHANG KHUDAM -ABEB ; Terminal_Punctuation # Po MEETEI MAYEK CHEIKHEI -FE50..FE52 ; Terminal_Punctuation # Po [3] SMALL COMMA..SMALL FULL STOP -FE54..FE57 ; Terminal_Punctuation # Po [4] SMALL SEMICOLON..SMALL EXCLAMATION MARK -FF01 ; Terminal_Punctuation # Po FULLWIDTH EXCLAMATION MARK -FF0C ; Terminal_Punctuation # Po FULLWIDTH COMMA -FF0E ; Terminal_Punctuation # Po FULLWIDTH FULL STOP -FF1A..FF1B ; Terminal_Punctuation # Po [2] FULLWIDTH COLON..FULLWIDTH SEMICOLON -FF1F ; Terminal_Punctuation # Po FULLWIDTH QUESTION MARK -FF61 ; Terminal_Punctuation # Po HALFWIDTH IDEOGRAPHIC FULL STOP -FF64 ; Terminal_Punctuation # Po HALFWIDTH IDEOGRAPHIC COMMA -1039F ; Terminal_Punctuation # Po UGARITIC WORD DIVIDER -103D0 ; Terminal_Punctuation # Po OLD PERSIAN WORD DIVIDER -10857 ; Terminal_Punctuation # Po IMPERIAL ARAMAIC SECTION SIGN -1091F ; Terminal_Punctuation # Po PHOENICIAN WORD SEPARATOR -10A56..10A57 ; Terminal_Punctuation # Po [2] KHAROSHTHI PUNCTUATION DANDA..KHAROSHTHI PUNCTUATION DOUBLE DANDA -10AF0..10AF5 ; Terminal_Punctuation # Po [6] MANICHAEAN PUNCTUATION STAR..MANICHAEAN PUNCTUATION TWO DOTS -10B3A..10B3F ; Terminal_Punctuation # Po [6] TINY TWO DOTS OVER ONE DOT PUNCTUATION..LARGE ONE RING OVER TWO RINGS PUNCTUATION -10B99..10B9C ; Terminal_Punctuation # Po [4] PSALTER PAHLAVI SECTION MARK..PSALTER PAHLAVI FOUR DOTS WITH DOT -11047..1104D ; Terminal_Punctuation # Po [7] BRAHMI DANDA..BRAHMI PUNCTUATION LOTUS -110BE..110C1 ; Terminal_Punctuation # Po [4] KAITHI SECTION MARK..KAITHI DOUBLE DANDA -11141..11143 ; Terminal_Punctuation # Po [3] CHAKMA DANDA..CHAKMA QUESTION MARK -111C5..111C6 ; Terminal_Punctuation # Po [2] SHARADA DANDA..SHARADA DOUBLE DANDA -111CD ; Terminal_Punctuation # Po SHARADA SUTRA MARK -111DE..111DF ; Terminal_Punctuation # Po [2] SHARADA SECTION MARK-1..SHARADA SECTION MARK-2 -11238..1123C ; Terminal_Punctuation # Po [5] KHOJKI DANDA..KHOJKI DOUBLE SECTION MARK -112A9 ; Terminal_Punctuation # Po MULTANI SECTION MARK -1144B..1144D ; Terminal_Punctuation # Po [3] NEWA DANDA..NEWA COMMA -1145B ; Terminal_Punctuation # Po NEWA PLACEHOLDER MARK -115C2..115C5 ; Terminal_Punctuation # Po [4] SIDDHAM DANDA..SIDDHAM SEPARATOR BAR -115C9..115D7 ; Terminal_Punctuation # Po [15] SIDDHAM END OF TEXT MARK..SIDDHAM SECTION MARK WITH CIRCLES AND FOUR ENCLOSURES -11641..11642 ; Terminal_Punctuation # Po [2] MODI DANDA..MODI DOUBLE DANDA -1173C..1173E ; Terminal_Punctuation # Po [3] AHOM SIGN SMALL SECTION..AHOM SIGN RULAI -11A42..11A43 ; Terminal_Punctuation # Po [2] ZANABAZAR SQUARE MARK SHAD..ZANABAZAR SQUARE MARK DOUBLE SHAD -11A9B..11A9C ; Terminal_Punctuation # Po [2] SOYOMBO MARK SHAD..SOYOMBO MARK DOUBLE SHAD -11AA1..11AA2 ; Terminal_Punctuation # Po [2] SOYOMBO TERMINAL MARK-1..SOYOMBO TERMINAL MARK-2 -11C41..11C43 ; Terminal_Punctuation # Po [3] BHAIKSUKI DANDA..BHAIKSUKI WORD SEPARATOR -11C71 ; Terminal_Punctuation # Po MARCHEN MARK SHAD -12470..12474 ; Terminal_Punctuation # Po [5] CUNEIFORM PUNCTUATION SIGN OLD ASSYRIAN WORD DIVIDER..CUNEIFORM PUNCTUATION SIGN DIAGONAL QUADCOLON -16A6E..16A6F ; Terminal_Punctuation # Po [2] MRO DANDA..MRO DOUBLE DANDA -16AF5 ; Terminal_Punctuation # Po BASSA VAH FULL STOP -16B37..16B39 ; Terminal_Punctuation # Po [3] PAHAWH HMONG SIGN VOS THOM..PAHAWH HMONG SIGN CIM CHEEM -16B44 ; Terminal_Punctuation # Po PAHAWH HMONG SIGN XAUS -1BC9F ; Terminal_Punctuation # Po DUPLOYAN PUNCTUATION CHINOOK FULL STOP -1DA87..1DA8A ; Terminal_Punctuation # Po [4] SIGNWRITING COMMA..SIGNWRITING COLON - -# Total code points: 252 - -# ================================================ - -005E ; Other_Math # Sk CIRCUMFLEX ACCENT -03D0..03D2 ; Other_Math # L& [3] GREEK BETA SYMBOL..GREEK UPSILON WITH HOOK SYMBOL -03D5 ; Other_Math # L& GREEK PHI SYMBOL -03F0..03F1 ; Other_Math # L& [2] GREEK KAPPA SYMBOL..GREEK RHO SYMBOL -03F4..03F5 ; Other_Math # L& [2] GREEK CAPITAL THETA SYMBOL..GREEK LUNATE EPSILON SYMBOL -2016 ; Other_Math # Po DOUBLE VERTICAL LINE -2032..2034 ; Other_Math # Po [3] PRIME..TRIPLE PRIME -2040 ; Other_Math # Pc CHARACTER TIE -2061..2064 ; Other_Math # Cf [4] FUNCTION APPLICATION..INVISIBLE PLUS -207D ; Other_Math # Ps SUPERSCRIPT LEFT PARENTHESIS -207E ; Other_Math # Pe SUPERSCRIPT RIGHT PARENTHESIS -208D ; Other_Math # Ps SUBSCRIPT LEFT PARENTHESIS -208E ; Other_Math # Pe SUBSCRIPT RIGHT PARENTHESIS -20D0..20DC ; Other_Math # Mn [13] COMBINING LEFT HARPOON ABOVE..COMBINING FOUR DOTS ABOVE -20E1 ; Other_Math # Mn COMBINING LEFT RIGHT ARROW ABOVE -20E5..20E6 ; Other_Math # Mn [2] COMBINING REVERSE SOLIDUS OVERLAY..COMBINING DOUBLE VERTICAL STROKE OVERLAY -20EB..20EF ; Other_Math # Mn [5] COMBINING LONG DOUBLE SOLIDUS OVERLAY..COMBINING RIGHT ARROW BELOW -2102 ; Other_Math # L& DOUBLE-STRUCK CAPITAL C -2107 ; Other_Math # L& EULER CONSTANT -210A..2113 ; Other_Math # L& [10] SCRIPT SMALL G..SCRIPT SMALL L -2115 ; Other_Math # L& DOUBLE-STRUCK CAPITAL N -2119..211D ; Other_Math # L& [5] DOUBLE-STRUCK CAPITAL P..DOUBLE-STRUCK CAPITAL R -2124 ; Other_Math # L& DOUBLE-STRUCK CAPITAL Z -2128 ; Other_Math # L& BLACK-LETTER CAPITAL Z -2129 ; Other_Math # So TURNED GREEK SMALL LETTER IOTA -212C..212D ; Other_Math # L& [2] SCRIPT CAPITAL B..BLACK-LETTER CAPITAL C -212F..2131 ; Other_Math # L& [3] SCRIPT SMALL E..SCRIPT CAPITAL F -2133..2134 ; Other_Math # L& [2] SCRIPT CAPITAL M..SCRIPT SMALL O -2135..2138 ; Other_Math # Lo [4] ALEF SYMBOL..DALET SYMBOL -213C..213F ; Other_Math # L& [4] DOUBLE-STRUCK SMALL PI..DOUBLE-STRUCK CAPITAL PI -2145..2149 ; Other_Math # L& [5] DOUBLE-STRUCK ITALIC CAPITAL D..DOUBLE-STRUCK ITALIC SMALL J -2195..2199 ; Other_Math # So [5] UP DOWN ARROW..SOUTH WEST ARROW -219C..219F ; Other_Math # So [4] LEFTWARDS WAVE ARROW..UPWARDS TWO HEADED ARROW -21A1..21A2 ; Other_Math # So [2] DOWNWARDS TWO HEADED ARROW..LEFTWARDS ARROW WITH TAIL -21A4..21A5 ; Other_Math # So [2] LEFTWARDS ARROW FROM BAR..UPWARDS ARROW FROM BAR -21A7 ; Other_Math # So DOWNWARDS ARROW FROM BAR -21A9..21AD ; Other_Math # So [5] LEFTWARDS ARROW WITH HOOK..LEFT RIGHT WAVE ARROW -21B0..21B1 ; Other_Math # So [2] UPWARDS ARROW WITH TIP LEFTWARDS..UPWARDS ARROW WITH TIP RIGHTWARDS -21B6..21B7 ; Other_Math # So [2] ANTICLOCKWISE TOP SEMICIRCLE ARROW..CLOCKWISE TOP SEMICIRCLE ARROW -21BC..21CD ; Other_Math # So [18] LEFTWARDS HARPOON WITH BARB UPWARDS..LEFTWARDS DOUBLE ARROW WITH STROKE -21D0..21D1 ; Other_Math # So [2] LEFTWARDS DOUBLE ARROW..UPWARDS DOUBLE ARROW -21D3 ; Other_Math # So DOWNWARDS DOUBLE ARROW -21D5..21DB ; Other_Math # So [7] UP DOWN DOUBLE ARROW..RIGHTWARDS TRIPLE ARROW -21DD ; Other_Math # So RIGHTWARDS SQUIGGLE ARROW -21E4..21E5 ; Other_Math # So [2] LEFTWARDS ARROW TO BAR..RIGHTWARDS ARROW TO BAR -2308 ; Other_Math # Ps LEFT CEILING -2309 ; Other_Math # Pe RIGHT CEILING -230A ; Other_Math # Ps LEFT FLOOR -230B ; Other_Math # Pe RIGHT FLOOR -23B4..23B5 ; Other_Math # So [2] TOP SQUARE BRACKET..BOTTOM SQUARE BRACKET -23B7 ; Other_Math # So RADICAL SYMBOL BOTTOM -23D0 ; Other_Math # So VERTICAL LINE EXTENSION -23E2 ; Other_Math # So WHITE TRAPEZIUM -25A0..25A1 ; Other_Math # So [2] BLACK SQUARE..WHITE SQUARE -25AE..25B6 ; Other_Math # So [9] BLACK VERTICAL RECTANGLE..BLACK RIGHT-POINTING TRIANGLE -25BC..25C0 ; Other_Math # So [5] BLACK DOWN-POINTING TRIANGLE..BLACK LEFT-POINTING TRIANGLE -25C6..25C7 ; Other_Math # So [2] BLACK DIAMOND..WHITE DIAMOND -25CA..25CB ; Other_Math # So [2] LOZENGE..WHITE CIRCLE -25CF..25D3 ; Other_Math # So [5] BLACK CIRCLE..CIRCLE WITH UPPER HALF BLACK -25E2 ; Other_Math # So BLACK LOWER RIGHT TRIANGLE -25E4 ; Other_Math # So BLACK UPPER LEFT TRIANGLE -25E7..25EC ; Other_Math # So [6] SQUARE WITH LEFT HALF BLACK..WHITE UP-POINTING TRIANGLE WITH DOT -2605..2606 ; Other_Math # So [2] BLACK STAR..WHITE STAR -2640 ; Other_Math # So FEMALE SIGN -2642 ; Other_Math # So MALE SIGN -2660..2663 ; Other_Math # So [4] BLACK SPADE SUIT..BLACK CLUB SUIT -266D..266E ; Other_Math # So [2] MUSIC FLAT SIGN..MUSIC NATURAL SIGN -27C5 ; Other_Math # Ps LEFT S-SHAPED BAG DELIMITER -27C6 ; Other_Math # Pe RIGHT S-SHAPED BAG DELIMITER -27E6 ; Other_Math # Ps MATHEMATICAL LEFT WHITE SQUARE BRACKET -27E7 ; Other_Math # Pe MATHEMATICAL RIGHT WHITE SQUARE BRACKET -27E8 ; Other_Math # Ps MATHEMATICAL LEFT ANGLE BRACKET -27E9 ; Other_Math # Pe MATHEMATICAL RIGHT ANGLE BRACKET -27EA ; Other_Math # Ps MATHEMATICAL LEFT DOUBLE ANGLE BRACKET -27EB ; Other_Math # Pe MATHEMATICAL RIGHT DOUBLE ANGLE BRACKET -27EC ; Other_Math # Ps MATHEMATICAL LEFT WHITE TORTOISE SHELL BRACKET -27ED ; Other_Math # Pe MATHEMATICAL RIGHT WHITE TORTOISE SHELL BRACKET -27EE ; Other_Math # Ps MATHEMATICAL LEFT FLATTENED PARENTHESIS -27EF ; Other_Math # Pe MATHEMATICAL RIGHT FLATTENED PARENTHESIS -2983 ; Other_Math # Ps LEFT WHITE CURLY BRACKET -2984 ; Other_Math # Pe RIGHT WHITE CURLY BRACKET -2985 ; Other_Math # Ps LEFT WHITE PARENTHESIS -2986 ; Other_Math # Pe RIGHT WHITE PARENTHESIS -2987 ; Other_Math # Ps Z NOTATION LEFT IMAGE BRACKET -2988 ; Other_Math # Pe Z NOTATION RIGHT IMAGE BRACKET -2989 ; Other_Math # Ps Z NOTATION LEFT BINDING BRACKET -298A ; Other_Math # Pe Z NOTATION RIGHT BINDING BRACKET -298B ; Other_Math # Ps LEFT SQUARE BRACKET WITH UNDERBAR -298C ; Other_Math # Pe RIGHT SQUARE BRACKET WITH UNDERBAR -298D ; Other_Math # Ps LEFT SQUARE BRACKET WITH TICK IN TOP CORNER -298E ; Other_Math # Pe RIGHT SQUARE BRACKET WITH TICK IN BOTTOM CORNER -298F ; Other_Math # Ps LEFT SQUARE BRACKET WITH TICK IN BOTTOM CORNER -2990 ; Other_Math # Pe RIGHT SQUARE BRACKET WITH TICK IN TOP CORNER -2991 ; Other_Math # Ps LEFT ANGLE BRACKET WITH DOT -2992 ; Other_Math # Pe RIGHT ANGLE BRACKET WITH DOT -2993 ; Other_Math # Ps LEFT ARC LESS-THAN BRACKET -2994 ; Other_Math # Pe RIGHT ARC GREATER-THAN BRACKET -2995 ; Other_Math # Ps DOUBLE LEFT ARC GREATER-THAN BRACKET -2996 ; Other_Math # Pe DOUBLE RIGHT ARC LESS-THAN BRACKET -2997 ; Other_Math # Ps LEFT BLACK TORTOISE SHELL BRACKET -2998 ; Other_Math # Pe RIGHT BLACK TORTOISE SHELL BRACKET -29D8 ; Other_Math # Ps LEFT WIGGLY FENCE -29D9 ; Other_Math # Pe RIGHT WIGGLY FENCE -29DA ; Other_Math # Ps LEFT DOUBLE WIGGLY FENCE -29DB ; Other_Math # Pe RIGHT DOUBLE WIGGLY FENCE -29FC ; Other_Math # Ps LEFT-POINTING CURVED ANGLE BRACKET -29FD ; Other_Math # Pe RIGHT-POINTING CURVED ANGLE BRACKET -FE61 ; Other_Math # Po SMALL ASTERISK -FE63 ; Other_Math # Pd SMALL HYPHEN-MINUS -FE68 ; Other_Math # Po SMALL REVERSE SOLIDUS -FF3C ; Other_Math # Po FULLWIDTH REVERSE SOLIDUS -FF3E ; Other_Math # Sk FULLWIDTH CIRCUMFLEX ACCENT -1D400..1D454 ; Other_Math # L& [85] MATHEMATICAL BOLD CAPITAL A..MATHEMATICAL ITALIC SMALL G -1D456..1D49C ; Other_Math # L& [71] MATHEMATICAL ITALIC SMALL I..MATHEMATICAL SCRIPT CAPITAL A -1D49E..1D49F ; Other_Math # L& [2] MATHEMATICAL SCRIPT CAPITAL C..MATHEMATICAL SCRIPT CAPITAL D -1D4A2 ; Other_Math # L& MATHEMATICAL SCRIPT CAPITAL G -1D4A5..1D4A6 ; Other_Math # L& [2] MATHEMATICAL SCRIPT CAPITAL J..MATHEMATICAL SCRIPT CAPITAL K -1D4A9..1D4AC ; Other_Math # L& [4] MATHEMATICAL SCRIPT CAPITAL N..MATHEMATICAL SCRIPT CAPITAL Q -1D4AE..1D4B9 ; Other_Math # L& [12] MATHEMATICAL SCRIPT CAPITAL S..MATHEMATICAL SCRIPT SMALL D -1D4BB ; Other_Math # L& MATHEMATICAL SCRIPT SMALL F -1D4BD..1D4C3 ; Other_Math # L& [7] MATHEMATICAL SCRIPT SMALL H..MATHEMATICAL SCRIPT SMALL N -1D4C5..1D505 ; Other_Math # L& [65] MATHEMATICAL SCRIPT SMALL P..MATHEMATICAL FRAKTUR CAPITAL B -1D507..1D50A ; Other_Math # L& [4] MATHEMATICAL FRAKTUR CAPITAL D..MATHEMATICAL FRAKTUR CAPITAL G -1D50D..1D514 ; Other_Math # L& [8] MATHEMATICAL FRAKTUR CAPITAL J..MATHEMATICAL FRAKTUR CAPITAL Q -1D516..1D51C ; Other_Math # L& [7] MATHEMATICAL FRAKTUR CAPITAL S..MATHEMATICAL FRAKTUR CAPITAL Y -1D51E..1D539 ; Other_Math # L& [28] MATHEMATICAL FRAKTUR SMALL A..MATHEMATICAL DOUBLE-STRUCK CAPITAL B -1D53B..1D53E ; Other_Math # L& [4] MATHEMATICAL DOUBLE-STRUCK CAPITAL D..MATHEMATICAL DOUBLE-STRUCK CAPITAL G -1D540..1D544 ; Other_Math # L& [5] MATHEMATICAL DOUBLE-STRUCK CAPITAL I..MATHEMATICAL DOUBLE-STRUCK CAPITAL M -1D546 ; Other_Math # L& MATHEMATICAL DOUBLE-STRUCK CAPITAL O -1D54A..1D550 ; Other_Math # L& [7] MATHEMATICAL DOUBLE-STRUCK CAPITAL S..MATHEMATICAL DOUBLE-STRUCK CAPITAL Y -1D552..1D6A5 ; Other_Math # L& [340] MATHEMATICAL DOUBLE-STRUCK SMALL A..MATHEMATICAL ITALIC SMALL DOTLESS J -1D6A8..1D6C0 ; Other_Math # L& [25] MATHEMATICAL BOLD CAPITAL ALPHA..MATHEMATICAL BOLD CAPITAL OMEGA -1D6C2..1D6DA ; Other_Math # L& [25] MATHEMATICAL BOLD SMALL ALPHA..MATHEMATICAL BOLD SMALL OMEGA -1D6DC..1D6FA ; Other_Math # L& [31] MATHEMATICAL BOLD EPSILON SYMBOL..MATHEMATICAL ITALIC CAPITAL OMEGA -1D6FC..1D714 ; Other_Math # L& [25] MATHEMATICAL ITALIC SMALL ALPHA..MATHEMATICAL ITALIC SMALL OMEGA -1D716..1D734 ; Other_Math # L& [31] MATHEMATICAL ITALIC EPSILON SYMBOL..MATHEMATICAL BOLD ITALIC CAPITAL OMEGA -1D736..1D74E ; Other_Math # L& [25] MATHEMATICAL BOLD ITALIC SMALL ALPHA..MATHEMATICAL BOLD ITALIC SMALL OMEGA -1D750..1D76E ; Other_Math # L& [31] MATHEMATICAL BOLD ITALIC EPSILON SYMBOL..MATHEMATICAL SANS-SERIF BOLD CAPITAL OMEGA -1D770..1D788 ; Other_Math # L& [25] MATHEMATICAL SANS-SERIF BOLD SMALL ALPHA..MATHEMATICAL SANS-SERIF BOLD SMALL OMEGA -1D78A..1D7A8 ; Other_Math # L& [31] MATHEMATICAL SANS-SERIF BOLD EPSILON SYMBOL..MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMEGA -1D7AA..1D7C2 ; Other_Math # L& [25] MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ALPHA..MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL OMEGA -1D7C4..1D7CB ; Other_Math # L& [8] MATHEMATICAL SANS-SERIF BOLD ITALIC EPSILON SYMBOL..MATHEMATICAL BOLD SMALL DIGAMMA -1D7CE..1D7FF ; Other_Math # Nd [50] MATHEMATICAL BOLD DIGIT ZERO..MATHEMATICAL MONOSPACE DIGIT NINE -1EE00..1EE03 ; Other_Math # Lo [4] ARABIC MATHEMATICAL ALEF..ARABIC MATHEMATICAL DAL -1EE05..1EE1F ; Other_Math # Lo [27] ARABIC MATHEMATICAL WAW..ARABIC MATHEMATICAL DOTLESS QAF -1EE21..1EE22 ; Other_Math # Lo [2] ARABIC MATHEMATICAL INITIAL BEH..ARABIC MATHEMATICAL INITIAL JEEM -1EE24 ; Other_Math # Lo ARABIC MATHEMATICAL INITIAL HEH -1EE27 ; Other_Math # Lo ARABIC MATHEMATICAL INITIAL HAH -1EE29..1EE32 ; Other_Math # Lo [10] ARABIC MATHEMATICAL INITIAL YEH..ARABIC MATHEMATICAL INITIAL QAF -1EE34..1EE37 ; Other_Math # Lo [4] ARABIC MATHEMATICAL INITIAL SHEEN..ARABIC MATHEMATICAL INITIAL KHAH -1EE39 ; Other_Math # Lo ARABIC MATHEMATICAL INITIAL DAD -1EE3B ; Other_Math # Lo ARABIC MATHEMATICAL INITIAL GHAIN -1EE42 ; Other_Math # Lo ARABIC MATHEMATICAL TAILED JEEM -1EE47 ; Other_Math # Lo ARABIC MATHEMATICAL TAILED HAH -1EE49 ; Other_Math # Lo ARABIC MATHEMATICAL TAILED YEH -1EE4B ; Other_Math # Lo ARABIC MATHEMATICAL TAILED LAM -1EE4D..1EE4F ; Other_Math # Lo [3] ARABIC MATHEMATICAL TAILED NOON..ARABIC MATHEMATICAL TAILED AIN -1EE51..1EE52 ; Other_Math # Lo [2] ARABIC MATHEMATICAL TAILED SAD..ARABIC MATHEMATICAL TAILED QAF -1EE54 ; Other_Math # Lo ARABIC MATHEMATICAL TAILED SHEEN -1EE57 ; Other_Math # Lo ARABIC MATHEMATICAL TAILED KHAH -1EE59 ; Other_Math # Lo ARABIC MATHEMATICAL TAILED DAD -1EE5B ; Other_Math # Lo ARABIC MATHEMATICAL TAILED GHAIN -1EE5D ; Other_Math # Lo ARABIC MATHEMATICAL TAILED DOTLESS NOON -1EE5F ; Other_Math # Lo ARABIC MATHEMATICAL TAILED DOTLESS QAF -1EE61..1EE62 ; Other_Math # Lo [2] ARABIC MATHEMATICAL STRETCHED BEH..ARABIC MATHEMATICAL STRETCHED JEEM -1EE64 ; Other_Math # Lo ARABIC MATHEMATICAL STRETCHED HEH -1EE67..1EE6A ; Other_Math # Lo [4] ARABIC MATHEMATICAL STRETCHED HAH..ARABIC MATHEMATICAL STRETCHED KAF -1EE6C..1EE72 ; Other_Math # Lo [7] ARABIC MATHEMATICAL STRETCHED MEEM..ARABIC MATHEMATICAL STRETCHED QAF -1EE74..1EE77 ; Other_Math # Lo [4] ARABIC MATHEMATICAL STRETCHED SHEEN..ARABIC MATHEMATICAL STRETCHED KHAH -1EE79..1EE7C ; Other_Math # Lo [4] ARABIC MATHEMATICAL STRETCHED DAD..ARABIC MATHEMATICAL STRETCHED DOTLESS BEH -1EE7E ; Other_Math # Lo ARABIC MATHEMATICAL STRETCHED DOTLESS FEH -1EE80..1EE89 ; Other_Math # Lo [10] ARABIC MATHEMATICAL LOOPED ALEF..ARABIC MATHEMATICAL LOOPED YEH -1EE8B..1EE9B ; Other_Math # Lo [17] ARABIC MATHEMATICAL LOOPED LAM..ARABIC MATHEMATICAL LOOPED GHAIN -1EEA1..1EEA3 ; Other_Math # Lo [3] ARABIC MATHEMATICAL DOUBLE-STRUCK BEH..ARABIC MATHEMATICAL DOUBLE-STRUCK DAL -1EEA5..1EEA9 ; Other_Math # Lo [5] ARABIC MATHEMATICAL DOUBLE-STRUCK WAW..ARABIC MATHEMATICAL DOUBLE-STRUCK YEH -1EEAB..1EEBB ; Other_Math # Lo [17] ARABIC MATHEMATICAL DOUBLE-STRUCK LAM..ARABIC MATHEMATICAL DOUBLE-STRUCK GHAIN - -# Total code points: 1362 - -# ================================================ - -0030..0039 ; Hex_Digit # Nd [10] DIGIT ZERO..DIGIT NINE -0041..0046 ; Hex_Digit # L& [6] LATIN CAPITAL LETTER A..LATIN CAPITAL LETTER F -0061..0066 ; Hex_Digit # L& [6] LATIN SMALL LETTER A..LATIN SMALL LETTER F -FF10..FF19 ; Hex_Digit # Nd [10] FULLWIDTH DIGIT ZERO..FULLWIDTH DIGIT NINE -FF21..FF26 ; Hex_Digit # L& [6] FULLWIDTH LATIN CAPITAL LETTER A..FULLWIDTH LATIN CAPITAL LETTER F -FF41..FF46 ; Hex_Digit # L& [6] FULLWIDTH LATIN SMALL LETTER A..FULLWIDTH LATIN SMALL LETTER F - -# Total code points: 44 - -# ================================================ - -0030..0039 ; ASCII_Hex_Digit # Nd [10] DIGIT ZERO..DIGIT NINE -0041..0046 ; ASCII_Hex_Digit # L& [6] LATIN CAPITAL LETTER A..LATIN CAPITAL LETTER F -0061..0066 ; ASCII_Hex_Digit # L& [6] LATIN SMALL LETTER A..LATIN SMALL LETTER F - -# Total code points: 22 - -# ================================================ - -0345 ; Other_Alphabetic # Mn COMBINING GREEK YPOGEGRAMMENI -05B0..05BD ; Other_Alphabetic # Mn [14] HEBREW POINT SHEVA..HEBREW POINT METEG -05BF ; Other_Alphabetic # Mn HEBREW POINT RAFE -05C1..05C2 ; Other_Alphabetic # Mn [2] HEBREW POINT SHIN DOT..HEBREW POINT SIN DOT -05C4..05C5 ; Other_Alphabetic # Mn [2] HEBREW MARK UPPER DOT..HEBREW MARK LOWER DOT -05C7 ; Other_Alphabetic # Mn HEBREW POINT QAMATS QATAN -0610..061A ; Other_Alphabetic # Mn [11] ARABIC SIGN SALLALLAHOU ALAYHE WASSALLAM..ARABIC SMALL KASRA -064B..0657 ; Other_Alphabetic # Mn [13] ARABIC FATHATAN..ARABIC INVERTED DAMMA -0659..065F ; Other_Alphabetic # Mn [7] ARABIC ZWARAKAY..ARABIC WAVY HAMZA BELOW -0670 ; Other_Alphabetic # Mn ARABIC LETTER SUPERSCRIPT ALEF -06D6..06DC ; Other_Alphabetic # Mn [7] ARABIC SMALL HIGH LIGATURE SAD WITH LAM WITH ALEF MAKSURA..ARABIC SMALL HIGH SEEN -06E1..06E4 ; Other_Alphabetic # Mn [4] ARABIC SMALL HIGH DOTLESS HEAD OF KHAH..ARABIC SMALL HIGH MADDA -06E7..06E8 ; Other_Alphabetic # Mn [2] ARABIC SMALL HIGH YEH..ARABIC SMALL HIGH NOON -06ED ; Other_Alphabetic # Mn ARABIC SMALL LOW MEEM -0711 ; Other_Alphabetic # Mn SYRIAC LETTER SUPERSCRIPT ALAPH -0730..073F ; Other_Alphabetic # Mn [16] SYRIAC PTHAHA ABOVE..SYRIAC RWAHA -07A6..07B0 ; Other_Alphabetic # Mn [11] THAANA ABAFILI..THAANA SUKUN -0816..0817 ; Other_Alphabetic # Mn [2] SAMARITAN MARK IN..SAMARITAN MARK IN-ALAF -081B..0823 ; Other_Alphabetic # Mn [9] SAMARITAN MARK EPENTHETIC YUT..SAMARITAN VOWEL SIGN A -0825..0827 ; Other_Alphabetic # Mn [3] SAMARITAN VOWEL SIGN SHORT A..SAMARITAN VOWEL SIGN U -0829..082C ; Other_Alphabetic # Mn [4] SAMARITAN VOWEL SIGN LONG I..SAMARITAN VOWEL SIGN SUKUN -08D4..08DF ; Other_Alphabetic # Mn [12] ARABIC SMALL HIGH WORD AR-RUB..ARABIC SMALL HIGH WORD WAQFA -08E3..08E9 ; Other_Alphabetic # Mn [7] ARABIC TURNED DAMMA BELOW..ARABIC CURLY KASRATAN -08F0..0902 ; Other_Alphabetic # Mn [19] ARABIC OPEN FATHATAN..DEVANAGARI SIGN ANUSVARA -0903 ; Other_Alphabetic # Mc DEVANAGARI SIGN VISARGA -093A ; Other_Alphabetic # Mn DEVANAGARI VOWEL SIGN OE -093B ; Other_Alphabetic # Mc DEVANAGARI VOWEL SIGN OOE -093E..0940 ; Other_Alphabetic # Mc [3] DEVANAGARI VOWEL SIGN AA..DEVANAGARI VOWEL SIGN II -0941..0948 ; Other_Alphabetic # Mn [8] DEVANAGARI VOWEL SIGN U..DEVANAGARI VOWEL SIGN AI -0949..094C ; Other_Alphabetic # Mc [4] DEVANAGARI VOWEL SIGN CANDRA O..DEVANAGARI VOWEL SIGN AU -094E..094F ; Other_Alphabetic # Mc [2] DEVANAGARI VOWEL SIGN PRISHTHAMATRA E..DEVANAGARI VOWEL SIGN AW -0955..0957 ; Other_Alphabetic # Mn [3] DEVANAGARI VOWEL SIGN CANDRA LONG E..DEVANAGARI VOWEL SIGN UUE -0962..0963 ; Other_Alphabetic # Mn [2] DEVANAGARI VOWEL SIGN VOCALIC L..DEVANAGARI VOWEL SIGN VOCALIC LL -0981 ; Other_Alphabetic # Mn BENGALI SIGN CANDRABINDU -0982..0983 ; Other_Alphabetic # Mc [2] BENGALI SIGN ANUSVARA..BENGALI SIGN VISARGA -09BE..09C0 ; Other_Alphabetic # Mc [3] BENGALI VOWEL SIGN AA..BENGALI VOWEL SIGN II -09C1..09C4 ; Other_Alphabetic # Mn [4] BENGALI VOWEL SIGN U..BENGALI VOWEL SIGN VOCALIC RR -09C7..09C8 ; Other_Alphabetic # Mc [2] BENGALI VOWEL SIGN E..BENGALI VOWEL SIGN AI -09CB..09CC ; Other_Alphabetic # Mc [2] BENGALI VOWEL SIGN O..BENGALI VOWEL SIGN AU -09D7 ; Other_Alphabetic # Mc BENGALI AU LENGTH MARK -09E2..09E3 ; Other_Alphabetic # Mn [2] BENGALI VOWEL SIGN VOCALIC L..BENGALI VOWEL SIGN VOCALIC LL -0A01..0A02 ; Other_Alphabetic # Mn [2] GURMUKHI SIGN ADAK BINDI..GURMUKHI SIGN BINDI -0A03 ; Other_Alphabetic # Mc GURMUKHI SIGN VISARGA -0A3E..0A40 ; Other_Alphabetic # Mc [3] GURMUKHI VOWEL SIGN AA..GURMUKHI VOWEL SIGN II -0A41..0A42 ; Other_Alphabetic # Mn [2] GURMUKHI VOWEL SIGN U..GURMUKHI VOWEL SIGN UU -0A47..0A48 ; Other_Alphabetic # Mn [2] GURMUKHI VOWEL SIGN EE..GURMUKHI VOWEL SIGN AI -0A4B..0A4C ; Other_Alphabetic # Mn [2] GURMUKHI VOWEL SIGN OO..GURMUKHI VOWEL SIGN AU -0A51 ; Other_Alphabetic # Mn GURMUKHI SIGN UDAAT -0A70..0A71 ; Other_Alphabetic # Mn [2] GURMUKHI TIPPI..GURMUKHI ADDAK -0A75 ; Other_Alphabetic # Mn GURMUKHI SIGN YAKASH -0A81..0A82 ; Other_Alphabetic # Mn [2] GUJARATI SIGN CANDRABINDU..GUJARATI SIGN ANUSVARA -0A83 ; Other_Alphabetic # Mc GUJARATI SIGN VISARGA -0ABE..0AC0 ; Other_Alphabetic # Mc [3] GUJARATI VOWEL SIGN AA..GUJARATI VOWEL SIGN II -0AC1..0AC5 ; Other_Alphabetic # Mn [5] GUJARATI VOWEL SIGN U..GUJARATI VOWEL SIGN CANDRA E -0AC7..0AC8 ; Other_Alphabetic # Mn [2] GUJARATI VOWEL SIGN E..GUJARATI VOWEL SIGN AI -0AC9 ; Other_Alphabetic # Mc GUJARATI VOWEL SIGN CANDRA O -0ACB..0ACC ; Other_Alphabetic # Mc [2] GUJARATI VOWEL SIGN O..GUJARATI VOWEL SIGN AU -0AE2..0AE3 ; Other_Alphabetic # Mn [2] GUJARATI VOWEL SIGN VOCALIC L..GUJARATI VOWEL SIGN VOCALIC LL -0AFA..0AFC ; Other_Alphabetic # Mn [3] GUJARATI SIGN SUKUN..GUJARATI SIGN MADDAH -0B01 ; Other_Alphabetic # Mn ORIYA SIGN CANDRABINDU -0B02..0B03 ; Other_Alphabetic # Mc [2] ORIYA SIGN ANUSVARA..ORIYA SIGN VISARGA -0B3E ; Other_Alphabetic # Mc ORIYA VOWEL SIGN AA -0B3F ; Other_Alphabetic # Mn ORIYA VOWEL SIGN I -0B40 ; Other_Alphabetic # Mc ORIYA VOWEL SIGN II -0B41..0B44 ; Other_Alphabetic # Mn [4] ORIYA VOWEL SIGN U..ORIYA VOWEL SIGN VOCALIC RR -0B47..0B48 ; Other_Alphabetic # Mc [2] ORIYA VOWEL SIGN E..ORIYA VOWEL SIGN AI -0B4B..0B4C ; Other_Alphabetic # Mc [2] ORIYA VOWEL SIGN O..ORIYA VOWEL SIGN AU -0B56 ; Other_Alphabetic # Mn ORIYA AI LENGTH MARK -0B57 ; Other_Alphabetic # Mc ORIYA AU LENGTH MARK -0B62..0B63 ; Other_Alphabetic # Mn [2] ORIYA VOWEL SIGN VOCALIC L..ORIYA VOWEL SIGN VOCALIC LL -0B82 ; Other_Alphabetic # Mn TAMIL SIGN ANUSVARA -0BBE..0BBF ; Other_Alphabetic # Mc [2] TAMIL VOWEL SIGN AA..TAMIL VOWEL SIGN I -0BC0 ; Other_Alphabetic # Mn TAMIL VOWEL SIGN II -0BC1..0BC2 ; Other_Alphabetic # Mc [2] TAMIL VOWEL SIGN U..TAMIL VOWEL SIGN UU -0BC6..0BC8 ; Other_Alphabetic # Mc [3] TAMIL VOWEL SIGN E..TAMIL VOWEL SIGN AI -0BCA..0BCC ; Other_Alphabetic # Mc [3] TAMIL VOWEL SIGN O..TAMIL VOWEL SIGN AU -0BD7 ; Other_Alphabetic # Mc TAMIL AU LENGTH MARK -0C00 ; Other_Alphabetic # Mn TELUGU SIGN COMBINING CANDRABINDU ABOVE -0C01..0C03 ; Other_Alphabetic # Mc [3] TELUGU SIGN CANDRABINDU..TELUGU SIGN VISARGA -0C3E..0C40 ; Other_Alphabetic # Mn [3] TELUGU VOWEL SIGN AA..TELUGU VOWEL SIGN II -0C41..0C44 ; Other_Alphabetic # Mc [4] TELUGU VOWEL SIGN U..TELUGU VOWEL SIGN VOCALIC RR -0C46..0C48 ; Other_Alphabetic # Mn [3] TELUGU VOWEL SIGN E..TELUGU VOWEL SIGN AI -0C4A..0C4C ; Other_Alphabetic # Mn [3] TELUGU VOWEL SIGN O..TELUGU VOWEL SIGN AU -0C55..0C56 ; Other_Alphabetic # Mn [2] TELUGU LENGTH MARK..TELUGU AI LENGTH MARK -0C62..0C63 ; Other_Alphabetic # Mn [2] TELUGU VOWEL SIGN VOCALIC L..TELUGU VOWEL SIGN VOCALIC LL -0C81 ; Other_Alphabetic # Mn KANNADA SIGN CANDRABINDU -0C82..0C83 ; Other_Alphabetic # Mc [2] KANNADA SIGN ANUSVARA..KANNADA SIGN VISARGA -0CBE ; Other_Alphabetic # Mc KANNADA VOWEL SIGN AA -0CBF ; Other_Alphabetic # Mn KANNADA VOWEL SIGN I -0CC0..0CC4 ; Other_Alphabetic # Mc [5] KANNADA VOWEL SIGN II..KANNADA VOWEL SIGN VOCALIC RR -0CC6 ; Other_Alphabetic # Mn KANNADA VOWEL SIGN E -0CC7..0CC8 ; Other_Alphabetic # Mc [2] KANNADA VOWEL SIGN EE..KANNADA VOWEL SIGN AI -0CCA..0CCB ; Other_Alphabetic # Mc [2] KANNADA VOWEL SIGN O..KANNADA VOWEL SIGN OO -0CCC ; Other_Alphabetic # Mn KANNADA VOWEL SIGN AU -0CD5..0CD6 ; Other_Alphabetic # Mc [2] KANNADA LENGTH MARK..KANNADA AI LENGTH MARK -0CE2..0CE3 ; Other_Alphabetic # Mn [2] KANNADA VOWEL SIGN VOCALIC L..KANNADA VOWEL SIGN VOCALIC LL -0D00..0D01 ; Other_Alphabetic # Mn [2] MALAYALAM SIGN COMBINING ANUSVARA ABOVE..MALAYALAM SIGN CANDRABINDU -0D02..0D03 ; Other_Alphabetic # Mc [2] MALAYALAM SIGN ANUSVARA..MALAYALAM SIGN VISARGA -0D3E..0D40 ; Other_Alphabetic # Mc [3] MALAYALAM VOWEL SIGN AA..MALAYALAM VOWEL SIGN II -0D41..0D44 ; Other_Alphabetic # Mn [4] MALAYALAM VOWEL SIGN U..MALAYALAM VOWEL SIGN VOCALIC RR -0D46..0D48 ; Other_Alphabetic # Mc [3] MALAYALAM VOWEL SIGN E..MALAYALAM VOWEL SIGN AI -0D4A..0D4C ; Other_Alphabetic # Mc [3] MALAYALAM VOWEL SIGN O..MALAYALAM VOWEL SIGN AU -0D57 ; Other_Alphabetic # Mc MALAYALAM AU LENGTH MARK -0D62..0D63 ; Other_Alphabetic # Mn [2] MALAYALAM VOWEL SIGN VOCALIC L..MALAYALAM VOWEL SIGN VOCALIC LL -0D82..0D83 ; Other_Alphabetic # Mc [2] SINHALA SIGN ANUSVARAYA..SINHALA SIGN VISARGAYA -0DCF..0DD1 ; Other_Alphabetic # Mc [3] SINHALA VOWEL SIGN AELA-PILLA..SINHALA VOWEL SIGN DIGA AEDA-PILLA -0DD2..0DD4 ; Other_Alphabetic # Mn [3] SINHALA VOWEL SIGN KETTI IS-PILLA..SINHALA VOWEL SIGN KETTI PAA-PILLA -0DD6 ; Other_Alphabetic # Mn SINHALA VOWEL SIGN DIGA PAA-PILLA -0DD8..0DDF ; Other_Alphabetic # Mc [8] SINHALA VOWEL SIGN GAETTA-PILLA..SINHALA VOWEL SIGN GAYANUKITTA -0DF2..0DF3 ; Other_Alphabetic # Mc [2] SINHALA VOWEL SIGN DIGA GAETTA-PILLA..SINHALA VOWEL SIGN DIGA GAYANUKITTA -0E31 ; Other_Alphabetic # Mn THAI CHARACTER MAI HAN-AKAT -0E34..0E3A ; Other_Alphabetic # Mn [7] THAI CHARACTER SARA I..THAI CHARACTER PHINTHU -0E4D ; Other_Alphabetic # Mn THAI CHARACTER NIKHAHIT -0EB1 ; Other_Alphabetic # Mn LAO VOWEL SIGN MAI KAN -0EB4..0EB9 ; Other_Alphabetic # Mn [6] LAO VOWEL SIGN I..LAO VOWEL SIGN UU -0EBB..0EBC ; Other_Alphabetic # Mn [2] LAO VOWEL SIGN MAI KON..LAO SEMIVOWEL SIGN LO -0ECD ; Other_Alphabetic # Mn LAO NIGGAHITA -0F71..0F7E ; Other_Alphabetic # Mn [14] TIBETAN VOWEL SIGN AA..TIBETAN SIGN RJES SU NGA RO -0F7F ; Other_Alphabetic # Mc TIBETAN SIGN RNAM BCAD -0F80..0F81 ; Other_Alphabetic # Mn [2] TIBETAN VOWEL SIGN REVERSED I..TIBETAN VOWEL SIGN REVERSED II -0F8D..0F97 ; Other_Alphabetic # Mn [11] TIBETAN SUBJOINED SIGN LCE TSA CAN..TIBETAN SUBJOINED LETTER JA -0F99..0FBC ; Other_Alphabetic # Mn [36] TIBETAN SUBJOINED LETTER NYA..TIBETAN SUBJOINED LETTER FIXED-FORM RA -102B..102C ; Other_Alphabetic # Mc [2] MYANMAR VOWEL SIGN TALL AA..MYANMAR VOWEL SIGN AA -102D..1030 ; Other_Alphabetic # Mn [4] MYANMAR VOWEL SIGN I..MYANMAR VOWEL SIGN UU -1031 ; Other_Alphabetic # Mc MYANMAR VOWEL SIGN E -1032..1036 ; Other_Alphabetic # Mn [5] MYANMAR VOWEL SIGN AI..MYANMAR SIGN ANUSVARA -1038 ; Other_Alphabetic # Mc MYANMAR SIGN VISARGA -103B..103C ; Other_Alphabetic # Mc [2] MYANMAR CONSONANT SIGN MEDIAL YA..MYANMAR CONSONANT SIGN MEDIAL RA -103D..103E ; Other_Alphabetic # Mn [2] MYANMAR CONSONANT SIGN MEDIAL WA..MYANMAR CONSONANT SIGN MEDIAL HA -1056..1057 ; Other_Alphabetic # Mc [2] MYANMAR VOWEL SIGN VOCALIC R..MYANMAR VOWEL SIGN VOCALIC RR -1058..1059 ; Other_Alphabetic # Mn [2] MYANMAR VOWEL SIGN VOCALIC L..MYANMAR VOWEL SIGN VOCALIC LL -105E..1060 ; Other_Alphabetic # Mn [3] MYANMAR CONSONANT SIGN MON MEDIAL NA..MYANMAR CONSONANT SIGN MON MEDIAL LA -1062 ; Other_Alphabetic # Mc MYANMAR VOWEL SIGN SGAW KAREN EU -1067..1068 ; Other_Alphabetic # Mc [2] MYANMAR VOWEL SIGN WESTERN PWO KAREN EU..MYANMAR VOWEL SIGN WESTERN PWO KAREN UE -1071..1074 ; Other_Alphabetic # Mn [4] MYANMAR VOWEL SIGN GEBA KAREN I..MYANMAR VOWEL SIGN KAYAH EE -1082 ; Other_Alphabetic # Mn MYANMAR CONSONANT SIGN SHAN MEDIAL WA -1083..1084 ; Other_Alphabetic # Mc [2] MYANMAR VOWEL SIGN SHAN AA..MYANMAR VOWEL SIGN SHAN E -1085..1086 ; Other_Alphabetic # Mn [2] MYANMAR VOWEL SIGN SHAN E ABOVE..MYANMAR VOWEL SIGN SHAN FINAL Y -109C ; Other_Alphabetic # Mc MYANMAR VOWEL SIGN AITON A -109D ; Other_Alphabetic # Mn MYANMAR VOWEL SIGN AITON AI -135F ; Other_Alphabetic # Mn ETHIOPIC COMBINING GEMINATION MARK -1712..1713 ; Other_Alphabetic # Mn [2] TAGALOG VOWEL SIGN I..TAGALOG VOWEL SIGN U -1732..1733 ; Other_Alphabetic # Mn [2] HANUNOO VOWEL SIGN I..HANUNOO VOWEL SIGN U -1752..1753 ; Other_Alphabetic # Mn [2] BUHID VOWEL SIGN I..BUHID VOWEL SIGN U -1772..1773 ; Other_Alphabetic # Mn [2] TAGBANWA VOWEL SIGN I..TAGBANWA VOWEL SIGN U -17B6 ; Other_Alphabetic # Mc KHMER VOWEL SIGN AA -17B7..17BD ; Other_Alphabetic # Mn [7] KHMER VOWEL SIGN I..KHMER VOWEL SIGN UA -17BE..17C5 ; Other_Alphabetic # Mc [8] KHMER VOWEL SIGN OE..KHMER VOWEL SIGN AU -17C6 ; Other_Alphabetic # Mn KHMER SIGN NIKAHIT -17C7..17C8 ; Other_Alphabetic # Mc [2] KHMER SIGN REAHMUK..KHMER SIGN YUUKALEAPINTU -1885..1886 ; Other_Alphabetic # Mn [2] MONGOLIAN LETTER ALI GALI BALUDA..MONGOLIAN LETTER ALI GALI THREE BALUDA -18A9 ; Other_Alphabetic # Mn MONGOLIAN LETTER ALI GALI DAGALGA -1920..1922 ; Other_Alphabetic # Mn [3] LIMBU VOWEL SIGN A..LIMBU VOWEL SIGN U -1923..1926 ; Other_Alphabetic # Mc [4] LIMBU VOWEL SIGN EE..LIMBU VOWEL SIGN AU -1927..1928 ; Other_Alphabetic # Mn [2] LIMBU VOWEL SIGN E..LIMBU VOWEL SIGN O -1929..192B ; Other_Alphabetic # Mc [3] LIMBU SUBJOINED LETTER YA..LIMBU SUBJOINED LETTER WA -1930..1931 ; Other_Alphabetic # Mc [2] LIMBU SMALL LETTER KA..LIMBU SMALL LETTER NGA -1932 ; Other_Alphabetic # Mn LIMBU SMALL LETTER ANUSVARA -1933..1938 ; Other_Alphabetic # Mc [6] LIMBU SMALL LETTER TA..LIMBU SMALL LETTER LA -1A17..1A18 ; Other_Alphabetic # Mn [2] BUGINESE VOWEL SIGN I..BUGINESE VOWEL SIGN U -1A19..1A1A ; Other_Alphabetic # Mc [2] BUGINESE VOWEL SIGN E..BUGINESE VOWEL SIGN O -1A1B ; Other_Alphabetic # Mn BUGINESE VOWEL SIGN AE -1A55 ; Other_Alphabetic # Mc TAI THAM CONSONANT SIGN MEDIAL RA -1A56 ; Other_Alphabetic # Mn TAI THAM CONSONANT SIGN MEDIAL LA -1A57 ; Other_Alphabetic # Mc TAI THAM CONSONANT SIGN LA TANG LAI -1A58..1A5E ; Other_Alphabetic # Mn [7] TAI THAM SIGN MAI KANG LAI..TAI THAM CONSONANT SIGN SA -1A61 ; Other_Alphabetic # Mc TAI THAM VOWEL SIGN A -1A62 ; Other_Alphabetic # Mn TAI THAM VOWEL SIGN MAI SAT -1A63..1A64 ; Other_Alphabetic # Mc [2] TAI THAM VOWEL SIGN AA..TAI THAM VOWEL SIGN TALL AA -1A65..1A6C ; Other_Alphabetic # Mn [8] TAI THAM VOWEL SIGN I..TAI THAM VOWEL SIGN OA BELOW -1A6D..1A72 ; Other_Alphabetic # Mc [6] TAI THAM VOWEL SIGN OY..TAI THAM VOWEL SIGN THAM AI -1A73..1A74 ; Other_Alphabetic # Mn [2] TAI THAM VOWEL SIGN OA ABOVE..TAI THAM SIGN MAI KANG -1B00..1B03 ; Other_Alphabetic # Mn [4] BALINESE SIGN ULU RICEM..BALINESE SIGN SURANG -1B04 ; Other_Alphabetic # Mc BALINESE SIGN BISAH -1B35 ; Other_Alphabetic # Mc BALINESE VOWEL SIGN TEDUNG -1B36..1B3A ; Other_Alphabetic # Mn [5] BALINESE VOWEL SIGN ULU..BALINESE VOWEL SIGN RA REPA -1B3B ; Other_Alphabetic # Mc BALINESE VOWEL SIGN RA REPA TEDUNG -1B3C ; Other_Alphabetic # Mn BALINESE VOWEL SIGN LA LENGA -1B3D..1B41 ; Other_Alphabetic # Mc [5] BALINESE VOWEL SIGN LA LENGA TEDUNG..BALINESE VOWEL SIGN TALING REPA TEDUNG -1B42 ; Other_Alphabetic # Mn BALINESE VOWEL SIGN PEPET -1B43 ; Other_Alphabetic # Mc BALINESE VOWEL SIGN PEPET TEDUNG -1B80..1B81 ; Other_Alphabetic # Mn [2] SUNDANESE SIGN PANYECEK..SUNDANESE SIGN PANGLAYAR -1B82 ; Other_Alphabetic # Mc SUNDANESE SIGN PANGWISAD -1BA1 ; Other_Alphabetic # Mc SUNDANESE CONSONANT SIGN PAMINGKAL -1BA2..1BA5 ; Other_Alphabetic # Mn [4] SUNDANESE CONSONANT SIGN PANYAKRA..SUNDANESE VOWEL SIGN PANYUKU -1BA6..1BA7 ; Other_Alphabetic # Mc [2] SUNDANESE VOWEL SIGN PANAELAENG..SUNDANESE VOWEL SIGN PANOLONG -1BA8..1BA9 ; Other_Alphabetic # Mn [2] SUNDANESE VOWEL SIGN PAMEPET..SUNDANESE VOWEL SIGN PANEULEUNG -1BAC..1BAD ; Other_Alphabetic # Mn [2] SUNDANESE CONSONANT SIGN PASANGAN MA..SUNDANESE CONSONANT SIGN PASANGAN WA -1BE7 ; Other_Alphabetic # Mc BATAK VOWEL SIGN E -1BE8..1BE9 ; Other_Alphabetic # Mn [2] BATAK VOWEL SIGN PAKPAK E..BATAK VOWEL SIGN EE -1BEA..1BEC ; Other_Alphabetic # Mc [3] BATAK VOWEL SIGN I..BATAK VOWEL SIGN O -1BED ; Other_Alphabetic # Mn BATAK VOWEL SIGN KARO O -1BEE ; Other_Alphabetic # Mc BATAK VOWEL SIGN U -1BEF..1BF1 ; Other_Alphabetic # Mn [3] BATAK VOWEL SIGN U FOR SIMALUNGUN SA..BATAK CONSONANT SIGN H -1C24..1C2B ; Other_Alphabetic # Mc [8] LEPCHA SUBJOINED LETTER YA..LEPCHA VOWEL SIGN UU -1C2C..1C33 ; Other_Alphabetic # Mn [8] LEPCHA VOWEL SIGN E..LEPCHA CONSONANT SIGN T -1C34..1C35 ; Other_Alphabetic # Mc [2] LEPCHA CONSONANT SIGN NYIN-DO..LEPCHA CONSONANT SIGN KANG -1CF2..1CF3 ; Other_Alphabetic # Mc [2] VEDIC SIGN ARDHAVISARGA..VEDIC SIGN ROTATED ARDHAVISARGA -1DE7..1DF4 ; Other_Alphabetic # Mn [14] COMBINING LATIN SMALL LETTER ALPHA..COMBINING LATIN SMALL LETTER U WITH DIAERESIS -24B6..24E9 ; Other_Alphabetic # So [52] CIRCLED LATIN CAPITAL LETTER A..CIRCLED LATIN SMALL LETTER Z -2DE0..2DFF ; Other_Alphabetic # Mn [32] COMBINING CYRILLIC LETTER BE..COMBINING CYRILLIC LETTER IOTIFIED BIG YUS -A674..A67B ; Other_Alphabetic # Mn [8] COMBINING CYRILLIC LETTER UKRAINIAN IE..COMBINING CYRILLIC LETTER OMEGA -A69E..A69F ; Other_Alphabetic # Mn [2] COMBINING CYRILLIC LETTER EF..COMBINING CYRILLIC LETTER IOTIFIED E -A823..A824 ; Other_Alphabetic # Mc [2] SYLOTI NAGRI VOWEL SIGN A..SYLOTI NAGRI VOWEL SIGN I -A825..A826 ; Other_Alphabetic # Mn [2] SYLOTI NAGRI VOWEL SIGN U..SYLOTI NAGRI VOWEL SIGN E -A827 ; Other_Alphabetic # Mc SYLOTI NAGRI VOWEL SIGN OO -A880..A881 ; Other_Alphabetic # Mc [2] SAURASHTRA SIGN ANUSVARA..SAURASHTRA SIGN VISARGA -A8B4..A8C3 ; Other_Alphabetic # Mc [16] SAURASHTRA CONSONANT SIGN HAARU..SAURASHTRA VOWEL SIGN AU -A8C5 ; Other_Alphabetic # Mn SAURASHTRA SIGN CANDRABINDU -A926..A92A ; Other_Alphabetic # Mn [5] KAYAH LI VOWEL UE..KAYAH LI VOWEL O -A947..A951 ; Other_Alphabetic # Mn [11] REJANG VOWEL SIGN I..REJANG CONSONANT SIGN R -A952 ; Other_Alphabetic # Mc REJANG CONSONANT SIGN H -A980..A982 ; Other_Alphabetic # Mn [3] JAVANESE SIGN PANYANGGA..JAVANESE SIGN LAYAR -A983 ; Other_Alphabetic # Mc JAVANESE SIGN WIGNYAN -A9B4..A9B5 ; Other_Alphabetic # Mc [2] JAVANESE VOWEL SIGN TARUNG..JAVANESE VOWEL SIGN TOLONG -A9B6..A9B9 ; Other_Alphabetic # Mn [4] JAVANESE VOWEL SIGN WULU..JAVANESE VOWEL SIGN SUKU MENDUT -A9BA..A9BB ; Other_Alphabetic # Mc [2] JAVANESE VOWEL SIGN TALING..JAVANESE VOWEL SIGN DIRGA MURE -A9BC ; Other_Alphabetic # Mn JAVANESE VOWEL SIGN PEPET -A9BD..A9BF ; Other_Alphabetic # Mc [3] JAVANESE CONSONANT SIGN KERET..JAVANESE CONSONANT SIGN CAKRA -AA29..AA2E ; Other_Alphabetic # Mn [6] CHAM VOWEL SIGN AA..CHAM VOWEL SIGN OE -AA2F..AA30 ; Other_Alphabetic # Mc [2] CHAM VOWEL SIGN O..CHAM VOWEL SIGN AI -AA31..AA32 ; Other_Alphabetic # Mn [2] CHAM VOWEL SIGN AU..CHAM VOWEL SIGN UE -AA33..AA34 ; Other_Alphabetic # Mc [2] CHAM CONSONANT SIGN YA..CHAM CONSONANT SIGN RA -AA35..AA36 ; Other_Alphabetic # Mn [2] CHAM CONSONANT SIGN LA..CHAM CONSONANT SIGN WA -AA43 ; Other_Alphabetic # Mn CHAM CONSONANT SIGN FINAL NG -AA4C ; Other_Alphabetic # Mn CHAM CONSONANT SIGN FINAL M -AA4D ; Other_Alphabetic # Mc CHAM CONSONANT SIGN FINAL H -AAB0 ; Other_Alphabetic # Mn TAI VIET MAI KANG -AAB2..AAB4 ; Other_Alphabetic # Mn [3] TAI VIET VOWEL I..TAI VIET VOWEL U -AAB7..AAB8 ; Other_Alphabetic # Mn [2] TAI VIET MAI KHIT..TAI VIET VOWEL IA -AABE ; Other_Alphabetic # Mn TAI VIET VOWEL AM -AAEB ; Other_Alphabetic # Mc MEETEI MAYEK VOWEL SIGN II -AAEC..AAED ; Other_Alphabetic # Mn [2] MEETEI MAYEK VOWEL SIGN UU..MEETEI MAYEK VOWEL SIGN AAI -AAEE..AAEF ; Other_Alphabetic # Mc [2] MEETEI MAYEK VOWEL SIGN AU..MEETEI MAYEK VOWEL SIGN AAU -AAF5 ; Other_Alphabetic # Mc MEETEI MAYEK VOWEL SIGN VISARGA -ABE3..ABE4 ; Other_Alphabetic # Mc [2] MEETEI MAYEK VOWEL SIGN ONAP..MEETEI MAYEK VOWEL SIGN INAP -ABE5 ; Other_Alphabetic # Mn MEETEI MAYEK VOWEL SIGN ANAP -ABE6..ABE7 ; Other_Alphabetic # Mc [2] MEETEI MAYEK VOWEL SIGN YENAP..MEETEI MAYEK VOWEL SIGN SOUNAP -ABE8 ; Other_Alphabetic # Mn MEETEI MAYEK VOWEL SIGN UNAP -ABE9..ABEA ; Other_Alphabetic # Mc [2] MEETEI MAYEK VOWEL SIGN CHEINAP..MEETEI MAYEK VOWEL SIGN NUNG -FB1E ; Other_Alphabetic # Mn HEBREW POINT JUDEO-SPANISH VARIKA -10376..1037A ; Other_Alphabetic # Mn [5] COMBINING OLD PERMIC LETTER AN..COMBINING OLD PERMIC LETTER SII -10A01..10A03 ; Other_Alphabetic # Mn [3] KHAROSHTHI VOWEL SIGN I..KHAROSHTHI VOWEL SIGN VOCALIC R -10A05..10A06 ; Other_Alphabetic # Mn [2] KHAROSHTHI VOWEL SIGN E..KHAROSHTHI VOWEL SIGN O -10A0C..10A0F ; Other_Alphabetic # Mn [4] KHAROSHTHI VOWEL LENGTH MARK..KHAROSHTHI SIGN VISARGA -11000 ; Other_Alphabetic # Mc BRAHMI SIGN CANDRABINDU -11001 ; Other_Alphabetic # Mn BRAHMI SIGN ANUSVARA -11002 ; Other_Alphabetic # Mc BRAHMI SIGN VISARGA -11038..11045 ; Other_Alphabetic # Mn [14] BRAHMI VOWEL SIGN AA..BRAHMI VOWEL SIGN AU -11082 ; Other_Alphabetic # Mc KAITHI SIGN VISARGA -110B0..110B2 ; Other_Alphabetic # Mc [3] KAITHI VOWEL SIGN AA..KAITHI VOWEL SIGN II -110B3..110B6 ; Other_Alphabetic # Mn [4] KAITHI VOWEL SIGN U..KAITHI VOWEL SIGN AI -110B7..110B8 ; Other_Alphabetic # Mc [2] KAITHI VOWEL SIGN O..KAITHI VOWEL SIGN AU -11100..11102 ; Other_Alphabetic # Mn [3] CHAKMA SIGN CANDRABINDU..CHAKMA SIGN VISARGA -11127..1112B ; Other_Alphabetic # Mn [5] CHAKMA VOWEL SIGN A..CHAKMA VOWEL SIGN UU -1112C ; Other_Alphabetic # Mc CHAKMA VOWEL SIGN E -1112D..11132 ; Other_Alphabetic # Mn [6] CHAKMA VOWEL SIGN AI..CHAKMA AU MARK -11180..11181 ; Other_Alphabetic # Mn [2] SHARADA SIGN CANDRABINDU..SHARADA SIGN ANUSVARA -11182 ; Other_Alphabetic # Mc SHARADA SIGN VISARGA -111B3..111B5 ; Other_Alphabetic # Mc [3] SHARADA VOWEL SIGN AA..SHARADA VOWEL SIGN II -111B6..111BE ; Other_Alphabetic # Mn [9] SHARADA VOWEL SIGN U..SHARADA VOWEL SIGN O -111BF ; Other_Alphabetic # Mc SHARADA VOWEL SIGN AU -1122C..1122E ; Other_Alphabetic # Mc [3] KHOJKI VOWEL SIGN AA..KHOJKI VOWEL SIGN II -1122F..11231 ; Other_Alphabetic # Mn [3] KHOJKI VOWEL SIGN U..KHOJKI VOWEL SIGN AI -11232..11233 ; Other_Alphabetic # Mc [2] KHOJKI VOWEL SIGN O..KHOJKI VOWEL SIGN AU -11234 ; Other_Alphabetic # Mn KHOJKI SIGN ANUSVARA -11237 ; Other_Alphabetic # Mn KHOJKI SIGN SHADDA -1123E ; Other_Alphabetic # Mn KHOJKI SIGN SUKUN -112DF ; Other_Alphabetic # Mn KHUDAWADI SIGN ANUSVARA -112E0..112E2 ; Other_Alphabetic # Mc [3] KHUDAWADI VOWEL SIGN AA..KHUDAWADI VOWEL SIGN II -112E3..112E8 ; Other_Alphabetic # Mn [6] KHUDAWADI VOWEL SIGN U..KHUDAWADI VOWEL SIGN AU -11300..11301 ; Other_Alphabetic # Mn [2] GRANTHA SIGN COMBINING ANUSVARA ABOVE..GRANTHA SIGN CANDRABINDU -11302..11303 ; Other_Alphabetic # Mc [2] GRANTHA SIGN ANUSVARA..GRANTHA SIGN VISARGA -1133E..1133F ; Other_Alphabetic # Mc [2] GRANTHA VOWEL SIGN AA..GRANTHA VOWEL SIGN I -11340 ; Other_Alphabetic # Mn GRANTHA VOWEL SIGN II -11341..11344 ; Other_Alphabetic # Mc [4] GRANTHA VOWEL SIGN U..GRANTHA VOWEL SIGN VOCALIC RR -11347..11348 ; Other_Alphabetic # Mc [2] GRANTHA VOWEL SIGN EE..GRANTHA VOWEL SIGN AI -1134B..1134C ; Other_Alphabetic # Mc [2] GRANTHA VOWEL SIGN OO..GRANTHA VOWEL SIGN AU -11357 ; Other_Alphabetic # Mc GRANTHA AU LENGTH MARK -11362..11363 ; Other_Alphabetic # Mc [2] GRANTHA VOWEL SIGN VOCALIC L..GRANTHA VOWEL SIGN VOCALIC LL -11435..11437 ; Other_Alphabetic # Mc [3] NEWA VOWEL SIGN AA..NEWA VOWEL SIGN II -11438..1143F ; Other_Alphabetic # Mn [8] NEWA VOWEL SIGN U..NEWA VOWEL SIGN AI -11440..11441 ; Other_Alphabetic # Mc [2] NEWA VOWEL SIGN O..NEWA VOWEL SIGN AU -11443..11444 ; Other_Alphabetic # Mn [2] NEWA SIGN CANDRABINDU..NEWA SIGN ANUSVARA -11445 ; Other_Alphabetic # Mc NEWA SIGN VISARGA -114B0..114B2 ; Other_Alphabetic # Mc [3] TIRHUTA VOWEL SIGN AA..TIRHUTA VOWEL SIGN II -114B3..114B8 ; Other_Alphabetic # Mn [6] TIRHUTA VOWEL SIGN U..TIRHUTA VOWEL SIGN VOCALIC LL -114B9 ; Other_Alphabetic # Mc TIRHUTA VOWEL SIGN E -114BA ; Other_Alphabetic # Mn TIRHUTA VOWEL SIGN SHORT E -114BB..114BE ; Other_Alphabetic # Mc [4] TIRHUTA VOWEL SIGN AI..TIRHUTA VOWEL SIGN AU -114BF..114C0 ; Other_Alphabetic # Mn [2] TIRHUTA SIGN CANDRABINDU..TIRHUTA SIGN ANUSVARA -114C1 ; Other_Alphabetic # Mc TIRHUTA SIGN VISARGA -115AF..115B1 ; Other_Alphabetic # Mc [3] SIDDHAM VOWEL SIGN AA..SIDDHAM VOWEL SIGN II -115B2..115B5 ; Other_Alphabetic # Mn [4] SIDDHAM VOWEL SIGN U..SIDDHAM VOWEL SIGN VOCALIC RR -115B8..115BB ; Other_Alphabetic # Mc [4] SIDDHAM VOWEL SIGN E..SIDDHAM VOWEL SIGN AU -115BC..115BD ; Other_Alphabetic # Mn [2] SIDDHAM SIGN CANDRABINDU..SIDDHAM SIGN ANUSVARA -115BE ; Other_Alphabetic # Mc SIDDHAM SIGN VISARGA -115DC..115DD ; Other_Alphabetic # Mn [2] SIDDHAM VOWEL SIGN ALTERNATE U..SIDDHAM VOWEL SIGN ALTERNATE UU -11630..11632 ; Other_Alphabetic # Mc [3] MODI VOWEL SIGN AA..MODI VOWEL SIGN II -11633..1163A ; Other_Alphabetic # Mn [8] MODI VOWEL SIGN U..MODI VOWEL SIGN AI -1163B..1163C ; Other_Alphabetic # Mc [2] MODI VOWEL SIGN O..MODI VOWEL SIGN AU -1163D ; Other_Alphabetic # Mn MODI SIGN ANUSVARA -1163E ; Other_Alphabetic # Mc MODI SIGN VISARGA -11640 ; Other_Alphabetic # Mn MODI SIGN ARDHACANDRA -116AB ; Other_Alphabetic # Mn TAKRI SIGN ANUSVARA -116AC ; Other_Alphabetic # Mc TAKRI SIGN VISARGA -116AD ; Other_Alphabetic # Mn TAKRI VOWEL SIGN AA -116AE..116AF ; Other_Alphabetic # Mc [2] TAKRI VOWEL SIGN I..TAKRI VOWEL SIGN II -116B0..116B5 ; Other_Alphabetic # Mn [6] TAKRI VOWEL SIGN U..TAKRI VOWEL SIGN AU -1171D..1171F ; Other_Alphabetic # Mn [3] AHOM CONSONANT SIGN MEDIAL LA..AHOM CONSONANT SIGN MEDIAL LIGATING RA -11720..11721 ; Other_Alphabetic # Mc [2] AHOM VOWEL SIGN A..AHOM VOWEL SIGN AA -11722..11725 ; Other_Alphabetic # Mn [4] AHOM VOWEL SIGN I..AHOM VOWEL SIGN UU -11726 ; Other_Alphabetic # Mc AHOM VOWEL SIGN E -11727..1172A ; Other_Alphabetic # Mn [4] AHOM VOWEL SIGN AW..AHOM VOWEL SIGN AM -11A01..11A06 ; Other_Alphabetic # Mn [6] ZANABAZAR SQUARE VOWEL SIGN I..ZANABAZAR SQUARE VOWEL SIGN O -11A07..11A08 ; Other_Alphabetic # Mc [2] ZANABAZAR SQUARE VOWEL SIGN AI..ZANABAZAR SQUARE VOWEL SIGN AU -11A09..11A0A ; Other_Alphabetic # Mn [2] ZANABAZAR SQUARE VOWEL SIGN REVERSED I..ZANABAZAR SQUARE VOWEL LENGTH MARK -11A35..11A38 ; Other_Alphabetic # Mn [4] ZANABAZAR SQUARE SIGN CANDRABINDU..ZANABAZAR SQUARE SIGN ANUSVARA -11A39 ; Other_Alphabetic # Mc ZANABAZAR SQUARE SIGN VISARGA -11A3B..11A3E ; Other_Alphabetic # Mn [4] ZANABAZAR SQUARE CLUSTER-FINAL LETTER YA..ZANABAZAR SQUARE CLUSTER-FINAL LETTER VA -11A51..11A56 ; Other_Alphabetic # Mn [6] SOYOMBO VOWEL SIGN I..SOYOMBO VOWEL SIGN OE -11A57..11A58 ; Other_Alphabetic # Mc [2] SOYOMBO VOWEL SIGN AI..SOYOMBO VOWEL SIGN AU -11A59..11A5B ; Other_Alphabetic # Mn [3] SOYOMBO VOWEL SIGN VOCALIC R..SOYOMBO VOWEL LENGTH MARK -11A8A..11A96 ; Other_Alphabetic # Mn [13] SOYOMBO FINAL CONSONANT SIGN G..SOYOMBO SIGN ANUSVARA -11A97 ; Other_Alphabetic # Mc SOYOMBO SIGN VISARGA -11C2F ; Other_Alphabetic # Mc BHAIKSUKI VOWEL SIGN AA -11C30..11C36 ; Other_Alphabetic # Mn [7] BHAIKSUKI VOWEL SIGN I..BHAIKSUKI VOWEL SIGN VOCALIC L -11C38..11C3D ; Other_Alphabetic # Mn [6] BHAIKSUKI VOWEL SIGN E..BHAIKSUKI SIGN ANUSVARA -11C3E ; Other_Alphabetic # Mc BHAIKSUKI SIGN VISARGA -11C92..11CA7 ; Other_Alphabetic # Mn [22] MARCHEN SUBJOINED LETTER KA..MARCHEN SUBJOINED LETTER ZA -11CA9 ; Other_Alphabetic # Mc MARCHEN SUBJOINED LETTER YA -11CAA..11CB0 ; Other_Alphabetic # Mn [7] MARCHEN SUBJOINED LETTER RA..MARCHEN VOWEL SIGN AA -11CB1 ; Other_Alphabetic # Mc MARCHEN VOWEL SIGN I -11CB2..11CB3 ; Other_Alphabetic # Mn [2] MARCHEN VOWEL SIGN U..MARCHEN VOWEL SIGN E -11CB4 ; Other_Alphabetic # Mc MARCHEN VOWEL SIGN O -11CB5..11CB6 ; Other_Alphabetic # Mn [2] MARCHEN SIGN ANUSVARA..MARCHEN SIGN CANDRABINDU -11D31..11D36 ; Other_Alphabetic # Mn [6] MASARAM GONDI VOWEL SIGN AA..MASARAM GONDI VOWEL SIGN VOCALIC R -11D3A ; Other_Alphabetic # Mn MASARAM GONDI VOWEL SIGN E -11D3C..11D3D ; Other_Alphabetic # Mn [2] MASARAM GONDI VOWEL SIGN AI..MASARAM GONDI VOWEL SIGN O -11D3F..11D41 ; Other_Alphabetic # Mn [3] MASARAM GONDI VOWEL SIGN AU..MASARAM GONDI SIGN VISARGA -11D43 ; Other_Alphabetic # Mn MASARAM GONDI SIGN CANDRA -11D47 ; Other_Alphabetic # Mn MASARAM GONDI RA-KARA -16B30..16B36 ; Other_Alphabetic # Mn [7] PAHAWH HMONG MARK CIM TUB..PAHAWH HMONG MARK CIM TAUM -16F51..16F7E ; Other_Alphabetic # Mc [46] MIAO SIGN ASPIRATION..MIAO VOWEL SIGN NG -1BC9E ; Other_Alphabetic # Mn DUPLOYAN DOUBLE MARK -1E000..1E006 ; Other_Alphabetic # Mn [7] COMBINING GLAGOLITIC LETTER AZU..COMBINING GLAGOLITIC LETTER ZHIVETE -1E008..1E018 ; Other_Alphabetic # Mn [17] COMBINING GLAGOLITIC LETTER ZEMLJA..COMBINING GLAGOLITIC LETTER HERU -1E01B..1E021 ; Other_Alphabetic # Mn [7] COMBINING GLAGOLITIC LETTER SHTA..COMBINING GLAGOLITIC LETTER YATI -1E023..1E024 ; Other_Alphabetic # Mn [2] COMBINING GLAGOLITIC LETTER YU..COMBINING GLAGOLITIC LETTER SMALL YUS -1E026..1E02A ; Other_Alphabetic # Mn [5] COMBINING GLAGOLITIC LETTER YO..COMBINING GLAGOLITIC LETTER FITA -1E947 ; Other_Alphabetic # Mn ADLAM HAMZA -1F130..1F149 ; Other_Alphabetic # So [26] SQUARED LATIN CAPITAL LETTER A..SQUARED LATIN CAPITAL LETTER Z -1F150..1F169 ; Other_Alphabetic # So [26] NEGATIVE CIRCLED LATIN CAPITAL LETTER A..NEGATIVE CIRCLED LATIN CAPITAL LETTER Z -1F170..1F189 ; Other_Alphabetic # So [26] NEGATIVE SQUARED LATIN CAPITAL LETTER A..NEGATIVE SQUARED LATIN CAPITAL LETTER Z - -# Total code points: 1300 - -# ================================================ - -3006 ; Ideographic # Lo IDEOGRAPHIC CLOSING MARK -3007 ; Ideographic # Nl IDEOGRAPHIC NUMBER ZERO -3021..3029 ; Ideographic # Nl [9] HANGZHOU NUMERAL ONE..HANGZHOU NUMERAL NINE -3038..303A ; Ideographic # Nl [3] HANGZHOU NUMERAL TEN..HANGZHOU NUMERAL THIRTY -3400..4DB5 ; Ideographic # Lo [6582] CJK UNIFIED IDEOGRAPH-3400..CJK UNIFIED IDEOGRAPH-4DB5 -4E00..9FEA ; Ideographic # Lo [20971] CJK UNIFIED IDEOGRAPH-4E00..CJK UNIFIED IDEOGRAPH-9FEA -F900..FA6D ; Ideographic # Lo [366] CJK COMPATIBILITY IDEOGRAPH-F900..CJK COMPATIBILITY IDEOGRAPH-FA6D -FA70..FAD9 ; Ideographic # Lo [106] CJK COMPATIBILITY IDEOGRAPH-FA70..CJK COMPATIBILITY IDEOGRAPH-FAD9 -17000..187EC ; Ideographic # Lo [6125] TANGUT IDEOGRAPH-17000..TANGUT IDEOGRAPH-187EC -18800..18AF2 ; Ideographic # Lo [755] TANGUT COMPONENT-001..TANGUT COMPONENT-755 -1B170..1B2FB ; Ideographic # Lo [396] NUSHU CHARACTER-1B170..NUSHU CHARACTER-1B2FB -20000..2A6D6 ; Ideographic # Lo [42711] CJK UNIFIED IDEOGRAPH-20000..CJK UNIFIED IDEOGRAPH-2A6D6 -2A700..2B734 ; Ideographic # Lo [4149] CJK UNIFIED IDEOGRAPH-2A700..CJK UNIFIED IDEOGRAPH-2B734 -2B740..2B81D ; Ideographic # Lo [222] CJK UNIFIED IDEOGRAPH-2B740..CJK UNIFIED IDEOGRAPH-2B81D -2B820..2CEA1 ; Ideographic # Lo [5762] CJK UNIFIED IDEOGRAPH-2B820..CJK UNIFIED IDEOGRAPH-2CEA1 -2CEB0..2EBE0 ; Ideographic # Lo [7473] CJK UNIFIED IDEOGRAPH-2CEB0..CJK UNIFIED IDEOGRAPH-2EBE0 -2F800..2FA1D ; Ideographic # Lo [542] CJK COMPATIBILITY IDEOGRAPH-2F800..CJK COMPATIBILITY IDEOGRAPH-2FA1D - -# Total code points: 96174 - -# ================================================ - -005E ; Diacritic # Sk CIRCUMFLEX ACCENT -0060 ; Diacritic # Sk GRAVE ACCENT -00A8 ; Diacritic # Sk DIAERESIS -00AF ; Diacritic # Sk MACRON -00B4 ; Diacritic # Sk ACUTE ACCENT -00B7 ; Diacritic # Po MIDDLE DOT -00B8 ; Diacritic # Sk CEDILLA -02B0..02C1 ; Diacritic # Lm [18] MODIFIER LETTER SMALL H..MODIFIER LETTER REVERSED GLOTTAL STOP -02C2..02C5 ; Diacritic # Sk [4] MODIFIER LETTER LEFT ARROWHEAD..MODIFIER LETTER DOWN ARROWHEAD -02C6..02D1 ; Diacritic # Lm [12] MODIFIER LETTER CIRCUMFLEX ACCENT..MODIFIER LETTER HALF TRIANGULAR COLON -02D2..02DF ; Diacritic # Sk [14] MODIFIER LETTER CENTRED RIGHT HALF RING..MODIFIER LETTER CROSS ACCENT -02E0..02E4 ; Diacritic # Lm [5] MODIFIER LETTER SMALL GAMMA..MODIFIER LETTER SMALL REVERSED GLOTTAL STOP -02E5..02EB ; Diacritic # Sk [7] MODIFIER LETTER EXTRA-HIGH TONE BAR..MODIFIER LETTER YANG DEPARTING TONE MARK -02EC ; Diacritic # Lm MODIFIER LETTER VOICING -02ED ; Diacritic # Sk MODIFIER LETTER UNASPIRATED -02EE ; Diacritic # Lm MODIFIER LETTER DOUBLE APOSTROPHE -02EF..02FF ; Diacritic # Sk [17] MODIFIER LETTER LOW DOWN ARROWHEAD..MODIFIER LETTER LOW LEFT ARROW -0300..034E ; Diacritic # Mn [79] COMBINING GRAVE ACCENT..COMBINING UPWARDS ARROW BELOW -0350..0357 ; Diacritic # Mn [8] COMBINING RIGHT ARROWHEAD ABOVE..COMBINING RIGHT HALF RING ABOVE -035D..0362 ; Diacritic # Mn [6] COMBINING DOUBLE BREVE..COMBINING DOUBLE RIGHTWARDS ARROW BELOW -0374 ; Diacritic # Lm GREEK NUMERAL SIGN -0375 ; Diacritic # Sk GREEK LOWER NUMERAL SIGN -037A ; Diacritic # Lm GREEK YPOGEGRAMMENI -0384..0385 ; Diacritic # Sk [2] GREEK TONOS..GREEK DIALYTIKA TONOS -0483..0487 ; Diacritic # Mn [5] COMBINING CYRILLIC TITLO..COMBINING CYRILLIC POKRYTIE -0559 ; Diacritic # Lm ARMENIAN MODIFIER LETTER LEFT HALF RING -0591..05A1 ; Diacritic # Mn [17] HEBREW ACCENT ETNAHTA..HEBREW ACCENT PAZER -05A3..05BD ; Diacritic # Mn [27] HEBREW ACCENT MUNAH..HEBREW POINT METEG -05BF ; Diacritic # Mn HEBREW POINT RAFE -05C1..05C2 ; Diacritic # Mn [2] HEBREW POINT SHIN DOT..HEBREW POINT SIN DOT -05C4 ; Diacritic # Mn HEBREW MARK UPPER DOT -064B..0652 ; Diacritic # Mn [8] ARABIC FATHATAN..ARABIC SUKUN -0657..0658 ; Diacritic # Mn [2] ARABIC INVERTED DAMMA..ARABIC MARK NOON GHUNNA -06DF..06E0 ; Diacritic # Mn [2] ARABIC SMALL HIGH ROUNDED ZERO..ARABIC SMALL HIGH UPRIGHT RECTANGULAR ZERO -06E5..06E6 ; Diacritic # Lm [2] ARABIC SMALL WAW..ARABIC SMALL YEH -06EA..06EC ; Diacritic # Mn [3] ARABIC EMPTY CENTRE LOW STOP..ARABIC ROUNDED HIGH STOP WITH FILLED CENTRE -0730..074A ; Diacritic # Mn [27] SYRIAC PTHAHA ABOVE..SYRIAC BARREKH -07A6..07B0 ; Diacritic # Mn [11] THAANA ABAFILI..THAANA SUKUN -07EB..07F3 ; Diacritic # Mn [9] NKO COMBINING SHORT HIGH TONE..NKO COMBINING DOUBLE DOT ABOVE -07F4..07F5 ; Diacritic # Lm [2] NKO HIGH TONE APOSTROPHE..NKO LOW TONE APOSTROPHE -0818..0819 ; Diacritic # Mn [2] SAMARITAN MARK OCCLUSION..SAMARITAN MARK DAGESH -08E3..08FE ; Diacritic # Mn [28] ARABIC TURNED DAMMA BELOW..ARABIC DAMMA WITH DOT -093C ; Diacritic # Mn DEVANAGARI SIGN NUKTA -094D ; Diacritic # Mn DEVANAGARI SIGN VIRAMA -0951..0954 ; Diacritic # Mn [4] DEVANAGARI STRESS SIGN UDATTA..DEVANAGARI ACUTE ACCENT -0971 ; Diacritic # Lm DEVANAGARI SIGN HIGH SPACING DOT -09BC ; Diacritic # Mn BENGALI SIGN NUKTA -09CD ; Diacritic # Mn BENGALI SIGN VIRAMA -0A3C ; Diacritic # Mn GURMUKHI SIGN NUKTA -0A4D ; Diacritic # Mn GURMUKHI SIGN VIRAMA -0ABC ; Diacritic # Mn GUJARATI SIGN NUKTA -0ACD ; Diacritic # Mn GUJARATI SIGN VIRAMA -0AFD..0AFF ; Diacritic # Mn [3] GUJARATI SIGN THREE-DOT NUKTA ABOVE..GUJARATI SIGN TWO-CIRCLE NUKTA ABOVE -0B3C ; Diacritic # Mn ORIYA SIGN NUKTA -0B4D ; Diacritic # Mn ORIYA SIGN VIRAMA -0BCD ; Diacritic # Mn TAMIL SIGN VIRAMA -0C4D ; Diacritic # Mn TELUGU SIGN VIRAMA -0CBC ; Diacritic # Mn KANNADA SIGN NUKTA -0CCD ; Diacritic # Mn KANNADA SIGN VIRAMA -0D3B..0D3C ; Diacritic # Mn [2] MALAYALAM SIGN VERTICAL BAR VIRAMA..MALAYALAM SIGN CIRCULAR VIRAMA -0D4D ; Diacritic # Mn MALAYALAM SIGN VIRAMA -0DCA ; Diacritic # Mn SINHALA SIGN AL-LAKUNA -0E47..0E4C ; Diacritic # Mn [6] THAI CHARACTER MAITAIKHU..THAI CHARACTER THANTHAKHAT -0E4E ; Diacritic # Mn THAI CHARACTER YAMAKKAN -0EC8..0ECC ; Diacritic # Mn [5] LAO TONE MAI EK..LAO CANCELLATION MARK -0F18..0F19 ; Diacritic # Mn [2] TIBETAN ASTROLOGICAL SIGN -KHYUD PA..TIBETAN ASTROLOGICAL SIGN SDONG TSHUGS -0F35 ; Diacritic # Mn TIBETAN MARK NGAS BZUNG NYI ZLA -0F37 ; Diacritic # Mn TIBETAN MARK NGAS BZUNG SGOR RTAGS -0F39 ; Diacritic # Mn TIBETAN MARK TSA -PHRU -0F3E..0F3F ; Diacritic # Mc [2] TIBETAN SIGN YAR TSHES..TIBETAN SIGN MAR TSHES -0F82..0F84 ; Diacritic # Mn [3] TIBETAN SIGN NYI ZLA NAA DA..TIBETAN MARK HALANTA -0F86..0F87 ; Diacritic # Mn [2] TIBETAN SIGN LCI RTAGS..TIBETAN SIGN YANG RTAGS -0FC6 ; Diacritic # Mn TIBETAN SYMBOL PADMA GDAN -1037 ; Diacritic # Mn MYANMAR SIGN DOT BELOW -1039..103A ; Diacritic # Mn [2] MYANMAR SIGN VIRAMA..MYANMAR SIGN ASAT -1087..108C ; Diacritic # Mc [6] MYANMAR SIGN SHAN TONE-2..MYANMAR SIGN SHAN COUNCIL TONE-3 -108D ; Diacritic # Mn MYANMAR SIGN SHAN COUNCIL EMPHATIC TONE -108F ; Diacritic # Mc MYANMAR SIGN RUMAI PALAUNG TONE-5 -109A..109B ; Diacritic # Mc [2] MYANMAR SIGN KHAMTI TONE-1..MYANMAR SIGN KHAMTI TONE-3 -17C9..17D3 ; Diacritic # Mn [11] KHMER SIGN MUUSIKATOAN..KHMER SIGN BATHAMASAT -17DD ; Diacritic # Mn KHMER SIGN ATTHACAN -1939..193B ; Diacritic # Mn [3] LIMBU SIGN MUKPHRENG..LIMBU SIGN SA-I -1A75..1A7C ; Diacritic # Mn [8] TAI THAM SIGN TONE-1..TAI THAM SIGN KHUEN-LUE KARAN -1A7F ; Diacritic # Mn TAI THAM COMBINING CRYPTOGRAMMIC DOT -1AB0..1ABD ; Diacritic # Mn [14] COMBINING DOUBLED CIRCUMFLEX ACCENT..COMBINING PARENTHESES BELOW -1B34 ; Diacritic # Mn BALINESE SIGN REREKAN -1B44 ; Diacritic # Mc BALINESE ADEG ADEG -1B6B..1B73 ; Diacritic # Mn [9] BALINESE MUSICAL SYMBOL COMBINING TEGEH..BALINESE MUSICAL SYMBOL COMBINING GONG -1BAA ; Diacritic # Mc SUNDANESE SIGN PAMAAEH -1BAB ; Diacritic # Mn SUNDANESE SIGN VIRAMA -1C36..1C37 ; Diacritic # Mn [2] LEPCHA SIGN RAN..LEPCHA SIGN NUKTA -1C78..1C7D ; Diacritic # Lm [6] OL CHIKI MU TTUDDAG..OL CHIKI AHAD -1CD0..1CD2 ; Diacritic # Mn [3] VEDIC TONE KARSHANA..VEDIC TONE PRENKHA -1CD3 ; Diacritic # Po VEDIC SIGN NIHSHVASA -1CD4..1CE0 ; Diacritic # Mn [13] VEDIC SIGN YAJURVEDIC MIDLINE SVARITA..VEDIC TONE RIGVEDIC KASHMIRI INDEPENDENT SVARITA -1CE1 ; Diacritic # Mc VEDIC TONE ATHARVAVEDIC INDEPENDENT SVARITA -1CE2..1CE8 ; Diacritic # Mn [7] VEDIC SIGN VISARGA SVARITA..VEDIC SIGN VISARGA ANUDATTA WITH TAIL -1CED ; Diacritic # Mn VEDIC SIGN TIRYAK -1CF4 ; Diacritic # Mn VEDIC TONE CANDRA ABOVE -1CF7 ; Diacritic # Mc VEDIC SIGN ATIKRAMA -1CF8..1CF9 ; Diacritic # Mn [2] VEDIC TONE RING ABOVE..VEDIC TONE DOUBLE RING ABOVE -1D2C..1D6A ; Diacritic # Lm [63] MODIFIER LETTER CAPITAL A..GREEK SUBSCRIPT SMALL LETTER CHI -1DC4..1DCF ; Diacritic # Mn [12] COMBINING MACRON-ACUTE..COMBINING ZIGZAG BELOW -1DF5..1DF9 ; Diacritic # Mn [5] COMBINING UP TACK ABOVE..COMBINING WIDE INVERTED BRIDGE BELOW -1DFD..1DFF ; Diacritic # Mn [3] COMBINING ALMOST EQUAL TO BELOW..COMBINING RIGHT ARROWHEAD AND DOWN ARROWHEAD BELOW -1FBD ; Diacritic # Sk GREEK KORONIS -1FBF..1FC1 ; Diacritic # Sk [3] GREEK PSILI..GREEK DIALYTIKA AND PERISPOMENI -1FCD..1FCF ; Diacritic # Sk [3] GREEK PSILI AND VARIA..GREEK PSILI AND PERISPOMENI -1FDD..1FDF ; Diacritic # Sk [3] GREEK DASIA AND VARIA..GREEK DASIA AND PERISPOMENI -1FED..1FEF ; Diacritic # Sk [3] GREEK DIALYTIKA AND VARIA..GREEK VARIA -1FFD..1FFE ; Diacritic # Sk [2] GREEK OXIA..GREEK DASIA -2CEF..2CF1 ; Diacritic # Mn [3] COPTIC COMBINING NI ABOVE..COPTIC COMBINING SPIRITUS LENIS -2E2F ; Diacritic # Lm VERTICAL TILDE -302A..302D ; Diacritic # Mn [4] IDEOGRAPHIC LEVEL TONE MARK..IDEOGRAPHIC ENTERING TONE MARK -302E..302F ; Diacritic # Mc [2] HANGUL SINGLE DOT TONE MARK..HANGUL DOUBLE DOT TONE MARK -3099..309A ; Diacritic # Mn [2] COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK..COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK -309B..309C ; Diacritic # Sk [2] KATAKANA-HIRAGANA VOICED SOUND MARK..KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK -30FC ; Diacritic # Lm KATAKANA-HIRAGANA PROLONGED SOUND MARK -A66F ; Diacritic # Mn COMBINING CYRILLIC VZMET -A67C..A67D ; Diacritic # Mn [2] COMBINING CYRILLIC KAVYKA..COMBINING CYRILLIC PAYEROK -A67F ; Diacritic # Lm CYRILLIC PAYEROK -A69C..A69D ; Diacritic # Lm [2] MODIFIER LETTER CYRILLIC HARD SIGN..MODIFIER LETTER CYRILLIC SOFT SIGN -A6F0..A6F1 ; Diacritic # Mn [2] BAMUM COMBINING MARK KOQNDON..BAMUM COMBINING MARK TUKWENTIS -A717..A71F ; Diacritic # Lm [9] MODIFIER LETTER DOT VERTICAL BAR..MODIFIER LETTER LOW INVERTED EXCLAMATION MARK -A720..A721 ; Diacritic # Sk [2] MODIFIER LETTER STRESS AND HIGH TONE..MODIFIER LETTER STRESS AND LOW TONE -A788 ; Diacritic # Lm MODIFIER LETTER LOW CIRCUMFLEX ACCENT -A7F8..A7F9 ; Diacritic # Lm [2] MODIFIER LETTER CAPITAL H WITH STROKE..MODIFIER LETTER SMALL LIGATURE OE -A8C4 ; Diacritic # Mn SAURASHTRA SIGN VIRAMA -A8E0..A8F1 ; Diacritic # Mn [18] COMBINING DEVANAGARI DIGIT ZERO..COMBINING DEVANAGARI SIGN AVAGRAHA -A92B..A92D ; Diacritic # Mn [3] KAYAH LI TONE PLOPHU..KAYAH LI TONE CALYA PLOPHU -A92E ; Diacritic # Po KAYAH LI SIGN CWI -A953 ; Diacritic # Mc REJANG VIRAMA -A9B3 ; Diacritic # Mn JAVANESE SIGN CECAK TELU -A9C0 ; Diacritic # Mc JAVANESE PANGKON -A9E5 ; Diacritic # Mn MYANMAR SIGN SHAN SAW -AA7B ; Diacritic # Mc MYANMAR SIGN PAO KAREN TONE -AA7C ; Diacritic # Mn MYANMAR SIGN TAI LAING TONE-2 -AA7D ; Diacritic # Mc MYANMAR SIGN TAI LAING TONE-5 -AABF ; Diacritic # Mn TAI VIET TONE MAI EK -AAC0 ; Diacritic # Lo TAI VIET TONE MAI NUENG -AAC1 ; Diacritic # Mn TAI VIET TONE MAI THO -AAC2 ; Diacritic # Lo TAI VIET TONE MAI SONG -AAF6 ; Diacritic # Mn MEETEI MAYEK VIRAMA -AB5B ; Diacritic # Sk MODIFIER BREVE WITH INVERTED BREVE -AB5C..AB5F ; Diacritic # Lm [4] MODIFIER LETTER SMALL HENG..MODIFIER LETTER SMALL U WITH LEFT HOOK -ABEC ; Diacritic # Mc MEETEI MAYEK LUM IYEK -ABED ; Diacritic # Mn MEETEI MAYEK APUN IYEK -FB1E ; Diacritic # Mn HEBREW POINT JUDEO-SPANISH VARIKA -FE20..FE2F ; Diacritic # Mn [16] COMBINING LIGATURE LEFT HALF..COMBINING CYRILLIC TITLO RIGHT HALF -FF3E ; Diacritic # Sk FULLWIDTH CIRCUMFLEX ACCENT -FF40 ; Diacritic # Sk FULLWIDTH GRAVE ACCENT -FF70 ; Diacritic # Lm HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK -FF9E..FF9F ; Diacritic # Lm [2] HALFWIDTH KATAKANA VOICED SOUND MARK..HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK -FFE3 ; Diacritic # Sk FULLWIDTH MACRON -102E0 ; Diacritic # Mn COPTIC EPACT THOUSANDS MARK -10AE5..10AE6 ; Diacritic # Mn [2] MANICHAEAN ABBREVIATION MARK ABOVE..MANICHAEAN ABBREVIATION MARK BELOW -110B9..110BA ; Diacritic # Mn [2] KAITHI SIGN VIRAMA..KAITHI SIGN NUKTA -11133..11134 ; Diacritic # Mn [2] CHAKMA VIRAMA..CHAKMA MAAYYAA -11173 ; Diacritic # Mn MAHAJANI SIGN NUKTA -111C0 ; Diacritic # Mc SHARADA SIGN VIRAMA -111CA..111CC ; Diacritic # Mn [3] SHARADA SIGN NUKTA..SHARADA EXTRA SHORT VOWEL MARK -11235 ; Diacritic # Mc KHOJKI SIGN VIRAMA -11236 ; Diacritic # Mn KHOJKI SIGN NUKTA -112E9..112EA ; Diacritic # Mn [2] KHUDAWADI SIGN NUKTA..KHUDAWADI SIGN VIRAMA -1133C ; Diacritic # Mn GRANTHA SIGN NUKTA -1134D ; Diacritic # Mc GRANTHA SIGN VIRAMA -11366..1136C ; Diacritic # Mn [7] COMBINING GRANTHA DIGIT ZERO..COMBINING GRANTHA DIGIT SIX -11370..11374 ; Diacritic # Mn [5] COMBINING GRANTHA LETTER A..COMBINING GRANTHA LETTER PA -11442 ; Diacritic # Mn NEWA SIGN VIRAMA -11446 ; Diacritic # Mn NEWA SIGN NUKTA -114C2..114C3 ; Diacritic # Mn [2] TIRHUTA SIGN VIRAMA..TIRHUTA SIGN NUKTA -115BF..115C0 ; Diacritic # Mn [2] SIDDHAM SIGN VIRAMA..SIDDHAM SIGN NUKTA -1163F ; Diacritic # Mn MODI SIGN VIRAMA -116B6 ; Diacritic # Mc TAKRI SIGN VIRAMA -116B7 ; Diacritic # Mn TAKRI SIGN NUKTA -1172B ; Diacritic # Mn AHOM SIGN KILLER -11A34 ; Diacritic # Mn ZANABAZAR SQUARE SIGN VIRAMA -11A47 ; Diacritic # Mn ZANABAZAR SQUARE SUBJOINER -11A99 ; Diacritic # Mn SOYOMBO SUBJOINER -11C3F ; Diacritic # Mn BHAIKSUKI SIGN VIRAMA -11D42 ; Diacritic # Mn MASARAM GONDI SIGN NUKTA -11D44..11D45 ; Diacritic # Mn [2] MASARAM GONDI SIGN HALANTA..MASARAM GONDI VIRAMA -16AF0..16AF4 ; Diacritic # Mn [5] BASSA VAH COMBINING HIGH TONE..BASSA VAH COMBINING HIGH-LOW TONE -16F8F..16F92 ; Diacritic # Mn [4] MIAO TONE RIGHT..MIAO TONE BELOW -16F93..16F9F ; Diacritic # Lm [13] MIAO LETTER TONE-2..MIAO LETTER REFORMED TONE-8 -1D167..1D169 ; Diacritic # Mn [3] MUSICAL SYMBOL COMBINING TREMOLO-1..MUSICAL SYMBOL COMBINING TREMOLO-3 -1D16D..1D172 ; Diacritic # Mc [6] MUSICAL SYMBOL COMBINING AUGMENTATION DOT..MUSICAL SYMBOL COMBINING FLAG-5 -1D17B..1D182 ; Diacritic # Mn [8] MUSICAL SYMBOL COMBINING ACCENT..MUSICAL SYMBOL COMBINING LOURE -1D185..1D18B ; Diacritic # Mn [7] MUSICAL SYMBOL COMBINING DOIT..MUSICAL SYMBOL COMBINING TRIPLE TONGUE -1D1AA..1D1AD ; Diacritic # Mn [4] MUSICAL SYMBOL COMBINING DOWN BOW..MUSICAL SYMBOL COMBINING SNAP PIZZICATO -1E8D0..1E8D6 ; Diacritic # Mn [7] MENDE KIKAKUI COMBINING NUMBER TEENS..MENDE KIKAKUI COMBINING NUMBER MILLIONS -1E944..1E946 ; Diacritic # Mn [3] ADLAM ALIF LENGTHENER..ADLAM GEMINATION MARK -1E948..1E94A ; Diacritic # Mn [3] ADLAM CONSONANT MODIFIER..ADLAM NUKTA - -# Total code points: 798 - -# ================================================ - -00B7 ; Extender # Po MIDDLE DOT -02D0..02D1 ; Extender # Lm [2] MODIFIER LETTER TRIANGULAR COLON..MODIFIER LETTER HALF TRIANGULAR COLON -0640 ; Extender # Lm ARABIC TATWEEL -07FA ; Extender # Lm NKO LAJANYALAN -0E46 ; Extender # Lm THAI CHARACTER MAIYAMOK -0EC6 ; Extender # Lm LAO KO LA -180A ; Extender # Po MONGOLIAN NIRUGU -1843 ; Extender # Lm MONGOLIAN LETTER TODO LONG VOWEL SIGN -1AA7 ; Extender # Lm TAI THAM SIGN MAI YAMOK -1C36 ; Extender # Mn LEPCHA SIGN RAN -1C7B ; Extender # Lm OL CHIKI RELAA -3005 ; Extender # Lm IDEOGRAPHIC ITERATION MARK -3031..3035 ; Extender # Lm [5] VERTICAL KANA REPEAT MARK..VERTICAL KANA REPEAT MARK LOWER HALF -309D..309E ; Extender # Lm [2] HIRAGANA ITERATION MARK..HIRAGANA VOICED ITERATION MARK -30FC..30FE ; Extender # Lm [3] KATAKANA-HIRAGANA PROLONGED SOUND MARK..KATAKANA VOICED ITERATION MARK -A015 ; Extender # Lm YI SYLLABLE WU -A60C ; Extender # Lm VAI SYLLABLE LENGTHENER -A9CF ; Extender # Lm JAVANESE PANGRANGKEP -A9E6 ; Extender # Lm MYANMAR MODIFIER LETTER SHAN REDUPLICATION -AA70 ; Extender # Lm MYANMAR MODIFIER LETTER KHAMTI REDUPLICATION -AADD ; Extender # Lm TAI VIET SYMBOL SAM -AAF3..AAF4 ; Extender # Lm [2] MEETEI MAYEK SYLLABLE REPETITION MARK..MEETEI MAYEK WORD REPETITION MARK -FF70 ; Extender # Lm HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK -1135D ; Extender # Lo GRANTHA SIGN PLUTA -115C6..115C8 ; Extender # Po [3] SIDDHAM REPETITION MARK-1..SIDDHAM REPETITION MARK-3 -11A98 ; Extender # Mn SOYOMBO GEMINATION MARK -16B42..16B43 ; Extender # Lm [2] PAHAWH HMONG SIGN VOS NRUA..PAHAWH HMONG SIGN IB YAM -16FE0..16FE1 ; Extender # Lm [2] TANGUT ITERATION MARK..NUSHU ITERATION MARK -1E944..1E946 ; Extender # Mn [3] ADLAM ALIF LENGTHENER..ADLAM GEMINATION MARK - -# Total code points: 44 - -# ================================================ - -00AA ; Other_Lowercase # Lo FEMININE ORDINAL INDICATOR -00BA ; Other_Lowercase # Lo MASCULINE ORDINAL INDICATOR -02B0..02B8 ; Other_Lowercase # Lm [9] MODIFIER LETTER SMALL H..MODIFIER LETTER SMALL Y -02C0..02C1 ; Other_Lowercase # Lm [2] MODIFIER LETTER GLOTTAL STOP..MODIFIER LETTER REVERSED GLOTTAL STOP -02E0..02E4 ; Other_Lowercase # Lm [5] MODIFIER LETTER SMALL GAMMA..MODIFIER LETTER SMALL REVERSED GLOTTAL STOP -0345 ; Other_Lowercase # Mn COMBINING GREEK YPOGEGRAMMENI -037A ; Other_Lowercase # Lm GREEK YPOGEGRAMMENI -1D2C..1D6A ; Other_Lowercase # Lm [63] MODIFIER LETTER CAPITAL A..GREEK SUBSCRIPT SMALL LETTER CHI -1D78 ; Other_Lowercase # Lm MODIFIER LETTER CYRILLIC EN -1D9B..1DBF ; Other_Lowercase # Lm [37] MODIFIER LETTER SMALL TURNED ALPHA..MODIFIER LETTER SMALL THETA -2071 ; Other_Lowercase # Lm SUPERSCRIPT LATIN SMALL LETTER I -207F ; Other_Lowercase # Lm SUPERSCRIPT LATIN SMALL LETTER N -2090..209C ; Other_Lowercase # Lm [13] LATIN SUBSCRIPT SMALL LETTER A..LATIN SUBSCRIPT SMALL LETTER T -2170..217F ; Other_Lowercase # Nl [16] SMALL ROMAN NUMERAL ONE..SMALL ROMAN NUMERAL ONE THOUSAND -24D0..24E9 ; Other_Lowercase # So [26] CIRCLED LATIN SMALL LETTER A..CIRCLED LATIN SMALL LETTER Z -2C7C..2C7D ; Other_Lowercase # Lm [2] LATIN SUBSCRIPT SMALL LETTER J..MODIFIER LETTER CAPITAL V -A69C..A69D ; Other_Lowercase # Lm [2] MODIFIER LETTER CYRILLIC HARD SIGN..MODIFIER LETTER CYRILLIC SOFT SIGN -A770 ; Other_Lowercase # Lm MODIFIER LETTER US -A7F8..A7F9 ; Other_Lowercase # Lm [2] MODIFIER LETTER CAPITAL H WITH STROKE..MODIFIER LETTER SMALL LIGATURE OE -AB5C..AB5F ; Other_Lowercase # Lm [4] MODIFIER LETTER SMALL HENG..MODIFIER LETTER SMALL U WITH LEFT HOOK - -# Total code points: 189 - -# ================================================ - -2160..216F ; Other_Uppercase # Nl [16] ROMAN NUMERAL ONE..ROMAN NUMERAL ONE THOUSAND -24B6..24CF ; Other_Uppercase # So [26] CIRCLED LATIN CAPITAL LETTER A..CIRCLED LATIN CAPITAL LETTER Z -1F130..1F149 ; Other_Uppercase # So [26] SQUARED LATIN CAPITAL LETTER A..SQUARED LATIN CAPITAL LETTER Z -1F150..1F169 ; Other_Uppercase # So [26] NEGATIVE CIRCLED LATIN CAPITAL LETTER A..NEGATIVE CIRCLED LATIN CAPITAL LETTER Z -1F170..1F189 ; Other_Uppercase # So [26] NEGATIVE SQUARED LATIN CAPITAL LETTER A..NEGATIVE SQUARED LATIN CAPITAL LETTER Z - -# Total code points: 120 - -# ================================================ - -FDD0..FDEF ; Noncharacter_Code_Point # Cn [32] .. -FFFE..FFFF ; Noncharacter_Code_Point # Cn [2] .. -1FFFE..1FFFF ; Noncharacter_Code_Point # Cn [2] .. -2FFFE..2FFFF ; Noncharacter_Code_Point # Cn [2] .. -3FFFE..3FFFF ; Noncharacter_Code_Point # Cn [2] .. -4FFFE..4FFFF ; Noncharacter_Code_Point # Cn [2] .. -5FFFE..5FFFF ; Noncharacter_Code_Point # Cn [2] .. -6FFFE..6FFFF ; Noncharacter_Code_Point # Cn [2] .. -7FFFE..7FFFF ; Noncharacter_Code_Point # Cn [2] .. -8FFFE..8FFFF ; Noncharacter_Code_Point # Cn [2] .. -9FFFE..9FFFF ; Noncharacter_Code_Point # Cn [2] .. -AFFFE..AFFFF ; Noncharacter_Code_Point # Cn [2] .. -BFFFE..BFFFF ; Noncharacter_Code_Point # Cn [2] .. -CFFFE..CFFFF ; Noncharacter_Code_Point # Cn [2] .. -DFFFE..DFFFF ; Noncharacter_Code_Point # Cn [2] .. -EFFFE..EFFFF ; Noncharacter_Code_Point # Cn [2] .. -FFFFE..FFFFF ; Noncharacter_Code_Point # Cn [2] .. -10FFFE..10FFFF; Noncharacter_Code_Point # Cn [2] .. - -# Total code points: 66 - -# ================================================ - -09BE ; Other_Grapheme_Extend # Mc BENGALI VOWEL SIGN AA -09D7 ; Other_Grapheme_Extend # Mc BENGALI AU LENGTH MARK -0B3E ; Other_Grapheme_Extend # Mc ORIYA VOWEL SIGN AA -0B57 ; Other_Grapheme_Extend # Mc ORIYA AU LENGTH MARK -0BBE ; Other_Grapheme_Extend # Mc TAMIL VOWEL SIGN AA -0BD7 ; Other_Grapheme_Extend # Mc TAMIL AU LENGTH MARK -0CC2 ; Other_Grapheme_Extend # Mc KANNADA VOWEL SIGN UU -0CD5..0CD6 ; Other_Grapheme_Extend # Mc [2] KANNADA LENGTH MARK..KANNADA AI LENGTH MARK -0D3E ; Other_Grapheme_Extend # Mc MALAYALAM VOWEL SIGN AA -0D57 ; Other_Grapheme_Extend # Mc MALAYALAM AU LENGTH MARK -0DCF ; Other_Grapheme_Extend # Mc SINHALA VOWEL SIGN AELA-PILLA -0DDF ; Other_Grapheme_Extend # Mc SINHALA VOWEL SIGN GAYANUKITTA -200C ; Other_Grapheme_Extend # Cf ZERO WIDTH NON-JOINER -302E..302F ; Other_Grapheme_Extend # Mc [2] HANGUL SINGLE DOT TONE MARK..HANGUL DOUBLE DOT TONE MARK -FF9E..FF9F ; Other_Grapheme_Extend # Lm [2] HALFWIDTH KATAKANA VOICED SOUND MARK..HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK -1133E ; Other_Grapheme_Extend # Mc GRANTHA VOWEL SIGN AA -11357 ; Other_Grapheme_Extend # Mc GRANTHA AU LENGTH MARK -114B0 ; Other_Grapheme_Extend # Mc TIRHUTA VOWEL SIGN AA -114BD ; Other_Grapheme_Extend # Mc TIRHUTA VOWEL SIGN SHORT O -115AF ; Other_Grapheme_Extend # Mc SIDDHAM VOWEL SIGN AA -1D165 ; Other_Grapheme_Extend # Mc MUSICAL SYMBOL COMBINING STEM -1D16E..1D172 ; Other_Grapheme_Extend # Mc [5] MUSICAL SYMBOL COMBINING FLAG-1..MUSICAL SYMBOL COMBINING FLAG-5 -E0020..E007F ; Other_Grapheme_Extend # Cf [96] TAG SPACE..CANCEL TAG - -# Total code points: 125 - -# ================================================ - -2FF0..2FF1 ; IDS_Binary_Operator # So [2] IDEOGRAPHIC DESCRIPTION CHARACTER LEFT TO RIGHT..IDEOGRAPHIC DESCRIPTION CHARACTER ABOVE TO BELOW -2FF4..2FFB ; IDS_Binary_Operator # So [8] IDEOGRAPHIC DESCRIPTION CHARACTER FULL SURROUND..IDEOGRAPHIC DESCRIPTION CHARACTER OVERLAID - -# Total code points: 10 - -# ================================================ - -2FF2..2FF3 ; IDS_Trinary_Operator # So [2] IDEOGRAPHIC DESCRIPTION CHARACTER LEFT TO MIDDLE AND RIGHT..IDEOGRAPHIC DESCRIPTION CHARACTER ABOVE TO MIDDLE AND BELOW - -# Total code points: 2 - -# ================================================ - -2E80..2E99 ; Radical # So [26] CJK RADICAL REPEAT..CJK RADICAL RAP -2E9B..2EF3 ; Radical # So [89] CJK RADICAL CHOKE..CJK RADICAL C-SIMPLIFIED TURTLE -2F00..2FD5 ; Radical # So [214] KANGXI RADICAL ONE..KANGXI RADICAL FLUTE - -# Total code points: 329 - -# ================================================ - -3400..4DB5 ; Unified_Ideograph # Lo [6582] CJK UNIFIED IDEOGRAPH-3400..CJK UNIFIED IDEOGRAPH-4DB5 -4E00..9FEA ; Unified_Ideograph # Lo [20971] CJK UNIFIED IDEOGRAPH-4E00..CJK UNIFIED IDEOGRAPH-9FEA -FA0E..FA0F ; Unified_Ideograph # Lo [2] CJK COMPATIBILITY IDEOGRAPH-FA0E..CJK COMPATIBILITY IDEOGRAPH-FA0F -FA11 ; Unified_Ideograph # Lo CJK COMPATIBILITY IDEOGRAPH-FA11 -FA13..FA14 ; Unified_Ideograph # Lo [2] CJK COMPATIBILITY IDEOGRAPH-FA13..CJK COMPATIBILITY IDEOGRAPH-FA14 -FA1F ; Unified_Ideograph # Lo CJK COMPATIBILITY IDEOGRAPH-FA1F -FA21 ; Unified_Ideograph # Lo CJK COMPATIBILITY IDEOGRAPH-FA21 -FA23..FA24 ; Unified_Ideograph # Lo [2] CJK COMPATIBILITY IDEOGRAPH-FA23..CJK COMPATIBILITY IDEOGRAPH-FA24 -FA27..FA29 ; Unified_Ideograph # Lo [3] CJK COMPATIBILITY IDEOGRAPH-FA27..CJK COMPATIBILITY IDEOGRAPH-FA29 -20000..2A6D6 ; Unified_Ideograph # Lo [42711] CJK UNIFIED IDEOGRAPH-20000..CJK UNIFIED IDEOGRAPH-2A6D6 -2A700..2B734 ; Unified_Ideograph # Lo [4149] CJK UNIFIED IDEOGRAPH-2A700..CJK UNIFIED IDEOGRAPH-2B734 -2B740..2B81D ; Unified_Ideograph # Lo [222] CJK UNIFIED IDEOGRAPH-2B740..CJK UNIFIED IDEOGRAPH-2B81D -2B820..2CEA1 ; Unified_Ideograph # Lo [5762] CJK UNIFIED IDEOGRAPH-2B820..CJK UNIFIED IDEOGRAPH-2CEA1 -2CEB0..2EBE0 ; Unified_Ideograph # Lo [7473] CJK UNIFIED IDEOGRAPH-2CEB0..CJK UNIFIED IDEOGRAPH-2EBE0 - -# Total code points: 87882 - -# ================================================ - -034F ; Other_Default_Ignorable_Code_Point # Mn COMBINING GRAPHEME JOINER -115F..1160 ; Other_Default_Ignorable_Code_Point # Lo [2] HANGUL CHOSEONG FILLER..HANGUL JUNGSEONG FILLER -17B4..17B5 ; Other_Default_Ignorable_Code_Point # Mn [2] KHMER VOWEL INHERENT AQ..KHMER VOWEL INHERENT AA -2065 ; Other_Default_Ignorable_Code_Point # Cn -3164 ; Other_Default_Ignorable_Code_Point # Lo HANGUL FILLER -FFA0 ; Other_Default_Ignorable_Code_Point # Lo HALFWIDTH HANGUL FILLER -FFF0..FFF8 ; Other_Default_Ignorable_Code_Point # Cn [9] .. -E0000 ; Other_Default_Ignorable_Code_Point # Cn -E0002..E001F ; Other_Default_Ignorable_Code_Point # Cn [30] .. -E0080..E00FF ; Other_Default_Ignorable_Code_Point # Cn [128] .. -E01F0..E0FFF ; Other_Default_Ignorable_Code_Point # Cn [3600] .. - -# Total code points: 3776 - -# ================================================ - -0149 ; Deprecated # L& LATIN SMALL LETTER N PRECEDED BY APOSTROPHE -0673 ; Deprecated # Lo ARABIC LETTER ALEF WITH WAVY HAMZA BELOW -0F77 ; Deprecated # Mn TIBETAN VOWEL SIGN VOCALIC RR -0F79 ; Deprecated # Mn TIBETAN VOWEL SIGN VOCALIC LL -17A3..17A4 ; Deprecated # Lo [2] KHMER INDEPENDENT VOWEL QAQ..KHMER INDEPENDENT VOWEL QAA -206A..206F ; Deprecated # Cf [6] INHIBIT SYMMETRIC SWAPPING..NOMINAL DIGIT SHAPES -2329 ; Deprecated # Ps LEFT-POINTING ANGLE BRACKET -232A ; Deprecated # Pe RIGHT-POINTING ANGLE BRACKET -E0001 ; Deprecated # Cf LANGUAGE TAG - -# Total code points: 15 - -# ================================================ - -0069..006A ; Soft_Dotted # L& [2] LATIN SMALL LETTER I..LATIN SMALL LETTER J -012F ; Soft_Dotted # L& LATIN SMALL LETTER I WITH OGONEK -0249 ; Soft_Dotted # L& LATIN SMALL LETTER J WITH STROKE -0268 ; Soft_Dotted # L& LATIN SMALL LETTER I WITH STROKE -029D ; Soft_Dotted # L& LATIN SMALL LETTER J WITH CROSSED-TAIL -02B2 ; Soft_Dotted # Lm MODIFIER LETTER SMALL J -03F3 ; Soft_Dotted # L& GREEK LETTER YOT -0456 ; Soft_Dotted # L& CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I -0458 ; Soft_Dotted # L& CYRILLIC SMALL LETTER JE -1D62 ; Soft_Dotted # Lm LATIN SUBSCRIPT SMALL LETTER I -1D96 ; Soft_Dotted # L& LATIN SMALL LETTER I WITH RETROFLEX HOOK -1DA4 ; Soft_Dotted # Lm MODIFIER LETTER SMALL I WITH STROKE -1DA8 ; Soft_Dotted # Lm MODIFIER LETTER SMALL J WITH CROSSED-TAIL -1E2D ; Soft_Dotted # L& LATIN SMALL LETTER I WITH TILDE BELOW -1ECB ; Soft_Dotted # L& LATIN SMALL LETTER I WITH DOT BELOW -2071 ; Soft_Dotted # Lm SUPERSCRIPT LATIN SMALL LETTER I -2148..2149 ; Soft_Dotted # L& [2] DOUBLE-STRUCK ITALIC SMALL I..DOUBLE-STRUCK ITALIC SMALL J -2C7C ; Soft_Dotted # Lm LATIN SUBSCRIPT SMALL LETTER J -1D422..1D423 ; Soft_Dotted # L& [2] MATHEMATICAL BOLD SMALL I..MATHEMATICAL BOLD SMALL J -1D456..1D457 ; Soft_Dotted # L& [2] MATHEMATICAL ITALIC SMALL I..MATHEMATICAL ITALIC SMALL J -1D48A..1D48B ; Soft_Dotted # L& [2] MATHEMATICAL BOLD ITALIC SMALL I..MATHEMATICAL BOLD ITALIC SMALL J -1D4BE..1D4BF ; Soft_Dotted # L& [2] MATHEMATICAL SCRIPT SMALL I..MATHEMATICAL SCRIPT SMALL J -1D4F2..1D4F3 ; Soft_Dotted # L& [2] MATHEMATICAL BOLD SCRIPT SMALL I..MATHEMATICAL BOLD SCRIPT SMALL J -1D526..1D527 ; Soft_Dotted # L& [2] MATHEMATICAL FRAKTUR SMALL I..MATHEMATICAL FRAKTUR SMALL J -1D55A..1D55B ; Soft_Dotted # L& [2] MATHEMATICAL DOUBLE-STRUCK SMALL I..MATHEMATICAL DOUBLE-STRUCK SMALL J -1D58E..1D58F ; Soft_Dotted # L& [2] MATHEMATICAL BOLD FRAKTUR SMALL I..MATHEMATICAL BOLD FRAKTUR SMALL J -1D5C2..1D5C3 ; Soft_Dotted # L& [2] MATHEMATICAL SANS-SERIF SMALL I..MATHEMATICAL SANS-SERIF SMALL J -1D5F6..1D5F7 ; Soft_Dotted # L& [2] MATHEMATICAL SANS-SERIF BOLD SMALL I..MATHEMATICAL SANS-SERIF BOLD SMALL J -1D62A..1D62B ; Soft_Dotted # L& [2] MATHEMATICAL SANS-SERIF ITALIC SMALL I..MATHEMATICAL SANS-SERIF ITALIC SMALL J -1D65E..1D65F ; Soft_Dotted # L& [2] MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL I..MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL J -1D692..1D693 ; Soft_Dotted # L& [2] MATHEMATICAL MONOSPACE SMALL I..MATHEMATICAL MONOSPACE SMALL J - -# Total code points: 46 - -# ================================================ - -0E40..0E44 ; Logical_Order_Exception # Lo [5] THAI CHARACTER SARA E..THAI CHARACTER SARA AI MAIMALAI -0EC0..0EC4 ; Logical_Order_Exception # Lo [5] LAO VOWEL SIGN E..LAO VOWEL SIGN AI -19B5..19B7 ; Logical_Order_Exception # Lo [3] NEW TAI LUE VOWEL SIGN E..NEW TAI LUE VOWEL SIGN O -19BA ; Logical_Order_Exception # Lo NEW TAI LUE VOWEL SIGN AY -AAB5..AAB6 ; Logical_Order_Exception # Lo [2] TAI VIET VOWEL E..TAI VIET VOWEL O -AAB9 ; Logical_Order_Exception # Lo TAI VIET VOWEL UEA -AABB..AABC ; Logical_Order_Exception # Lo [2] TAI VIET VOWEL AUE..TAI VIET VOWEL AY - -# Total code points: 19 - -# ================================================ - -1885..1886 ; Other_ID_Start # Mn [2] MONGOLIAN LETTER ALI GALI BALUDA..MONGOLIAN LETTER ALI GALI THREE BALUDA -2118 ; Other_ID_Start # Sm SCRIPT CAPITAL P -212E ; Other_ID_Start # So ESTIMATED SYMBOL -309B..309C ; Other_ID_Start # Sk [2] KATAKANA-HIRAGANA VOICED SOUND MARK..KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK - -# Total code points: 6 - -# ================================================ - -00B7 ; Other_ID_Continue # Po MIDDLE DOT -0387 ; Other_ID_Continue # Po GREEK ANO TELEIA -1369..1371 ; Other_ID_Continue # No [9] ETHIOPIC DIGIT ONE..ETHIOPIC DIGIT NINE -19DA ; Other_ID_Continue # No NEW TAI LUE THAM DIGIT ONE - -# Total code points: 12 - -# ================================================ - -0021 ; Sentence_Terminal # Po EXCLAMATION MARK -002E ; Sentence_Terminal # Po FULL STOP -003F ; Sentence_Terminal # Po QUESTION MARK -0589 ; Sentence_Terminal # Po ARMENIAN FULL STOP -061F ; Sentence_Terminal # Po ARABIC QUESTION MARK -06D4 ; Sentence_Terminal # Po ARABIC FULL STOP -0700..0702 ; Sentence_Terminal # Po [3] SYRIAC END OF PARAGRAPH..SYRIAC SUBLINEAR FULL STOP -07F9 ; Sentence_Terminal # Po NKO EXCLAMATION MARK -0964..0965 ; Sentence_Terminal # Po [2] DEVANAGARI DANDA..DEVANAGARI DOUBLE DANDA -104A..104B ; Sentence_Terminal # Po [2] MYANMAR SIGN LITTLE SECTION..MYANMAR SIGN SECTION -1362 ; Sentence_Terminal # Po ETHIOPIC FULL STOP -1367..1368 ; Sentence_Terminal # Po [2] ETHIOPIC QUESTION MARK..ETHIOPIC PARAGRAPH SEPARATOR -166E ; Sentence_Terminal # Po CANADIAN SYLLABICS FULL STOP -1735..1736 ; Sentence_Terminal # Po [2] PHILIPPINE SINGLE PUNCTUATION..PHILIPPINE DOUBLE PUNCTUATION -1803 ; Sentence_Terminal # Po MONGOLIAN FULL STOP -1809 ; Sentence_Terminal # Po MONGOLIAN MANCHU FULL STOP -1944..1945 ; Sentence_Terminal # Po [2] LIMBU EXCLAMATION MARK..LIMBU QUESTION MARK -1AA8..1AAB ; Sentence_Terminal # Po [4] TAI THAM SIGN KAAN..TAI THAM SIGN SATKAANKUU -1B5A..1B5B ; Sentence_Terminal # Po [2] BALINESE PANTI..BALINESE PAMADA -1B5E..1B5F ; Sentence_Terminal # Po [2] BALINESE CARIK SIKI..BALINESE CARIK PAREREN -1C3B..1C3C ; Sentence_Terminal # Po [2] LEPCHA PUNCTUATION TA-ROL..LEPCHA PUNCTUATION NYET THYOOM TA-ROL -1C7E..1C7F ; Sentence_Terminal # Po [2] OL CHIKI PUNCTUATION MUCAAD..OL CHIKI PUNCTUATION DOUBLE MUCAAD -203C..203D ; Sentence_Terminal # Po [2] DOUBLE EXCLAMATION MARK..INTERROBANG -2047..2049 ; Sentence_Terminal # Po [3] DOUBLE QUESTION MARK..EXCLAMATION QUESTION MARK -2E2E ; Sentence_Terminal # Po REVERSED QUESTION MARK -2E3C ; Sentence_Terminal # Po STENOGRAPHIC FULL STOP -3002 ; Sentence_Terminal # Po IDEOGRAPHIC FULL STOP -A4FF ; Sentence_Terminal # Po LISU PUNCTUATION FULL STOP -A60E..A60F ; Sentence_Terminal # Po [2] VAI FULL STOP..VAI QUESTION MARK -A6F3 ; Sentence_Terminal # Po BAMUM FULL STOP -A6F7 ; Sentence_Terminal # Po BAMUM QUESTION MARK -A876..A877 ; Sentence_Terminal # Po [2] PHAGS-PA MARK SHAD..PHAGS-PA MARK DOUBLE SHAD -A8CE..A8CF ; Sentence_Terminal # Po [2] SAURASHTRA DANDA..SAURASHTRA DOUBLE DANDA -A92F ; Sentence_Terminal # Po KAYAH LI SIGN SHYA -A9C8..A9C9 ; Sentence_Terminal # Po [2] JAVANESE PADA LINGSA..JAVANESE PADA LUNGSI -AA5D..AA5F ; Sentence_Terminal # Po [3] CHAM PUNCTUATION DANDA..CHAM PUNCTUATION TRIPLE DANDA -AAF0..AAF1 ; Sentence_Terminal # Po [2] MEETEI MAYEK CHEIKHAN..MEETEI MAYEK AHANG KHUDAM -ABEB ; Sentence_Terminal # Po MEETEI MAYEK CHEIKHEI -FE52 ; Sentence_Terminal # Po SMALL FULL STOP -FE56..FE57 ; Sentence_Terminal # Po [2] SMALL QUESTION MARK..SMALL EXCLAMATION MARK -FF01 ; Sentence_Terminal # Po FULLWIDTH EXCLAMATION MARK -FF0E ; Sentence_Terminal # Po FULLWIDTH FULL STOP -FF1F ; Sentence_Terminal # Po FULLWIDTH QUESTION MARK -FF61 ; Sentence_Terminal # Po HALFWIDTH IDEOGRAPHIC FULL STOP -10A56..10A57 ; Sentence_Terminal # Po [2] KHAROSHTHI PUNCTUATION DANDA..KHAROSHTHI PUNCTUATION DOUBLE DANDA -11047..11048 ; Sentence_Terminal # Po [2] BRAHMI DANDA..BRAHMI DOUBLE DANDA -110BE..110C1 ; Sentence_Terminal # Po [4] KAITHI SECTION MARK..KAITHI DOUBLE DANDA -11141..11143 ; Sentence_Terminal # Po [3] CHAKMA DANDA..CHAKMA QUESTION MARK -111C5..111C6 ; Sentence_Terminal # Po [2] SHARADA DANDA..SHARADA DOUBLE DANDA -111CD ; Sentence_Terminal # Po SHARADA SUTRA MARK -111DE..111DF ; Sentence_Terminal # Po [2] SHARADA SECTION MARK-1..SHARADA SECTION MARK-2 -11238..11239 ; Sentence_Terminal # Po [2] KHOJKI DANDA..KHOJKI DOUBLE DANDA -1123B..1123C ; Sentence_Terminal # Po [2] KHOJKI SECTION MARK..KHOJKI DOUBLE SECTION MARK -112A9 ; Sentence_Terminal # Po MULTANI SECTION MARK -1144B..1144C ; Sentence_Terminal # Po [2] NEWA DANDA..NEWA DOUBLE DANDA -115C2..115C3 ; Sentence_Terminal # Po [2] SIDDHAM DANDA..SIDDHAM DOUBLE DANDA -115C9..115D7 ; Sentence_Terminal # Po [15] SIDDHAM END OF TEXT MARK..SIDDHAM SECTION MARK WITH CIRCLES AND FOUR ENCLOSURES -11641..11642 ; Sentence_Terminal # Po [2] MODI DANDA..MODI DOUBLE DANDA -1173C..1173E ; Sentence_Terminal # Po [3] AHOM SIGN SMALL SECTION..AHOM SIGN RULAI -11A42..11A43 ; Sentence_Terminal # Po [2] ZANABAZAR SQUARE MARK SHAD..ZANABAZAR SQUARE MARK DOUBLE SHAD -11A9B..11A9C ; Sentence_Terminal # Po [2] SOYOMBO MARK SHAD..SOYOMBO MARK DOUBLE SHAD -11C41..11C42 ; Sentence_Terminal # Po [2] BHAIKSUKI DANDA..BHAIKSUKI DOUBLE DANDA -16A6E..16A6F ; Sentence_Terminal # Po [2] MRO DANDA..MRO DOUBLE DANDA -16AF5 ; Sentence_Terminal # Po BASSA VAH FULL STOP -16B37..16B38 ; Sentence_Terminal # Po [2] PAHAWH HMONG SIGN VOS THOM..PAHAWH HMONG SIGN VOS TSHAB CEEB -16B44 ; Sentence_Terminal # Po PAHAWH HMONG SIGN XAUS -1BC9F ; Sentence_Terminal # Po DUPLOYAN PUNCTUATION CHINOOK FULL STOP -1DA88 ; Sentence_Terminal # Po SIGNWRITING FULL STOP - -# Total code points: 128 - -# ================================================ - -180B..180D ; Variation_Selector # Mn [3] MONGOLIAN FREE VARIATION SELECTOR ONE..MONGOLIAN FREE VARIATION SELECTOR THREE -FE00..FE0F ; Variation_Selector # Mn [16] VARIATION SELECTOR-1..VARIATION SELECTOR-16 -E0100..E01EF ; Variation_Selector # Mn [240] VARIATION SELECTOR-17..VARIATION SELECTOR-256 - -# Total code points: 259 - -# ================================================ - -0009..000D ; Pattern_White_Space # Cc [5] .. -0020 ; Pattern_White_Space # Zs SPACE -0085 ; Pattern_White_Space # Cc -200E..200F ; Pattern_White_Space # Cf [2] LEFT-TO-RIGHT MARK..RIGHT-TO-LEFT MARK -2028 ; Pattern_White_Space # Zl LINE SEPARATOR -2029 ; Pattern_White_Space # Zp PARAGRAPH SEPARATOR - -# Total code points: 11 - -# ================================================ - -0021..0023 ; Pattern_Syntax # Po [3] EXCLAMATION MARK..NUMBER SIGN -0024 ; Pattern_Syntax # Sc DOLLAR SIGN -0025..0027 ; Pattern_Syntax # Po [3] PERCENT SIGN..APOSTROPHE -0028 ; Pattern_Syntax # Ps LEFT PARENTHESIS -0029 ; Pattern_Syntax # Pe RIGHT PARENTHESIS -002A ; Pattern_Syntax # Po ASTERISK -002B ; Pattern_Syntax # Sm PLUS SIGN -002C ; Pattern_Syntax # Po COMMA -002D ; Pattern_Syntax # Pd HYPHEN-MINUS -002E..002F ; Pattern_Syntax # Po [2] FULL STOP..SOLIDUS -003A..003B ; Pattern_Syntax # Po [2] COLON..SEMICOLON -003C..003E ; Pattern_Syntax # Sm [3] LESS-THAN SIGN..GREATER-THAN SIGN -003F..0040 ; Pattern_Syntax # Po [2] QUESTION MARK..COMMERCIAL AT -005B ; Pattern_Syntax # Ps LEFT SQUARE BRACKET -005C ; Pattern_Syntax # Po REVERSE SOLIDUS -005D ; Pattern_Syntax # Pe RIGHT SQUARE BRACKET -005E ; Pattern_Syntax # Sk CIRCUMFLEX ACCENT -0060 ; Pattern_Syntax # Sk GRAVE ACCENT -007B ; Pattern_Syntax # Ps LEFT CURLY BRACKET -007C ; Pattern_Syntax # Sm VERTICAL LINE -007D ; Pattern_Syntax # Pe RIGHT CURLY BRACKET -007E ; Pattern_Syntax # Sm TILDE -00A1 ; Pattern_Syntax # Po INVERTED EXCLAMATION MARK -00A2..00A5 ; Pattern_Syntax # Sc [4] CENT SIGN..YEN SIGN -00A6 ; Pattern_Syntax # So BROKEN BAR -00A7 ; Pattern_Syntax # Po SECTION SIGN -00A9 ; Pattern_Syntax # So COPYRIGHT SIGN -00AB ; Pattern_Syntax # Pi LEFT-POINTING DOUBLE ANGLE QUOTATION MARK -00AC ; Pattern_Syntax # Sm NOT SIGN -00AE ; Pattern_Syntax # So REGISTERED SIGN -00B0 ; Pattern_Syntax # So DEGREE SIGN -00B1 ; Pattern_Syntax # Sm PLUS-MINUS SIGN -00B6 ; Pattern_Syntax # Po PILCROW SIGN -00BB ; Pattern_Syntax # Pf RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK -00BF ; Pattern_Syntax # Po INVERTED QUESTION MARK -00D7 ; Pattern_Syntax # Sm MULTIPLICATION SIGN -00F7 ; Pattern_Syntax # Sm DIVISION SIGN -2010..2015 ; Pattern_Syntax # Pd [6] HYPHEN..HORIZONTAL BAR -2016..2017 ; Pattern_Syntax # Po [2] DOUBLE VERTICAL LINE..DOUBLE LOW LINE -2018 ; Pattern_Syntax # Pi LEFT SINGLE QUOTATION MARK -2019 ; Pattern_Syntax # Pf RIGHT SINGLE QUOTATION MARK -201A ; Pattern_Syntax # Ps SINGLE LOW-9 QUOTATION MARK -201B..201C ; Pattern_Syntax # Pi [2] SINGLE HIGH-REVERSED-9 QUOTATION MARK..LEFT DOUBLE QUOTATION MARK -201D ; Pattern_Syntax # Pf RIGHT DOUBLE QUOTATION MARK -201E ; Pattern_Syntax # Ps DOUBLE LOW-9 QUOTATION MARK -201F ; Pattern_Syntax # Pi DOUBLE HIGH-REVERSED-9 QUOTATION MARK -2020..2027 ; Pattern_Syntax # Po [8] DAGGER..HYPHENATION POINT -2030..2038 ; Pattern_Syntax # Po [9] PER MILLE SIGN..CARET -2039 ; Pattern_Syntax # Pi SINGLE LEFT-POINTING ANGLE QUOTATION MARK -203A ; Pattern_Syntax # Pf SINGLE RIGHT-POINTING ANGLE QUOTATION MARK -203B..203E ; Pattern_Syntax # Po [4] REFERENCE MARK..OVERLINE -2041..2043 ; Pattern_Syntax # Po [3] CARET INSERTION POINT..HYPHEN BULLET -2044 ; Pattern_Syntax # Sm FRACTION SLASH -2045 ; Pattern_Syntax # Ps LEFT SQUARE BRACKET WITH QUILL -2046 ; Pattern_Syntax # Pe RIGHT SQUARE BRACKET WITH QUILL -2047..2051 ; Pattern_Syntax # Po [11] DOUBLE QUESTION MARK..TWO ASTERISKS ALIGNED VERTICALLY -2052 ; Pattern_Syntax # Sm COMMERCIAL MINUS SIGN -2053 ; Pattern_Syntax # Po SWUNG DASH -2055..205E ; Pattern_Syntax # Po [10] FLOWER PUNCTUATION MARK..VERTICAL FOUR DOTS -2190..2194 ; Pattern_Syntax # Sm [5] LEFTWARDS ARROW..LEFT RIGHT ARROW -2195..2199 ; Pattern_Syntax # So [5] UP DOWN ARROW..SOUTH WEST ARROW -219A..219B ; Pattern_Syntax # Sm [2] LEFTWARDS ARROW WITH STROKE..RIGHTWARDS ARROW WITH STROKE -219C..219F ; Pattern_Syntax # So [4] LEFTWARDS WAVE ARROW..UPWARDS TWO HEADED ARROW -21A0 ; Pattern_Syntax # Sm RIGHTWARDS TWO HEADED ARROW -21A1..21A2 ; Pattern_Syntax # So [2] DOWNWARDS TWO HEADED ARROW..LEFTWARDS ARROW WITH TAIL -21A3 ; Pattern_Syntax # Sm RIGHTWARDS ARROW WITH TAIL -21A4..21A5 ; Pattern_Syntax # So [2] LEFTWARDS ARROW FROM BAR..UPWARDS ARROW FROM BAR -21A6 ; Pattern_Syntax # Sm RIGHTWARDS ARROW FROM BAR -21A7..21AD ; Pattern_Syntax # So [7] DOWNWARDS ARROW FROM BAR..LEFT RIGHT WAVE ARROW -21AE ; Pattern_Syntax # Sm LEFT RIGHT ARROW WITH STROKE -21AF..21CD ; Pattern_Syntax # So [31] DOWNWARDS ZIGZAG ARROW..LEFTWARDS DOUBLE ARROW WITH STROKE -21CE..21CF ; Pattern_Syntax # Sm [2] LEFT RIGHT DOUBLE ARROW WITH STROKE..RIGHTWARDS DOUBLE ARROW WITH STROKE -21D0..21D1 ; Pattern_Syntax # So [2] LEFTWARDS DOUBLE ARROW..UPWARDS DOUBLE ARROW -21D2 ; Pattern_Syntax # Sm RIGHTWARDS DOUBLE ARROW -21D3 ; Pattern_Syntax # So DOWNWARDS DOUBLE ARROW -21D4 ; Pattern_Syntax # Sm LEFT RIGHT DOUBLE ARROW -21D5..21F3 ; Pattern_Syntax # So [31] UP DOWN DOUBLE ARROW..UP DOWN WHITE ARROW -21F4..22FF ; Pattern_Syntax # Sm [268] RIGHT ARROW WITH SMALL CIRCLE..Z NOTATION BAG MEMBERSHIP -2300..2307 ; Pattern_Syntax # So [8] DIAMETER SIGN..WAVY LINE -2308 ; Pattern_Syntax # Ps LEFT CEILING -2309 ; Pattern_Syntax # Pe RIGHT CEILING -230A ; Pattern_Syntax # Ps LEFT FLOOR -230B ; Pattern_Syntax # Pe RIGHT FLOOR -230C..231F ; Pattern_Syntax # So [20] BOTTOM RIGHT CROP..BOTTOM RIGHT CORNER -2320..2321 ; Pattern_Syntax # Sm [2] TOP HALF INTEGRAL..BOTTOM HALF INTEGRAL -2322..2328 ; Pattern_Syntax # So [7] FROWN..KEYBOARD -2329 ; Pattern_Syntax # Ps LEFT-POINTING ANGLE BRACKET -232A ; Pattern_Syntax # Pe RIGHT-POINTING ANGLE BRACKET -232B..237B ; Pattern_Syntax # So [81] ERASE TO THE LEFT..NOT CHECK MARK -237C ; Pattern_Syntax # Sm RIGHT ANGLE WITH DOWNWARDS ZIGZAG ARROW -237D..239A ; Pattern_Syntax # So [30] SHOULDERED OPEN BOX..CLEAR SCREEN SYMBOL -239B..23B3 ; Pattern_Syntax # Sm [25] LEFT PARENTHESIS UPPER HOOK..SUMMATION BOTTOM -23B4..23DB ; Pattern_Syntax # So [40] TOP SQUARE BRACKET..FUSE -23DC..23E1 ; Pattern_Syntax # Sm [6] TOP PARENTHESIS..BOTTOM TORTOISE SHELL BRACKET -23E2..2426 ; Pattern_Syntax # So [69] WHITE TRAPEZIUM..SYMBOL FOR SUBSTITUTE FORM TWO -2427..243F ; Pattern_Syntax # Cn [25] .. -2440..244A ; Pattern_Syntax # So [11] OCR HOOK..OCR DOUBLE BACKSLASH -244B..245F ; Pattern_Syntax # Cn [21] .. -2500..25B6 ; Pattern_Syntax # So [183] BOX DRAWINGS LIGHT HORIZONTAL..BLACK RIGHT-POINTING TRIANGLE -25B7 ; Pattern_Syntax # Sm WHITE RIGHT-POINTING TRIANGLE -25B8..25C0 ; Pattern_Syntax # So [9] BLACK RIGHT-POINTING SMALL TRIANGLE..BLACK LEFT-POINTING TRIANGLE -25C1 ; Pattern_Syntax # Sm WHITE LEFT-POINTING TRIANGLE -25C2..25F7 ; Pattern_Syntax # So [54] BLACK LEFT-POINTING SMALL TRIANGLE..WHITE CIRCLE WITH UPPER RIGHT QUADRANT -25F8..25FF ; Pattern_Syntax # Sm [8] UPPER LEFT TRIANGLE..LOWER RIGHT TRIANGLE -2600..266E ; Pattern_Syntax # So [111] BLACK SUN WITH RAYS..MUSIC NATURAL SIGN -266F ; Pattern_Syntax # Sm MUSIC SHARP SIGN -2670..2767 ; Pattern_Syntax # So [248] WEST SYRIAC CROSS..ROTATED FLORAL HEART BULLET -2768 ; Pattern_Syntax # Ps MEDIUM LEFT PARENTHESIS ORNAMENT -2769 ; Pattern_Syntax # Pe MEDIUM RIGHT PARENTHESIS ORNAMENT -276A ; Pattern_Syntax # Ps MEDIUM FLATTENED LEFT PARENTHESIS ORNAMENT -276B ; Pattern_Syntax # Pe MEDIUM FLATTENED RIGHT PARENTHESIS ORNAMENT -276C ; Pattern_Syntax # Ps MEDIUM LEFT-POINTING ANGLE BRACKET ORNAMENT -276D ; Pattern_Syntax # Pe MEDIUM RIGHT-POINTING ANGLE BRACKET ORNAMENT -276E ; Pattern_Syntax # Ps HEAVY LEFT-POINTING ANGLE QUOTATION MARK ORNAMENT -276F ; Pattern_Syntax # Pe HEAVY RIGHT-POINTING ANGLE QUOTATION MARK ORNAMENT -2770 ; Pattern_Syntax # Ps HEAVY LEFT-POINTING ANGLE BRACKET ORNAMENT -2771 ; Pattern_Syntax # Pe HEAVY RIGHT-POINTING ANGLE BRACKET ORNAMENT -2772 ; Pattern_Syntax # Ps LIGHT LEFT TORTOISE SHELL BRACKET ORNAMENT -2773 ; Pattern_Syntax # Pe LIGHT RIGHT TORTOISE SHELL BRACKET ORNAMENT -2774 ; Pattern_Syntax # Ps MEDIUM LEFT CURLY BRACKET ORNAMENT -2775 ; Pattern_Syntax # Pe MEDIUM RIGHT CURLY BRACKET ORNAMENT -2794..27BF ; Pattern_Syntax # So [44] HEAVY WIDE-HEADED RIGHTWARDS ARROW..DOUBLE CURLY LOOP -27C0..27C4 ; Pattern_Syntax # Sm [5] THREE DIMENSIONAL ANGLE..OPEN SUPERSET -27C5 ; Pattern_Syntax # Ps LEFT S-SHAPED BAG DELIMITER -27C6 ; Pattern_Syntax # Pe RIGHT S-SHAPED BAG DELIMITER -27C7..27E5 ; Pattern_Syntax # Sm [31] OR WITH DOT INSIDE..WHITE SQUARE WITH RIGHTWARDS TICK -27E6 ; Pattern_Syntax # Ps MATHEMATICAL LEFT WHITE SQUARE BRACKET -27E7 ; Pattern_Syntax # Pe MATHEMATICAL RIGHT WHITE SQUARE BRACKET -27E8 ; Pattern_Syntax # Ps MATHEMATICAL LEFT ANGLE BRACKET -27E9 ; Pattern_Syntax # Pe MATHEMATICAL RIGHT ANGLE BRACKET -27EA ; Pattern_Syntax # Ps MATHEMATICAL LEFT DOUBLE ANGLE BRACKET -27EB ; Pattern_Syntax # Pe MATHEMATICAL RIGHT DOUBLE ANGLE BRACKET -27EC ; Pattern_Syntax # Ps MATHEMATICAL LEFT WHITE TORTOISE SHELL BRACKET -27ED ; Pattern_Syntax # Pe MATHEMATICAL RIGHT WHITE TORTOISE SHELL BRACKET -27EE ; Pattern_Syntax # Ps MATHEMATICAL LEFT FLATTENED PARENTHESIS -27EF ; Pattern_Syntax # Pe MATHEMATICAL RIGHT FLATTENED PARENTHESIS -27F0..27FF ; Pattern_Syntax # Sm [16] UPWARDS QUADRUPLE ARROW..LONG RIGHTWARDS SQUIGGLE ARROW -2800..28FF ; Pattern_Syntax # So [256] BRAILLE PATTERN BLANK..BRAILLE PATTERN DOTS-12345678 -2900..2982 ; Pattern_Syntax # Sm [131] RIGHTWARDS TWO-HEADED ARROW WITH VERTICAL STROKE..Z NOTATION TYPE COLON -2983 ; Pattern_Syntax # Ps LEFT WHITE CURLY BRACKET -2984 ; Pattern_Syntax # Pe RIGHT WHITE CURLY BRACKET -2985 ; Pattern_Syntax # Ps LEFT WHITE PARENTHESIS -2986 ; Pattern_Syntax # Pe RIGHT WHITE PARENTHESIS -2987 ; Pattern_Syntax # Ps Z NOTATION LEFT IMAGE BRACKET -2988 ; Pattern_Syntax # Pe Z NOTATION RIGHT IMAGE BRACKET -2989 ; Pattern_Syntax # Ps Z NOTATION LEFT BINDING BRACKET -298A ; Pattern_Syntax # Pe Z NOTATION RIGHT BINDING BRACKET -298B ; Pattern_Syntax # Ps LEFT SQUARE BRACKET WITH UNDERBAR -298C ; Pattern_Syntax # Pe RIGHT SQUARE BRACKET WITH UNDERBAR -298D ; Pattern_Syntax # Ps LEFT SQUARE BRACKET WITH TICK IN TOP CORNER -298E ; Pattern_Syntax # Pe RIGHT SQUARE BRACKET WITH TICK IN BOTTOM CORNER -298F ; Pattern_Syntax # Ps LEFT SQUARE BRACKET WITH TICK IN BOTTOM CORNER -2990 ; Pattern_Syntax # Pe RIGHT SQUARE BRACKET WITH TICK IN TOP CORNER -2991 ; Pattern_Syntax # Ps LEFT ANGLE BRACKET WITH DOT -2992 ; Pattern_Syntax # Pe RIGHT ANGLE BRACKET WITH DOT -2993 ; Pattern_Syntax # Ps LEFT ARC LESS-THAN BRACKET -2994 ; Pattern_Syntax # Pe RIGHT ARC GREATER-THAN BRACKET -2995 ; Pattern_Syntax # Ps DOUBLE LEFT ARC GREATER-THAN BRACKET -2996 ; Pattern_Syntax # Pe DOUBLE RIGHT ARC LESS-THAN BRACKET -2997 ; Pattern_Syntax # Ps LEFT BLACK TORTOISE SHELL BRACKET -2998 ; Pattern_Syntax # Pe RIGHT BLACK TORTOISE SHELL BRACKET -2999..29D7 ; Pattern_Syntax # Sm [63] DOTTED FENCE..BLACK HOURGLASS -29D8 ; Pattern_Syntax # Ps LEFT WIGGLY FENCE -29D9 ; Pattern_Syntax # Pe RIGHT WIGGLY FENCE -29DA ; Pattern_Syntax # Ps LEFT DOUBLE WIGGLY FENCE -29DB ; Pattern_Syntax # Pe RIGHT DOUBLE WIGGLY FENCE -29DC..29FB ; Pattern_Syntax # Sm [32] INCOMPLETE INFINITY..TRIPLE PLUS -29FC ; Pattern_Syntax # Ps LEFT-POINTING CURVED ANGLE BRACKET -29FD ; Pattern_Syntax # Pe RIGHT-POINTING CURVED ANGLE BRACKET -29FE..2AFF ; Pattern_Syntax # Sm [258] TINY..N-ARY WHITE VERTICAL BAR -2B00..2B2F ; Pattern_Syntax # So [48] NORTH EAST WHITE ARROW..WHITE VERTICAL ELLIPSE -2B30..2B44 ; Pattern_Syntax # Sm [21] LEFT ARROW WITH SMALL CIRCLE..RIGHTWARDS ARROW THROUGH SUPERSET -2B45..2B46 ; Pattern_Syntax # So [2] LEFTWARDS QUADRUPLE ARROW..RIGHTWARDS QUADRUPLE ARROW -2B47..2B4C ; Pattern_Syntax # Sm [6] REVERSE TILDE OPERATOR ABOVE RIGHTWARDS ARROW..RIGHTWARDS ARROW ABOVE REVERSE TILDE OPERATOR -2B4D..2B73 ; Pattern_Syntax # So [39] DOWNWARDS TRIANGLE-HEADED ZIGZAG ARROW..DOWNWARDS TRIANGLE-HEADED ARROW TO BAR -2B74..2B75 ; Pattern_Syntax # Cn [2] .. -2B76..2B95 ; Pattern_Syntax # So [32] NORTH WEST TRIANGLE-HEADED ARROW TO BAR..RIGHTWARDS BLACK ARROW -2B96..2B97 ; Pattern_Syntax # Cn [2] .. -2B98..2BB9 ; Pattern_Syntax # So [34] THREE-D TOP-LIGHTED LEFTWARDS EQUILATERAL ARROWHEAD..UP ARROWHEAD IN A RECTANGLE BOX -2BBA..2BBC ; Pattern_Syntax # Cn [3] .. -2BBD..2BC8 ; Pattern_Syntax # So [12] BALLOT BOX WITH LIGHT X..BLACK MEDIUM RIGHT-POINTING TRIANGLE CENTRED -2BC9 ; Pattern_Syntax # Cn -2BCA..2BD2 ; Pattern_Syntax # So [9] TOP HALF BLACK CIRCLE..GROUP MARK -2BD3..2BEB ; Pattern_Syntax # Cn [25] .. -2BEC..2BEF ; Pattern_Syntax # So [4] LEFTWARDS TWO-HEADED ARROW WITH TRIANGLE ARROWHEADS..DOWNWARDS TWO-HEADED ARROW WITH TRIANGLE ARROWHEADS -2BF0..2BFF ; Pattern_Syntax # Cn [16] .. -2E00..2E01 ; Pattern_Syntax # Po [2] RIGHT ANGLE SUBSTITUTION MARKER..RIGHT ANGLE DOTTED SUBSTITUTION MARKER -2E02 ; Pattern_Syntax # Pi LEFT SUBSTITUTION BRACKET -2E03 ; Pattern_Syntax # Pf RIGHT SUBSTITUTION BRACKET -2E04 ; Pattern_Syntax # Pi LEFT DOTTED SUBSTITUTION BRACKET -2E05 ; Pattern_Syntax # Pf RIGHT DOTTED SUBSTITUTION BRACKET -2E06..2E08 ; Pattern_Syntax # Po [3] RAISED INTERPOLATION MARKER..DOTTED TRANSPOSITION MARKER -2E09 ; Pattern_Syntax # Pi LEFT TRANSPOSITION BRACKET -2E0A ; Pattern_Syntax # Pf RIGHT TRANSPOSITION BRACKET -2E0B ; Pattern_Syntax # Po RAISED SQUARE -2E0C ; Pattern_Syntax # Pi LEFT RAISED OMISSION BRACKET -2E0D ; Pattern_Syntax # Pf RIGHT RAISED OMISSION BRACKET -2E0E..2E16 ; Pattern_Syntax # Po [9] EDITORIAL CORONIS..DOTTED RIGHT-POINTING ANGLE -2E17 ; Pattern_Syntax # Pd DOUBLE OBLIQUE HYPHEN -2E18..2E19 ; Pattern_Syntax # Po [2] INVERTED INTERROBANG..PALM BRANCH -2E1A ; Pattern_Syntax # Pd HYPHEN WITH DIAERESIS -2E1B ; Pattern_Syntax # Po TILDE WITH RING ABOVE -2E1C ; Pattern_Syntax # Pi LEFT LOW PARAPHRASE BRACKET -2E1D ; Pattern_Syntax # Pf RIGHT LOW PARAPHRASE BRACKET -2E1E..2E1F ; Pattern_Syntax # Po [2] TILDE WITH DOT ABOVE..TILDE WITH DOT BELOW -2E20 ; Pattern_Syntax # Pi LEFT VERTICAL BAR WITH QUILL -2E21 ; Pattern_Syntax # Pf RIGHT VERTICAL BAR WITH QUILL -2E22 ; Pattern_Syntax # Ps TOP LEFT HALF BRACKET -2E23 ; Pattern_Syntax # Pe TOP RIGHT HALF BRACKET -2E24 ; Pattern_Syntax # Ps BOTTOM LEFT HALF BRACKET -2E25 ; Pattern_Syntax # Pe BOTTOM RIGHT HALF BRACKET -2E26 ; Pattern_Syntax # Ps LEFT SIDEWAYS U BRACKET -2E27 ; Pattern_Syntax # Pe RIGHT SIDEWAYS U BRACKET -2E28 ; Pattern_Syntax # Ps LEFT DOUBLE PARENTHESIS -2E29 ; Pattern_Syntax # Pe RIGHT DOUBLE PARENTHESIS -2E2A..2E2E ; Pattern_Syntax # Po [5] TWO DOTS OVER ONE DOT PUNCTUATION..REVERSED QUESTION MARK -2E2F ; Pattern_Syntax # Lm VERTICAL TILDE -2E30..2E39 ; Pattern_Syntax # Po [10] RING POINT..TOP HALF SECTION SIGN -2E3A..2E3B ; Pattern_Syntax # Pd [2] TWO-EM DASH..THREE-EM DASH -2E3C..2E3F ; Pattern_Syntax # Po [4] STENOGRAPHIC FULL STOP..CAPITULUM -2E40 ; Pattern_Syntax # Pd DOUBLE HYPHEN -2E41 ; Pattern_Syntax # Po REVERSED COMMA -2E42 ; Pattern_Syntax # Ps DOUBLE LOW-REVERSED-9 QUOTATION MARK -2E43..2E49 ; Pattern_Syntax # Po [7] DASH WITH LEFT UPTURN..DOUBLE STACKED COMMA -2E4A..2E7F ; Pattern_Syntax # Cn [54] .. -3001..3003 ; Pattern_Syntax # Po [3] IDEOGRAPHIC COMMA..DITTO MARK -3008 ; Pattern_Syntax # Ps LEFT ANGLE BRACKET -3009 ; Pattern_Syntax # Pe RIGHT ANGLE BRACKET -300A ; Pattern_Syntax # Ps LEFT DOUBLE ANGLE BRACKET -300B ; Pattern_Syntax # Pe RIGHT DOUBLE ANGLE BRACKET -300C ; Pattern_Syntax # Ps LEFT CORNER BRACKET -300D ; Pattern_Syntax # Pe RIGHT CORNER BRACKET -300E ; Pattern_Syntax # Ps LEFT WHITE CORNER BRACKET -300F ; Pattern_Syntax # Pe RIGHT WHITE CORNER BRACKET -3010 ; Pattern_Syntax # Ps LEFT BLACK LENTICULAR BRACKET -3011 ; Pattern_Syntax # Pe RIGHT BLACK LENTICULAR BRACKET -3012..3013 ; Pattern_Syntax # So [2] POSTAL MARK..GETA MARK -3014 ; Pattern_Syntax # Ps LEFT TORTOISE SHELL BRACKET -3015 ; Pattern_Syntax # Pe RIGHT TORTOISE SHELL BRACKET -3016 ; Pattern_Syntax # Ps LEFT WHITE LENTICULAR BRACKET -3017 ; Pattern_Syntax # Pe RIGHT WHITE LENTICULAR BRACKET -3018 ; Pattern_Syntax # Ps LEFT WHITE TORTOISE SHELL BRACKET -3019 ; Pattern_Syntax # Pe RIGHT WHITE TORTOISE SHELL BRACKET -301A ; Pattern_Syntax # Ps LEFT WHITE SQUARE BRACKET -301B ; Pattern_Syntax # Pe RIGHT WHITE SQUARE BRACKET -301C ; Pattern_Syntax # Pd WAVE DASH -301D ; Pattern_Syntax # Ps REVERSED DOUBLE PRIME QUOTATION MARK -301E..301F ; Pattern_Syntax # Pe [2] DOUBLE PRIME QUOTATION MARK..LOW DOUBLE PRIME QUOTATION MARK -3020 ; Pattern_Syntax # So POSTAL MARK FACE -3030 ; Pattern_Syntax # Pd WAVY DASH -FD3E ; Pattern_Syntax # Pe ORNATE LEFT PARENTHESIS -FD3F ; Pattern_Syntax # Ps ORNATE RIGHT PARENTHESIS -FE45..FE46 ; Pattern_Syntax # Po [2] SESAME DOT..WHITE SESAME DOT - -# Total code points: 2760 - -# ================================================ - -0600..0605 ; Prepended_Concatenation_Mark # Cf [6] ARABIC NUMBER SIGN..ARABIC NUMBER MARK ABOVE -06DD ; Prepended_Concatenation_Mark # Cf ARABIC END OF AYAH -070F ; Prepended_Concatenation_Mark # Cf SYRIAC ABBREVIATION MARK -08E2 ; Prepended_Concatenation_Mark # Cf ARABIC DISPUTED END OF AYAH -110BD ; Prepended_Concatenation_Mark # Cf KAITHI NUMBER SIGN - -# Total code points: 10 - -# ================================================ - -1F1E6..1F1FF ; Regional_Indicator # So [26] REGIONAL INDICATOR SYMBOL LETTER A..REGIONAL INDICATOR SYMBOL LETTER Z - -# Total code points: 26 - -# EOF diff --git a/lib-satysfi/unidata/PropertyAliases.txt b/lib-satysfi/unidata/PropertyAliases.txt deleted file mode 100644 index f2e26ba05..000000000 --- a/lib-satysfi/unidata/PropertyAliases.txt +++ /dev/null @@ -1,197 +0,0 @@ -# PropertyAliases-10.0.0.txt -# Date: 2017-02-14, 04:26:16 GMT -# © 2017 Unicode®, Inc. -# Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries. -# For terms of use, see http://www.unicode.org/terms_of_use.html -# -# Unicode Character Database -# For documentation, see http://www.unicode.org/reports/tr44/ -# -# This file contains aliases for properties used in the UCD. -# These names can be used for XML formats of UCD data, for regular-expression -# property tests, and other programmatic textual descriptions of Unicode data. -# -# The names may be translated in appropriate environments, and additional -# aliases may be useful. -# -# FORMAT -# -# Each line has two or more fields, separated by semicolons. -# -# First Field: The first field is an abbreviated name for the property. -# -# Second Field: The second field is a long name -# -# The above are the preferred aliases. Other aliases may be listed in additional fields. -# -# Loose matching should be applied to all property names and property values, with -# the exception of String Property values. With loose matching of property names and -# values, the case distinctions, whitespace, and '_' are ignored. For Numeric Property -# values, numeric equivalencies are applied: thus "01.00" is equivalent to "1". -# -# NOTE: Property value names are NOT unique across properties. For example: -# -# AL means Arabic Letter for the Bidi_Class property, and -# AL means Above_Left for the Combining_Class property, and -# AL means Alphabetic for the Line_Break property. -# -# In addition, some property names may be the same as some property value names. -# For example: -# -# sc means the Script property, and -# Sc means the General_Category property value Currency_Symbol (Sc) -# -# The combination of property value and property name is, however, unique. -# -# For more information, see UTS #18: Unicode Regular Expressions -# ================================================ - - -# ================================================ -# Numeric Properties -# ================================================ -cjkAccountingNumeric ; kAccountingNumeric -cjkOtherNumeric ; kOtherNumeric -cjkPrimaryNumeric ; kPrimaryNumeric -nv ; Numeric_Value - -# ================================================ -# String Properties -# ================================================ -cf ; Case_Folding -cjkCompatibilityVariant ; kCompatibilityVariant -dm ; Decomposition_Mapping -FC_NFKC ; FC_NFKC_Closure -lc ; Lowercase_Mapping -NFKC_CF ; NFKC_Casefold -scf ; Simple_Case_Folding ; sfc -slc ; Simple_Lowercase_Mapping -stc ; Simple_Titlecase_Mapping -suc ; Simple_Uppercase_Mapping -tc ; Titlecase_Mapping -uc ; Uppercase_Mapping - -# ================================================ -# Miscellaneous Properties -# ================================================ -bmg ; Bidi_Mirroring_Glyph -bpb ; Bidi_Paired_Bracket -cjkIICore ; kIICore -cjkIRG_GSource ; kIRG_GSource -cjkIRG_HSource ; kIRG_HSource -cjkIRG_JSource ; kIRG_JSource -cjkIRG_KPSource ; kIRG_KPSource -cjkIRG_KSource ; kIRG_KSource -cjkIRG_MSource ; kIRG_MSource -cjkIRG_TSource ; kIRG_TSource -cjkIRG_USource ; kIRG_USource -cjkIRG_VSource ; kIRG_VSource -cjkRSUnicode ; kRSUnicode ; Unicode_Radical_Stroke; URS -isc ; ISO_Comment -JSN ; Jamo_Short_Name -na ; Name -na1 ; Unicode_1_Name -Name_Alias ; Name_Alias -scx ; Script_Extensions - -# ================================================ -# Catalog Properties -# ================================================ -age ; Age -blk ; Block -sc ; Script - -# ================================================ -# Enumerated Properties -# ================================================ -bc ; Bidi_Class -bpt ; Bidi_Paired_Bracket_Type -ccc ; Canonical_Combining_Class -dt ; Decomposition_Type -ea ; East_Asian_Width -gc ; General_Category -GCB ; Grapheme_Cluster_Break -hst ; Hangul_Syllable_Type -InPC ; Indic_Positional_Category -InSC ; Indic_Syllabic_Category -jg ; Joining_Group -jt ; Joining_Type -lb ; Line_Break -NFC_QC ; NFC_Quick_Check -NFD_QC ; NFD_Quick_Check -NFKC_QC ; NFKC_Quick_Check -NFKD_QC ; NFKD_Quick_Check -nt ; Numeric_Type -SB ; Sentence_Break -vo ; Vertical_Orientation -WB ; Word_Break - -# ================================================ -# Binary Properties -# ================================================ -AHex ; ASCII_Hex_Digit -Alpha ; Alphabetic -Bidi_C ; Bidi_Control -Bidi_M ; Bidi_Mirrored -Cased ; Cased -CE ; Composition_Exclusion -CI ; Case_Ignorable -Comp_Ex ; Full_Composition_Exclusion -CWCF ; Changes_When_Casefolded -CWCM ; Changes_When_Casemapped -CWKCF ; Changes_When_NFKC_Casefolded -CWL ; Changes_When_Lowercased -CWT ; Changes_When_Titlecased -CWU ; Changes_When_Uppercased -Dash ; Dash -Dep ; Deprecated -DI ; Default_Ignorable_Code_Point -Dia ; Diacritic -Ext ; Extender -Gr_Base ; Grapheme_Base -Gr_Ext ; Grapheme_Extend -Gr_Link ; Grapheme_Link -Hex ; Hex_Digit -Hyphen ; Hyphen -IDC ; ID_Continue -Ideo ; Ideographic -IDS ; ID_Start -IDSB ; IDS_Binary_Operator -IDST ; IDS_Trinary_Operator -Join_C ; Join_Control -LOE ; Logical_Order_Exception -Lower ; Lowercase -Math ; Math -NChar ; Noncharacter_Code_Point -OAlpha ; Other_Alphabetic -ODI ; Other_Default_Ignorable_Code_Point -OGr_Ext ; Other_Grapheme_Extend -OIDC ; Other_ID_Continue -OIDS ; Other_ID_Start -OLower ; Other_Lowercase -OMath ; Other_Math -OUpper ; Other_Uppercase -Pat_Syn ; Pattern_Syntax -Pat_WS ; Pattern_White_Space -PCM ; Prepended_Concatenation_Mark -QMark ; Quotation_Mark -Radical ; Radical -RI ; Regional_Indicator -SD ; Soft_Dotted -STerm ; Sentence_Terminal -Term ; Terminal_Punctuation -UIdeo ; Unified_Ideograph -Upper ; Uppercase -VS ; Variation_Selector -WSpace ; White_Space ; space -XIDC ; XID_Continue -XIDS ; XID_Start -XO_NFC ; Expands_On_NFC -XO_NFD ; Expands_On_NFD -XO_NFKC ; Expands_On_NFKC -XO_NFKD ; Expands_On_NFKD - -# ================================================ -# Total: 120 - -# EOF diff --git a/lib-satysfi/unidata/PropertyValueAliases.txt b/lib-satysfi/unidata/PropertyValueAliases.txt deleted file mode 100644 index e9b3548ca..000000000 --- a/lib-satysfi/unidata/PropertyValueAliases.txt +++ /dev/null @@ -1,1496 +0,0 @@ -# PropertyValueAliases-10.0.0.txt -# Date: 2017-05-17, 08:45:34 GMT -# © 2017 Unicode®, Inc. -# Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries. -# For terms of use, see http://www.unicode.org/terms_of_use.html -# -# Unicode Character Database -# For documentation, see http://www.unicode.org/reports/tr44/ -# -# This file contains aliases for property values used in the UCD. -# These names can be used for XML formats of UCD data, for regular-expression -# property tests, and other programmatic textual descriptions of Unicode data. -# -# The names may be translated in appropriate environments, and additional -# aliases may be useful. -# -# FORMAT -# -# Each line describes a property value name. -# This consists of three or more fields, separated by semicolons. -# -# First Field: The first field describes the property for which that -# property value name is used. -# -# Second Field: The second field is an abbreviated name. -# -# Third Field: The third field is a long name. -# -# In the case of ccc, there are 4 fields. The second field is numeric, third -# is abbreviated, and fourth is long. -# -# The above are the preferred aliases. Other aliases may be listed in additional fields. -# -# Loose matching should be applied to all property names and property values, with -# the exception of String Property values. With loose matching of property names and -# values, the case distinctions, whitespace, hyphens, and '_' are ignored. -# For Numeric Property values, numeric equivalence is applied: thus "01.00" -# is equivalent to "1". -# -# NOTE: Property value names are NOT unique across properties. For example: -# -# AL means Arabic Letter for the Bidi_Class property, and -# AL means Above_Left for the Canonical_Combining_Class property, and -# AL means Alphabetic for the Line_Break property. -# -# In addition, some property names may be the same as some property value names. -# For example: -# -# sc means the Script property, and -# Sc means the General_Category property value Currency_Symbol (Sc) -# -# The combination of property value and property name is, however, unique. -# -# For more information, see UTS #18: Unicode Regular Expressions -# ================================================ - - -# ASCII_Hex_Digit (AHex) - -AHex; N ; No ; F ; False -AHex; Y ; Yes ; T ; True - -# Age (age) - -age; 1.1 ; V1_1 -age; 2.0 ; V2_0 -age; 2.1 ; V2_1 -age; 3.0 ; V3_0 -age; 3.1 ; V3_1 -age; 3.2 ; V3_2 -age; 4.0 ; V4_0 -age; 4.1 ; V4_1 -age; 5.0 ; V5_0 -age; 5.1 ; V5_1 -age; 5.2 ; V5_2 -age; 6.0 ; V6_0 -age; 6.1 ; V6_1 -age; 6.2 ; V6_2 -age; 6.3 ; V6_3 -age; 7.0 ; V7_0 -age; 8.0 ; V8_0 -age; 9.0 ; V9_0 -age; 10.0 ; V10_0 -age; NA ; Unassigned - -# Alphabetic (Alpha) - -Alpha; N ; No ; F ; False -Alpha; Y ; Yes ; T ; True - -# Bidi_Class (bc) - -bc ; AL ; Arabic_Letter -bc ; AN ; Arabic_Number -bc ; B ; Paragraph_Separator -bc ; BN ; Boundary_Neutral -bc ; CS ; Common_Separator -bc ; EN ; European_Number -bc ; ES ; European_Separator -bc ; ET ; European_Terminator -bc ; FSI ; First_Strong_Isolate -bc ; L ; Left_To_Right -bc ; LRE ; Left_To_Right_Embedding -bc ; LRI ; Left_To_Right_Isolate -bc ; LRO ; Left_To_Right_Override -bc ; NSM ; Nonspacing_Mark -bc ; ON ; Other_Neutral -bc ; PDF ; Pop_Directional_Format -bc ; PDI ; Pop_Directional_Isolate -bc ; R ; Right_To_Left -bc ; RLE ; Right_To_Left_Embedding -bc ; RLI ; Right_To_Left_Isolate -bc ; RLO ; Right_To_Left_Override -bc ; S ; Segment_Separator -bc ; WS ; White_Space - -# Bidi_Control (Bidi_C) - -Bidi_C; N ; No ; F ; False -Bidi_C; Y ; Yes ; T ; True - -# Bidi_Mirrored (Bidi_M) - -Bidi_M; N ; No ; F ; False -Bidi_M; Y ; Yes ; T ; True - -# Bidi_Mirroring_Glyph (bmg) - -# @missing: 0000..10FFFF; Bidi_Mirroring_Glyph; - -# Bidi_Paired_Bracket (bpb) - -# @missing: 0000..10FFFF; Bidi_Paired_Bracket; - -# Bidi_Paired_Bracket_Type (bpt) - -bpt; c ; Close -bpt; n ; None -bpt; o ; Open -# @missing: 0000..10FFFF; Bidi_Paired_Bracket_Type; n - -# Block (blk) - -blk; Adlam ; Adlam -blk; Aegean_Numbers ; Aegean_Numbers -blk; Ahom ; Ahom -blk; Alchemical ; Alchemical_Symbols -blk; Alphabetic_PF ; Alphabetic_Presentation_Forms -blk; Anatolian_Hieroglyphs ; Anatolian_Hieroglyphs -blk; Ancient_Greek_Music ; Ancient_Greek_Musical_Notation -blk; Ancient_Greek_Numbers ; Ancient_Greek_Numbers -blk; Ancient_Symbols ; Ancient_Symbols -blk; Arabic ; Arabic -blk; Arabic_Ext_A ; Arabic_Extended_A -blk; Arabic_Math ; Arabic_Mathematical_Alphabetic_Symbols -blk; Arabic_PF_A ; Arabic_Presentation_Forms_A ; Arabic_Presentation_Forms-A -blk; Arabic_PF_B ; Arabic_Presentation_Forms_B -blk; Arabic_Sup ; Arabic_Supplement -blk; Armenian ; Armenian -blk; Arrows ; Arrows -blk; ASCII ; Basic_Latin -blk; Avestan ; Avestan -blk; Balinese ; Balinese -blk; Bamum ; Bamum -blk; Bamum_Sup ; Bamum_Supplement -blk; Bassa_Vah ; Bassa_Vah -blk; Batak ; Batak -blk; Bengali ; Bengali -blk; Bhaiksuki ; Bhaiksuki -blk; Block_Elements ; Block_Elements -blk; Bopomofo ; Bopomofo -blk; Bopomofo_Ext ; Bopomofo_Extended -blk; Box_Drawing ; Box_Drawing -blk; Brahmi ; Brahmi -blk; Braille ; Braille_Patterns -blk; Buginese ; Buginese -blk; Buhid ; Buhid -blk; Byzantine_Music ; Byzantine_Musical_Symbols -blk; Carian ; Carian -blk; Caucasian_Albanian ; Caucasian_Albanian -blk; Chakma ; Chakma -blk; Cham ; Cham -blk; Cherokee ; Cherokee -blk; Cherokee_Sup ; Cherokee_Supplement -blk; CJK ; CJK_Unified_Ideographs -blk; CJK_Compat ; CJK_Compatibility -blk; CJK_Compat_Forms ; CJK_Compatibility_Forms -blk; CJK_Compat_Ideographs ; CJK_Compatibility_Ideographs -blk; CJK_Compat_Ideographs_Sup ; CJK_Compatibility_Ideographs_Supplement -blk; CJK_Ext_A ; CJK_Unified_Ideographs_Extension_A -blk; CJK_Ext_B ; CJK_Unified_Ideographs_Extension_B -blk; CJK_Ext_C ; CJK_Unified_Ideographs_Extension_C -blk; CJK_Ext_D ; CJK_Unified_Ideographs_Extension_D -blk; CJK_Ext_E ; CJK_Unified_Ideographs_Extension_E -blk; CJK_Ext_F ; CJK_Unified_Ideographs_Extension_F -blk; CJK_Radicals_Sup ; CJK_Radicals_Supplement -blk; CJK_Strokes ; CJK_Strokes -blk; CJK_Symbols ; CJK_Symbols_And_Punctuation -blk; Compat_Jamo ; Hangul_Compatibility_Jamo -blk; Control_Pictures ; Control_Pictures -blk; Coptic ; Coptic -blk; Coptic_Epact_Numbers ; Coptic_Epact_Numbers -blk; Counting_Rod ; Counting_Rod_Numerals -blk; Cuneiform ; Cuneiform -blk; Cuneiform_Numbers ; Cuneiform_Numbers_And_Punctuation -blk; Currency_Symbols ; Currency_Symbols -blk; Cypriot_Syllabary ; Cypriot_Syllabary -blk; Cyrillic ; Cyrillic -blk; Cyrillic_Ext_A ; Cyrillic_Extended_A -blk; Cyrillic_Ext_B ; Cyrillic_Extended_B -blk; Cyrillic_Ext_C ; Cyrillic_Extended_C -blk; Cyrillic_Sup ; Cyrillic_Supplement ; Cyrillic_Supplementary -blk; Deseret ; Deseret -blk; Devanagari ; Devanagari -blk; Devanagari_Ext ; Devanagari_Extended -blk; Diacriticals ; Combining_Diacritical_Marks -blk; Diacriticals_Ext ; Combining_Diacritical_Marks_Extended -blk; Diacriticals_For_Symbols ; Combining_Diacritical_Marks_For_Symbols; Combining_Marks_For_Symbols -blk; Diacriticals_Sup ; Combining_Diacritical_Marks_Supplement -blk; Dingbats ; Dingbats -blk; Domino ; Domino_Tiles -blk; Duployan ; Duployan -blk; Early_Dynastic_Cuneiform ; Early_Dynastic_Cuneiform -blk; Egyptian_Hieroglyphs ; Egyptian_Hieroglyphs -blk; Elbasan ; Elbasan -blk; Emoticons ; Emoticons -blk; Enclosed_Alphanum ; Enclosed_Alphanumerics -blk; Enclosed_Alphanum_Sup ; Enclosed_Alphanumeric_Supplement -blk; Enclosed_CJK ; Enclosed_CJK_Letters_And_Months -blk; Enclosed_Ideographic_Sup ; Enclosed_Ideographic_Supplement -blk; Ethiopic ; Ethiopic -blk; Ethiopic_Ext ; Ethiopic_Extended -blk; Ethiopic_Ext_A ; Ethiopic_Extended_A -blk; Ethiopic_Sup ; Ethiopic_Supplement -blk; Geometric_Shapes ; Geometric_Shapes -blk; Geometric_Shapes_Ext ; Geometric_Shapes_Extended -blk; Georgian ; Georgian -blk; Georgian_Sup ; Georgian_Supplement -blk; Glagolitic ; Glagolitic -blk; Glagolitic_Sup ; Glagolitic_Supplement -blk; Gothic ; Gothic -blk; Grantha ; Grantha -blk; Greek ; Greek_And_Coptic -blk; Greek_Ext ; Greek_Extended -blk; Gujarati ; Gujarati -blk; Gurmukhi ; Gurmukhi -blk; Half_And_Full_Forms ; Halfwidth_And_Fullwidth_Forms -blk; Half_Marks ; Combining_Half_Marks -blk; Hangul ; Hangul_Syllables -blk; Hanunoo ; Hanunoo -blk; Hatran ; Hatran -blk; Hebrew ; Hebrew -blk; High_PU_Surrogates ; High_Private_Use_Surrogates -blk; High_Surrogates ; High_Surrogates -blk; Hiragana ; Hiragana -blk; IDC ; Ideographic_Description_Characters -blk; Ideographic_Symbols ; Ideographic_Symbols_And_Punctuation -blk; Imperial_Aramaic ; Imperial_Aramaic -blk; Indic_Number_Forms ; Common_Indic_Number_Forms -blk; Inscriptional_Pahlavi ; Inscriptional_Pahlavi -blk; Inscriptional_Parthian ; Inscriptional_Parthian -blk; IPA_Ext ; IPA_Extensions -blk; Jamo ; Hangul_Jamo -blk; Jamo_Ext_A ; Hangul_Jamo_Extended_A -blk; Jamo_Ext_B ; Hangul_Jamo_Extended_B -blk; Javanese ; Javanese -blk; Kaithi ; Kaithi -blk; Kana_Ext_A ; Kana_Extended_A -blk; Kana_Sup ; Kana_Supplement -blk; Kanbun ; Kanbun -blk; Kangxi ; Kangxi_Radicals -blk; Kannada ; Kannada -blk; Katakana ; Katakana -blk; Katakana_Ext ; Katakana_Phonetic_Extensions -blk; Kayah_Li ; Kayah_Li -blk; Kharoshthi ; Kharoshthi -blk; Khmer ; Khmer -blk; Khmer_Symbols ; Khmer_Symbols -blk; Khojki ; Khojki -blk; Khudawadi ; Khudawadi -blk; Lao ; Lao -blk; Latin_1_Sup ; Latin_1_Supplement ; Latin_1 -blk; Latin_Ext_A ; Latin_Extended_A -blk; Latin_Ext_Additional ; Latin_Extended_Additional -blk; Latin_Ext_B ; Latin_Extended_B -blk; Latin_Ext_C ; Latin_Extended_C -blk; Latin_Ext_D ; Latin_Extended_D -blk; Latin_Ext_E ; Latin_Extended_E -blk; Lepcha ; Lepcha -blk; Letterlike_Symbols ; Letterlike_Symbols -blk; Limbu ; Limbu -blk; Linear_A ; Linear_A -blk; Linear_B_Ideograms ; Linear_B_Ideograms -blk; Linear_B_Syllabary ; Linear_B_Syllabary -blk; Lisu ; Lisu -blk; Low_Surrogates ; Low_Surrogates -blk; Lycian ; Lycian -blk; Lydian ; Lydian -blk; Mahajani ; Mahajani -blk; Mahjong ; Mahjong_Tiles -blk; Malayalam ; Malayalam -blk; Mandaic ; Mandaic -blk; Manichaean ; Manichaean -blk; Marchen ; Marchen -blk; Masaram_Gondi ; Masaram_Gondi -blk; Math_Alphanum ; Mathematical_Alphanumeric_Symbols -blk; Math_Operators ; Mathematical_Operators -blk; Meetei_Mayek ; Meetei_Mayek -blk; Meetei_Mayek_Ext ; Meetei_Mayek_Extensions -blk; Mende_Kikakui ; Mende_Kikakui -blk; Meroitic_Cursive ; Meroitic_Cursive -blk; Meroitic_Hieroglyphs ; Meroitic_Hieroglyphs -blk; Miao ; Miao -blk; Misc_Arrows ; Miscellaneous_Symbols_And_Arrows -blk; Misc_Math_Symbols_A ; Miscellaneous_Mathematical_Symbols_A -blk; Misc_Math_Symbols_B ; Miscellaneous_Mathematical_Symbols_B -blk; Misc_Pictographs ; Miscellaneous_Symbols_And_Pictographs -blk; Misc_Symbols ; Miscellaneous_Symbols -blk; Misc_Technical ; Miscellaneous_Technical -blk; Modi ; Modi -blk; Modifier_Letters ; Spacing_Modifier_Letters -blk; Modifier_Tone_Letters ; Modifier_Tone_Letters -blk; Mongolian ; Mongolian -blk; Mongolian_Sup ; Mongolian_Supplement -blk; Mro ; Mro -blk; Multani ; Multani -blk; Music ; Musical_Symbols -blk; Myanmar ; Myanmar -blk; Myanmar_Ext_A ; Myanmar_Extended_A -blk; Myanmar_Ext_B ; Myanmar_Extended_B -blk; Nabataean ; Nabataean -blk; NB ; No_Block -blk; New_Tai_Lue ; New_Tai_Lue -blk; Newa ; Newa -blk; NKo ; NKo -blk; Number_Forms ; Number_Forms -blk; Nushu ; Nushu -blk; OCR ; Optical_Character_Recognition -blk; Ogham ; Ogham -blk; Ol_Chiki ; Ol_Chiki -blk; Old_Hungarian ; Old_Hungarian -blk; Old_Italic ; Old_Italic -blk; Old_North_Arabian ; Old_North_Arabian -blk; Old_Permic ; Old_Permic -blk; Old_Persian ; Old_Persian -blk; Old_South_Arabian ; Old_South_Arabian -blk; Old_Turkic ; Old_Turkic -blk; Oriya ; Oriya -blk; Ornamental_Dingbats ; Ornamental_Dingbats -blk; Osage ; Osage -blk; Osmanya ; Osmanya -blk; Pahawh_Hmong ; Pahawh_Hmong -blk; Palmyrene ; Palmyrene -blk; Pau_Cin_Hau ; Pau_Cin_Hau -blk; Phags_Pa ; Phags_Pa -blk; Phaistos ; Phaistos_Disc -blk; Phoenician ; Phoenician -blk; Phonetic_Ext ; Phonetic_Extensions -blk; Phonetic_Ext_Sup ; Phonetic_Extensions_Supplement -blk; Playing_Cards ; Playing_Cards -blk; Psalter_Pahlavi ; Psalter_Pahlavi -blk; PUA ; Private_Use_Area ; Private_Use -blk; Punctuation ; General_Punctuation -blk; Rejang ; Rejang -blk; Rumi ; Rumi_Numeral_Symbols -blk; Runic ; Runic -blk; Samaritan ; Samaritan -blk; Saurashtra ; Saurashtra -blk; Sharada ; Sharada -blk; Shavian ; Shavian -blk; Shorthand_Format_Controls ; Shorthand_Format_Controls -blk; Siddham ; Siddham -blk; Sinhala ; Sinhala -blk; Sinhala_Archaic_Numbers ; Sinhala_Archaic_Numbers -blk; Small_Forms ; Small_Form_Variants -blk; Sora_Sompeng ; Sora_Sompeng -blk; Soyombo ; Soyombo -blk; Specials ; Specials -blk; Sundanese ; Sundanese -blk; Sundanese_Sup ; Sundanese_Supplement -blk; Sup_Arrows_A ; Supplemental_Arrows_A -blk; Sup_Arrows_B ; Supplemental_Arrows_B -blk; Sup_Arrows_C ; Supplemental_Arrows_C -blk; Sup_Math_Operators ; Supplemental_Mathematical_Operators -blk; Sup_PUA_A ; Supplementary_Private_Use_Area_A -blk; Sup_PUA_B ; Supplementary_Private_Use_Area_B -blk; Sup_Punctuation ; Supplemental_Punctuation -blk; Sup_Symbols_And_Pictographs ; Supplemental_Symbols_And_Pictographs -blk; Super_And_Sub ; Superscripts_And_Subscripts -blk; Sutton_SignWriting ; Sutton_SignWriting -blk; Syloti_Nagri ; Syloti_Nagri -blk; Syriac ; Syriac -blk; Syriac_Sup ; Syriac_Supplement -blk; Tagalog ; Tagalog -blk; Tagbanwa ; Tagbanwa -blk; Tags ; Tags -blk; Tai_Le ; Tai_Le -blk; Tai_Tham ; Tai_Tham -blk; Tai_Viet ; Tai_Viet -blk; Tai_Xuan_Jing ; Tai_Xuan_Jing_Symbols -blk; Takri ; Takri -blk; Tamil ; Tamil -blk; Tangut ; Tangut -blk; Tangut_Components ; Tangut_Components -blk; Telugu ; Telugu -blk; Thaana ; Thaana -blk; Thai ; Thai -blk; Tibetan ; Tibetan -blk; Tifinagh ; Tifinagh -blk; Tirhuta ; Tirhuta -blk; Transport_And_Map ; Transport_And_Map_Symbols -blk; UCAS ; Unified_Canadian_Aboriginal_Syllabics; Canadian_Syllabics -blk; UCAS_Ext ; Unified_Canadian_Aboriginal_Syllabics_Extended -blk; Ugaritic ; Ugaritic -blk; Vai ; Vai -blk; Vedic_Ext ; Vedic_Extensions -blk; Vertical_Forms ; Vertical_Forms -blk; VS ; Variation_Selectors -blk; VS_Sup ; Variation_Selectors_Supplement -blk; Warang_Citi ; Warang_Citi -blk; Yi_Radicals ; Yi_Radicals -blk; Yi_Syllables ; Yi_Syllables -blk; Yijing ; Yijing_Hexagram_Symbols -blk; Zanabazar_Square ; Zanabazar_Square - -# Canonical_Combining_Class (ccc) - -ccc; 0; NR ; Not_Reordered -ccc; 1; OV ; Overlay -ccc; 7; NK ; Nukta -ccc; 8; KV ; Kana_Voicing -ccc; 9; VR ; Virama -ccc; 10; CCC10 ; CCC10 -ccc; 11; CCC11 ; CCC11 -ccc; 12; CCC12 ; CCC12 -ccc; 13; CCC13 ; CCC13 -ccc; 14; CCC14 ; CCC14 -ccc; 15; CCC15 ; CCC15 -ccc; 16; CCC16 ; CCC16 -ccc; 17; CCC17 ; CCC17 -ccc; 18; CCC18 ; CCC18 -ccc; 19; CCC19 ; CCC19 -ccc; 20; CCC20 ; CCC20 -ccc; 21; CCC21 ; CCC21 -ccc; 22; CCC22 ; CCC22 -ccc; 23; CCC23 ; CCC23 -ccc; 24; CCC24 ; CCC24 -ccc; 25; CCC25 ; CCC25 -ccc; 26; CCC26 ; CCC26 -ccc; 27; CCC27 ; CCC27 -ccc; 28; CCC28 ; CCC28 -ccc; 29; CCC29 ; CCC29 -ccc; 30; CCC30 ; CCC30 -ccc; 31; CCC31 ; CCC31 -ccc; 32; CCC32 ; CCC32 -ccc; 33; CCC33 ; CCC33 -ccc; 34; CCC34 ; CCC34 -ccc; 35; CCC35 ; CCC35 -ccc; 36; CCC36 ; CCC36 -ccc; 84; CCC84 ; CCC84 -ccc; 91; CCC91 ; CCC91 -ccc; 103; CCC103 ; CCC103 -ccc; 107; CCC107 ; CCC107 -ccc; 118; CCC118 ; CCC118 -ccc; 122; CCC122 ; CCC122 -ccc; 129; CCC129 ; CCC129 -ccc; 130; CCC130 ; CCC130 -ccc; 132; CCC132 ; CCC132 -ccc; 133; CCC133 ; CCC133 # RESERVED -ccc; 200; ATBL ; Attached_Below_Left -ccc; 202; ATB ; Attached_Below -ccc; 214; ATA ; Attached_Above -ccc; 216; ATAR ; Attached_Above_Right -ccc; 218; BL ; Below_Left -ccc; 220; B ; Below -ccc; 222; BR ; Below_Right -ccc; 224; L ; Left -ccc; 226; R ; Right -ccc; 228; AL ; Above_Left -ccc; 230; A ; Above -ccc; 232; AR ; Above_Right -ccc; 233; DB ; Double_Below -ccc; 234; DA ; Double_Above -ccc; 240; IS ; Iota_Subscript - -# Case_Folding (cf) - -# @missing: 0000..10FFFF; Case_Folding; - -# Case_Ignorable (CI) - -CI ; N ; No ; F ; False -CI ; Y ; Yes ; T ; True - -# Cased (Cased) - -Cased; N ; No ; F ; False -Cased; Y ; Yes ; T ; True - -# Changes_When_Casefolded (CWCF) - -CWCF; N ; No ; F ; False -CWCF; Y ; Yes ; T ; True - -# Changes_When_Casemapped (CWCM) - -CWCM; N ; No ; F ; False -CWCM; Y ; Yes ; T ; True - -# Changes_When_Lowercased (CWL) - -CWL; N ; No ; F ; False -CWL; Y ; Yes ; T ; True - -# Changes_When_NFKC_Casefolded (CWKCF) - -CWKCF; N ; No ; F ; False -CWKCF; Y ; Yes ; T ; True - -# Changes_When_Titlecased (CWT) - -CWT; N ; No ; F ; False -CWT; Y ; Yes ; T ; True - -# Changes_When_Uppercased (CWU) - -CWU; N ; No ; F ; False -CWU; Y ; Yes ; T ; True - -# Composition_Exclusion (CE) - -CE ; N ; No ; F ; False -CE ; Y ; Yes ; T ; True - -# Dash (Dash) - -Dash; N ; No ; F ; False -Dash; Y ; Yes ; T ; True - -# Decomposition_Mapping (dm) - -# @missing: 0000..10FFFF; Decomposition_Mapping; - -# Decomposition_Type (dt) - -dt ; Can ; Canonical ; can -dt ; Com ; Compat ; com -dt ; Enc ; Circle ; enc -dt ; Fin ; Final ; fin -dt ; Font ; Font ; font -dt ; Fra ; Fraction ; fra -dt ; Init ; Initial ; init -dt ; Iso ; Isolated ; iso -dt ; Med ; Medial ; med -dt ; Nar ; Narrow ; nar -dt ; Nb ; Nobreak ; nb -dt ; None ; None ; none -dt ; Sml ; Small ; sml -dt ; Sqr ; Square ; sqr -dt ; Sub ; Sub ; sub -dt ; Sup ; Super ; sup -dt ; Vert ; Vertical ; vert -dt ; Wide ; Wide ; wide - -# Default_Ignorable_Code_Point (DI) - -DI ; N ; No ; F ; False -DI ; Y ; Yes ; T ; True - -# Deprecated (Dep) - -Dep; N ; No ; F ; False -Dep; Y ; Yes ; T ; True - -# Diacritic (Dia) - -Dia; N ; No ; F ; False -Dia; Y ; Yes ; T ; True - -# East_Asian_Width (ea) - -ea ; A ; Ambiguous -ea ; F ; Fullwidth -ea ; H ; Halfwidth -ea ; N ; Neutral -ea ; Na ; Narrow -ea ; W ; Wide - -# Expands_On_NFC (XO_NFC) - -XO_NFC; N ; No ; F ; False -XO_NFC; Y ; Yes ; T ; True - -# Expands_On_NFD (XO_NFD) - -XO_NFD; N ; No ; F ; False -XO_NFD; Y ; Yes ; T ; True - -# Expands_On_NFKC (XO_NFKC) - -XO_NFKC; N ; No ; F ; False -XO_NFKC; Y ; Yes ; T ; True - -# Expands_On_NFKD (XO_NFKD) - -XO_NFKD; N ; No ; F ; False -XO_NFKD; Y ; Yes ; T ; True - -# Extender (Ext) - -Ext; N ; No ; F ; False -Ext; Y ; Yes ; T ; True - -# FC_NFKC_Closure (FC_NFKC) - -# @missing: 0000..10FFFF; FC_NFKC_Closure; - -# Full_Composition_Exclusion (Comp_Ex) - -Comp_Ex; N ; No ; F ; False -Comp_Ex; Y ; Yes ; T ; True - -# General_Category (gc) - -gc ; C ; Other # Cc | Cf | Cn | Co | Cs -gc ; Cc ; Control ; cntrl -gc ; Cf ; Format -gc ; Cn ; Unassigned -gc ; Co ; Private_Use -gc ; Cs ; Surrogate -gc ; L ; Letter # Ll | Lm | Lo | Lt | Lu -gc ; LC ; Cased_Letter # Ll | Lt | Lu -gc ; Ll ; Lowercase_Letter -gc ; Lm ; Modifier_Letter -gc ; Lo ; Other_Letter -gc ; Lt ; Titlecase_Letter -gc ; Lu ; Uppercase_Letter -gc ; M ; Mark ; Combining_Mark # Mc | Me | Mn -gc ; Mc ; Spacing_Mark -gc ; Me ; Enclosing_Mark -gc ; Mn ; Nonspacing_Mark -gc ; N ; Number # Nd | Nl | No -gc ; Nd ; Decimal_Number ; digit -gc ; Nl ; Letter_Number -gc ; No ; Other_Number -gc ; P ; Punctuation ; punct # Pc | Pd | Pe | Pf | Pi | Po | Ps -gc ; Pc ; Connector_Punctuation -gc ; Pd ; Dash_Punctuation -gc ; Pe ; Close_Punctuation -gc ; Pf ; Final_Punctuation -gc ; Pi ; Initial_Punctuation -gc ; Po ; Other_Punctuation -gc ; Ps ; Open_Punctuation -gc ; S ; Symbol # Sc | Sk | Sm | So -gc ; Sc ; Currency_Symbol -gc ; Sk ; Modifier_Symbol -gc ; Sm ; Math_Symbol -gc ; So ; Other_Symbol -gc ; Z ; Separator # Zl | Zp | Zs -gc ; Zl ; Line_Separator -gc ; Zp ; Paragraph_Separator -gc ; Zs ; Space_Separator -# @missing: 0000..10FFFF; General_Category; Unassigned - -# Grapheme_Base (Gr_Base) - -Gr_Base; N ; No ; F ; False -Gr_Base; Y ; Yes ; T ; True - -# Grapheme_Cluster_Break (GCB) - -GCB; CN ; Control -GCB; CR ; CR -GCB; EB ; E_Base -GCB; EBG ; E_Base_GAZ -GCB; EM ; E_Modifier -GCB; EX ; Extend -GCB; GAZ ; Glue_After_Zwj -GCB; L ; L -GCB; LF ; LF -GCB; LV ; LV -GCB; LVT ; LVT -GCB; PP ; Prepend -GCB; RI ; Regional_Indicator -GCB; SM ; SpacingMark -GCB; T ; T -GCB; V ; V -GCB; XX ; Other -GCB; ZWJ ; ZWJ - -# Grapheme_Extend (Gr_Ext) - -Gr_Ext; N ; No ; F ; False -Gr_Ext; Y ; Yes ; T ; True - -# Grapheme_Link (Gr_Link) - -Gr_Link; N ; No ; F ; False -Gr_Link; Y ; Yes ; T ; True - -# Hangul_Syllable_Type (hst) - -hst; L ; Leading_Jamo -hst; LV ; LV_Syllable -hst; LVT ; LVT_Syllable -hst; NA ; Not_Applicable -hst; T ; Trailing_Jamo -hst; V ; Vowel_Jamo - -# Hex_Digit (Hex) - -Hex; N ; No ; F ; False -Hex; Y ; Yes ; T ; True - -# Hyphen (Hyphen) - -Hyphen; N ; No ; F ; False -Hyphen; Y ; Yes ; T ; True - -# IDS_Binary_Operator (IDSB) - -IDSB; N ; No ; F ; False -IDSB; Y ; Yes ; T ; True - -# IDS_Trinary_Operator (IDST) - -IDST; N ; No ; F ; False -IDST; Y ; Yes ; T ; True - -# ID_Continue (IDC) - -IDC; N ; No ; F ; False -IDC; Y ; Yes ; T ; True - -# ID_Start (IDS) - -IDS; N ; No ; F ; False -IDS; Y ; Yes ; T ; True - -# ISO_Comment (isc) - -# @missing: 0000..10FFFF; ISO_Comment; - -# Ideographic (Ideo) - -Ideo; N ; No ; F ; False -Ideo; Y ; Yes ; T ; True - -# Indic_Positional_Category (InPC) - -InPC; Bottom ; Bottom -InPC; Bottom_And_Left ; Bottom_And_Left -InPC; Bottom_And_Right ; Bottom_And_Right -InPC; Left ; Left -InPC; Left_And_Right ; Left_And_Right -InPC; NA ; NA -InPC; Overstruck ; Overstruck -InPC; Right ; Right -InPC; Top ; Top -InPC; Top_And_Bottom ; Top_And_Bottom -InPC; Top_And_Bottom_And_Right ; Top_And_Bottom_And_Right -InPC; Top_And_Left ; Top_And_Left -InPC; Top_And_Left_And_Right ; Top_And_Left_And_Right -InPC; Top_And_Right ; Top_And_Right -InPC; Visual_Order_Left ; Visual_Order_Left - -# Indic_Syllabic_Category (InSC) - -InSC; Avagraha ; Avagraha -InSC; Bindu ; Bindu -InSC; Brahmi_Joining_Number ; Brahmi_Joining_Number -InSC; Cantillation_Mark ; Cantillation_Mark -InSC; Consonant ; Consonant -InSC; Consonant_Dead ; Consonant_Dead -InSC; Consonant_Final ; Consonant_Final -InSC; Consonant_Head_Letter ; Consonant_Head_Letter -InSC; Consonant_Killer ; Consonant_Killer -InSC; Consonant_Medial ; Consonant_Medial -InSC; Consonant_Placeholder ; Consonant_Placeholder -InSC; Consonant_Preceding_Repha ; Consonant_Preceding_Repha -InSC; Consonant_Prefixed ; Consonant_Prefixed -InSC; Consonant_Subjoined ; Consonant_Subjoined -InSC; Consonant_Succeeding_Repha ; Consonant_Succeeding_Repha -InSC; Consonant_With_Stacker ; Consonant_With_Stacker -InSC; Gemination_Mark ; Gemination_Mark -InSC; Invisible_Stacker ; Invisible_Stacker -InSC; Joiner ; Joiner -InSC; Modifying_Letter ; Modifying_Letter -InSC; Non_Joiner ; Non_Joiner -InSC; Nukta ; Nukta -InSC; Number ; Number -InSC; Number_Joiner ; Number_Joiner -InSC; Other ; Other -InSC; Pure_Killer ; Pure_Killer -InSC; Register_Shifter ; Register_Shifter -InSC; Syllable_Modifier ; Syllable_Modifier -InSC; Tone_Letter ; Tone_Letter -InSC; Tone_Mark ; Tone_Mark -InSC; Virama ; Virama -InSC; Visarga ; Visarga -InSC; Vowel ; Vowel -InSC; Vowel_Dependent ; Vowel_Dependent -InSC; Vowel_Independent ; Vowel_Independent - -# Jamo_Short_Name (JSN) - -JSN; A ; A -JSN; AE ; AE -JSN; B ; B -JSN; BB ; BB -JSN; BS ; BS -JSN; C ; C -JSN; D ; D -JSN; DD ; DD -JSN; E ; E -JSN; EO ; EO -JSN; EU ; EU -JSN; G ; G -JSN; GG ; GG -JSN; GS ; GS -JSN; H ; H -JSN; I ; I -JSN; J ; J -JSN; JJ ; JJ -JSN; K ; K -JSN; L ; L -JSN; LB ; LB -JSN; LG ; LG -JSN; LH ; LH -JSN; LM ; LM -JSN; LP ; LP -JSN; LS ; LS -JSN; LT ; LT -JSN; M ; M -JSN; N ; N -JSN; NG ; NG -JSN; NH ; NH -JSN; NJ ; NJ -JSN; O ; O -JSN; OE ; OE -JSN; P ; P -JSN; R ; R -JSN; S ; S -JSN; SS ; SS -JSN; T ; T -JSN; U ; U -JSN; WA ; WA -JSN; WAE ; WAE -JSN; WE ; WE -JSN; WEO ; WEO -JSN; WI ; WI -JSN; YA ; YA -JSN; YAE ; YAE -JSN; YE ; YE -JSN; YEO ; YEO -JSN; YI ; YI -JSN; YO ; YO -JSN; YU ; YU -# @missing: 0000..10FFFF; Jamo_Short_Name; - -# Join_Control (Join_C) - -Join_C; N ; No ; F ; False -Join_C; Y ; Yes ; T ; True - -# Joining_Group (jg) - -jg ; African_Feh ; African_Feh -jg ; African_Noon ; African_Noon -jg ; African_Qaf ; African_Qaf -jg ; Ain ; Ain -jg ; Alaph ; Alaph -jg ; Alef ; Alef -jg ; Beh ; Beh -jg ; Beth ; Beth -jg ; Burushaski_Yeh_Barree ; Burushaski_Yeh_Barree -jg ; Dal ; Dal -jg ; Dalath_Rish ; Dalath_Rish -jg ; E ; E -jg ; Farsi_Yeh ; Farsi_Yeh -jg ; Fe ; Fe -jg ; Feh ; Feh -jg ; Final_Semkath ; Final_Semkath -jg ; Gaf ; Gaf -jg ; Gamal ; Gamal -jg ; Hah ; Hah -jg ; He ; He -jg ; Heh ; Heh -jg ; Heh_Goal ; Heh_Goal -jg ; Heth ; Heth -jg ; Kaf ; Kaf -jg ; Kaph ; Kaph -jg ; Khaph ; Khaph -jg ; Knotted_Heh ; Knotted_Heh -jg ; Lam ; Lam -jg ; Lamadh ; Lamadh -jg ; Malayalam_Bha ; Malayalam_Bha -jg ; Malayalam_Ja ; Malayalam_Ja -jg ; Malayalam_Lla ; Malayalam_Lla -jg ; Malayalam_Llla ; Malayalam_Llla -jg ; Malayalam_Nga ; Malayalam_Nga -jg ; Malayalam_Nna ; Malayalam_Nna -jg ; Malayalam_Nnna ; Malayalam_Nnna -jg ; Malayalam_Nya ; Malayalam_Nya -jg ; Malayalam_Ra ; Malayalam_Ra -jg ; Malayalam_Ssa ; Malayalam_Ssa -jg ; Malayalam_Tta ; Malayalam_Tta -jg ; Manichaean_Aleph ; Manichaean_Aleph -jg ; Manichaean_Ayin ; Manichaean_Ayin -jg ; Manichaean_Beth ; Manichaean_Beth -jg ; Manichaean_Daleth ; Manichaean_Daleth -jg ; Manichaean_Dhamedh ; Manichaean_Dhamedh -jg ; Manichaean_Five ; Manichaean_Five -jg ; Manichaean_Gimel ; Manichaean_Gimel -jg ; Manichaean_Heth ; Manichaean_Heth -jg ; Manichaean_Hundred ; Manichaean_Hundred -jg ; Manichaean_Kaph ; Manichaean_Kaph -jg ; Manichaean_Lamedh ; Manichaean_Lamedh -jg ; Manichaean_Mem ; Manichaean_Mem -jg ; Manichaean_Nun ; Manichaean_Nun -jg ; Manichaean_One ; Manichaean_One -jg ; Manichaean_Pe ; Manichaean_Pe -jg ; Manichaean_Qoph ; Manichaean_Qoph -jg ; Manichaean_Resh ; Manichaean_Resh -jg ; Manichaean_Sadhe ; Manichaean_Sadhe -jg ; Manichaean_Samekh ; Manichaean_Samekh -jg ; Manichaean_Taw ; Manichaean_Taw -jg ; Manichaean_Ten ; Manichaean_Ten -jg ; Manichaean_Teth ; Manichaean_Teth -jg ; Manichaean_Thamedh ; Manichaean_Thamedh -jg ; Manichaean_Twenty ; Manichaean_Twenty -jg ; Manichaean_Waw ; Manichaean_Waw -jg ; Manichaean_Yodh ; Manichaean_Yodh -jg ; Manichaean_Zayin ; Manichaean_Zayin -jg ; Meem ; Meem -jg ; Mim ; Mim -jg ; No_Joining_Group ; No_Joining_Group -jg ; Noon ; Noon -jg ; Nun ; Nun -jg ; Nya ; Nya -jg ; Pe ; Pe -jg ; Qaf ; Qaf -jg ; Qaph ; Qaph -jg ; Reh ; Reh -jg ; Reversed_Pe ; Reversed_Pe -jg ; Rohingya_Yeh ; Rohingya_Yeh -jg ; Sad ; Sad -jg ; Sadhe ; Sadhe -jg ; Seen ; Seen -jg ; Semkath ; Semkath -jg ; Shin ; Shin -jg ; Straight_Waw ; Straight_Waw -jg ; Swash_Kaf ; Swash_Kaf -jg ; Syriac_Waw ; Syriac_Waw -jg ; Tah ; Tah -jg ; Taw ; Taw -jg ; Teh_Marbuta ; Teh_Marbuta -jg ; Teh_Marbuta_Goal ; Hamza_On_Heh_Goal -jg ; Teth ; Teth -jg ; Waw ; Waw -jg ; Yeh ; Yeh -jg ; Yeh_Barree ; Yeh_Barree -jg ; Yeh_With_Tail ; Yeh_With_Tail -jg ; Yudh ; Yudh -jg ; Yudh_He ; Yudh_He -jg ; Zain ; Zain -jg ; Zhain ; Zhain - -# Joining_Type (jt) - -jt ; C ; Join_Causing -jt ; D ; Dual_Joining -jt ; L ; Left_Joining -jt ; R ; Right_Joining -jt ; T ; Transparent -jt ; U ; Non_Joining - -# Line_Break (lb) - -lb ; AI ; Ambiguous -lb ; AL ; Alphabetic -lb ; B2 ; Break_Both -lb ; BA ; Break_After -lb ; BB ; Break_Before -lb ; BK ; Mandatory_Break -lb ; CB ; Contingent_Break -lb ; CJ ; Conditional_Japanese_Starter -lb ; CL ; Close_Punctuation -lb ; CM ; Combining_Mark -lb ; CP ; Close_Parenthesis -lb ; CR ; Carriage_Return -lb ; EB ; E_Base -lb ; EM ; E_Modifier -lb ; EX ; Exclamation -lb ; GL ; Glue -lb ; H2 ; H2 -lb ; H3 ; H3 -lb ; HL ; Hebrew_Letter -lb ; HY ; Hyphen -lb ; ID ; Ideographic -lb ; IN ; Inseparable ; Inseperable -lb ; IS ; Infix_Numeric -lb ; JL ; JL -lb ; JT ; JT -lb ; JV ; JV -lb ; LF ; Line_Feed -lb ; NL ; Next_Line -lb ; NS ; Nonstarter -lb ; NU ; Numeric -lb ; OP ; Open_Punctuation -lb ; PO ; Postfix_Numeric -lb ; PR ; Prefix_Numeric -lb ; QU ; Quotation -lb ; RI ; Regional_Indicator -lb ; SA ; Complex_Context -lb ; SG ; Surrogate -lb ; SP ; Space -lb ; SY ; Break_Symbols -lb ; WJ ; Word_Joiner -lb ; XX ; Unknown -lb ; ZW ; ZWSpace -lb ; ZWJ ; ZWJ - -# Logical_Order_Exception (LOE) - -LOE; N ; No ; F ; False -LOE; Y ; Yes ; T ; True - -# Lowercase (Lower) - -Lower; N ; No ; F ; False -Lower; Y ; Yes ; T ; True - -# Lowercase_Mapping (lc) - -# @missing: 0000..10FFFF; Lowercase_Mapping; - -# Math (Math) - -Math; N ; No ; F ; False -Math; Y ; Yes ; T ; True - -# NFC_Quick_Check (NFC_QC) - -NFC_QC; M ; Maybe -NFC_QC; N ; No -NFC_QC; Y ; Yes - -# NFD_Quick_Check (NFD_QC) - -NFD_QC; N ; No -NFD_QC; Y ; Yes - -# NFKC_Casefold (NFKC_CF) - -# @missing: 0000..10FFFF; NFKC_Casefold; - -# NFKC_Quick_Check (NFKC_QC) - -NFKC_QC; M ; Maybe -NFKC_QC; N ; No -NFKC_QC; Y ; Yes - -# NFKD_Quick_Check (NFKD_QC) - -NFKD_QC; N ; No -NFKD_QC; Y ; Yes - -# Name (na) - -# @missing: 0000..10FFFF; Name; - -# Name_Alias (Name_Alias) - -# @missing: 0000..10FFFF; Name_Alias; - -# Noncharacter_Code_Point (NChar) - -NChar; N ; No ; F ; False -NChar; Y ; Yes ; T ; True - -# Numeric_Type (nt) - -nt ; De ; Decimal -nt ; Di ; Digit -nt ; None ; None -nt ; Nu ; Numeric - -# Numeric_Value (nv) - -# @missing: 0000..10FFFF; Numeric_Value; NaN - -# Other_Alphabetic (OAlpha) - -OAlpha; N ; No ; F ; False -OAlpha; Y ; Yes ; T ; True - -# Other_Default_Ignorable_Code_Point (ODI) - -ODI; N ; No ; F ; False -ODI; Y ; Yes ; T ; True - -# Other_Grapheme_Extend (OGr_Ext) - -OGr_Ext; N ; No ; F ; False -OGr_Ext; Y ; Yes ; T ; True - -# Other_ID_Continue (OIDC) - -OIDC; N ; No ; F ; False -OIDC; Y ; Yes ; T ; True - -# Other_ID_Start (OIDS) - -OIDS; N ; No ; F ; False -OIDS; Y ; Yes ; T ; True - -# Other_Lowercase (OLower) - -OLower; N ; No ; F ; False -OLower; Y ; Yes ; T ; True - -# Other_Math (OMath) - -OMath; N ; No ; F ; False -OMath; Y ; Yes ; T ; True - -# Other_Uppercase (OUpper) - -OUpper; N ; No ; F ; False -OUpper; Y ; Yes ; T ; True - -# Pattern_Syntax (Pat_Syn) - -Pat_Syn; N ; No ; F ; False -Pat_Syn; Y ; Yes ; T ; True - -# Pattern_White_Space (Pat_WS) - -Pat_WS; N ; No ; F ; False -Pat_WS; Y ; Yes ; T ; True - -# Prepended_Concatenation_Mark (PCM) - -PCM; N ; No ; F ; False -PCM; Y ; Yes ; T ; True - -# Quotation_Mark (QMark) - -QMark; N ; No ; F ; False -QMark; Y ; Yes ; T ; True - -# Radical (Radical) - -Radical; N ; No ; F ; False -Radical; Y ; Yes ; T ; True - -# Regional_Indicator (RI) - -RI ; N ; No ; F ; False -RI ; Y ; Yes ; T ; True - -# Script (sc) - -sc ; Adlm ; Adlam -sc ; Aghb ; Caucasian_Albanian -sc ; Ahom ; Ahom -sc ; Arab ; Arabic -sc ; Armi ; Imperial_Aramaic -sc ; Armn ; Armenian -sc ; Avst ; Avestan -sc ; Bali ; Balinese -sc ; Bamu ; Bamum -sc ; Bass ; Bassa_Vah -sc ; Batk ; Batak -sc ; Beng ; Bengali -sc ; Bhks ; Bhaiksuki -sc ; Bopo ; Bopomofo -sc ; Brah ; Brahmi -sc ; Brai ; Braille -sc ; Bugi ; Buginese -sc ; Buhd ; Buhid -sc ; Cakm ; Chakma -sc ; Cans ; Canadian_Aboriginal -sc ; Cari ; Carian -sc ; Cham ; Cham -sc ; Cher ; Cherokee -sc ; Copt ; Coptic ; Qaac -sc ; Cprt ; Cypriot -sc ; Cyrl ; Cyrillic -sc ; Deva ; Devanagari -sc ; Dsrt ; Deseret -sc ; Dupl ; Duployan -sc ; Egyp ; Egyptian_Hieroglyphs -sc ; Elba ; Elbasan -sc ; Ethi ; Ethiopic -sc ; Geor ; Georgian -sc ; Glag ; Glagolitic -sc ; Gonm ; Masaram_Gondi -sc ; Goth ; Gothic -sc ; Gran ; Grantha -sc ; Grek ; Greek -sc ; Gujr ; Gujarati -sc ; Guru ; Gurmukhi -sc ; Hang ; Hangul -sc ; Hani ; Han -sc ; Hano ; Hanunoo -sc ; Hatr ; Hatran -sc ; Hebr ; Hebrew -sc ; Hira ; Hiragana -sc ; Hluw ; Anatolian_Hieroglyphs -sc ; Hmng ; Pahawh_Hmong -sc ; Hrkt ; Katakana_Or_Hiragana -sc ; Hung ; Old_Hungarian -sc ; Ital ; Old_Italic -sc ; Java ; Javanese -sc ; Kali ; Kayah_Li -sc ; Kana ; Katakana -sc ; Khar ; Kharoshthi -sc ; Khmr ; Khmer -sc ; Khoj ; Khojki -sc ; Knda ; Kannada -sc ; Kthi ; Kaithi -sc ; Lana ; Tai_Tham -sc ; Laoo ; Lao -sc ; Latn ; Latin -sc ; Lepc ; Lepcha -sc ; Limb ; Limbu -sc ; Lina ; Linear_A -sc ; Linb ; Linear_B -sc ; Lisu ; Lisu -sc ; Lyci ; Lycian -sc ; Lydi ; Lydian -sc ; Mahj ; Mahajani -sc ; Mand ; Mandaic -sc ; Mani ; Manichaean -sc ; Marc ; Marchen -sc ; Mend ; Mende_Kikakui -sc ; Merc ; Meroitic_Cursive -sc ; Mero ; Meroitic_Hieroglyphs -sc ; Mlym ; Malayalam -sc ; Modi ; Modi -sc ; Mong ; Mongolian -sc ; Mroo ; Mro -sc ; Mtei ; Meetei_Mayek -sc ; Mult ; Multani -sc ; Mymr ; Myanmar -sc ; Narb ; Old_North_Arabian -sc ; Nbat ; Nabataean -sc ; Newa ; Newa -sc ; Nkoo ; Nko -sc ; Nshu ; Nushu -sc ; Ogam ; Ogham -sc ; Olck ; Ol_Chiki -sc ; Orkh ; Old_Turkic -sc ; Orya ; Oriya -sc ; Osge ; Osage -sc ; Osma ; Osmanya -sc ; Palm ; Palmyrene -sc ; Pauc ; Pau_Cin_Hau -sc ; Perm ; Old_Permic -sc ; Phag ; Phags_Pa -sc ; Phli ; Inscriptional_Pahlavi -sc ; Phlp ; Psalter_Pahlavi -sc ; Phnx ; Phoenician -sc ; Plrd ; Miao -sc ; Prti ; Inscriptional_Parthian -sc ; Rjng ; Rejang -sc ; Runr ; Runic -sc ; Samr ; Samaritan -sc ; Sarb ; Old_South_Arabian -sc ; Saur ; Saurashtra -sc ; Sgnw ; SignWriting -sc ; Shaw ; Shavian -sc ; Shrd ; Sharada -sc ; Sidd ; Siddham -sc ; Sind ; Khudawadi -sc ; Sinh ; Sinhala -sc ; Sora ; Sora_Sompeng -sc ; Soyo ; Soyombo -sc ; Sund ; Sundanese -sc ; Sylo ; Syloti_Nagri -sc ; Syrc ; Syriac -sc ; Tagb ; Tagbanwa -sc ; Takr ; Takri -sc ; Tale ; Tai_Le -sc ; Talu ; New_Tai_Lue -sc ; Taml ; Tamil -sc ; Tang ; Tangut -sc ; Tavt ; Tai_Viet -sc ; Telu ; Telugu -sc ; Tfng ; Tifinagh -sc ; Tglg ; Tagalog -sc ; Thaa ; Thaana -sc ; Thai ; Thai -sc ; Tibt ; Tibetan -sc ; Tirh ; Tirhuta -sc ; Ugar ; Ugaritic -sc ; Vaii ; Vai -sc ; Wara ; Warang_Citi -sc ; Xpeo ; Old_Persian -sc ; Xsux ; Cuneiform -sc ; Yiii ; Yi -sc ; Zanb ; Zanabazar_Square -sc ; Zinh ; Inherited ; Qaai -sc ; Zyyy ; Common -sc ; Zzzz ; Unknown - -# Script_Extensions (scx) - -# @missing: 0000..10FFFF; Script_Extensions;