diff options
824 files changed, 17546 insertions, 10660 deletions
diff --git a/.env/echo-nixNote b/.env/echo-nixNote deleted file mode 100644 index 99d69dd..0000000 --- a/.env/echo-nixNote +++ /dev/null @@ -1,239 +0,0 @@ -echo '-*- mode: org -*- - -* nixpkgs path? - - # eval "$(nix print-dev-env)" -' > nixNote_.org - -echo " <nixpkgs> == `nix-instantiate --find-file nixpkgs`" >> nixNote_.org - -echo ' -* nix build and show derivation - -#+BEGIN_SRC sh -nix-shell --pure - -nix-build -nix build -f default.nix --print-build-logs -nix shell -f default.nix --print-build-logs -nix develop --build -f derivation.nix -I .envrc --print-build-logs - -nix-instantiate | nix-build - -nix-instantiate -I .envrc | nix-build -I .envrc -nix build `nix-instantiate` -nix build `nix-instantiate -I .envrc` - -nix develop - -nix-instantiate | nix show-derivation | jq -nix-instantiate -I .envrc | nix show-derivation -f derivation.nix -I .envrc | jq - -nix-instantiate | nix show-derivation --recursive | jq -nix-instantiate -I .envrc | nix show-derivation -f derivation.nix --recursive -I .envrc | jq - -nix search --json 2>/dev/null |jq -#+END_SRC - -* version and build info - -#+BEGIN_SRC sh' >> nixNote_.org - -echo 'spine version (git) == $SpineVER' >> nixNote_.org -echo "spine version (git) == $SpineVER" >> nixNote_.org -echo 'nix-instantiate == `nix-instantiate`' >> nixNote_.org -echo "nix-instantiate == `nix-instantiate`" >> nixNote_.org - -echo "#+END_SRC - -* initialised shell variables - -#+BEGIN_SRC sh -SpineSRC=$SpineSRC -SpineDOC=$SpineDOC -SpinePOD=$SpinePOD -SpineOUTversioned=$SpineOUTversioned -SpineOUT=$SpineOUT -#+END_SRC -" >> nixNote_.org - -echo '* spine run instruction examples -** parallelized tasks -*** doc source - -#+BEGIN_SRC sh -$SpineBIN/spine --very-verbose --pod --source --output="$SpineOUTversioned" $SpinePOD/* -#+END_SRC - -*** html & epub output - -#+BEGIN_SRC sh -$SpineBIN/spine --very-verbose --html --epub --output="$SpineOUTversioned" $SpinePOD/* -#+END_SRC - -*** sqlite db for each document - populate each db - -#+BEGIN_SRC sh -$SpineBIN/spine --very-verbose --sqlite-discrete --output="$SpineOUTversioned" $SpinePOD/* -#+END_SRC - -*** doc source; html, epub; sqlite outputs - -#+BEGIN_SRC sh -$SpineBIN/spine --verbose --pod --html --epub --sqlite-discrete --output="$SpineOUTversioned" $SpinePOD/* -#+END_SRC - -*** curate (authors topics) - -#+BEGIN_SRC sh -$SpineBIN/spine --very-verbose --curate --output="$SpineOUTversioned" $SpinePOD/* -#+END_SRC - -*** html, curate - -#+BEGIN_SRC sh -$SpineBIN/spine --verbose --dark --html --html-link-curate --curate --output="$SpineOUTversioned" $SpinePOD/* -$SpineBIN/spine --very-verbose --html --html-link-curate --curate --output="$SpineOUTversioned" $SpinePOD/* -#+END_SRC - -*** composite command: source pod, html, epub, curate, sqlite - -#+BEGIN_SRC sh -$SpineBIN/spine --verbose --dark --pod --epub --html --html-link-curate --curate --sqlite-discrete --output="$SpineOUTversioned" $SpinePOD/* -#+END_SRC - -** sequential tasks -*** sqlite db (shared) - create db - -#+BEGIN_SRC sh -$SpineBIN/spine --very-verbose --sqlite-db-create --output="$SpineOUTversioned" -#+END_SRC - -*** sqlite db (shared) - populate db - -#+BEGIN_SRC sh -$SpineBIN/spine --very-verbose --sqlite-update --output="$SpineOUTversioned" $SpineDOC/sisudoc-spine-markup-samples/markup/pod/* -#+END_SRC - -*** sqlite db (shared) - drop db - -#+BEGIN_SRC sh -$SpineBIN/spine --very-verbose --sqlite-db-drop --output="$SpineOUTversioned" -#+END_SRC - -*** sqlite db (shared) - create & populate db (single step) - -#+BEGIN_SRC sh -$SpineBIN/spine --very-verbose --sqlite-db-create --sqlite-update --output="$SpineOUTversioned" $SpinePOD/* -#+END_SRC - -*** composite command: source pod, html, epub, curate, sqlite - -#+BEGIN_SRC sh -$SpineBIN/spine --verbose --no-parallel --dark --pod --epub --html --html-link-curate --curate --sqlite-discrete --output="$SpineOUTversioned" $SpinePOD/* -#+END_SRC - -** config [./pod/].dr/config_local_site - -#+BEGIN_SRC sh -cat $SpinePOD/.dr/config_local_site -$SpineBIN/spine --show-config $SpinePOD -$SpineBIN/spine --show-config --output="$SpineOUTversioned" $SpinePOD -#+END_SRC - -** cgi operations (output to $SpineOUT /var/www) - -#+BEGIN_SRC sh -$SpineBIN/spine --very-verbose --sqlite-db-create --output="$SpineOUT" $SpinePOD/* - -$SpineBIN/spine -v --cgi-search-form-codegen --output=$SpineOUT $SpinePOD/* - -$SpineBIN/spine -v --show-config --config=$SpinePOD/.dr - -$SpineBIN/spine --html $SpinePOD/* - - -$SpineBIN/spine -v --cgi-search-form-codegen --config=$SpinePOD/.dr/config_local_site -#+END_SRC - -*** generate html linked to search form - -#+BEGIN_SRC sh -$SpineBIN/spine -v --html --html-link-search --html-link-curate --curate --output=$SpineOUT $SpinePOD/* -#+END_SRC - -*** create or re-create sql db (--sqlite-db-create or --sqlite-db-recreate) - -#+BEGIN_SRC sh -$SpineBIN/spine -v --sqlite-db-create --sqlite-db-filename="spine.search.db" --sqlite-db-path="$SpineDBpath" -$SpineBIN/spine -v --sqlite-db-recreate --sqlite-db-filename="spine.search.db" --sqlite-db-path="$SpineDBpath" -#+END_SRC - -*** populate sqlite db - -#+BEGIN_SRC sh -$SpineBIN/spine -v --sqlite-update --sqlite-db-filename="spine.search.db" --output=$SpineOUT $SpinePOD/* -#+END_SRC - -*** generate html (linked to search form), sql output, curate COMPOSITE - -#+BEGIN_SRC sh -$SpineBIN/spine -v --html --html-link-search --html-link-curate --curate --sqlite-update --sqlite-db-filename="spine.search.db" --cgi-sqlite-search-filename="spine_search" --sqlite-db-path="$SpineDBpath" --output="$SpineOUT" $SpinePOD/* -$SpineBIN/spine --epub --html --html-link-search --html-link-curate --curate --sqlite-update --sqlite-db-filename="spine.search.db" --cgi-sqlite-search-filename="spine_search" --cgi-url-action="https://sisudoc.org/spine_search" --ouput="$SpineOUT" $SpinePOD/* -#+END_SRC - -*** generate html (linked to search form), sql output, curate COMPOSITE with resource configuration - -if names and paths are configured in resource configuration file, e.g. $SpinePOD/.rc/config_local_site - -#+BEGIN_SRC sh -$SpineBIN/spine -v --html --html-link-search --html-link-curate --curate --sqlite-update $SpinePOD/* -#+END_SRC - -#+BEGIN_SRC yaml -# sample resource configuration file ( $SpinePOD/.rc/config_local_site ) -output: - path: "/srv/www/spine" -default: - language: "en" - papersize: "a4" - text_wrap: "80" - digest: "sha256" -webserv: - http: "http" - domain: "localhost" - data_http: "http" - data_domain: "localhost" - data_root_url: "https://sisudoc.org" - data_root_path: "/srv/www/spine" - images_root_part: "image" - cgi_search_form_title: "≅ SiSU Spine search á¨" - cgi_http: "https" - cgi_domain: "sisudoc.org" - cgi_bin_url: "http://sisudoc.org/cgi-bin" - cgi_bin_part: "cgi-bin" - cgi_bin_path: "/var/www/cgi/cgi-bin" - cgi_search_script: "spine_search" - cgi_action: "https://sisudoc.org/spine_search" - db_sqlite_filename: "spine.search.db" - db_sqlite_path: "/var/www/sqlite" -#+END_SRC - -*** make search form - -#+BEGIN_SRC sh -$SpineBIN/spine -v --cgi-search-form-codegen --config=$SpinePOD/.dr/config_local_site -#+END_SRC - -*** latex - -#+BEGIN_SRC sh -$SpineBIN/spine --latex --serial --output="$SpineOUT" $SpinePOD/* -ls $SpineOutstatic/latex/*.tex -#+END_SRC -' >> nixNote_.org - -#cat nixNote_.org - -#echo "emacs nixNote_.org" -#echo "cat nixNote_.org" diff --git a/.env/nix-commands b/.env/nix-commands deleted file mode 100644 index de52220..0000000 --- a/.env/nix-commands +++ /dev/null @@ -1,19 +0,0 @@ -- nix flake update && nix flake check --show-trace && nix flake show && nix develop .#devShell - -- nix build ".#default" --print-build-logs -- nix build ".#spine-dmd" --print-build-logs -- nix build ".#spine-ldc" --print-build-logs - -- nix develop - - nix develop ".#devShell" --print-build-logs - - nix develop ".#devShell-html" --print-build-logs - - nix develop ".#devShell-epub" --print-build-logs - - nix develop ".#devShell-latex-pdf" --print-build-logs - - nix develop ".#devShell-sqlite" --print-build-logs - - nix develop ".#devShell-i18n" --print-build-logs - -nix run .#default --print-build-logs - -nix develop --build ".#default" --print-build-logs - -nix-shell '<nixpkgs>' -A nix --pure @@ -1,7 +1,7 @@ NIX_ENFORCE_PURITY=1 # - https://github.com/nix-community/nix-direnv -NixDirEnvVersion="3.0.4" -NixDirEnvSHA="sha256-DzlYZ33mWF/Gs8DDeyjr8mnVmQGx7ASYqA5WlxwvBG4=" +NixDirEnvVersion="3.0.7" +NixDirEnvSHA="sha256-bn8WANE5a91RusFmRI7kS751ApelG02nMcwRekC/qzc=" if ! has nix_direnv_version || ! nix_direnv_version ${NixDirEnvVersion}; then source_url "https://raw.githubusercontent.com/nix-community/nix-direnv/${NixDirEnvVersion}/direnvrc" "${NixDirEnvSHA}" fi @@ -21,13 +21,14 @@ echo ' â¯â¯ nix flake update && nix flake check && nix flake show • for a dev shell (development environment): - - â¯â¯ nix develop - â¯â¯ nix develop ".#" --print-build-logs -c zsh - â¯â¯ nix develop ".#dsh-nixpkgs-dmd-dub" --print-build-logs -c zsh - â¯â¯ nix develop ".#dsh-overlay-dmd-dub" --print-build-logs -c zsh - â¯â¯ nix develop ".#dsh-nixpkgs-ldc-dub" --print-build-logs -c zsh - â¯â¯ nix develop ".#dsh-overlay-ldc-dub" --print-build-logs -c zsh + • nix develop + â¯â¯ nix develop ".#" --print-build-logs -c zsh + • nix develop using nixpkgs + â¯â¯ nix develop ".#dsh-nixpkgs-dmd" --print-build-logs -c zsh + â¯â¯ nix develop ".#dsh-nixpkgs-ldc" --print-build-logs -c zsh + • nix develop using package overlays: (dmd-2.111.0, ldc-1.41.0, dub-1.39.0, dtools-2.110.0) + â¯â¯ nix develop ".#dsh-overlay-dmd" --print-build-logs -c zsh + â¯â¯ nix develop ".#dsh-overlay-ldc" --print-build-logs -c zsh â¯â¯ nix flake show • to build project: @@ -36,17 +37,19 @@ echo ' â¯â¯ nix build ".#" --print-build-logs • to build project: - â¯â¯ nix build ".#spine-nixpkgs-dmd" --print-build-logs - â¯â¯ nix build ".#spine-overlay-dmd" --print-build-logs - â¯â¯ nix build ".#spine-nixpkgs-ldc" --print-build-logs - â¯â¯ nix build ".#spine-overlay-ldc" --print-build-logs + • nix build using nixpkgs + â¯â¯ nix build ".#spine-nixpkgs-dmd" --print-build-logs + â¯â¯ nix build ".#spine-nixpkgs-ldc" --print-build-logs + • nix build using package overlays: (dmd-2.111.0, ldc-1.41.0, dub-1.39.0, dtools-2.110.0) + â¯â¯ nix build ".#spine-overlay-dmd" --print-build-logs + â¯â¯ nix build ".#spine-overlay-ldc" --print-build-logs • to build using dub on nix (get dependencies by setting your development environment): - â¯â¯ nix develop ".#dsh-nixpkgs-dmd-dub" --print-build-logs -c zsh + â¯â¯ nix develop ".#dsh-nixpkgs-dmd" --print-build-logs -c zsh â¯â¯ dub --verbose --compiler=dmd --config=dmd - â¯â¯ nix develop ".#dsh-nixpkgs-ldc-dub" --print-build-logs -c zsh + â¯â¯ nix develop ".#dsh-nixpkgs-ldc" --print-build-logs -c zsh â¯â¯ dub --verbose --compiler=ldmd2 --config=ldmd2 • for develop environment & build options @@ -60,6 +63,9 @@ echo ' â¯â¯ ${SpineBIN} -v --source --pod --epub --html --html-link-curate --html-link-markup --curate --output=${SpineOUT} ${SpinePOD}/* â¯â¯ ${SpineBIN} -v --source --pod --latex --latex-init --epub --html --html-link-pdf --html-link-curate --html-link-markup --curate --output=${SpineOUT} ${SpinePOD}/* + + â¯â¯ ${SpineBIN} -v --sqlite-db-create --sqlite-db-filename=${SpineSQLdb} --sqlite-db-path=./_tmp-db + â¯â¯ ${SpineBIN} -v --sqlite-update --sqlite-db-filename=${SpineSQLdb} --sqlite-db-path=./_tmp-db ./markup/pod/* ' echo "• â¯â¯ ${SpineBIN} -v --source --pod --epub --html --html-link-curate --html-link-markup --curate --output=${SpineOUT} ${SpinePOD}/* @@ -13,8 +13,6 @@ !.envrc !.envrc-nix !.envrc-git-init -!.env -!.env/** !nix-overlays !nix-overlays/** !README.md @@ -26,6 +24,7 @@ !configuration.txt !*.json !*.sdl +!*.md !meson.build !tangle !*.org @@ -63,6 +62,20 @@ !sisudoc !views !docs/*.html +!sundry +!sundry/editor-syntax-etc +!sundry/editor-syntax-etc/vim +!sundry/editor-syntax-etc/vim/*.vim +!sundry/editor-syntax-etc/vim/*.yaml +!sundry/editor-syntax-etc/vim/colors +!sundry/editor-syntax-etc/vim/colors/*.vim +!sundry/editor-syntax-etc/vim/ftplugin +!sundry/editor-syntax-etc/vim/ftplugin/*.vim +!sundry/editor-syntax-etc/vim/syntax +!sundry/editor-syntax-etc/vim/syntax/*.vim +!sundry/editor-syntax-etc/emacs +!sundry/editor-syntax-etc/emacs/*.el +!sundry/editor-syntax-etc/emacs/README !notes notes/** !notes/sisu-description.sst @@ -1,5 +1,964 @@ + +doc (metadata & abstraction) struct follow through +2025-02-19 ralph.amissah@gmail.com +1b311d6 (main) + +document (metadata & abstraction) struct +2025-02-19 ralph.amissah@gmail.com +48fc249 +- struct replaces tuple +- some direct naming of structs returned + (instead of use of auto) - minor + +org, touch, minor +2025-02-12 ralph.amissah@gmail.com +de49320 + +org, reorganize version info +2025-02-12 ralph.amissah@gmail.com +93b5018 + +org blocks, identify syntax +2025-01-05 ralph.amissah@gmail.com +f9fbc8e + +2025 +2025-01-01 ralph.amissah@gmail.com +24b8d40 + +refactor yaml extraction code file +2024-12-20 ralph.amissah@gmail.com +369a5b0 (2025) + +nix build, flake.nix ldc2-1.40.0 +2024-12-15 ralph.amissah@gmail.com +54f6469 (origin/main, origin/HEAD) + +flake.nix, removed flake-utils +2024-12-09 ralph.amissah@gmail.com +843a265 + +nix build, dub, take account of nixpkgs build changes +2024-12-05 ralph.amissah@gmail.com +ad607f7 + +nix build housekeeping, ldc, follow nixpkgs build +2024-12-03 ralph.amissah@gmail.com +d1903f4 + +nix build flake.nix fix +2024-12-03 ralph.amissah@gmail.com +03ab3db + +nix build houskeeping, version updates, incl. dmd & dub +2024-12-02 ralph.amissah@gmail.com +01b97ab + +pod zip fixes +2024-07-10 ralph.amissah@gmail.com +18bdad0 (main-a-org) +- serial processing (need to be built serially) +- multilingual pods, copy all languages before zip + +nix dlang overlay ldc-1.39.0 +2024-07-04 ralph.amissah@gmail.com +928142a + +[fn].digest.txt, sha256 of pod source files & pod +2024-07-04 ralph.amissah@gmail.com +d7e7c79 + +markup source digest to metadata.html +2024-07-01 ralph.amissah@gmail.com +602bc01 + +markup source digests (write to terminal) +2024-06-29 ralph.amissah@gmail.com +3ff7241 + +digest tuple rearrange +2024-06-29 ralph.amissah@gmail.com +03b6742 + +reduction in use of tuples +2024-06-29 ralph.amissah@gmail.com +83b2933 + +document digests and reduction in use of tuples +2024-06-29 ralph.amissah@gmail.com +860b894 + +nix minor +2024-06-29 ralph.amissah@gmail.com +6f5dd3d + +0.17.0 +2024-06-29 ralph.amissah@gmail.com +f2d12a2 + +shallow clone for install directory +2024-06-12 ralph.amissah@gmail.com +d887ec9 (tag: sisudoc-spine_v0.16.0, hashes-sha256-fix) + +nix dlang overlay dmd-2.109.0 +2024-06-03 ralph.amissah@gmail.com +3288e38 + +latex footers from document header make, a fix +2024-05-29 ralph.amissah@gmail.com +39d2dfa (dmd-new) + +README, further note on using nix for installation +2024-05-22 ralph.amissah@gmail.com +9876842 +- built on Debian using nix +- (first time usiing nix on a system other than + NixOS) + +org, minor reorganize for d config views +2024-05-21 ralph.amissah@gmail.com +e5e69a8 (next3) + +README update, return to ... +2024-05-17 ralph.amissah@gmail.com +19286de + +update fix default home text link info +2024-05-17 ralph.amissah@gmail.com +dc9a985 +- used e.g. in html text home button + +nix flake and envrc-nix minor +2024-05-17 ralph.amissah@gmail.com +594122a + +nix dlang overlay ldc-1.38.0 +2024-05-11 ralph.amissah@gmail.com +0452f31 +- (DMD v2.108.0, LLVM 18.1.5) + +nix dlang overlay ldc-1.38.0-beta1 +2024-05-09 ralph.amissah@gmail.com +f84e31a +- ldc-1.38.0-beta1 (DMD v2.108.0, LLVM 18.1.5) + +nix dlang overlay dmd-2.108.0, follow upstream +2024-05-09 ralph.amissah@gmail.com +12e3523 +- less passing Foundation +- default.nix filename kept + (upstream using package.nix) + +dub (dlang) prefer dub run to dub build +2024-05-07 ralph.amissah@gmail.com +05111f6 + +.envrc-nix info +2024-05-06 ralph.amissah@gmail.com +97e9d4c + +work on more generic install + instructions +2024-05-06 ralph.amissah@gmail.com +16532cb + +set nixVersions.nix_2_21 +2024-05-03 ralph.amissah@gmail.com +95203d8 + +comment out nixpkg nixVersions.unstable +2024-05-02 ralph.amissah@gmail.com +41eecdb +- nixVersions.unstable no longer available + +sisudoc spine initial release +2024-05-01 ralph.amissah@gmail.com +164ce8c + +org nixpkgs overlays housekeeping +2024-04-23 ralph.amissah@gmail.com +105a5ac + +nix direnv v 3.0.4 +2024-04-14 ralph.amissah@gmail.com +eaa9956 + +0.16.0 sisudoc (src/sisudoc sisudoc spine) +2024-04-10 ralph.amissah@gmail.com +90873fa +- src/sisudoc (replaces src/doc_reform) +- sisudoc spine (used more) + +0.15.0 +2024-04-10 ralph.amissah@gmail.com +3340de4 (tag: doc-reform_v0.15.0) + +flake.nix cosmetic minor +2024-03-20 ralph.amissah@gmail.com +e7c4b9e (tag: doc-reform_v0.14.0) + +mark modules as @safe: (& identify what is not) +2024-03-12 ralph.amissah@gmail.com +e9e17be + +nix flake & env upkeep +2024-03-08 ralph.amissah@gmail.com +2a87433 + +dmd & ldc upkeep (dmd at 2.106.1) +2024-03-08 ralph.amissah@gmail.com +3abf804 +- dmd current nixpkgs and overlay identical + +ldc-1.37.0 & dub-1.36.0 +2024-03-03 ralph.amissah@gmail.com +f67c532 + +org, ocda (ongoing) split file, separate functions +2024-01-21 ralph.amissah@gmail.com +10a66c9 + +org, ocda (ongoing) +2024-01-21 ralph.amissah@gmail.com +6dc3609 + +ldc-1.36.0 & dub-1.35.0 (& removed old/superseded beta versions) +2024-01-06 ralph.amissah@gmail.com +3940eb1 + +org, ocda (ongoing) +2024-01-02 ralph.amissah@gmail.com +98c1c70 + +2024 +2024-01-02 ralph.amissah@gmail.com +32b8127 + +org, ocda (ongoing) +2023-12-18 ralph.amissah@gmail.com +0eb9052 + +org, ocda (ongoing) +2023-12-16 ralph.amissah@gmail.com +b69940c + +org, spine ver & doc header (copyright & license) +2023-12-16 ralph.amissah@gmail.com +61d8e58 +- org import: reuse settings in another org file + using code block to evaluate other org file + spine_version_info_and_doc_header_including_copyright_and_license.org + +.envrc re-adjust & update direnv +2023-12-08 ralph.amissah@gmail.com +7c0c0e6 +- nixDirEnv (a copy of .envrc) used for flake.nix + (getting around an issue that arose when + building project; may revert to direct use of + .envrc) + +config_dub.org remove some unused parts +2023-12-07 ralph.amissah@gmail.com +e3bd7b7 + +ldc-1.36.0-beta1 tested ok (here still using 1.35.0) +2023-12-07 ralph.amissah@gmail.com +08017ca + +nix flake related modifications +2023-12-07 ralph.amissah@gmail.com +844e0b6 + +poem substitution +2023-12-06 ralph.amissah@gmail.com +cdb5d7a +- strange events yesterday, I am assuming that this substitution is a + long past uncommited change (as the like was needed and considered); + rather than the demonstration of my having being hacked, which if it + was, appears to have been rather kindly done considering the + implications of such access (seemingly having left everything else + untouched, though it implies access to and considerable knowledge of + this code base), and the choice of poem, one that I might make but + would be generous for someone else to choose for me. + +0.14.0 +2023-11-20 ralph.amissah@gmail.com +c6ee6dc + +ocda, structs (replacing tuples) +2023-11-19 ralph.amissah@gmail.com +e413648 (tag: doc-reform_v0.13.0) + +ocda, minor text formatting for comments & debugs +2023-11-19 ralph.amissah@gmail.com +7924d2a +- side-note: issues with doom emacs org babel + tangle + (not completely resolved, and have persisted) + +ocda, arrange structs, continue +2023-11-15 ralph.amissah@gmail.com +245b9a3 + +ocda, single out, use more structs +2023-11-15 ralph.amissah@gmail.com +d2a94f9 + +0.13.0 +2023-11-15 ralph.amissah@gmail.com +e0a48ea + +nix housekeeping +2023-11-04 ralph.amissah@gmail.com +f9be4ab (tag: doc-reform_v0.12.0) + +updates incl. ldc-1.35.0, direnv-2.4.0 +2023-10-15 ralph.amissah@gmail.com +12f3394 + +housekeeping, updates incl. ldc-1.34.0, dub-1.34.0 +2023-09-05 ralph.amissah@gmail.com +976f1ca + +ldc 1.33.0 (tokyo) +2023-07-28 ralph.amissah@gmail.com +973b279 + +flake.nix minor +2023-07-11 ralph.amissah@gmail.com +9410a4e + +ocda, improve doc markup structure error messages +2023-07-09 ralph.amissah@gmail.com +af80415 +- ocda, metadoc_from_src + workon doc markup structure error message, check + +flake nix build dub, set HOME, dub >= 1.31.0 fix +2023-07-08 ralph.amissah@gmail.com +12c4f6a +- fixes dub >= 1.31.0 build failure, attempted to + build in /homeless-shelter + +ocda, minor, tidy earlier work +2023-07-08 ralph.amissah@gmail.com +f16bcc2 +- ocda, fontface internal markup, cleanup & fixes + +nixenv generic set shell from system (from zsh) +2023-06-28 ralph.amissah@gmail.com +3798d20 + +icon chars, usability / cosmetic minor fix +2023-06-27 ralph.amissah@gmail.com +b861bbb + +"empty page" index.html, sort homepage link +2023-06-26 ralph.amissah@gmail.com +1ff7f29 + +html links and metadata, fixes & cosmetic work +2023-06-26 ralph.amissah@gmail.com +6118013 + +replace some instances of dir listing, index.html +2023-06-26 ralph.amissah@gmail.com +82d94b3 + +replace directory listing, blank index.html +2023-06-25 ralph.amissah@gmail.com +9125357 + +html, bespoke homepage, symlink toc.html index.html +2023-06-24 ralph.amissah@gmail.com +3434b91 +- html, bespoke homepage option +- html, symlinks toc.html index.html + +ocda, fontface internal markup, cleanup & fixes +2023-06-24 ralph.amissah@gmail.com +ff0a41d + +ocda, process section rather than part +2023-06-24 ralph.amissah@gmail.com +a47b0ef + +ldc 1.33.0-beta2 nix overlay +2023-06-27 ralph.amissah@gmail.com +30a6178 + +nix configure +2023-06-10 ralph.amissah@gmail.com +badd5fe + +unicode, changes in use of symbols to represent things +2023-06-10 ralph.amissah@gmail.com +516165c + +make set_depends (dyaml update) +2023-06-04 ralph.amissah@gmail.com +7973da9 + +nix use overlays when convenient +2023-06-04 ralph.amissah@gmail.com +446c0fe + +dub nix +2023-05-26 ralph.amissah@gmail.com +66ccfe4 + +ocda org file ("metaverse" renamed) +2023-05-21 ralph.amissah@gmail.com +fd8a637 +- ocda - object centric document abstraction +- "metaverse" name predates current association, + no need to hold on to either, rename + +nix dev + update direnv 2.2.1 => 2.3.0 +2023-04-29 ralph.amissah@gmail.com +d7930ad + +html search form action (for index & text results) +2023-04-20 ralph.amissah@gmail.com +cff8fea +- obstinately avoiding scripting, even javascript + result far from an ideal compromise, + (two submission forms (for text & for index)) + +nix org cleaning +2023-04-10 ralph.amissah@gmail.com +e3ced89 + +nix run alejandra formatter, decided to go with it +2023-04-10 ralph.amissah@gmail.com +d79a579 + +org & nix flake, mod for local dev (D related) +2023-03-16 ralph.amissah@gmail.com +667fcd4 +- for local dev using newer versions of things D + related + +nix flake & build, temp. remove gdc +2023-02-21 ralph.amissah@gmail.com +9598bd7 + +nix flake & build, devShells etc. +2023-01-26 ralph.amissah@gmail.com +970eea0 + +nix & build housekeeping +2023-01-24 ralph.amissah@gmail.com +5010380 + +nix & build housekeeping, alternative D compilers +2023-01-23 ralph.amissah@gmail.com +a615ba4 +- compilation status + - dmd (@D2.100) ok, & has been fine + - ldc (@D2.100) ok, & has been fine + - gdc11 available in nixpkgs does not compile + awaiting gdc12 (which would also be based on + @D2.100 & just might) + +2023, year rollover, old habit +2023-01-01 ralph.amissah@gmail.com +9085f33 + +nix and build housekeeping +2022-12-15 ralph.amissah@gmail.com +3d78a75 + +removed old ruby utility scripts +2022-12-16 ralph.amissah@gmail.com +d11d08b + +sqlite, check db exists, writable etc. +2022-12-09 ralph.amissah@gmail.com +fa286f5 + +regex review, match speed & compile time, ctregex +2022-11-25 ralph.amissah@gmail.com +f6d28b6 +- improve match time + - add interim fontface identifier marker +- improve compile time + - remove unused regexs + - separate out some specialized output matches + +gitignore & things nix +2022-12-08 ralph.amissah@gmail.com +684091e + +spine-search-cgi separate commits, remove sundry +2022-11-25 ralph.amissah@gmail.com +fb112dc + +0.12.0 +2022-11-25 ralph.amissah@gmail.com +4c08954 + +epub header assertion removed, check +2022-12-23 ralph.amissah@gmail.com +5d34421 (tag: doc-reform_v0.11.3) + +configs housekeeping, minor +2022-11-16 ralph.amissah@gmail.com +2bbbda5 + +regex (start thinking about ctRegex) +2022-11-11 ralph.amissah@gmail.com +f7079c9 + +org nix cosmetic +2022-11-11 ralph.amissah@gmail.com +ea80c51 + +org nix +2022-09-28 ralph.amissah@gmail.com +3b6e027 + +org noweb adjustments +2022-08-03 ralph.amissah@gmail.com +ace605e + +org nix adjust +2022-07-31 ralph.amissah@gmail.com +934b830 + +ocn metaverse, rearrange +2022-06-14 ralph.amissah@gmail.com +9b9ecaf + +org-mode headers modified +2022-06-15 ralph.amissah@gmail.com +73eb325 + +makefile, too much, prune! +2022-06-03 ralph.amissah@gmail.com +14a07cb + +build related, mostly nix flakes +2022-06-01 ralph.amissah@gmail.com +4808d0f + +html links to output, flags for a bit finer control +2022-05-26 ralph.amissah@gmail.com +dadc2ca + +pdf output links, should user choose to have it +2022-05-25 ralph.amissah@gmail.com +2eff2b6 + +sub dependency update, updates D-YAML +2022-05-26 ralph.amissah@gmail.com +8bd1faf + +housekeeping +2022-05-14 ralph.amissah@gmail.com +3a03516 + +generated-by header, latex, html, epub +2022-04-03 ralph.amissah@gmail.com +5bd8cbc +- consider, implementation quite messy + +latex doc headers moved to .sty files in ./sty dir +2022-03-30 ralph.amissah@gmail.com +15d1dc2 +- some changes made, font selection included + +latex head adjustments +2022-04-02 ralph.amissah@gmail.com +4b0ae05 + +latex header, work on (& some code formatting) +2022-03-24 ralph.amissah@gmail.com +6d74d9f + +latex output (try tidy); linebreaks more generally +2022-03-24 ralph.amissah@gmail.com +e2424c0 + +latex, pagebreaks, make headers, consider +2022-03-07 ralph.amissah@gmail.com +81f4747 + +latex, pagebreaks, make headers +2022-03-07 ralph.amissah@gmail.com +60e34a2 +- for book, article and manually set pagebreaks, + not fully utilized but flexibility introduced + +latex, pdf headers, some removed +2022-03-06 ralph.amissah@gmail.com +7e46a33 +- removed some pdf headers preceding substantive + text + +latex, use geometry package for page setting +2022-03-04 ralph.amissah@gmail.com +64de475 + +latex, linebreak br +2022-03-04 ralph.amissah@gmail.com +f4c6cf3 + +latex, urls +2022-03-02 ralph.amissah@gmail.com +e19cbce + +latex \newcommand: \ocn for ocn with margin +2022-03-01 ralph.amissah@gmail.com +b8d295e + +latex font sizes +2022-02-28 ralph.amissah@gmail.com +e4cca3e + +latex select papersize & orientation +2022-02-28 ralph.amissah@gmail.com +8dde791 +- cfte, doc collection config, cli e.g. + --set-papersize="a4,letter.portrait,b4.portrait" + +org-mode, latex file, cosmetic +2022-03-05 ralph.amissah@gmail.com +a1a07ff + +external dependency update, housekeeping, routine +2022-02-25 ralph.amissah@gmail.com +78a2310 + +verbosity level, "vox_gt[lv]" (voice greater than) +2022-02-23 ralph.amissah@gmail.com +20a3674 + +rethink verbose & debug flags, introduce show +2022-02-22 ralph.amissah@gmail.com +614e44a + +pod org file, minor +2022-02-20 ralph.amissah@gmail.com +e5da2f6 + +debug flags, narrow purpose +2022-02-21 ralph.amissah@gmail.com +8757dfd + +cgi search housekeeping, sync & remove redundancy +2022-02-18 ralph.amissah@gmail.com +7787e2c +- removed copy of d search form both org and src + duplication & out of date + +footers, year, minor +2022-02-18 ralph.amissah@gmail.com +d5e1af6 + +sqlite, html lite breakline related +2022-02-09 ralph.amissah@gmail.com +afca0c7 + +xmls, copyright and license display +2022-02-09 ralph.amissah@gmail.com +e9ff833 + +quote block, footnotes, markup? +2022-02-05 ralph.amissah@gmail.com +6acf808 + +epub, navigation +2022-02-04 ralph.amissah@gmail.com +94f56fa + +epub, work on +2022-02-04 ralph.amissah@gmail.com +30b6d71 + +codegen cgi search removed (using src in org-mode) +2022-02-03 ralph.amissah@gmail.com +b32a501 + +htmls, banner layout additions +2022-02-02 ralph.amissah@gmail.com +b3ab72d +- scroll/seg doc access toggle +- epub link added, later make optional +- search button, minor cosmetic + +xmls css, step +2022-02-01 ralph.amissah@gmail.com +3d89027 + +xmls css, stepwise changes +2022-01-29 ralph.amissah@gmail.com +d3f7134 + +xmls css, start to consider mobile usability +2022-01-29 ralph.amissah@gmail.com +8333ab4 + +config & sqlite search output, some changes +2022-01-28 ralph.amissah@gmail.com +d39da3f + +cgi sqlite_search, heading matches fix, cleanup +2022-01-27 ralph.amissah@gmail.com +1e04f9f + +doc presentation, add option to include date with title and author +2022-01-25 ralph.amissah@gmail.com +3c2da30 + +metadata, topic register to json removed, unused +2022-01-25 ralph.amissah@gmail.com +07581b1 + +sqlite: table, topic register +2022-01-24 ralph.amissah@gmail.com +f167586 + +xmls, html group text output (bullets & indents) +2022-01-20 ralph.amissah@gmail.com +845f644 + +org files naming, minor +2022-01-19 ralph.amissah@gmail.com +5b3d661 + +sqlite, minor, cosmetic in use case, if not exist +2022-01-16 ralph.amissah@gmail.com +33a5e14 + +a new year +2022-01-05 ralph.amissah@gmail.com +3105b44 + +nix setup related but messy +2021-12-23 ralph.amissah@gmail.com +168e45c + +metaverse, xml dom close eof +2021-12-03 ralph.amissah@gmail.com +bb03ff2 + +xmls, html header band +2021-12-03 ralph.amissah@gmail.com +a8d1de6 + +dlang dub & nix build related, includes dep update +2021-10-23 ralph.amissah@gmail.com +c4f6c86 +- nix-shell --pure + - nix-build + - dub build --compiler=ldc2 --build=release --force + +nix .envrc related +2021-10-16 ralph.amissah@gmail.com +69571dc + +org files, tangle output, some fixes +2021-10-13 ralph.amissah@gmail.com +0ff37b7 + +configuration, hierarchy filenames & paths ... +2021-10-07 ralph.amissah@gmail.com +e37589f + +sqlite related internal naming +2021-10-05 ralph.amissah@gmail.com +abe7e76 + +xmls homepage link +2021-10-05 ralph.amissah@gmail.com +6f65d96 + +primarily org related +2021-10-05 ralph.amissah@gmail.com +0271831 + +nix related config, direnv else minor +2021-09-20 ralph.amissah@gmail.com +85a2a29 + +org latex organize +2021-09-09 ralph.amissah@gmail.com +e8d88ac + +metadata "curate" replaces "harvest" +2021-09-01 ralph.amissah@gmail.com +1f8b96b +- "curated metadata" instead of "metadata harvest" +- css color change to related pages, light theme + +xmls, epub3 toc_nav.xhtml toc.ncx +2021-08-29 ralph.amissah@gmail.com +2cdc5d2 + +config nix +2021-08-29 ralph.amissah@gmail.com +bc5b1b8 + +metaverse parallel processing reproducability +2021-08-21 ralph.amissah@gmail.com +8525eb4 +- html xhtml issue with tags +- epub issue with title (skipped) in OEBPS/toc.ncx + +config, clean up and make a bit more consistent +2021-08-12 ralph.amissah@gmail.com +2426920 +- check version settings with: + rg -A2 _version_set$ org + +configuration reorganized into config files +2021-08-11 ralph.amissah@gmail.com +f459b2f +- spine_build_scaffold broken up into many files + +spine search and configuration related +2021-08-11 ralph.amissah@gmail.com +118ea61 + +spine_search (work on) +2021-08-08 ralph.amissah@gmail.com +b521068 + +nix help files, .envrc_local_ (& nix_notes_.org) +2021-08-07 ralph.amissah@gmail.com +c16231d + +track org config suggestions that require bespoke adjustment +2021-08-01 ralph.amissah@gmail.com +9b9b125 + +ext_depends updates: d-yaml & d2sqlite3 +2021-08-01 ralph.amissah@gmail.com +47bff1c + +config defaults: cfte, config-file & cle +2021-08-01 ralph.amissah@gmail.com +9b72621 + +spine_search +2021-08-01 ralph.amissah@gmail.com +ff59047 + +dir rename ./sundry (from ./misc) +2021-06-27 ralph.amissah@gmail.com +4d5ee2e + +org-mode code block headers +2021-06-27 ralph.amissah@gmail.com +4e84f49 + +nix-build cleanup, external sources localized +2021-05-15 ralph.amissah@gmail.com +924fabf +- clean up as external sources kept locally, in + ./src/ext_depends/ +- remove dub2nix dependency, no longer needed/used + +cgi.d arsd update +2021-05-15 ralph.amissah@gmail.com +33c8101 + +org-mode file minor adjustment +2021-05-05 ralph.amissah@gmail.com +ae7cb63 + +regex adjust, dc update build fix required +2021-05-03 ralph.amissah@gmail.com +6b55016 +- ldc-v1.26.0 dmd-v2.096.1 + +org .envrc-local_ (sample for nix-shell) +2021-04-22 ralph.amissah@gmail.com +fd3cddd + +spine, harvests require doc abstraction be run +2021-04-23 ralph.amissah@gmail.com +1eba3ef + +ext-dep: d-yaml updated +2021-04-22 ralph.amissah@gmail.com +b8fadcd + +spine options, pod uses source file structure +2021-04-20 ralph.amissah@gmail.com +cd6c5db + +spine_build_scaffold: nix related housekeeping +2021-04-20 ralph.amissah@gmail.com +08e51e7 +- mkDub.nix (dub2nix) use lib, + stdenv.lib deprecated +- .envrc stop using lorri +- .envrc-local_ set local variables as needed + +ext-dep: d2sqlite3 updated +2021-04-19 ralph.amissah@gmail.com +d9de45a + +org-mode, cosmetic +2021-04-16 ralph.amissah@gmail.com +8072ebd + +epub, minor adjustments +2021-04-13 ralph.amissah@gmail.com +294cc37 + +doc summary reinstated (org fix) +2021-04-13 ralph.amissah@gmail.com +be3b4e7 + +headers: copyright, license, year; also https +2021-04-04 ralph.amissah@gmail.com +5588bc1 + +fix issues raised by dmd2.095.1 ldc2 1.25.0 +2021-03-05 ralph.amissah@gmail.com +cbd7a2e + +make set_depends run dub describe, track json output +2021-03-03 ralph.amissah@gmail.com +e897eee +- traded $PWD for project root as ./, i.e. from dub describe json +- dub describe deletes parts of dependencies that are unreferenced by + the project build; these are available elsewhere and there is little + reason to keep them + +ext depends meta info: ver hash, license +2021-03-02 ralph.amissah@gmail.com +ede7dc3 + +cleaning +2021-02-25 ralph.amissah@gmail.com +c408957 + +external & build dependences in src tree +2021-02-19 ralph.amissah@gmail.com +02ca32a +- external & build dependences boost licensed + - ext_depends (external depends) + - D-YAML + - tinyendian + - d2sqlite3 + - imageformats + - build_depends + - dub2nix + +build from static source-tree pre fetch depends +2021-02-19 ralph.amissah@gmail.com +e1f5135 + +0.11.3 +2021-02-19 ralph.amissah@gmail.com +47ca5be + CHANGELOG 2021-02-19 ralph.amissah@gmail.com +8e1f65b (tag: doc-reform_v0.11.2) make changelog & echo version tag 2021-02-19 ralph.amissah@gmail.com @@ -106,7 +1065,7 @@ ldc-1.23.0 overlay for nixos 20.09 nix 2020-10-23 ralph.amissah@gmail.com -ccd9370 (compiler) +ccd9370 org mode, code-block names 2020-10-22 ralph.amissah@gmail.com @@ -5,7 +5,7 @@ - Author: Ralph Amissah [ralph.amissah@gmail.com] - - Copyright: (C) 2015 - 2024 Ralph Amissah + - Copyright: (C) 2015 - 2025 Ralph Amissah - code under src/* src/sisudoc/* - License: AGPL 3 or later: @@ -140,6 +140,7 @@ - code: cgi.d aria2c https://raw.githubusercontent.com/adamdruppe/arsd/master/cgi.d + aria2c https://raw.githubusercontent.com/adamdruppe/arsd/master/core.d - License: BSL-1.0 Boost Software License 1.0 @@ -4,7 +4,7 @@ #+FILETAGS: :spine:build:tools: #+AUTHOR: Ralph Amissah #+EMAIL: [[mailto:ralph.amissah@gmail.com][ralph.amissah@gmail.com]] -#+COPYRIGHT: Copyright (C) 2015 - 2024 Ralph Amissah +#+COPYRIGHT: Copyright (C) 2015 - 2025 Ralph Amissah #+LANGUAGE: en #+STARTUP: content hideblocks hidestars noindent entitiespretty #+OPTIONS: H:3 num:nil toc:t \n:nil @:t ::t |:t ^:nil _:nil -:t f:t *:t <:t @@ -28,7 +28,7 @@ author: name: "Ralph Amissah" email: ralph.amissah@gmail.com -copyright: "(C) 2015 - 2024 Ralph Amissah, All Rights Reserved." +copyright: "(C) 2015 - 2025 Ralph Amissah, All Rights Reserved." license: - "project code: AGPL 3 or later" @@ -258,25 +258,18 @@ for a document collection you can point to the document collection: ${SpineBIN} -v --source --pod --latex --latex-init --epub --html --html-link-search --html-link-pdf --html-link-curate --html-link-markup --cgi-sqlite-search-filename="${SpineCGIform}" --cgi-url-action="${SpineSearchActionRemote}" --curate --sqlite-update --sqlite-kb-filename="${SpineSQLdb}" --output=${SpineOUT} ${SpinePOD}/* -*** generate a cgi search form in d +*** generate a cgi search form -spine -v --cgi-search-form-codegen \ - --output=/var/www/html \ - ~spineMarkupSamples/pod - -spine -v --cgi-search-form-codegen --config=~spineMarkupSamples/pod +The CGI search form is built separately in the sisudoc-spine-search-cgi/ directory. -spine -v --cgi-search-form-codegen --config=~spineMarkupSamples/pod/.dr/config_local_site +Steps: +1. Clone the sisudoc-spine-search-cgi repository +2. Configure views/configuration.txt with your web server settings +3. Build the CGI binary using Nix or dub +4. Deploy the CGI binary to your web server's cgi-bin directory -spine --cgi-search-form-codegen --output=`echo ~webDocRoot` ~spineMarkupSamples/pod - -spine --cgi-search-form-codegen --cgi-sqlite-search-filename="spine_search" --output=`echo ~webDocRoot` - -spine -v --cgi-search-form-codegen \ - --sqlite-db-filename="spine.search.db" \ - --cgi-sqlite-search-filename="spine-search" \ - --output=/var/www/html \ - ~spineMarkupSamples/pod +For detailed instructions, see: + sisudoc-spine-search-cgi/README.md **** compile the cgi search form @@ -306,14 +299,15 @@ cgi-bin directory ${SpineBIN} -v --source --pod --latex --latex-init --epub --html --html-link-search --html-link-pdf --html-link-curate --html-link-markup --cgi-sqlite-search-filename="${SpineCGIform}" --cgi-url-action="${SpineSearchActionLocal}" --curate --sqlite-update --sqlite-db-filename="${SpineSQLdb}" --output=${SpineOUT} ${SpinePOD}/* -*** create db & search form +*** create db spine -v \ --sqlite-db-create --sqlite-db-filename="spine.search.db" \ - --cgi-search-form-codegen --cgi-sqlite-search-filename="spine-search" \ --output=/var/www/html \ ~spineMarkupSamples/pod/* +Note: The CGI search form is built separately in sisudoc-spine-search-cgi/ + *** html with links to search form ${SpineBIN} -v --epub --html --html-link-curate --curate --output=${SpineOUT} ${SpinePOD}/* @@ -11,7 +11,7 @@ author: name: "Ralph Amissah" email: ralph.amissah@gmail.com -copyright: "(C) 2015 - 2024 Ralph Amissah, All Rights Reserved." +copyright: "(C) 2015 - 2025 Ralph Amissah, All Rights Reserved." license: - "project code: AGPL 3 or later" @@ -243,23 +243,16 @@ for a document collection you can point to the document collection: ### generate a cgi search form in d -spine -v --cgi-search-form-codegen \ - --output=/var/www/html \ - ~spineMarkupSamples/pod - -spine -v --cgi-search-form-codegen --config=~spineMarkupSamples/pod +The CGI search form is built separately in the sisudoc-spine-search-cgi/ directory. -spine -v --cgi-search-form-codegen --config=~spineMarkupSamples/pod/.dr/config_local_site +Steps: +1. Clone the sisudoc-spine-search-cgi repository +2. Configure views/configuration.txt with your web server settings +3. Build the CGI binary using Nix or dub +4. Deploy the CGI binary to your web server's cgi-bin directory -spine --cgi-search-form-codegen --output=`echo ~webDocRoot` ~spineMarkupSamples/pod - -spine --cgi-search-form-codegen --cgi-sqlite-search-filename="spine_search" --output=`echo ~webDocRoot` - -spine -v --cgi-search-form-codegen \ - --sqlite-db-filename="spine.search.db" \ - --cgi-sqlite-search-filename="spine-search" \ - --output=/var/www/html \ - ~spineMarkupSamples/pod +For detailed instructions, see: + sisudoc-spine-search-cgi/README.md #### compile the cgi search form @@ -289,14 +282,15 @@ cgi-bin directory ${SpineBIN} -v --source --pod --latex --latex-init --epub --html --html-link-search --html-link-pdf --html-link-curate --html-link-markup --cgi-sqlite-search-filename="${SpineCGIform}" --cgi-url-action="${SpineSearchActionLocal}" --curate --sqlite-update --sqlite-db-filename="${SpineSQLdb}" --output=${SpineOUT} ${SpinePOD}/* -### create db & search form +### create db spine -v \ --sqlite-db-create --sqlite-db-filename="spine.search.db" \ - --cgi-search-form-codegen --cgi-sqlite-search-filename="spine-search" \ --output=/var/www/html \ ~spineMarkupSamples/pod/* +Note: The CGI search form is built separately in sisudoc-spine-search-cgi/ + ### html with links to search form ${SpineBIN} -v --epub --html --html-link-curate --curate --output=${SpineOUT} ${SpinePOD}/* diff --git a/data/pod/sisu-spine-markup/media/text/en/sisu-spine-markup.sst b/data/pod/sisu-spine-markup/media/text/en/sisu-spine-markup.sst index 11553c2..6ae09d1 100644 --- a/data/pod/sisu-spine-markup/media/text/en/sisu-spine-markup.sst +++ b/data/pod/sisu-spine-markup/media/text/en/sisu-spine-markup.sst @@ -234,7 +234,7 @@ date: modified: "2020-04-11" rights: - copyright: "Copyright (C) Ralph Amissah 2007, 2024" + copyright: "Copyright (C) Ralph Amissah 2007, 2025" license: "AGPL 3 (part of SiSU Spine documentation)" classify: diff --git a/derivation.nix b/derivation.nix index 1457658..90e549e 100644 --- a/derivation.nix +++ b/derivation.nix @@ -87,10 +87,10 @@ with ( ); mkDubDerivation rec { pname = "spine"; - version = "0.17.0"; + version = "0.18.0"; src = ./.; nativeBuildInputs = with pkgs; [dub ldc]; - buildInputs = with pkgs; [nixVersions.nix_2_21 sqlite]; + buildInputs = with pkgs; [nixVersions.latest sqlite]; meta = with pkgs.lib; { description = "A sisu like parser & document generator"; longDescription = '' @@ -10,17 +10,18 @@ with pkgs; # â¯â¯â¯ nix_related #nix # if not on NixOS, this is needed direnv - nixVersions.nix_2_21 #nixVersions.latest #nixVersions.git + nixVersions.latest #nixVersions.latest #nixVersions.git nix-prefetch-git validatePkgConfig nix-output-monitor nix-tree jq #gx - #alejandra + #nixfmt-rfc-style git # â¯â¯â¯ dev gnumake ps + dtools # â¯â¯â¯ d_build_related # â¯â¯ package manager dub @@ -2,9 +2,9 @@ "authors": [ "Ralph Amissah" ], - "copyright": "Copyright © 2015 - 2024 Ralph Amissah", + "copyright": "Copyright © 2015 - 2025 Ralph Amissah", "name": "spine", - "version": "0.17.0", + "version": "0.18.0", "description": "an object-centric sisu-like document parser", "homepage": "https://sisudoc.org", "license": "AGPL-3.0+", diff --git a/dub_describe.json b/dub_describe.json index 19bde01..a811411 100644 --- a/dub_describe.json +++ b/dub_describe.json @@ -231,7 +231,7 @@ }, { "role": "source", - "path": "src/doc_reform/meta/rgx_yaml_tags.d" + "path": "src/doc_reform/meta/rgx_yaml.d" }, { "role": "source", @@ -934,7 +934,7 @@ "./src/doc_reform/meta/package.d", "./src/doc_reform/meta/rgx.d", "./src/doc_reform/meta/rgx_files.d", - "./src/doc_reform/meta/rgx_yaml_tags.d", + "./src/doc_reform/meta/rgx_yaml.d", "./src/doc_reform/share/defaults.d", "./src/doc_reform/spine.d" ], @@ -1,30 +1,12 @@ { "nodes": { - "flake-utils": { - "inputs": { - "systems": "systems" - }, - "locked": { - "lastModified": 1710146030, - "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, "nixpkgs": { "locked": { - "lastModified": 1719826879, - "narHash": "sha256-xs7PlULe8O1SAcs/9e/HOjeUjBrU5FNtkAF/bSEcFto=", + "lastModified": 1754651824, + "narHash": "sha256-aB7ft6njy9EJfuW+rdToNChfRrHNRw/yTg5cSEnG+HI=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "b9014df496d5b68bf7c0145d0e9b0f529ce4f2a8", + "rev": "b069b7c1e2fe1a3a24221428558bf44128d3d5c8", "type": "github" }, "original": { @@ -36,24 +18,8 @@ }, "root": { "inputs": { - "flake-utils": "flake-utils", "nixpkgs": "nixpkgs" } - }, - "systems": { - "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", - "type": "github" - }, - "original": { - "owner": "nix-systems", - "repo": "default", - "type": "github" - } } }, "root": "root", @@ -1,15 +1,15 @@ { description = "a sisu like parser & document generator"; inputs.nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable"; - inputs.flake-utils.url = "github:numtide/flake-utils"; + #inputs.flake-utils.url = "github:numtide/flake-utils"; outputs = { self, nixpkgs, - flake-utils, + #flake-utils, ... }@inputs: let pname = "spine"; - version = "0.17.0"; + version = "0.18.0"; shell = ./shell.nix; devEnv = ./nixDevEnv.sh; supportedSystems = ["x86_64-linux"]; # [ "x86_64-linux" "x86_64-darwin" "aarch64-linux" "aarch64-darwin" ]; @@ -21,9 +21,10 @@ runHook postCheck ''; localOverlay = (final: prev: { - ldc = prev.callPackage ./nix-overlays/ldc { }; - dmd = prev.callPackage ./nix-overlays/dmd { }; - dub = prev.callPackage ./nix-overlays/dub { }; + ldc = prev.callPackage ./nix-overlays/ldc { }; # -> ok 1.41.0 + dmd = prev.callPackage ./nix-overlays/dmd { }; # -> ok 2.111.0 + dub = prev.callPackage ./nix-overlays/dub { }; # -> ? 1.39.0 + dtools = prev.callPackage ./nix-overlays/dtools { }; # -> ok 2.110.0 #gdc = prev.callPackage ./nix-overlays/gdc { }; }); pkgsForSystem = system: import nixpkgs { @@ -89,8 +90,8 @@ src = self; inherit shell; inherit devEnv; - buildInputs = with pkgs-ovl; [sqlite]; - nativeBuildInputs = with pkgs-ovl; [dub dmd gnumake]; + buildInputs = with pkgs-nix; [sqlite]; + nativeBuildInputs = with pkgs-nix; [dub dmd gnumake]; buildPhase = '' runHook preBuild buildCMD="dub run --cache=local --compiler=$(type -P dmd) --build=dmd --combined --skip-registry=all" @@ -113,7 +114,7 @@ inherit shell; inherit devEnv; buildInputs = with pkgs-nix; [sqlite]; - nativeBuildInputs = with pkgs-ovl; [dub ldc gnumake]; + nativeBuildInputs = with pkgs-nix; [dub ldc gnumake]; buildPhase = '' runHook preBuild buildCMD="dub run --cache=local --compiler=$(type -P ldmd2) --build=ldmd2 --combined --skip-registry=all" @@ -130,6 +131,7 @@ spine-overlay-dmd = stdenv.mkDerivation { inherit pname; inherit version; + #name = "spine-0.18.0 dmd-2.111.0 dub-1.39.0"; meta.mainProgram = "spine-dmd"; executable = true; src = self; @@ -153,6 +155,7 @@ spine-overlay-ldc = stdenv.mkDerivation { inherit pname; inherit version; + #name = "spine-0.18.0 ldc-1.41.0 dub-1.39.0"; meta.mainProgram = "spine-ldc"; executable = true; src = self; @@ -212,74 +215,80 @@ in with pkgs-nix; { dsh-overlay = mkShell { - name = "spine base dev shell"; + name = "spine-0.18.0 base dev shell, ldc-1.41.0, dub-1.39.0 - dtools-2.110.0"; inherit shell; inherit devEnv; packages = with pkgs-ovl; [ ldc #dmd dub + dtools gnumake sqlite ]; inherit shellHook; }; - dsh-nixpkgs-dmd-dub = mkShell { - name = "spine base dev shell"; + dsh-nixpkgs-dmd = mkShell { + name = "spine-0.18.0 base dev shell"; inherit shell; inherit devEnv; packages = [ dmd dub + dtools gnumake sqlite ]; inherit shellHook; }; - dsh-nixpkgs-ldc-dub = mkShell { - name = "spine base dev shell"; + dsh-nixpkgs-ldc = mkShell { + name = "spine-0.18.0 base dev shell"; inherit shell; inherit devEnv; packages = [ ldc dub + dtools gnumake sqlite ]; inherit shellHook; }; - dsh-overlay-dmd-dub = mkShell { - name = "spine base dev shell"; + dsh-overlay-dmd = mkShell { + name = "spine-0.18.0 base dev shell, dmd-2.111.0, dub-1.39.0 - dtools-2.110.0"; inherit shell; inherit devEnv; packages = with pkgs-ovl; [ dmd dub + dtools gnumake sqlite ]; inherit shellHook; }; - dsh-overlay-ldc-dub = mkShell { - name = "spine base dev shell"; + dsh-overlay-ldc = mkShell { + name = "spine-0.18.0 base dev shell, ldc-1.41.0, dub-1.39.0 - dtools-2.110.0"; inherit shell; inherit devEnv; packages = with pkgs-ovl; [ ldc dub + dtools gnumake sqlite ]; inherit shellHook; }; dsh-epub = mkShell { - name = "spine dev shell for epub output"; + name = "spine-0.18.0 dev shell for epub output"; inherit shell; inherit devEnv; packages = [ ldc #dmd dub + dtools gnumake sqlite libxml2 @@ -301,13 +310,14 @@ inherit shellHook; }; dsh-html = mkShell { - name = "spine dev shell for html output"; + name = "spine-0.18.0 dev shell for html output"; inherit shell; inherit devEnv; packages = [ ldc #dmd dub + dtools gnumake sqlite # â¯â¯ text-mode web browsers @@ -321,13 +331,14 @@ inherit shellHook; }; dsh-latex-pdf = mkShell { - name = "spine dev shell for latex & pdf output"; + name = "spine-0.18.0 dev shell for latex & pdf output"; inherit shell; inherit devEnv; packages = [ ldc #dmd dub + dtools gnumake source-sans-pro source-serif-pro @@ -337,26 +348,28 @@ inherit shellHook; }; dsh-sqlite = mkShell { - name = "spine dev shell for latex & pdf output"; + name = "spine-0.18.0 dev shell for sqlite3 output"; inherit shell; inherit devEnv; packages = [ ldc #dmd dub + dtools gnumake sqlite ]; inherit shellHook; }; dsh-i18n = mkShell { - name = "spine dev shell internationalization, po4a"; + name = "spine-0.18.0 dev shell for internationalization, po4a"; inherit shell; inherit devEnv; packages = [ ldc #dmd dub + dtools gnumake sqlite perl538Packages.Po4a @@ -1301,8 +1301,8 @@ gitsnapshot: distclean tangle git commit -a version_tag: - echo "DRV=0.17.0; git tag -f sisudoc-spine_v$$\{DRV} -m\"doc-reform sisudoc spine-$$\{DRV}\" HEAD"; \ - echo "git tag -f sisudoc-spine_v0.17.0 -m\"doc-reform sisudoc spine-0.17.0\" HEAD" + echo "DRV=0.18.0; git tag -f sisudoc-spine_v$$\{DRV} -m\"doc-reform sisudoc spine-$$\{DRV}\" HEAD"; \ + echo "git tag -f sisudoc-spine_v0.18.0 -m\"doc-reform sisudoc spine-0.18.0\" HEAD" .PHONY : all build rebuild release \ distclean init \ diff --git a/meson.build b/meson.build index 226e198..6ebe0dc 100644 --- a/meson.build +++ b/meson.build @@ -1,6 +1,6 @@ project('spine', 'd', license: 'AGPL-3', - version: '0.17.0', + version: '0.18.0', meson_version: '>=0.46' ) #if meson.get_compiler('d').get_id() == 'gcc' diff --git a/nix-overlays/README b/nix-overlays/README index 44e76b6..75b498b 100644 --- a/nix-overlays/README +++ b/nix-overlays/README @@ -4,7 +4,7 @@ #+FILETAGS: :dlang:build:tools: #+AUTHOR: Ralph Amissah #+EMAIL: [[mailto:ralph.amissah@gmail.com][ralph.amissah@gmail.com]] -#+COPYRIGHT: Copyright (C) 2015 - 2024 Ralph Amissah +#+COPYRIGHT: Copyright (C) 2015 - 2025 Ralph Amissah #+LANGUAGE: en #+STARTUP: content hideblocks hidestars noindent entitiespretty @@ -16,11 +16,11 @@ compiler and build tools: ldc, dub and dtools, than exist in nixpkgs at the time of publishing, in some cases with additional fixes. nix overlays for (updates nixpkgs, more recent versions of): - - ldc ( 1.30.0 -> 1.39.0 ) - - dub ( 1.23.0 -> 1.36.0 ) [for nix versions 1.31.0 ... 1.33.0 broken] - - dtools ( 2.095.1 -> 2.103.1 ) + - ldc ( 1.30.0 -> 1.41.0 ) + - dub ( 1.23.0 -> 1.40.0 ) [for nix versions 1.31.0 ... 1.33.0 broken] + - dtools ( 2.095.1 -> 2.110.0 ) - - dmd ( 2.106.1 -> 2.109.0 ) + - dmd ( 2.106.1 -> 2.111.0 ) - gdc [not yet available] dlang-nix-flakes.org --⯠@@ -47,26 +47,26 @@ search nixpkgs here: - https://search.nixos.org/packages?channel=unstable&from=0&size=100&sort=relevance&query= ** compilers -*** ldc OK ✓ ( 1.30.0 -> 1.39.0 ) +*** ldc OK ✓ ( 1.30.0 -> 1.41.0 ) - https://wiki.dlang.org/LDC - https://github.com/ldc-developers/ldc - https://github.com/ldc-developers/ldc/releases - nix-prefetch-url --unpack https://github.com/ldc-developers/ldc/archive/refs/tags/v1.39.0.tar.gz + nix-prefetch-url --unpack https://github.com/ldc-developers/ldc/archive/refs/tags/v1.41.0.tar.gz - https://github.com/ldc-developers/ldc/issues - version in nixpkgs: - https://search.nixos.org/packages?channel=unstable&show=ldc&from=0&size=100&sort=relevance&type=packages&query=ldc -*** dmd OK ✓ ( 2.100.2 -> 2.109.0 ) +*** dmd OK ✓ ( 2.100.2 -> 2.111.0 ) - https://dlang.org/ - https://wiki.dlang.org/LDC - https://github.com/dlang/dmd - https://github.com/dlang/dmd/tags - nix-prefetch-url --unpack https://github.com/dlang/dmd/archive/refs/tags/v2.109.0.tar.gz + nix-prefetch-url --unpack https://github.com/dlang/dmd/archive/refs/tags/v2.111.0.tar.gz - https://github.com/dlang/dmd/pulls - version in nixpkgs: @@ -88,13 +88,13 @@ not yet provided in nixpkgs with gcc12, no attempt made - https://github.com/D-Programming-GDC/gdc ** build tool -*** dub ( 1.23.0 -> 1.36.0 ) +*** dub ( 1.23.0 -> 1.40.0 ) - https://code.dlang.org/packages/dub - https://github.com/dlang/dub - https://github.com/dlang/dub/releases - nix-prefetch-url --unpack https://github.com/dlang/dub/archive/refs/tags/v1.36.0.tar.gz + nix-prefetch-url --unpack https://github.com/dlang/dub/archive/refs/tags/v1.40.0.tar.gz - https://github.com/dlang/dub/issues - version in nixpkgs: @@ -102,19 +102,19 @@ not yet provided in nixpkgs with gcc12, no attempt made - dub nixpkg overlay is updated and runs most dub tests correctly -- dub OK ✓ ( 1.30.0 -> 1.36.0 ) +- dub OK ✓ ( 1.30.0 -> 1.40.0 ) from v1.31.0 requires seeting of pwd in buildPhase else fails to build packages with nix tools that previous version of dub built; ** tools -*** dtools OK ✓ ( 2.095.1 -> 2.103.1 ) +*** dtools OK ✓ ( 2.095.1 -> 2.110.0 ) - https://code.dlang.org/packages/dtools - https://github.com/dlang/tools - https://github.com/dlang/tools/tags - nix-prefetch --unpack https://github.com/dlang/tools/archive/refs/tags/v2.103.1.tar.gz + nix-prefetch --unpack https://github.com/dlang/tools/archive/refs/tags/v2.110.0.tar.gz - https://github.com/dlang/tools/issues - version in nixpkgs diff --git a/nix-overlays/dmd/default.nix b/nix-overlays/dmd/default.nix index 155a950..8375c13 100644 --- a/nix-overlays/dmd/default.nix +++ b/nix-overlays/dmd/default.nix @@ -1,5 +1 @@ -import ./generic.nix { - version = "2.109.0"; - dmdHash = "sha256-unAZgyZyT6qomlj6pdlOx4h1SKuDjutl1/0FM9AhBWc="; - phobosHash = "sha256-b91FeluFqhmjHd1wwkyq98QzIlwjE646xNj2n6hP3aM="; -} +import ./package.nix diff --git a/nix-overlays/dmd/generic.nix b/nix-overlays/dmd/generic.nix index 63c2bd1..59a781e 100644 --- a/nix-overlays/dmd/generic.nix +++ b/nix-overlays/dmd/generic.nix @@ -1,28 +1,30 @@ -{ version -, dmdHash -, phobosHash +{ + version, + dmdHash, + phobosHash, }: -{ stdenv -, lib -, fetchFromGitHub -, removeReferencesTo -, makeWrapper -, which -, writeTextFile -, curl -, tzdata -, gdb -#, Foundation -, callPackage -, targetPackages -, fetchpatch -, bash -, installShellFiles -, git -, unzip -, dmdBootstrap ? callPackage ./bootstrap.nix { } -, dmdBin ? "${dmdBootstrap}/bin" +{ + stdenv, + lib, + fetchFromGitHub, + removeReferencesTo, + makeWrapper, + which, + writeTextFile, + curl, + tzdata, + gdb, + # Foundation, + callPackage, + targetPackages, + fetchpatch, + bash, + installShellFiles, + git, + unzip, + dmdBootstrap ? callPackage ./bootstrap.nix { }, + dmdBin ? "${dmdBootstrap}/bin", }: let @@ -36,11 +38,8 @@ let }; bits = builtins.toString stdenv.hostPlatform.parsed.cpu.bits; - osname = - if stdenv.isDarwin then - "osx" - else - stdenv.hostPlatform.parsed.kernel.name; + osname = if stdenv.hostPlatform.isDarwin then "osx" + else stdenv.hostPlatform.parsed.kernel.name; pathToDmd = "\${NIX_BUILD_TOP}/dmd/generated/${osname}/release/${bits}/dmd"; in @@ -97,6 +96,9 @@ stdenv.mkDerivation (finalAttrs: { rm dmd/compiler/test/runnable/gdb4149.d rm dmd/compiler/test/runnable/gdb4181.d rm dmd/compiler/test/compilable/ddocYear.d + rm dmd/compiler/test/compilable/sarif_success_test.d + rm dmd/compiler/test/fail_compilation/sarif_test.d + rm dmd/compiler/test/fail_compilation/sarifmultiple_test.d # Disable tests that rely on objdump whitespace until fixed upstream: # https://issues.dlang.org/show_bug.cgi?id=23317 @@ -106,11 +108,11 @@ stdenv.mkDerivation (finalAttrs: { rm dmd/compiler/test/dshell/test6952.d '' + lib.optionalString (lib.versionAtLeast version "2.092.2") '' substituteInPlace dmd/compiler/test/dshell/test6952.d --replace-fail "/usr/bin/env bash" "${bash}/bin/bash" - '' + lib.optionalString stdenv.isLinux '' + '' + lib.optionalString stdenv.hostPlatform.isLinux '' substituteInPlace phobos/std/socket.d --replace-fail "assert(ih.addrList[0] == 0x7F_00_00_01);" "" - '' + lib.optionalString stdenv.isDarwin '' - substituteInPlace phobos/std/socket.d --replace-fail "foreach (name; names)" "names = []; foreach (name; names)" - ''; + ''; # + lib.optionalString stdenv.hostPlatform.isDarwin '' + # substituteInPlace phobos/std/socket.d --replace-fail "foreach (name; names)" "names = []; foreach (name; names)" + #''; nativeBuildInputs = [ makeWrapper @@ -123,7 +125,7 @@ stdenv.mkDerivation (finalAttrs: { buildInputs = [ curl tzdata - # ] ++ lib.optionals stdenv.isDarwin [ + # ] ++ lib.optionals stdenv.hostPlatform.isDarwin [] # Foundation ]; @@ -208,14 +210,22 @@ stdenv.mkDerivation (finalAttrs: { disallowedReferences = [ dmdBootstrap ]; + passthru = { + inherit dmdBootstrap; + }; + meta = with lib; { description = "Official reference compiler for the D language"; homepage = "https://dlang.org/"; + changelog = "https://dlang.org/changelog/${finalAttrs.version}.html"; # Everything is now Boost licensed, even the backend. # https://github.com/dlang/dmd/pull/6680 license = licenses.boost; mainProgram = "dmd"; maintainers = with maintainers; [ lionello dukc jtbx ]; platforms = [ "x86_64-linux" "i686-linux" "x86_64-darwin" ]; + # ld: section __DATA/__thread_bss has type zero-fill but non-zero file offset file '/private/tmp/nix-build-dmd-2.109.1.drv-0/.rdmd-301/rdmd-build.d-A1CF043A7D87C5E88A58F3C0EF5A0DF7/objs/build.o' for architecture x86_64 + # clang-16: error: linker command failed with exit code 1 (use -v to see invocation) + broken = stdenv.hostPlatform.isDarwin && stdenv.hostPlatform.isx86_64; }; }) diff --git a/nix-overlays/dmd/package.nix b/nix-overlays/dmd/package.nix new file mode 100644 index 0000000..3aa1183 --- /dev/null +++ b/nix-overlays/dmd/package.nix @@ -0,0 +1,5 @@ +import ./generic.nix { + version = "2.111.0"; + dmdHash = "sha256-2bjsGa9nTny818dLRV6LKkes+Ycq8W+PFjwhGVrD5TM="; + phobosHash = "sha256-9jySZbODoL8sULhYKj/l4+c/uiG5xY2dO240k9XQtPk="; +} diff --git a/nix-overlays/dtools/default.nix b/nix-overlays/dtools/default.nix index d605e4d..8375c13 100644 --- a/nix-overlays/dtools/default.nix +++ b/nix-overlays/dtools/default.nix @@ -1,51 +1 @@ -{ stdenv, lib, fetchFromGitHub, fetchpatch, ldc, curl, gnumake42 }: - -stdenv.mkDerivation rec { - pname = "dtools"; - version = "2.103.1"; - - src = fetchFromGitHub { - owner = "dlang"; - repo = "tools"; - rev = "v${version}"; - sha256 = "sha256-XM4gUxcarQCOBR8W/o0iWAI54PyLDkH6CsDce22Cnu4="; - name = "dtools"; - }; - - patches = [ - (fetchpatch { - # part of https://github.com/dlang/tools/pull/441 - url = "https://github.com/dlang/tools/commit/6c6a042d1b08e3ec1790bd07a7f69424625ee866.patch"; # Fix LDC arm64 build - sha256 = "sha256-x6EclTYN1Y5FG57KLhbBK0BZicSYcZoWO7MTVcP4T18="; - }) - ]; - - nativeBuildInputs = [ ldc gnumake42 ]; # fails with make 4.4 - buildInputs = [ curl ]; - - makeCmd = '' - make -f posix.mak all DMD_DIR=dmd DMD=${ldc.out}/bin/ldmd2 CC=${stdenv.cc}/bin/cc - ''; - - buildPhase = '' - $makeCmd - ''; - - doCheck = true; - - checkPhase = '' - $makeCmd test_rdmd - ''; - - installPhase = '' - $makeCmd INSTALL_DIR=$out install - ''; - - meta = with lib; { - description = "Ancillary tools for the D programming language compiler"; - homepage = "https://github.com/dlang/tools"; - license = lib.licenses.boost; - maintainers = with maintainers; [ ThomasMader ]; - platforms = lib.platforms.unix; - }; -} +import ./package.nix diff --git a/nix-overlays/dtools/disabled-tests.diff b/nix-overlays/dtools/disabled-tests.diff new file mode 100644 index 0000000..a22825a --- /dev/null +++ b/nix-overlays/dtools/disabled-tests.diff @@ -0,0 +1,11 @@ +--- a/rdmd_test.d ++++ b/rdmd_test.d +@@ -616,7 +616,7 @@ void runTests(string rdmdApp, string compiler, string model) + enforce(res.status == 1, res.output); + } + +- version (Posix) ++ version (none) + { + import std.conv : to; + auto makeVersion = execute(["make", "--version"]).output.splitLines()[0]; diff --git a/nix-overlays/dtools/fix-ldc-arm64.diff b/nix-overlays/dtools/fix-ldc-arm64.diff new file mode 100644 index 0000000..66eaa22 --- /dev/null +++ b/nix-overlays/dtools/fix-ldc-arm64.diff @@ -0,0 +1,102 @@ +Adapted from https://github.com/dlang/tools/commit/6c6a042d1b08e3ec1790bd07a7f69424625ee866.patch +--- /dev/null ++++ b/osmodel.mak +@@ -0,0 +1,75 @@ ++# osmodel.mak ++# ++# Detects and sets the macros: ++# ++# OS = one of {osx,linux,freebsd,openbsd,netbsd,dragonflybsd,solaris} ++# MODEL = one of { 32, 64 } ++# MODEL_FLAG = one of { -m32, -m64 } ++# ARCH = one of { x86, x86_64, aarch64 } ++# ++# Note: ++# Keep this file in sync between druntime, phobos, and dmd repositories! ++# Source: https://github.com/dlang/dmd/blob/master/src/osmodel.mak ++ ++ ++ifeq (,$(OS)) ++ uname_S:=$(shell uname -s) ++ ifeq (Darwin,$(uname_S)) ++ OS:=osx ++ endif ++ ifeq (Linux,$(uname_S)) ++ OS:=linux ++ endif ++ ifeq (FreeBSD,$(uname_S)) ++ OS:=freebsd ++ endif ++ ifeq (OpenBSD,$(uname_S)) ++ OS:=openbsd ++ endif ++ ifeq (NetBSD,$(uname_S)) ++ OS:=netbsd ++ endif ++ ifeq (DragonFly,$(uname_S)) ++ OS:=dragonflybsd ++ endif ++ ifeq (Solaris,$(uname_S)) ++ OS:=solaris ++ endif ++ ifeq (SunOS,$(uname_S)) ++ OS:=solaris ++ endif ++ ifeq (,$(OS)) ++ $(error Unrecognized or unsupported OS for uname: $(uname_S)) ++ endif ++endif ++ ++# When running make from XCode it may set environment var OS=MACOS. ++# Adjust it here: ++ifeq (MACOS,$(OS)) ++ OS:=osx ++endif ++ ++ifeq (,$(MODEL)) ++ ifeq ($(OS), solaris) ++ uname_M:=$(shell isainfo -n) ++ else ++ uname_M:=$(shell uname -m) ++ endif ++ ifneq (,$(findstring $(uname_M),x86_64 amd64)) ++ MODEL:=64 ++ ARCH:=x86_64 ++ endif ++ ifneq (,$(findstring $(uname_M),aarch64 arm64)) ++ MODEL:=64 ++ ARCH:=aarch64 ++ endif ++ ifneq (,$(findstring $(uname_M),i386 i586 i686)) ++ MODEL:=32 ++ ARCH:=x86 ++ endif ++ ifeq (,$(MODEL)) ++ $(error Cannot figure 32/64 model and arch from uname -m: $(uname_M)) ++ endif ++endif ++ ++MODEL_FLAG:=-m$(MODEL) +--- a/Makefile ++++ b/Makefile +@@ -9,9 +9,8 @@ DUB=dub + WITH_DOC = no + DOC = ../dlang.org + +-# Load operating system $(OS) (e.g. linux, osx, ...) and $(MODEL) (e.g. 32, 64) detection Makefile from dmd +-$(shell [ ! -d $(DMD_DIR) ] && git clone --depth=1 https://github.com/dlang/dmd $(DMD_DIR)) +-include $(DMD_DIR)/compiler/src/osmodel.mak ++# Load operating system $(OS) (e.g. linux, osx, ...) and $(MODEL) (e.g. 32, 64) detection Makefile ++include osmodel.mak + + ifeq (windows,$(OS)) + DOTEXE:=.exe +@@ -30,7 +29,7 @@ DFLAGS = $(MODEL_FLAG) $(if $(findstring windows,$(OS)),,-fPIC) -preview=dip1000 + DFLAGS += $(WARNINGS) + + # Default DUB flags (DUB uses a different architecture format) +-DUBFLAGS = --arch=$(subst 32,x86,$(subst 64,x86_64,$(MODEL))) ++DUBFLAGS = --arch=$(ARCH) + + TOOLS = \ + $(ROOT)/catdoc$(DOTEXE) \ diff --git a/nix-overlays/dtools/package.nix b/nix-overlays/dtools/package.nix new file mode 100644 index 0000000..2e72b44 --- /dev/null +++ b/nix-overlays/dtools/package.nix @@ -0,0 +1,49 @@ +{ + lib, + stdenv, + fetchFromGitHub, + ldc, + curl, +}: + +stdenv.mkDerivation (finalAttrs: { + pname = "dtools"; + version = "2.110.0"; + + src = fetchFromGitHub { + owner = "dlang"; + repo = "tools"; + rev = "v${finalAttrs.version}"; + hash = "sha256-xMEHnrstL5hAkhp8+/z1I2KZWZ7eztWZnUGLTKCfbBI="; + name = "dtools"; + }; + + patches = [ + # Disable failing tests + ./disabled-tests.diff + # Fix LDC arm64 build + ./fix-ldc-arm64.diff + ]; + + nativeBuildInputs = [ ldc ]; + buildInputs = [ curl ]; + + makeFlags = [ + "CC=${stdenv.cc}/bin/cc" + "DMD=${ldc.out}/bin/ldmd2" + "INSTALL_DIR=$(out)" + ]; + + enableParallelBuilding = true; + + doCheck = true; + checkTarget = "test_rdmd"; + + meta = with lib; { + description = "Ancillary tools for the D programming language"; + homepage = "https://github.com/dlang/tools"; + license = licenses.boost; + maintainers = with maintainers; [ jtbx ]; + platforms = platforms.unix; + }; +}) diff --git a/nix-overlays/dub/default.nix b/nix-overlays/dub/default.nix index 819a5e5..8375c13 100644 --- a/nix-overlays/dub/default.nix +++ b/nix-overlays/dub/default.nix @@ -1,86 +1 @@ -{ lib, stdenv, fetchFromGitHub, curl, libevent, rsync, ldc, dcompiler ? ldc }: - -assert dcompiler != null; - -stdenv.mkDerivation rec { - pname = "dub"; - version = "1.36.0"; - - enableParallelBuilding = true; - - src = fetchFromGitHub { - owner = "dlang"; - repo = "dub"; - rev = "v${version}"; - sha256 = "sha256-S8pls9zxbGAQTwqYf4bDT2q7Ow12S8bBsJE5UmsACBs="; - }; - - #postUnpack = '' - # patchShebangs . - #''; - - dubvar = "\\$DUB"; - postPatch = '' - patchShebangs test - - # Can be removed with https://github.com/dlang/dub/pull/1368 - substituteInPlace test/fetchzip.sh \ - --replace "dub remove" "\"${dubvar}\" remove" - ''; - - nativeBuildInputs = [ dcompiler libevent rsync ]; - buildInputs = [ curl ]; - - buildPhase = '' - for DC_ in dmd ldmd2 gdmd; do - echo "... check for D compiler $DC_ ..." - export DC=$(type -P $DC_ || echo "") - if [ ! "$DC" == "" ]; then - break - fi - done - if [ "$DC" == "" ]; then - exit "Error: could not find D compiler" - fi - echo "$DC_ found and used as D compiler in buildPhase for $pname" - $DC ./build.d - ./build - ''; - - doCheck = !stdenv.isDarwin; - - checkPhase = '' - export DUB=$NIX_BUILD_TOP/source/bin/dub - export PATH=$PATH:$NIX_BUILD_TOP/source/bin/ - #export DC=${dcompiler.out}/bin/${if dcompiler.pname=="ldc" then "ldc2" else dcompiler.pname} - if [ "$DC" == "" ]; then - exit "Error: could not find D compiler" - fi - echo "DC out --> $DC" - export HOME=$TMP - - rm -rf test/issue502-root-import - rm -rf test/dpath-variable - #rm test/dpath-variable.sh - rm -rf test/git-dependency - rm -rf test/use-c-sources # added to build v1.33.0 - rm -rf test/pr2642-cache-db # added to build v1.34.0 - rm -rf test/pr2644-describe-artifact-path # added to build v1.36.0 - rm -rf test/pr2647-build-deep # added to build v1.36.0 - - ./test/run-unittest.sh - ''; - - installPhase = '' - mkdir -p $out/bin - cp bin/dub $out/bin - ''; - - meta = with lib; { - description = "Package and build manager for D applications and libraries"; - homepage = "https://code.dlang.org/"; - license = licenses.mit; - maintainers = with maintainers; [ jtbx ]; - platforms = [ "x86_64-linux" "i686-linux" "aarch64-linux" "x86_64-darwin" "aarch64-darwin" ]; - }; -} +import ./package.nix diff --git a/nix-overlays/dub/package.nix b/nix-overlays/dub/package.nix new file mode 100644 index 0000000..4d63f2d --- /dev/null +++ b/nix-overlays/dub/package.nix @@ -0,0 +1,93 @@ +{ + lib, + stdenv, + fetchFromGitHub, + curl, + ldc, + dcompiler ? ldc, + libevent, + rsync, +}: + +assert dcompiler != null; + +stdenv.mkDerivation (finalAttrs: { + pname = "dub"; + version = "1.40.0"; + + enableParallelBuilding = true; + + src = fetchFromGitHub { + owner = "dlang"; + repo = "dub"; + rev = "v${finalAttrs.version}"; + hash = "sha256-OirchEKf66gis70gCSTOYcrHLyHhCsyt/rTEGT83Vcc="; + }; + + postPatch = '' + patchShebangs test + ''; + + nativeBuildInputs = [ dcompiler libevent rsync ]; + buildInputs = [ curl ]; + + preBuild = '' + for DCn in dmd ldmd2 gdmd; do + echo "... check for D compiler $DCn ..." + export DC=$(type -P $DCn || echo "") + if [ ! "$DC" == "" ]; then + break + fi + done + if [ "$DC" == "" ]; then + exit "Error: could not find D compiler" + fi + echo "$DCn found and used as D compiler in buildPhase for $pname" + ''; + + buildPhase = '' + runHook preBuild + $DC -run ./build.d + runHook postBuild + ''; + + doCheck = !stdenv.hostPlatform.isDarwin; + + checkPhase = '' + runHook preCheck + export DUB=$NIX_BUILD_TOP/source/bin/dub + export PATH=$PATH:$NIX_BUILD_TOP/source/bin/ + if [ "$DC" == "" ]; then + exit "Error: could not find D compiler" + fi + echo "DC out --> $DC" + export HOME=$TMP + + rm -rf test/issue502-root-import + rm -r test/dpath-variable # requires execution of dpath-variable.sh + rm -rf test/git-dependency + rm -rf test/use-c-sources # added to build v1.33.0 + rm -rf test/pr2642-cache-db # added to build v1.34.0 + rm -rf test/pr2644-describe-artifact-path # added to build v1.36.0 + rm -rf test/pr2647-build-deep # added to build v1.36.0 + rm -rf test/issue2698-cimportpaths-broken-with-dmd-ldc # added to build v1.40.0 + + ./test/run-unittest.sh + runHook postCheck + ''; + + installPhase = '' + runHook preInstall + install -Dm755 bin/dub $out/bin/dub + runHook postInstall + ''; + + meta = with lib; { + description = "Package and build manager for D programs and libraries"; + homepage = "https://code.dlang.org/"; + license = licenses.mit; + mainProgram = "dub"; + maintainers = with maintainers; [ jtbx ]; + platforms = [ "x86_64-linux" "i686-linux" "aarch64-linux" "x86_64-darwin" "aarch64-darwin" ]; + }; +}) diff --git a/nix-overlays/ldc/binary.nix b/nix-overlays/ldc/binary.nix deleted file mode 100644 index ca7fb4f..0000000 --- a/nix-overlays/ldc/binary.nix +++ /dev/null @@ -1,43 +0,0 @@ -{ lib, stdenv, fetchurl, curl, tzdata, autoPatchelfHook, fixDarwinDylibNames, libxml2 -, version, hashes }: - -let - inherit (stdenv) hostPlatform; - OS = if hostPlatform.isDarwin then "osx" else hostPlatform.parsed.kernel.name; - ARCH = if hostPlatform.isDarwin && hostPlatform.isAarch64 then "arm64" else hostPlatform.parsed.cpu.name; -in stdenv.mkDerivation { - pname = "ldc-bootstrap"; - inherit version; - - src = fetchurl rec { - name = "ldc2-${version}-${OS}-${ARCH}.tar.xz"; - url = "https://github.com/ldc-developers/ldc/releases/download/v${version}/${name}"; - sha256 = hashes."${OS}-${ARCH}" or (throw "missing bootstrap sha256 for ${OS}-${ARCH}"); - }; - - dontConfigure = true; - dontBuild = true; - - nativeBuildInputs = lib.optionals hostPlatform.isLinux [ - autoPatchelfHook - ] ++ lib.optional hostPlatform.isDarwin fixDarwinDylibNames; - - buildInputs = lib.optionals stdenv.hostPlatform.isLinux [ libxml2 stdenv.cc.cc ]; - - propagatedBuildInputs = [ curl tzdata ]; - - installPhase = '' - mkdir -p $out - - mv bin etc import lib LICENSE README $out/ - ''; - - meta = with lib; { - description = "The LLVM-based D Compiler"; - homepage = "https://github.com/ldc-developers/ldc"; - # from https://github.com/ldc-developers/ldc/blob/master/LICENSE - license = with licenses; [ bsd3 boost mit ncsa gpl2Plus ]; - maintainers = with maintainers; [ lionello ]; - platforms = [ "x86_64-linux" "x86_64-darwin" "aarch64-linux" "aarch64-darwin" ]; - }; -} diff --git a/nix-overlays/ldc/bootstrap.nix b/nix-overlays/ldc/bootstrap.nix index 7724cbc..f166568 100644 --- a/nix-overlays/ldc/bootstrap.nix +++ b/nix-overlays/ldc/bootstrap.nix @@ -1,11 +1,59 @@ -{ callPackage }: -callPackage ./binary.nix { - version = "1.25.0"; +{ + lib, + stdenv, + fetchurl, + curl, + tzdata, + autoPatchelfHook, + fixDarwinDylibNames, + libxml2, +}: + +let + inherit (stdenv) hostPlatform; + OS = if hostPlatform.isDarwin then "osx" else hostPlatform.parsed.kernel.name; + ARCH = if hostPlatform.isDarwin && hostPlatform.isAarch64 then "arm64" else hostPlatform.parsed.cpu.name; + version = "1.41.0"; hashes = { - # Get these from `nix-prefetch-url https://github.com/ldc-developers/ldc/releases/download/v1.19.0/ldc2-1.19.0-osx-x86_64.tar.xz` etc.. - osx-x86_64 = "sha256-6iKnbS+oalLKmyS8qYD/wS21b7+O+VgsWG2iT4PrWPU="; - linux-x86_64 = "sha256-sfg47RdlsIpryc3iZvE17OtLweh3Zw6DeuNJYgpuH+o="; - linux-aarch64 = "sha256-UDZ43x4flSo+SfsPeE8juZO2Wtk2ZzwySk0ADHnvJBI="; - osx-arm64 = "sha256-O/x0vy0wwQFaDc4uWSeMhx+chJKqbQb6e5QNYf+7DCw="; + # Get these from `nix store prefetch-file https://github.com/ldc-developers/ldc/releases/download/v1.41.0/ldc2-1.41.0-osx-x86_64.tar.xz` etc.. + osx-x86_64 = "sha256-W8/0i2PFakXbqs2wxb3cjqa+htSgx7LHyDGOBH9yEYE="; + linux-x86_64 = "sha256-SkOUV/D+WeadAv1rV1Sfw8h60PVa2fueQlB7b44yfI8="; + linux-aarch64 = "sha256-HEuVChPVM3ntT1ZDZsJ+xW1iYeIWhogNcMdIaz6Me6g="; + osx-arm64 = "sha256-FXJnBC8QsEchBhkxSqcZtPC/iHYB6TscY0qh7LPFRuQ="; + }; +in stdenv.mkDerivation { + pname = "ldc-bootstrap"; + inherit version; + + src = fetchurl rec { + name = "ldc2-${version}-${OS}-${ARCH}.tar.xz"; + url = "https://github.com/ldc-developers/ldc/releases/download/v${version}/${name}"; + hash = hashes."${OS}-${ARCH}" or (throw "missing bootstrap hash for ${OS}-${ARCH}"); + }; + + dontConfigure = true; + dontBuild = true; + + nativeBuildInputs = lib.optionals hostPlatform.isLinux [ + autoPatchelfHook + ] ++ lib.optional hostPlatform.isDarwin fixDarwinDylibNames; + + buildInputs = lib.optionals stdenv.hostPlatform.isLinux [ libxml2 stdenv.cc.cc ]; + + propagatedBuildInputs = [ curl tzdata ]; + + installPhase = '' + mkdir -p $out + + mv bin etc import lib LICENSE README $out/ + ''; + + meta = with lib; { + description = "LLVM-based D Compiler"; + homepage = "https://github.com/ldc-developers/ldc"; + # from https://github.com/ldc-developers/ldc/blob/master/LICENSE + license = with licenses; [ bsd3 boost mit ncsa gpl2Plus ]; + maintainers = with maintainers; [ lionello ]; + platforms = [ "x86_64-linux" "x86_64-darwin" "aarch64-linux" "aarch64-darwin" ]; }; } diff --git a/nix-overlays/ldc/default.nix b/nix-overlays/ldc/default.nix index 1f18529..8375c13 100644 --- a/nix-overlays/ldc/default.nix +++ b/nix-overlays/ldc/default.nix @@ -1,4 +1 @@ -import ./generic.nix { - version = "1.39.0"; - sha256 = "sha256-g5usNvYHMxjjbwsWN2fgO9vT9X2ZJWuXSUrEObWaRWI="; -} +import ./package.nix diff --git a/nix-overlays/ldc/generic.nix b/nix-overlays/ldc/generic.nix deleted file mode 100644 index bc21974..0000000 --- a/nix-overlays/ldc/generic.nix +++ /dev/null @@ -1,136 +0,0 @@ -{ version, sha256 }: -{ lib, stdenv, fetchurl, cmake, ninja, llvm_18, curl, tzdata -, libconfig, lit, gdb, unzip, darwin, bash -, callPackage, makeWrapper, runCommand, targetPackages -, ldcBootstrap ? callPackage ./bootstrap.nix { } -}: - -let - pathConfig = runCommand "ldc-lib-paths" {} '' - mkdir $out - echo ${tzdata}/share/zoneinfo/ > $out/TZDatabaseDirFile - echo ${curl.out}/lib/libcurl${stdenv.hostPlatform.extensions.sharedLibrary} > $out/LibcurlPathFile - ''; - -in - -stdenv.mkDerivation rec { - pname = "ldc"; - inherit version; - - src = fetchurl { - url = "https://github.com/ldc-developers/ldc/releases/download/v${version}/ldc-${version}-src.tar.gz"; - inherit sha256; - }; - - # https://issues.dlang.org/show_bug.cgi?id=19553 - hardeningDisable = [ "fortify" ]; - - postUnpack = '' - patchShebangs . - '' - + '' - rm ldc-${version}-src/tests/dmd/fail_compilation/mixin_gc.d - rm ldc-${version}-src/tests/dmd/runnable/xtest46_gc.d - rm ldc-${version}-src/tests/dmd/runnable/testptrref_gc.d - - # test depends on current year - rm ldc-${version}-src/tests/dmd/compilable/ddocYear.d - '' - + lib.optionalString stdenv.hostPlatform.isDarwin '' - # https://github.com/NixOS/nixpkgs/issues/34817 - rm -r ldc-${version}-src/tests/plugins/addFuncEntryCall - ''; - - postPatch = '' - # Setting SHELL=$SHELL when dmd testsuite is run doesn't work on Linux somehow - #substituteInPlace tests/dmd/Makefile --replace "SHELL=/bin/bash" "SHELL=${bash}/bin/bash" - '' - + lib.optionalString stdenv.hostPlatform.isLinux '' - substituteInPlace runtime/phobos/std/socket.d --replace "assert(ih.addrList[0] == 0x7F_00_00_01);" "" - '' - + lib.optionalString stdenv.hostPlatform.isDarwin '' - substituteInPlace runtime/phobos/std/socket.d --replace "foreach (name; names)" "names = []; foreach (name; names)" - ''; - - nativeBuildInputs = [ - cmake ldcBootstrap lit lit.python llvm_18.dev makeWrapper ninja unzip - ] - ++ lib.optionals stdenv.hostPlatform.isDarwin [ - darwin.apple_sdk.frameworks.Foundation - ] - ++ lib.optionals (!stdenv.hostPlatform.isDarwin) [ - # https://github.com/NixOS/nixpkgs/pull/36378#issuecomment-385034818 - gdb - ]; - - buildInputs = [ curl tzdata ]; - - cmakeFlags = [ - "-DD_FLAGS=-d-version=TZDatabaseDir;-d-version=LibcurlPath;-J${pathConfig}" - ]; - - postConfigure = '' - export DMD=$PWD/bin/ldmd2 - ''; - - makeFlags = [ "DMD=$DMD" ]; - - fixNames = lib.optionalString stdenv.hostPlatform.isDarwin '' - fixDarwinDylibNames() { - local flags=() - - for fn in "$@"; do - flags+=(-change "$(basename "$fn")" "$fn") - done - - for fn in "$@"; do - if [ -L "$fn" ]; then continue; fi - echo "$fn: fixing dylib" - install_name_tool -id "$fn" "''${flags[@]}" "$fn" - done - } - - fixDarwinDylibNames $(find "$(pwd)/lib" -name "*.dylib") - export DYLD_LIBRARY_PATH=$(pwd)/lib - ''; - - # https://github.com/ldc-developers/ldc/issues/2497#issuecomment-459633746 - additionalExceptions = lib.optionalString stdenv.hostPlatform.isDarwin - "|druntime-test-shared"; - - checkPhase = '' - # Build default lib test runners - ninja -j$NIX_BUILD_CORES all-test-runners - - ${fixNames} - - # Run dmd testsuite - export DMD_TESTSUITE_MAKE_ARGS="-j$NIX_BUILD_CORES DMD=$DMD" - ctest -V -R "dmd-testsuite" - - # Build and run LDC D unittests. - ctest --output-on-failure -R "ldc2-unittest" - - # Run LIT testsuite. - ctest -V -R "lit-tests" - - # Run default lib unittests - ctest -j$NIX_BUILD_CORES --output-on-failure -E "ldc2-unittest|lit-tests|dmd-testsuite${additionalExceptions}" - ''; - - postInstall = '' - wrapProgram $out/bin/ldc2 \ - --prefix PATH ":" "${targetPackages.stdenv.cc}/bin" \ - --set-default CC "${targetPackages.stdenv.cc}/bin/cc" - ''; - - meta = with lib; { - description = "The LLVM-based D compiler"; - homepage = "https://github.com/ldc-developers/ldc"; - # from https://github.com/ldc-developers/ldc/blob/master/LICENSE - license = with licenses; [ bsd3 boost mit ncsa gpl2Plus ]; - maintainers = with maintainers; [ lionello jtbx ]; - platforms = [ "x86_64-linux" "i686-linux" "aarch64-linux" "x86_64-darwin" "aarch64-darwin" ]; - }; -} diff --git a/nix-overlays/ldc/package.nix b/nix-overlays/ldc/package.nix new file mode 100644 index 0000000..1767785 --- /dev/null +++ b/nix-overlays/ldc/package.nix @@ -0,0 +1,186 @@ +{ + lib, + stdenv, + fetchFromGitHub, + fetchpatch, + callPackage, + makeWrapper, + removeReferencesTo, + runCommand, + writeText, + targetPackages, + cmake, + ninja, + llvm_20, + curl, + tzdata, + lit, + gdb, + unzip, + + ldcBootstrap ? callPackage ./bootstrap.nix { }, +}: + +let + pathConfig = runCommand "ldc-lib-paths" { } '' + mkdir $out + echo ${tzdata}/share/zoneinfo/ > $out/TZDatabaseDirFile + echo ${curl.out}/lib/libcurl${stdenv.hostPlatform.extensions.sharedLibrary} > $out/LibcurlPathFile + ''; + +in + +stdenv.mkDerivation (finalAttrs: { + pname = "ldc"; + version = "1.41.0"; + + src = fetchFromGitHub { + owner = "ldc-developers"; + repo = "ldc"; + rev = "v${finalAttrs.version}"; + hash = "sha256-6LcpY3LSFK4KgEiGrFp/LONu5Vr+/+vI04wEEpF3s+s="; + fetchSubmodules = true; + }; + + # https://issues.dlang.org/show_bug.cgi?id=19553 + hardeningDisable = [ "fortify" ]; + + postPatch = '' + patchShebangs runtime tools tests + + rm tests/dmd/fail_compilation/mixin_gc.d + rm tests/dmd/runnable/xtest46_gc.d + rm tests/dmd/runnable/testptrref_gc.d + + # test depends on current year + rm tests/dmd/compilable/ddocYear.d + '' + lib.optionalString stdenv.hostPlatform.isLinux '' + substituteInPlace runtime/phobos/std/socket.d --replace-fail "assert(ih.addrList[0] == 0x7F_00_00_01);" "" + '' + lib.optionalString stdenv.hostPlatform.isDarwin '' + substituteInPlace runtime/phobos/std/socket.d --replace-fail "foreach (name; names)" "names = []; foreach (name; names)" + + # https://github.com/NixOS/nixpkgs/issues/34817 + rm -r tests/plugins/addFuncEntryCall + ''; + + nativeBuildInputs = [ + cmake ldcBootstrap lit lit.python llvm_20.dev makeWrapper ninja unzip + ] ++ lib.optionals (!stdenv.hostPlatform.isDarwin) [ + # https://github.com/NixOS/nixpkgs/pull/36378#issuecomment-385034818 + gdb + ]; + + buildInputs = [ curl tzdata ]; + + outputs = [ "out" "include" ]; + outputInclude = "include"; + + cmakeFlags = [ + "-DD_FLAGS=-d-version=TZDatabaseDir;-d-version=LibcurlPath;-J${pathConfig}" + "-DINCLUDE_INSTALL_DIR=${placeholder "include"}/include/d" + ]; + + postConfigure = '' + export DMD=$PWD/bin/ldmd2 + ''; + + makeFlags = [ "DMD=$DMD" ]; + + fixNames = lib.optionalString stdenv.hostPlatform.isDarwin '' + fixDarwinDylibNames() { + local flags=() + + for fn in "$@"; do + flags+=(-change "$(basename "$fn")" "$fn") + done + + for fn in "$@"; do + if [ -L "$fn" ]; then continue; fi + echo "$fn: fixing dylib" + install_name_tool -id "$fn" "''${flags[@]}" "$fn" + done + } + + fixDarwinDylibNames $(find "$(pwd)/lib" -name "*.dylib") + export DYLD_LIBRARY_PATH=$(pwd)/lib + ''; + + # https://github.com/ldc-developers/ldc/issues/2497#issuecomment-459633746 + additionalExceptions = lib.optionalString stdenv.hostPlatform.isDarwin "|druntime-test-shared"; + + checkPhase = '' + # Build default lib test runners + ninja -j$NIX_BUILD_CORES all-test-runners + + ${finalAttrs.fixNames} + + # Run dmd testsuite + export DMD_TESTSUITE_MAKE_ARGS="-j$NIX_BUILD_CORES DMD=$DMD" + ctest -V -R "dmd-testsuite" + + # Build and run LDC D unittests. + ctest --output-on-failure -R "ldc2-unittest" + + # Run LIT testsuite. + ctest -V -R "lit-tests" + + # Run default lib unittests + ctest -j$NIX_BUILD_CORES --output-on-failure -E "ldc2-unittest|lit-tests|dmd-testsuite${finalAttrs.additionalExceptions}" + ''; + + postInstall = '' + wrapProgram $out/bin/ldc2 \ + --prefix PATH : ${targetPackages.stdenv.cc}/bin \ + --set-default CC ${targetPackages.stdenv.cc}/bin/cc + ''; + + preFixup = '' + find $out/bin -type f -exec ${removeReferencesTo}/bin/remove-references-to -t ${ldcBootstrap} '{}' + + ''; + + disallowedReferences = [ ldcBootstrap ]; + + meta = with lib; { + description = "LLVM-based D compiler"; + homepage = "https://github.com/ldc-developers/ldc"; + changelog = "https://github.com/ldc-developers/ldc/releases/tag/v${finalAttrs.version}"; + # from https://github.com/ldc-developers/ldc/blob/master/LICENSE + license = with licenses; [ bsd3 boost mit ncsa gpl2Plus ]; + mainProgram = "ldc2"; + maintainers = with maintainers; [ lionello jtbx ]; + platforms = [ "x86_64-linux" "i686-linux" "aarch64-linux" "x86_64-darwin" "aarch64-darwin" ]; + }; + + passthru.ldcBootstrap = ldcBootstrap; + passthru.tests = + let + ldc = finalAttrs.finalPackage; + helloWorld = stdenv.mkDerivation (finalAttrs: { + name = "ldc-hello-world"; + src = writeText "hello_world.d" '' + module hello_world; + import std.stdio; + void main() { + writeln("Hello, world!"); + } + ''; + dontUnpack = true; + buildInputs = [ ldc ]; + dFlags = [ ]; + buildPhase = '' + ldc2 ${lib.escapeShellArgs finalAttrs.dFlags} -of=test $src + ''; + installPhase = '' + mkdir -p $out/bin + mv test $out/bin + ''; + }); + in { + # Without -shared, built binaries should not contain + # references to the compiler binaries. + no-references-to-compiler = helloWorld.overrideAttrs { + disallowedReferences = [ ldc ]; + dFlags = ["-g"]; + }; + }; +}) diff --git a/org/COPYRIGHT b/org/COPYRIGHT index e076311..b1cdad5 100644 --- a/org/COPYRIGHT +++ b/org/COPYRIGHT @@ -5,7 +5,7 @@ - Author: Ralph Amissah [ralph.amissah@gmail.com] - - Copyright: (C) 2015 - 2024 Ralph Amissah + - Copyright: (C) 2015 - 2025 Ralph Amissah - Spine, Doc Reform (related to SiSU) uses standard: - docReform markup syntax (based on SiSU markup) diff --git a/org/compile_time_info.org b/org/compile_time_info.org index 20a6cc8..1332c2c 100644 --- a/org/compile_time_info.org +++ b/org/compile_time_info.org @@ -4,7 +4,7 @@ #+FILETAGS: :spine:compile: #+AUTHOR: Ralph Amissah #+EMAIL: [[mailto:ralph.amissah@gmail.com][ralph.amissah@gmail.com]] -#+COPYRIGHT: Copyright (C) 2015 - 2024 Ralph Amissah +#+COPYRIGHT: Copyright (C) 2015 - 2025 Ralph Amissah #+LANGUAGE: en #+STARTUP: content hideblocks hidestars noindent entitiespretty #+PROPERTY: header-args :exports code diff --git a/org/config_d_cfte.org b/org/config_d_cfte.org index 5b63bdd..2797609 100644 --- a/org/config_d_cfte.org +++ b/org/config_d_cfte.org @@ -4,7 +4,7 @@ #+FILETAGS: :spine:hub: #+AUTHOR: Ralph Amissah #+EMAIL: [[mailto:ralph.amissah@gmail.com][ralph.amissah@gmail.com]] -#+COPYRIGHT: Copyright (C) 2015 - 2024 Ralph Amissah +#+COPYRIGHT: Copyright (C) 2015 - 2025 Ralph Amissah #+LANGUAGE: en #+STARTUP: content hideblocks hidestars noindent entitiespretty #+PROPERTY: header-args :exports code @@ -173,97 +173,97 @@ enum _cfg = Cfg(); **** default set #+NAME: http_request_type -#+BEGIN_SRC sh +#+BEGIN_SRC shell <<http_request_type_localhost>> #+END_SRC #+NAME: http_host -#+BEGIN_SRC sh +#+BEGIN_SRC shell <<http_host_localhost>> #+END_SRC #+NAME: www_url_doc_root -#+BEGIN_SRC sh +#+BEGIN_SRC shell <<www_url_doc_root_localhost>> #+END_SRC **** localhost #+NAME: http_request_type_localhost -#+BEGIN_SRC sh +#+BEGIN_SRC shell http #+END_SRC #+NAME: http_host_localhost -#+BEGIN_SRC sh +#+BEGIN_SRC shell localhost #+END_SRC #+NAME: www_url_doc_root_localhost -#+BEGIN_SRC sh +#+BEGIN_SRC shell http://localhost #+END_SRC **** remotehost #+NAME: http_request_type_remotehost -#+BEGIN_SRC sh +#+BEGIN_SRC shell https #+END_SRC #+NAME: http_host_remotehost -#+BEGIN_SRC sh +#+BEGIN_SRC shell sisudoc.org #+END_SRC #+NAME: www_url_doc_root_remotehost -#+BEGIN_SRC sh +#+BEGIN_SRC shell https://sisudoc.org #+END_SRC **** directory paths #+NAME: www_url_doc_subroot -#+BEGIN_SRC sh +#+BEGIN_SRC shell /spine #+END_SRC #+NAME: processing_path_doc_root -#+BEGIN_SRC sh +#+BEGIN_SRC shell /srv/www/spine #+END_SRC #+NAME: www_doc_subroot -#+BEGIN_SRC sh +#+BEGIN_SRC shell /spine #+END_SRC #+NAME: cgi_bin_root -#+BEGIN_SRC sh +#+BEGIN_SRC shell /var/www/cgi/cgi-bin #+END_SRC #+NAME: db_sqlite_path -#+BEGIN_SRC sh +#+BEGIN_SRC shell /var/www/sqlite #+END_SRC #+NAME: cgi_filename -#+BEGIN_SRC sh +#+BEGIN_SRC shell spine_search #+END_SRC #+NAME: cgi_bin_subpath -#+BEGIN_SRC sh +#+BEGIN_SRC shell /cgi-bin #+END_SRC #+NAME: cgi_search_form_title -#+BEGIN_SRC sh +#+BEGIN_SRC shell ≅ SiSU Spine search ᨠ#+END_SRC #+NAME: db_sqlite_filename -#+BEGIN_SRC sh +#+BEGIN_SRC shell spine.search.db #+END_SRC diff --git a/org/config_dub.org b/org/config_dub.org index a6e715a..043e62c 100644 --- a/org/config_dub.org +++ b/org/config_dub.org @@ -4,7 +4,7 @@ #+FILETAGS: :spine:hub: #+AUTHOR: Ralph Amissah #+EMAIL: [[mailto:ralph.amissah@gmail.com][ralph.amissah@gmail.com]] -#+COPYRIGHT: Copyright (C) 2015 - 2024 Ralph Amissah +#+COPYRIGHT: Copyright (C) 2015 - 2025 Ralph Amissah #+LANGUAGE: en #+STARTUP: content hideblocks hidestars noindent entitiespretty #+PROPERTY: header-args :exports code @@ -47,7 +47,7 @@ "authors": [ "Ralph Amissah" ], - "copyright": "Copyright © 2015 - 2024 Ralph Amissah", + "copyright": "Copyright © 2015 - 2025 Ralph Amissah", "name": "spine", "version": "<<spine_version>>", "description": "an object-centric sisu-like document parser", diff --git a/org/config_env.org b/org/config_env.org index 1ea434a..ec6a1d5 100644 --- a/org/config_env.org +++ b/org/config_env.org @@ -4,7 +4,7 @@ #+FILETAGS: :spine:build:tools: #+AUTHOR: Ralph Amissah #+EMAIL: [[mailto:ralph.amissah@gmail.com][ralph.amissah@gmail.com]] -#+COPYRIGHT: Copyright (C) 2015 - 2024 Ralph Amissah +#+COPYRIGHT: Copyright (C) 2015 - 2025 Ralph Amissah #+LANGUAGE: en #+STARTUP: content hideblocks hidestars noindent entitiespretty #+PROPERTY: header-args :exports code @@ -23,7 +23,7 @@ ** nixDevEnv envrc :envrc: #+HEADER: :tangle ../nixDevEnv.sh -#+BEGIN_SRC sh +#+BEGIN_SRC shell if [ -f .envrc ]; then source_env_if_exists .envrc || source .envrc fi @@ -33,7 +33,7 @@ fi #+NAME: envrc #+HEADER: :tangle ../.envrc -#+BEGIN_SRC sh +#+BEGIN_SRC shell if [ -f .envrc-git-init ]; then source_env_if_exists .envrc-git-init || source .envrc-git-init fi @@ -49,15 +49,15 @@ fi - https://github.com/nix-community/nix-direnv - source_url - - direnv fetchurl "https://raw.githubusercontent.com/nix-community/nix-direnv/<<direnv-version>>/direnvrc" "<<direnv-sha>>" + - direnv fetchurl "https://raw.githubusercontent.com/nix-community/nix-direnv/<<direnv-version>>/direnvrc" "<<direnv_hash>>" - ${NixDirEnvVersion} #+HEADER: :tangle ../.envrc-nix -#+BEGIN_SRC sh +#+BEGIN_SRC shell NIX_ENFORCE_PURITY=1 # - https://github.com/nix-community/nix-direnv -NixDirEnvVersion="<<direnv-version>>" -NixDirEnvSHA="<<direnv-sha>>" +NixDirEnvVersion="<<direnv_version>>" +NixDirEnvSHA="<<direnv_hash>>" if ! has nix_direnv_version || ! nix_direnv_version ${NixDirEnvVersion}; then source_url "https://raw.githubusercontent.com/nix-community/nix-direnv/${NixDirEnvVersion}/direnvrc" "${NixDirEnvSHA}" fi @@ -77,13 +77,14 @@ echo ' â¯â¯ nix flake update && nix flake check && nix flake show • for a dev shell (development environment): - - â¯â¯ nix develop - â¯â¯ nix develop ".#" --print-build-logs -c zsh - â¯â¯ nix develop ".#dsh-nixpkgs-dmd-dub" --print-build-logs -c zsh - â¯â¯ nix develop ".#dsh-overlay-dmd-dub" --print-build-logs -c zsh - â¯â¯ nix develop ".#dsh-nixpkgs-ldc-dub" --print-build-logs -c zsh - â¯â¯ nix develop ".#dsh-overlay-ldc-dub" --print-build-logs -c zsh + • nix develop + â¯â¯ nix develop ".#" --print-build-logs -c zsh + • nix develop using nixpkgs + â¯â¯ nix develop ".#dsh-nixpkgs-dmd" --print-build-logs -c zsh + â¯â¯ nix develop ".#dsh-nixpkgs-ldc" --print-build-logs -c zsh + • nix develop using package overlays: (dmd-<<dmd_version>>, ldc-<<ldc_version>>, dub-<<dub_version>>, dtools-<<dtools_version>>) + â¯â¯ nix develop ".#dsh-overlay-dmd" --print-build-logs -c zsh + â¯â¯ nix develop ".#dsh-overlay-ldc" --print-build-logs -c zsh â¯â¯ nix flake show • to build project: @@ -92,17 +93,19 @@ echo ' â¯â¯ nix build ".#" --print-build-logs • to build project: - â¯â¯ nix build ".#spine-nixpkgs-dmd" --print-build-logs - â¯â¯ nix build ".#spine-overlay-dmd" --print-build-logs - â¯â¯ nix build ".#spine-nixpkgs-ldc" --print-build-logs - â¯â¯ nix build ".#spine-overlay-ldc" --print-build-logs + • nix build using nixpkgs + â¯â¯ nix build ".#spine-nixpkgs-dmd" --print-build-logs + â¯â¯ nix build ".#spine-nixpkgs-ldc" --print-build-logs + • nix build using package overlays: (dmd-<<dmd_version>>, ldc-<<ldc_version>>, dub-<<dub_version>>, dtools-<<dtools_version>>) + â¯â¯ nix build ".#spine-overlay-dmd" --print-build-logs + â¯â¯ nix build ".#spine-overlay-ldc" --print-build-logs • to build using dub on nix (get dependencies by setting your development environment): - â¯â¯ nix develop ".#dsh-nixpkgs-dmd-dub" --print-build-logs -c zsh + â¯â¯ nix develop ".#dsh-nixpkgs-dmd" --print-build-logs -c zsh â¯â¯ dub --verbose --compiler=dmd --config=dmd - â¯â¯ nix develop ".#dsh-nixpkgs-ldc-dub" --print-build-logs -c zsh + â¯â¯ nix develop ".#dsh-nixpkgs-ldc" --print-build-logs -c zsh â¯â¯ dub --verbose --compiler=ldmd2 --config=ldmd2 • for develop environment & build options @@ -116,6 +119,9 @@ echo ' â¯â¯ ${SpineBIN} -v --source --pod --epub --html --html-link-curate --html-link-markup --curate --output=${SpineOUT} ${SpinePOD}/* â¯â¯ ${SpineBIN} -v --source --pod --latex --latex-init --epub --html --html-link-pdf --html-link-curate --html-link-markup --curate --output=${SpineOUT} ${SpinePOD}/* + + â¯â¯ ${SpineBIN} -v --sqlite-db-create --sqlite-db-filename=${SpineSQLdb} --sqlite-db-path=./_tmp-db + â¯â¯ ${SpineBIN} -v --sqlite-update --sqlite-db-filename=${SpineSQLdb} --sqlite-db-path=./_tmp-db ./markup/pod/* ' echo "• â¯â¯ ${SpineBIN} -v --source --pod --epub --html --html-link-curate --html-link-markup --curate --output=${SpineOUT} ${SpinePOD}/* @@ -123,62 +129,11 @@ echo "• " #+END_SRC -*** 3.0.4 - -#+NAME: direnv-version -#+BEGIN_SRC sh -3.0.4 -#+END_SRC - -#+NAME: direnv-sha -#+BEGIN_SRC sh -sha256-DzlYZ33mWF/Gs8DDeyjr8mnVmQGx7ASYqA5WlxwvBG4= -#+END_SRC - -*** 3.0.0 - -#+BEGIN_SRC sh -3.0.0 -#+END_SRC - -#+BEGIN_SRC sh -sha256-21TMnI2xWX7HkSTjFFri2UaohXVj854mgvWapWrxRXg= -#+END_SRC - -*** 2.4.0 - -#+BEGIN_SRC sh -2.4.0 -#+END_SRC - -#+BEGIN_SRC sh -sha256-XQzUAvL6pysIJnRJyR7uVpmUSZfc7LSgWQwq/4mBr1U= -#+END_SRC - -#+BEGIN_SRC sh -2.3.0 -#+END_SRC - -#+BEGIN_SRC sh -sha256-Dmd+j63L84wuzgyjITIfSxSD57Tx7v51DMxVZOsiUD8= -#+END_SRC - -#+NAME: direnv-sha_ -#+BEGIN_SRC sh -sha256-0000000000000000000000000000000000000000000= -#+END_SRC - -#+BEGIN_SRC sh -- https://github.com/nix-community/nix-direnv -NixDirEnvSHA="sha256-0000000000000000000000000000000000000000000=" -direnv fetchurl https://raw.githubusercontent.com/nix-community/nix-direnv/${NixDirEnvVersion}/direnvrc -#+END_SRC - ** .envrc-git-init #+HEADER: :tangle ../.envrc-git-init #+HEADER: :noweb yes -#+BEGIN_SRC sh +#+BEGIN_SRC shell if [[ ! -d ./.git ]]; then git init git add . @@ -191,7 +146,7 @@ fi #+HEADER: :tangle ../.envrc-local_ #+HEADER: :noweb yes -#+BEGIN_SRC sh +#+BEGIN_SRC shell export SpineVER=$(git describe --long --tags | sed 's/^[ a-z_-]\+\([0-9.]\+\)/\1/;s/\([^-]*-g\)/r\1/;s/-/./g') export SpineBIN=./result/bin/spine # â¯â¯ nix builds spine binary: @@ -222,3 +177,61 @@ export SpineCGIbin=/var/www/cgi/cgi-bin export SpineDBpath=/var/www/sqlite #export SpineDBpath=/srv/www/spine/sqlite #+END_SRC + +* versions GET +** direnv + +#+NAME: direnv_version +#+HEADER: :noweb yes +#+BEGIN_SRC emacs-lisp +<<./nix-develop-dlang-shared.org:direnv-version()>> +#+END_SRC + +#+NAME: direnv_hash +#+HEADER: :noweb yes +#+BEGIN_SRC emacs-lisp +<<./nix-develop-dlang-shared.org:direnv-hash()>> +#+END_SRC + +** spine project VERSION :version:set:project: + +#+NAME: spine_version +#+HEADER: :noweb yes +#+BEGIN_SRC emacs-lisp +<<./sisudoc_spine_version_info_and_doc_header_including_copyright_and_license.org:spine_project_version()>> +#+END_SRC + +** dlang overlays +*** ldc + +#+NAME: ldc_version +#+HEADER: :noweb yes +#+BEGIN_SRC emacs-lisp +<<./nix-develop-dlang-shared.org:ldc-version()>> +#+END_SRC + +*** dmd + +#+NAME: dmd_version +#+HEADER: :noweb yes +#+BEGIN_SRC emacs-lisp +<<./nix-develop-dlang-shared.org:dmd-version()>> +#+END_SRC + +*** dub + +#+NAME: dub_version +#+HEADER: :noweb yes +#+BEGIN_SRC emacs-lisp +<<./nix-develop-dlang-shared.org:dub-version()>> +#+END_SRC + +*** dtools + +#+NAME: dtools_version +#+HEADER: :noweb yes +#+BEGIN_SRC emacs-lisp +<<./nix-develop-dlang-shared.org:dtools-version()>> +#+END_SRC + +* __END__ diff --git a/org/config_git.org b/org/config_git.org index fbafd2a..66383ad 100644 --- a/org/config_git.org +++ b/org/config_git.org @@ -4,7 +4,7 @@ #+FILETAGS: :spine:hub: #+AUTHOR: Ralph Amissah #+EMAIL: [[mailto:ralph.amissah@gmail.com][ralph.amissah@gmail.com]] -#+COPYRIGHT: Copyright (C) 2015 - 2024 Ralph Amissah +#+COPYRIGHT: Copyright (C) 2015 - 2025 Ralph Amissah #+LANGUAGE: en #+STARTUP: content hideblocks hidestars noindent entitiespretty #+PROPERTY: header-args :exports code @@ -21,7 +21,7 @@ ** .gitignore :gitignore: #+HEADER: :tangle "../.gitignore" -#+BEGIN_SRC sh +#+BEGIN_SRC gitignore # git ls-files --others --exclude-from=.git/info/exclude # git check-ignore -v flake.lock # git clean -ix @@ -37,8 +37,6 @@ !.envrc !.envrc-nix !.envrc-git-init -!.env -!.env/** !nix-overlays !nix-overlays/** !README.md @@ -50,6 +48,7 @@ !configuration.txt !*.json !*.sdl +!*.md !meson.build !tangle !*.org @@ -87,6 +86,20 @@ !sisudoc !views !docs/*.html +!sundry +!sundry/editor-syntax-etc +!sundry/editor-syntax-etc/vim +!sundry/editor-syntax-etc/vim/*.vim +!sundry/editor-syntax-etc/vim/*.yaml +!sundry/editor-syntax-etc/vim/colors +!sundry/editor-syntax-etc/vim/colors/*.vim +!sundry/editor-syntax-etc/vim/ftplugin +!sundry/editor-syntax-etc/vim/ftplugin/*.vim +!sundry/editor-syntax-etc/vim/syntax +!sundry/editor-syntax-etc/vim/syntax/*.vim +!sundry/editor-syntax-etc/emacs +!sundry/editor-syntax-etc/emacs/*.el +!sundry/editor-syntax-etc/emacs/README !notes notes/** !notes/sisu-description.sst @@ -115,7 +128,7 @@ tmp/** ** .gitattributes :gitattributes: #+HEADER: :tangle "../.gitattributes" -#+BEGIN_SRC sh +#+BEGIN_SRC gitattributes /org export-ignore /subprojects export-ignore /build export-ignore diff --git a/org/config_make.org b/org/config_make.org index 3806db0..286842b 100644 --- a/org/config_make.org +++ b/org/config_make.org @@ -4,7 +4,7 @@ #+FILETAGS: :spine:build:tools: #+AUTHOR: Ralph Amissah #+EMAIL: [[mailto:ralph.amissah@gmail.com][ralph.amissah@gmail.com]] -#+COPYRIGHT: Copyright (C) 2015 - 2024 Ralph Amissah +#+COPYRIGHT: Copyright (C) 2015 - 2025 Ralph Amissah #+LANGUAGE: en #+STARTUP: show4levels hideblocks hidestars noindent entitiespretty #+PROPERTY: header-args :exports code @@ -31,14 +31,14 @@ - meson #+NAME: meson_version_set -#+BEGIN_SRC sh +#+BEGIN_SRC shell 0.46 #+END_SRC - soversion #+NAME: soversion_version_set -#+BEGIN_SRC sh +#+BEGIN_SRC shell 0 #+END_SRC diff --git a/org/config_meson.org b/org/config_meson.org index 9f2f27b..60690cc 100644 --- a/org/config_meson.org +++ b/org/config_meson.org @@ -4,7 +4,7 @@ #+FILETAGS: :spine:hub: #+AUTHOR: Ralph Amissah #+EMAIL: [[mailto:ralph.amissah@gmail.com][ralph.amissah@gmail.com]] -#+COPYRIGHT: Copyright (C) 2015 - 2024 Ralph Amissah +#+COPYRIGHT: Copyright (C) 2015 - 2025 Ralph Amissah #+LANGUAGE: en #+STARTUP: content hideblocks hidestars noindent entitiespretty #+PROPERTY: header-args :exports code @@ -33,7 +33,7 @@ https://code.dlang.org/packages/d2sqlite3 #+NAME: d2sqlite3_version_set -#+BEGIN_SRC sh +#+BEGIN_SRC shell 0.19.1 #+END_SRC @@ -41,7 +41,7 @@ https://code.dlang.org/packages/imageformats #+NAME: imageformats_version_set -#+BEGIN_SRC sh +#+BEGIN_SRC shell 7.0.2 #+END_SRC @@ -49,7 +49,7 @@ https://code.dlang.org/packages/dyaml #+NAME: dyaml_version_set -#+BEGIN_SRC sh +#+BEGIN_SRC shell 0.8.3 #+END_SRC @@ -57,7 +57,7 @@ https://code.dlang.org/packages/tinyendian #+NAME: tinyendian_version_set -#+BEGIN_SRC sh +#+BEGIN_SRC shell 0.2.0 #+END_SRC @@ -66,14 +66,14 @@ - meson #+NAME: meson_version_set -#+BEGIN_SRC sh +#+BEGIN_SRC shell 0.46 #+END_SRC - soversion #+NAME: soversion_version_set -#+BEGIN_SRC sh +#+BEGIN_SRC shell 0 #+END_SRC @@ -115,7 +115,7 @@ cat spine_sources.txt #+HEADER: :tangle ../meson.build #+HEADER: :noweb yes -#+BEGIN_SRC sh +#+BEGIN_SRC shell project('spine', 'd', license: 'AGPL-3', version: '<<spine_version>>', @@ -220,7 +220,7 @@ spine_exe = executable('spine', ***** wrap #+HEADER: :tangle ../subprojects/d2sqlite3.wrap -#+BEGIN_SRC sh +#+BEGIN_SRC shell [wrap-git] directory = d2sqlite3 url = https://github.com/dlang-community/d2sqlite3.git @@ -231,7 +231,7 @@ revision = head #+HEADER: :NO-tangle ../subprojects/d2sqlite3.meson.build #+HEADER: :noweb yes -#+BEGIN_SRC sh +#+BEGIN_SRC shell project('d2sqlite3', 'd', meson_version: '>=<<meson_version_set>>', license: 'BSL-1.0', @@ -286,7 +286,7 @@ d2sqlite3_dep = declare_dependency( ***** wrap #+HEADER: :tangle ../subprojects/dyaml.wrap -#+BEGIN_SRC sh +#+BEGIN_SRC shell [wrap-git] directory = dyaml url = https://github.com/dlang-community/D-YAML.git @@ -299,7 +299,7 @@ Upstream provides meson.build #+HEADER: :NO-tangle ../subprojects/D-YAML/meson.build #+HEADER: :noweb yes -#+BEGIN_SRC sh +#+BEGIN_SRC shell project('D-YAML', 'd', meson_version: '>=<<meson_version_set>>', subproject_dir: 'contrib', @@ -376,7 +376,7 @@ dyaml_dep = declare_dependency( ***** wrap #+HEADER: :tangle ../subprojects/imageformats.wrap -#+BEGIN_SRC sh +#+BEGIN_SRC shell [wrap-git] directory = imageformats url = https://github.com/lgvz/imageformats.git @@ -387,7 +387,7 @@ revision = head #+HEADER: :NO-tangle ../subprojects/imageformats.meson.build #+HEADER: :noweb yes -#+BEGIN_SRC sh +#+BEGIN_SRC shell project('imageformats', 'd', meson_version: '>=<<meson_version_set>>', license: 'BSL-1.0', @@ -434,7 +434,7 @@ imageformats_dep = declare_dependency( ***** wrap #+HEADER: :tangle ../subprojects/tinyendian.wrap -#+BEGIN_SRC sh +#+BEGIN_SRC shell [wrap-git] directory = tinyendian url = https://github.com/dlang-community/tinyendian.git @@ -447,7 +447,7 @@ Upstream provides meson.build #+HEADER: :NO-tangle ../subprojects/tinyendian/meson.build #+HEADER: :noweb yes -#+BEGIN_SRC sh +#+BEGIN_SRC shell # -*- mode: python; -*- project( diff --git a/org/config_misc.org b/org/config_misc.org index 8d0de84..cf79a58 100644 --- a/org/config_misc.org +++ b/org/config_misc.org @@ -4,7 +4,7 @@ #+FILETAGS: :spine:hub: #+AUTHOR: Ralph Amissah #+EMAIL: [[mailto:ralph.amissah@gmail.com][ralph.amissah@gmail.com]] -#+COPYRIGHT: Copyright (C) 2015 - 2024 Ralph Amissah +#+COPYRIGHT: Copyright (C) 2015 - 2025 Ralph Amissah #+LANGUAGE: en #+STARTUP: content hideblocks hidestars noindent entitiespretty #+PROPERTY: header-args :exports code @@ -26,7 +26,7 @@ babel tangle) org files in ./org/ to create .d source files in ./src/sisudoc/ #+HEADER: :tangle ../tangle #+HEADER: :tangle-mode (identity #o755) #+HEADER: :shebang "#!/bin/sh" -#+BEGIN_SRC sh +#+BEGIN_SRC shell # -*- mode: shell-script -*- # tangle files with org-mode DIR=`pwd` @@ -56,11 +56,11 @@ emacs --batch -Q -q \ ** build *** dub -#+BEGIN_SRC sh +#+BEGIN_SRC shell dub build -h #+END_SRC -#+BEGIN_SRC sh +#+BEGIN_SRC shell time dub --compiler=ldc2 -v --force time (dub --compiler=ldc2 --config=spine-ldc --debug=steps) time (dub --compiler=ldc2 --config=spine-ldc --debug=checkdoc --debug=summary --debug=dumpdoc) @@ -79,7 +79,7 @@ time (dub --compiler=gdc --config=spine-gdc-debug --debug=io) *** make -#+BEGIN_SRC sh +#+BEGIN_SRC shell time make dmd time make gdc time make ldc @@ -98,13 +98,13 @@ time make ldc_testrun_find_pod_epub ** git *** project version -#+BEGIN_SRC sh +#+BEGIN_SRC shell echo $(git describe --long --tags | sed 's/^[ a-z_-]\+\([0-9.]\+\)/\1/;s/\([^-]*-g\)/r\1/;s/-/./g') #+END_SRC *** what files changed -#+BEGIN_SRC sh +#+BEGIN_SRC shell git whatchanged --since="1 day ago" --oneline --name-only --pretty=format: | sort -u git log --since="1 day ago" --name-only --pretty=format: | sort -u #+END_SRC @@ -112,7 +112,7 @@ git log --since="1 day ago" --name-only --pretty=format: | sort -u ** test run *** e.g. -#+BEGIN_SRC sh +#+BEGIN_SRC shell time (./result/bin/spine --source --html -v --output-dir=tmp/program-output data/pod/sisu-manual/media/text/en/sisu_markup.sst ) time (./bin/spine-ldc --source --html -v --output-dir=tmp/program-output data/pod/sisu-manual/media/text/en/sisu_markup.sst ) @@ -144,7 +144,7 @@ find data/sisudir/media/text -name *.ss[tm] | sort | xargs *** sort -#+BEGIN_SRC sh +#+BEGIN_SRC shell ~dr/bin/spine-ldc -v --sqlite-db-create --sqlite-db-filename="spine.search.db" --cgi-sqlite-search-filename="spine-search" --output=/var/www/html \ ~grotto/repo/git.repo/code/project-spine/doc-reform-markup/markup_samples/markup/pod/* @@ -170,7 +170,7 @@ find data/sisudir/media/text -name *.ss[tm] | sort | xargs - search script in D @: /var/www/html/cgi/src/spine_search.d - html output * /var/www/html/en/html/[filename] -#+BEGIN_SRC sh +#+BEGIN_SRC shell cd /var/www/html/cgi cp arsd/cgi.d /var/www/html/cgi/. *-[needs to be implemented as part of code] diff --git a/org/config_nix.org b/org/config_nix.org index 9f4617d..3f101a0 100644 --- a/org/config_nix.org +++ b/org/config_nix.org @@ -4,7 +4,7 @@ #+FILETAGS: :spine:build:tools: #+AUTHOR: Ralph Amissah #+EMAIL: [[mailto:ralph.amissah@gmail.com][ralph.amissah@gmail.com]] -#+COPYRIGHT: Copyright (C) 2015 - 2024 Ralph Amissah +#+COPYRIGHT: Copyright (C) 2015 - 2025 Ralph Amissah #+LANGUAGE: en #+STARTUP: show4levels hideblocks hidestars noindent entitiespretty #+PROPERTY: header-args :exports code @@ -24,11 +24,11 @@ { description = "a sisu like parser & document generator"; inputs.nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable"; - inputs.flake-utils.url = "github:numtide/flake-utils"; + #inputs.flake-utils.url = "github:numtide/flake-utils"; outputs = { self, nixpkgs, - flake-utils, + #flake-utils, ... }@inputs: let pname = "spine"; @@ -44,9 +44,10 @@ runHook postCheck ''; localOverlay = (final: prev: { - ldc = prev.callPackage ./nix-overlays/ldc { }; - dmd = prev.callPackage ./nix-overlays/dmd { }; - dub = prev.callPackage ./nix-overlays/dub { }; + ldc = prev.callPackage ./nix-overlays/ldc { }; # -> ok <<ldc_version>> + dmd = prev.callPackage ./nix-overlays/dmd { }; # -> ok <<dmd_version>> + dub = prev.callPackage ./nix-overlays/dub { }; # -> ? <<dub_version>> + dtools = prev.callPackage ./nix-overlays/dtools { }; # -> ok <<dtools_version>> #gdc = prev.callPackage ./nix-overlays/gdc { }; }); pkgsForSystem = system: import nixpkgs { @@ -112,8 +113,8 @@ src = self; inherit shell; inherit devEnv; - buildInputs = with pkgs-ovl; [sqlite]; - nativeBuildInputs = with pkgs-ovl; [dub dmd gnumake]; + buildInputs = with pkgs-nix; [sqlite]; + nativeBuildInputs = with pkgs-nix; [dub dmd gnumake]; buildPhase = '' runHook preBuild buildCMD="dub run --cache=local --compiler=$(type -P dmd) --build=dmd --combined --skip-registry=all" @@ -136,7 +137,7 @@ inherit shell; inherit devEnv; buildInputs = with pkgs-nix; [sqlite]; - nativeBuildInputs = with pkgs-ovl; [dub ldc gnumake]; + nativeBuildInputs = with pkgs-nix; [dub ldc gnumake]; buildPhase = '' runHook preBuild buildCMD="dub run --cache=local --compiler=$(type -P ldmd2) --build=ldmd2 --combined --skip-registry=all" @@ -153,6 +154,7 @@ spine-overlay-dmd = stdenv.mkDerivation { inherit pname; inherit version; + #name = "spine-<<spine_version>> dmd-<<dmd_version>> dub-<<dub_version>>"; meta.mainProgram = "spine-dmd"; executable = true; src = self; @@ -176,6 +178,7 @@ spine-overlay-ldc = stdenv.mkDerivation { inherit pname; inherit version; + #name = "spine-<<spine_version>> ldc-<<ldc_version>> dub-<<dub_version>>"; meta.mainProgram = "spine-ldc"; executable = true; src = self; @@ -235,74 +238,80 @@ in with pkgs-nix; { dsh-overlay = mkShell { - name = "spine base dev shell"; + name = "spine-<<spine_version>> base dev shell, ldc-<<ldc_version>>, dub-<<dub_version>> - dtools-<<dtools_version>>"; inherit shell; inherit devEnv; packages = with pkgs-ovl; [ ldc #dmd dub + dtools gnumake sqlite ]; inherit shellHook; }; - dsh-nixpkgs-dmd-dub = mkShell { - name = "spine base dev shell"; + dsh-nixpkgs-dmd = mkShell { + name = "spine-<<spine_version>> base dev shell"; inherit shell; inherit devEnv; packages = [ dmd dub + dtools gnumake sqlite ]; inherit shellHook; }; - dsh-nixpkgs-ldc-dub = mkShell { - name = "spine base dev shell"; + dsh-nixpkgs-ldc = mkShell { + name = "spine-<<spine_version>> base dev shell"; inherit shell; inherit devEnv; packages = [ ldc dub + dtools gnumake sqlite ]; inherit shellHook; }; - dsh-overlay-dmd-dub = mkShell { - name = "spine base dev shell"; + dsh-overlay-dmd = mkShell { + name = "spine-<<spine_version>> base dev shell, dmd-<<dmd_version>>, dub-<<dub_version>> - dtools-<<dtools_version>>"; inherit shell; inherit devEnv; packages = with pkgs-ovl; [ dmd dub + dtools gnumake sqlite ]; inherit shellHook; }; - dsh-overlay-ldc-dub = mkShell { - name = "spine base dev shell"; + dsh-overlay-ldc = mkShell { + name = "spine-<<spine_version>> base dev shell, ldc-<<ldc_version>>, dub-<<dub_version>> - dtools-<<dtools_version>>"; inherit shell; inherit devEnv; packages = with pkgs-ovl; [ ldc dub + dtools gnumake sqlite ]; inherit shellHook; }; dsh-epub = mkShell { - name = "spine dev shell for epub output"; + name = "spine-<<spine_version>> dev shell for epub output"; inherit shell; inherit devEnv; packages = [ ldc #dmd dub + dtools gnumake sqlite libxml2 @@ -324,13 +333,14 @@ inherit shellHook; }; dsh-html = mkShell { - name = "spine dev shell for html output"; + name = "spine-<<spine_version>> dev shell for html output"; inherit shell; inherit devEnv; packages = [ ldc #dmd dub + dtools gnumake sqlite # â¯â¯ text-mode web browsers @@ -344,13 +354,14 @@ inherit shellHook; }; dsh-latex-pdf = mkShell { - name = "spine dev shell for latex & pdf output"; + name = "spine-<<spine_version>> dev shell for latex & pdf output"; inherit shell; inherit devEnv; packages = [ ldc #dmd dub + dtools gnumake source-sans-pro source-serif-pro @@ -360,26 +371,28 @@ inherit shellHook; }; dsh-sqlite = mkShell { - name = "spine dev shell for latex & pdf output"; + name = "spine-<<spine_version>> dev shell for sqlite3 output"; inherit shell; inherit devEnv; packages = [ ldc #dmd dub + dtools gnumake sqlite ]; inherit shellHook; }; dsh-i18n = mkShell { - name = "spine dev shell internationalization, po4a"; + name = "spine-<<spine_version>> dev shell for internationalization, po4a"; inherit shell; inherit devEnv; packages = [ ldc #dmd dub + dtools gnumake sqlite perl538Packages.Po4a @@ -406,13 +419,13 @@ with pkgs-nix; # â¯â¯â¯ nix_related #nix direnv - nixVersions.nix_2_21 #nixVersions.latest #nixVersions.git + nixVersions.latest #nixVersions.latest #nixVersions.git nix-prefetch-git validatePkgConfig nix-output-monitor nix-tree jq #gx - #alejandra + #nixfmt-rfc-style git # â¯â¯â¯ dev gnumake @@ -486,17 +499,18 @@ with pkgs; # â¯â¯â¯ nix_related #nix # if not on NixOS, this is needed direnv - nixVersions.nix_2_21 #nixVersions.latest #nixVersions.git + nixVersions.latest #nixVersions.latest #nixVersions.git nix-prefetch-git validatePkgConfig nix-output-monitor nix-tree jq #gx - #alejandra + #nixfmt-rfc-style git # â¯â¯â¯ dev gnumake ps + dtools # â¯â¯â¯ d_build_related # â¯â¯ package manager dub @@ -620,7 +634,7 @@ with ( version = "<<spine_version>>"; src = ./.; nativeBuildInputs = with pkgs; [dub ldc]; - buildInputs = with pkgs; [nixVersions.nix_2_21 sqlite]; + buildInputs = with pkgs; [nixVersions.latest sqlite]; meta = with pkgs.lib; { description = "A sisu like parser & document generator"; longDescription = '' @@ -645,15 +659,6 @@ installPhase = '' ''; #+END_SRC -** variables used SET -*** spine project VERSION :version:set:project: - -#+NAME: spine_version -#+HEADER: :noweb yes -#+BEGIN_SRC emacs-lisp -<<./sisudoc_spine_version_info_and_doc_header_including_copyright_and_license.org:spine_project_version()>> -#+END_SRC - *** nixpkgs path / url - nixpkgs_url_github @@ -662,14 +667,14 @@ installPhase = '' **** github (official) #+NAME: nixpkgs_url_github -#+BEGIN_SRC sh +#+BEGIN_SRC shell github:NixOS/nixpkgs/nixpkgs-unstable #+END_SRC **** localhost #+NAME: nixpkgs_url_local -#+BEGIN_SRC sh +#+BEGIN_SRC shell /srv/nix/nixpkgs #+END_SRC @@ -712,7 +717,7 @@ github:nixos/nixpkgs ** .env/echo-nixNote CHECK MODIFY *** notes on nix commands -#+HEADER: :tangle ../.env/nix-commands +#+HEADER: :tangle-NO ../.env/nix-commands #+BEGIN_SRC text - nix flake update && nix flake check --show-trace && nix flake show && nix develop .#devShell @@ -737,8 +742,8 @@ nix-shell '<nixpkgs>' -A nix --pure *** echo-nixNote -#+HEADER: :tangle ../.env/echo-nixNote -#+BEGIN_SRC sh +#+HEADER: :tangle-NO ../.env/echo-nixNote +#+BEGIN_SRC shell echo '-*- mode: org -*- ,* nixpkgs path? @@ -751,7 +756,7 @@ echo " <nixpkgs> == `nix-instantiate --find-file nixpkgs`" >> nixNote_.org echo ' ,* nix build and show derivation -,#+BEGIN_SRC sh +,#+BEGIN_SRC shell nix-shell --pure nix-build @@ -789,7 +794,7 @@ echo "#+END_SRC ,* initialised shell variables -,#+BEGIN_SRC sh +,#+BEGIN_SRC shell SpineSRC=$SpineSRC SpineDOC=$SpineDOC SpinePOD=$SpinePOD @@ -802,81 +807,81 @@ echo '* spine run instruction examples ,** parallelized tasks ,*** doc source -,#+BEGIN_SRC sh +,#+BEGIN_SRC shell $SpineBIN/spine --very-verbose --pod --source --output="$SpineOUTversioned" $SpinePOD/* ,#+END_SRC ,*** html & epub output -,#+BEGIN_SRC sh +,#+BEGIN_SRC shell $SpineBIN/spine --very-verbose --html --epub --output="$SpineOUTversioned" $SpinePOD/* ,#+END_SRC ,*** sqlite db for each document - populate each db -,#+BEGIN_SRC sh +,#+BEGIN_SRC shell $SpineBIN/spine --very-verbose --sqlite-discrete --output="$SpineOUTversioned" $SpinePOD/* ,#+END_SRC ,*** doc source; html, epub; sqlite outputs -,#+BEGIN_SRC sh +,#+BEGIN_SRC shell $SpineBIN/spine --verbose --pod --html --epub --sqlite-discrete --output="$SpineOUTversioned" $SpinePOD/* ,#+END_SRC ,*** curate (authors topics) -,#+BEGIN_SRC sh +,#+BEGIN_SRC shell $SpineBIN/spine --very-verbose --curate --output="$SpineOUTversioned" $SpinePOD/* ,#+END_SRC ,*** html, curate -,#+BEGIN_SRC sh +,#+BEGIN_SRC shell $SpineBIN/spine --verbose --dark --html --html-link-curate --curate --output="$SpineOUTversioned" $SpinePOD/* $SpineBIN/spine --very-verbose --html --html-link-curate --curate --output="$SpineOUTversioned" $SpinePOD/* ,#+END_SRC ,*** composite command: source pod, html, epub, curate, sqlite -,#+BEGIN_SRC sh +,#+BEGIN_SRC shell $SpineBIN/spine --verbose --dark --pod --epub --html --html-link-curate --curate --sqlite-discrete --output="$SpineOUTversioned" $SpinePOD/* ,#+END_SRC ,** sequential tasks ,*** sqlite db (shared) - create db -,#+BEGIN_SRC sh +,#+BEGIN_SRC shell $SpineBIN/spine --very-verbose --sqlite-db-create --output="$SpineOUTversioned" ,#+END_SRC ,*** sqlite db (shared) - populate db -,#+BEGIN_SRC sh +,#+BEGIN_SRC shell $SpineBIN/spine --very-verbose --sqlite-update --output="$SpineOUTversioned" $SpineDOC/sisudoc-spine-markup-samples/markup/pod/* ,#+END_SRC ,*** sqlite db (shared) - drop db -,#+BEGIN_SRC sh +,#+BEGIN_SRC shell $SpineBIN/spine --very-verbose --sqlite-db-drop --output="$SpineOUTversioned" ,#+END_SRC ,*** sqlite db (shared) - create & populate db (single step) -,#+BEGIN_SRC sh +,#+BEGIN_SRC shell $SpineBIN/spine --very-verbose --sqlite-db-create --sqlite-update --output="$SpineOUTversioned" $SpinePOD/* ,#+END_SRC ,*** composite command: source pod, html, epub, curate, sqlite -,#+BEGIN_SRC sh +,#+BEGIN_SRC shell $SpineBIN/spine --verbose --no-parallel --dark --pod --epub --html --html-link-curate --curate --sqlite-discrete --output="$SpineOUTversioned" $SpinePOD/* ,#+END_SRC ,** config [./pod/].dr/config_local_site -,#+BEGIN_SRC sh +,#+BEGIN_SRC shell cat $SpinePOD/.dr/config_local_site $SpineBIN/spine --show-config $SpinePOD $SpineBIN/spine --show-config --output="$SpineOUTversioned" $SpinePOD @@ -884,41 +889,40 @@ $SpineBIN/spine --show-config --output="$SpineOUTversioned" $SpinePOD ,** cgi operations (output to $SpineOUT /var/www) -,#+BEGIN_SRC sh +,#+BEGIN_SRC shell $SpineBIN/spine --very-verbose --sqlite-db-create --output="$SpineOUT" $SpinePOD/* -$SpineBIN/spine -v --cgi-search-form-codegen --output=$SpineOUT $SpinePOD/* +# CGI search form is built separately in sisudoc-spine-search-cgi/ $SpineBIN/spine -v --show-config --config=$SpinePOD/.dr $SpineBIN/spine --html $SpinePOD/* - -$SpineBIN/spine -v --cgi-search-form-codegen --config=$SpinePOD/.dr/config_local_site +# See sisudoc-spine-search-cgi/README.md for CGI search form build instructions ,#+END_SRC ,*** generate html linked to search form -,#+BEGIN_SRC sh +,#+BEGIN_SRC shell $SpineBIN/spine -v --html --html-link-search --html-link-curate --curate --output=$SpineOUT $SpinePOD/* ,#+END_SRC ,*** create or re-create sql db (--sqlite-db-create or --sqlite-db-recreate) -,#+BEGIN_SRC sh +,#+BEGIN_SRC shell $SpineBIN/spine -v --sqlite-db-create --sqlite-db-filename="<<spine_search_db>>" --sqlite-db-path="$SpineDBpath" $SpineBIN/spine -v --sqlite-db-recreate --sqlite-db-filename="<<spine_search_db>>" --sqlite-db-path="$SpineDBpath" ,#+END_SRC ,*** populate sqlite db -,#+BEGIN_SRC sh +,#+BEGIN_SRC shell $SpineBIN/spine -v --sqlite-update --sqlite-db-filename="<<spine_search_db>>" --output=$SpineOUT $SpinePOD/* ,#+END_SRC ,*** generate html (linked to search form), sql output, curate COMPOSITE -,#+BEGIN_SRC sh +,#+BEGIN_SRC shell $SpineBIN/spine -v --html --html-link-search --html-link-curate --curate --sqlite-update --sqlite-db-filename="<<spine_search_db>>" --cgi-sqlite-search-filename="<<spine_search_cgi>>" --sqlite-db-path="$SpineDBpath" --output="$SpineOUT" $SpinePOD/* $SpineBIN/spine --epub --html --html-link-search --html-link-curate --curate --sqlite-update --sqlite-db-filename="spine.search.db" --cgi-sqlite-search-filename="spine_search" --cgi-url-action="https://sisudoc.org/spine_search" --ouput="$SpineOUT" $SpinePOD/* ,#+END_SRC @@ -927,7 +931,7 @@ $SpineBIN/spine --epub --html --html-link-search --html-link-curate --curate --s if names and paths are configured in resource configuration file, e.g. $SpinePOD/.rc/config_local_site -,#+BEGIN_SRC sh +,#+BEGIN_SRC shell $SpineBIN/spine -v --html --html-link-search --html-link-curate --curate --sqlite-update $SpinePOD/* ,#+END_SRC @@ -962,13 +966,13 @@ webserv: ,*** make search form -,#+BEGIN_SRC sh -$SpineBIN/spine -v --cgi-search-form-codegen --config=$SpinePOD/.dr/config_local_site +,#+BEGIN_SRC shell +# CGI search form is built separately - see sisudoc-spine-search-cgi/README.md ,#+END_SRC ,*** latex -,#+BEGIN_SRC sh +,#+BEGIN_SRC shell $SpineBIN/spine --latex --serial --output="$SpineOUT" $SpinePOD/* ls $SpineOutstatic/latex/*.tex ,#+END_SRC @@ -983,12 +987,12 @@ ls $SpineOutstatic/latex/*.tex *** db search related variables #+NAME: spine_search_db -#+BEGIN_SRC sh +#+BEGIN_SRC shell spine.search.db #+END_SRC #+NAME: spine_search_cgi -#+BEGIN_SRC sh +#+BEGIN_SRC shell spine_search #+END_SRC @@ -1028,23 +1032,56 @@ postInstall: echo `ls -la $${out}/bin/spine` #+END_SRC -** empty sha56 hash +* versions GET +** spine project VERSION :version:set:project: -#+NAME: blank_hash -#+BEGIN_SRC nix -sha256-0000000000000000000000000000000000000000000= +#+NAME: spine_version +#+HEADER: :noweb yes +#+BEGIN_SRC emacs-lisp +<<./sisudoc_spine_version_info_and_doc_header_including_copyright_and_license.org:spine_project_version()>> #+END_SRC -#+NAME: assumed_hash -#+BEGIN_SRC nix -sha256-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA= +** dlang overlays +*** ldc + +#+NAME: ldc_version +#+HEADER: :noweb yes +#+BEGIN_SRC emacs-lisp +<<./nix-develop-dlang-shared.org:ldc-version()>> #+END_SRC -** version info SET VERSION :version:set:project: -*** spine project VERSION :version:set:project: +*** dmd -#+NAME: spine_version +#+NAME: dmd_version #+HEADER: :noweb yes #+BEGIN_SRC emacs-lisp -<<./sisudoc_spine_version_info_and_doc_header_including_copyright_and_license.org:spine_project_version()>> +<<./nix-develop-dlang-shared.org:dmd-version()>> +#+END_SRC + +*** dub + +#+NAME: dub_version +#+HEADER: :noweb yes +#+BEGIN_SRC emacs-lisp +<<./nix-develop-dlang-shared.org:dub-version()>> +#+END_SRC + +*** dtools + +#+NAME: dtools_version +#+HEADER: :noweb yes +#+BEGIN_SRC emacs-lisp +<<./nix-develop-dlang-shared.org:dtools-version()>> +#+END_SRC + +** sha256 blank hash + +#+NAME: sha256-blank +#+BEGIN_SRC nix +<<./nix-develop-dlang-shared.org:sha256-blank()>> +#+END_SRC + +#+NAME: blank_hash +#+BEGIN_SRC nix +<<./nix-develop-dlang-shared.org:sha256-blank()>> #+END_SRC diff --git a/org/default_imports.org b/org/default_imports.org index 5945d39..fb310c9 100644 --- a/org/default_imports.org +++ b/org/default_imports.org @@ -4,7 +4,7 @@ #+FILETAGS: :spine:imports: #+AUTHOR: Ralph Amissah #+EMAIL: [[mailto:ralph.amissah@gmail.com][ralph.amissah@gmail.com]] -#+COPYRIGHT: Copyright (C) 2015 - 2024 Ralph Amissah +#+COPYRIGHT: Copyright (C) 2015 - 2025 Ralph Amissah #+LANGUAGE: en #+STARTUP: content hideblocks hidestars noindent entitiespretty #+PROPERTY: header-args :exports code @@ -32,20 +32,18 @@ module sisudoc.meta; #+NAME: imports_for_meta_general #+BEGIN_SRC d -public import - sisudoc.meta.defaults; +public import sisudoc.meta.defaults; /+ std +/ -public import - std.array, - std.exception, - std.range, - std.regex, - std.stdio, - std.string, - std.typecons, - // std.uni, - std.utf, - std.conv : to; +public import std.array; +public import std.exception; +public import std.range; +public import std.regex; +public import std.stdio; +public import std.string; +public import std.typecons; +// public import std.uni; +public import std.utf; +public import std.conv : to; #+END_SRC * imports for _output_ :output: @@ -63,25 +61,23 @@ module sisudoc.io_out; #+NAME: imports_for_output_general #+BEGIN_SRC d -public import - std.algorithm, - std.array, - std.container, - std.exception, - std.path, - std.process, - std.range, - std.regex, - std.stdio, - std.string, - std.typecons, - // std.uni, - std.utf; -public import - sisudoc.share.defaults, - sisudoc.io_in.paths_source, - sisudoc.io_out.defaults, - sisudoc.io_out.paths_output; +public import std.algorithm; +public import std.array; +public import std.container; +public import std.exception; +public import std.path; +public import std.process; +public import std.range; +public import std.regex; +public import std.stdio; +public import std.string; +public import std.typecons; +// public import std.uni; +public import std.utf; +public import sisudoc.share.defaults; +public import sisudoc.io_in.paths_source; +public import sisudoc.io_out.defaults; +public import sisudoc.io_out.paths_output; #+END_SRC * document header including copyright & license diff --git a/org/default_misc.org b/org/default_misc.org index 3b0b23f..1f58d45 100644 --- a/org/default_misc.org +++ b/org/default_misc.org @@ -4,7 +4,7 @@ #+FILETAGS: :spine:default:misc: #+AUTHOR: Ralph Amissah #+EMAIL: [[mailto:ralph.amissah@gmail.com][ralph.amissah@gmail.com]] -#+COPYRIGHT: Copyright (C) 2015 - 2024 Ralph Amissah +#+COPYRIGHT: Copyright (C) 2015 - 2025 Ralph Amissah #+LANGUAGE: en #+STARTUP: content hideblocks hidestars noindent entitiespretty #+PROPERTY: header-args :exports code @@ -190,24 +190,23 @@ module sisudoc.io_out.defaults; #+NAME: defaults_imports #+BEGIN_SRC d -import - std.algorithm, - std.array, - std.container, - std.exception, - std.file, - std.getopt, - std.json, - std.path, - std.process, - std.range, - std.regex, - std.stdio, - std.string, - std.typecons, - std.uni, - std.utf, - std.conv : to; +import std.algorithm; +import std.array; +import std.container; +import std.exception; +import std.file; +import std.getopt; +import std.json; +import std.path; +import std.process; +import std.range; +import std.regex; +import std.stdio; +import std.string; +import std.typecons; +import std.uni; +import std.utf; +import std.conv : to; #+END_SRC ** defaults shared by meta & output (generic) diff --git a/org/default_paths.org b/org/default_paths.org index 6a41ae6..6ca6ea5 100644 --- a/org/default_paths.org +++ b/org/default_paths.org @@ -4,7 +4,7 @@ #+FILETAGS: :spine:paths: #+AUTHOR: Ralph Amissah #+EMAIL: [[mailto:ralph.amissah@gmail.com][ralph.amissah@gmail.com]] -#+COPYRIGHT: Copyright (C) 2015 - 2024 Ralph Amissah +#+COPYRIGHT: Copyright (C) 2015 - 2025 Ralph Amissah #+LANGUAGE: en #+STARTUP: content hideblocks hidestars noindent entitiespretty #+PROPERTY: header-args :exports code @@ -31,16 +31,14 @@ +/ module sisudoc.io_in.paths_source; @safe: -import - std.array, - std.file, - std.path, - std.regex, - std.stdio, - std.conv : to; -import - sisudoc.meta.defaults, - sisudoc.meta.rgx_files; +import std.array; +import std.file; +import std.path; +import std.regex; +import std.stdio; +import std.conv : to; +import sisudoc.meta.defaults; +import sisudoc.meta.rgx_files; <<template_paths_src_0>> <<template_paths_src_1>> <<template_paths_src_2>> @@ -974,13 +972,11 @@ template spinePathsPods() { +/ module sisudoc.io_out.paths_output; @safe: -import - std.array, - std.path, - std.regex, - std.stdio; -import - sisudoc.meta.rgx_files; +import std.array; +import std.path; +import std.regex; +import std.stdio; +import sisudoc.meta.rgx_files; <<template_paths_out_0>> <<template_paths_out_1>> <<template_paths_url>> diff --git a/org/default_regex.org b/org/default_regex.org index ffd03f1..cea0146 100644 --- a/org/default_regex.org +++ b/org/default_regex.org @@ -4,7 +4,7 @@ #+FILETAGS: :spine:regex: #+AUTHOR: Ralph Amissah #+EMAIL: [[mailto:ralph.amissah@gmail.com][ralph.amissah@gmail.com]] -#+COPYRIGHT: Copyright (C) 2015 - 2024 Ralph Amissah +#+COPYRIGHT: Copyright (C) 2015 - 2025 Ralph Amissah #+LANGUAGE: en #+STARTUP: content hideblocks hidestars noindent entitiespretty #+PROPERTY: header-args :exports code @@ -53,6 +53,7 @@ static template spineRgxIn() { <<meta_rgx_paragraph_marks>> <<meta_rgx_blocks>> <<meta_rgx_block_tic>> + <<meta_rgx_block_quotemarks>> <<meta_rgx_block_curly>> <<meta_rgx_sub_match_code>> <<meta_rgx_table>> @@ -220,12 +221,14 @@ static grouped_para_indent_hang = ctRegex!(`^_(?P<hang>[0-9])_(? #+NAME: meta_rgx_blocks #+BEGIN_SRC d /+ blocked markup +/ -static block_open = ctRegex!("^((code(?:[.][a-z][0-9a-z#+_]+)?|(?:poem|group|block|quote)(?:[.][a-z][0-9a-z_]+)?|table)(?:[(][ a-zA-Z0-9;:,]*[)])?[{][ ]*$)|^`{3} (code(?:[.][a-z][0-9a-z#+_]+)?|(?:poem|group|block|quote)(?:[.][a-z][0-9a-z_]+)?|table)(?:[(][ a-zA-Z0-9;:,]*[)])?|^[{]table[(](?:h;)?(?P<columns>(?:[ ,]+[0-9]+)+)[)][}]"); -static block_poem_open = ctRegex!("^((poem(?:[(][ a-zA-Z0-9;:,]*[)])?[{][ ]*$)|`{3} poem(?:[(][ a-zA-Z0-9;:,]*[)])?)"); +static block_open = ctRegex!("^((code(?:[.][a-z][0-9a-z#+_]+)?|(?:poem|group|block|quote)(?:[.][a-z][0-9a-z_]+)?|table)(?:[(][ a-zA-Z0-9;:,]*[)])?[{][ ]*$)|^[`']{3} (code(?:[.][a-z][0-9a-z#+_]+)?|(?:poem|group|block|quote)(?:[.][a-z][0-9a-z_]+)?|table)(?:[(][ a-zA-Z0-9;:,]*[)])?|^[{]table[(](?:h;)?(?P<columns>(?:[ ,]+[0-9]+)+)[)][}]"); +static block_poem_open = ctRegex!("^((poem(?:[(][ a-zA-Z0-9;:,]*[)])?[{][ ]*$)|[`']{3} poem(?:[(][ a-zA-Z0-9;:,]*[)])?)"); #+END_SRC *** blocked markup tic :block:tic: +- consider quotemarks as alternative to, or to replace tics as using tics in text markup is a bit cumbersome + #+NAME: meta_rgx_block_tic #+BEGIN_SRC d /+ blocked markup tics +/ @@ -238,6 +241,22 @@ static block_tic_table_open = ctRegex!("^`{3} table(?:[(](?P static block_tic_close = ctRegex!("^(`{3})$","m"); #+END_SRC +*** blocked markup quotemarks :block:quotemarks: + +- consider quotemarks as alternative to, or to replace tics as using tics in text markup is a bit cumbersome + +#+NAME: meta_rgx_block_quotemarks +#+BEGIN_SRC d +/+ blocked markup tics +/ +static block_quotemarks_code_open = ctRegex!(`^'{3} code(?:[.](?P<syntax>[a-z][0-9a-z#+_]+))?(?:[(](?P<attrib>[ a-zA-Z0-9;:,]*)[)])?`); +static block_quotemarks_poem_open = ctRegex!(`^'{3} poem(?:[.](?P<lang>[a-z][0-9a-z_]+))?(?:[(](?P<attrib>[ a-zA-Z0-9;:,]*)[)])?`); +static block_quotemarks_group_open = ctRegex!(`^'{3} group(?:[.](?P<lang>[a-z][0-9a-z_]+))?(?:[(](?P<attrib>[ a-zA-Z0-9;:,]*)[)])?`); +static block_quotemarks_block_open = ctRegex!(`^'{3} block(?:[.](?P<lang>[a-z][0-9a-z_]+))?(?:[(](?P<attrib>[ a-zA-Z0-9;:,]*)[)])?`); +static block_quotemarks_quote_open = ctRegex!(`^'{3} quote(?:[.](?P<lang>[a-z][0-9a-z_]+))?(?:[(](?P<attrib>[ a-zA-Z0-9;:,]*)[)])?`); +static block_quotemarks_table_open = ctRegex!(`^'{3} table(?:[(](?P<attrib>[ a-zA-Z0-9;:,]*)[)])?`); // ctRegex!("^'{3} table(?:\(.*?\))?"); +static block_quotemarks_close = ctRegex!(`^('{3})$`,"m"); +#+END_SRC + *** blocked markup curly :block:curly: #+NAME: meta_rgx_block_curly @@ -692,7 +711,7 @@ static src_formalised_file_path_parts = ctRegex!(`(?P<pth>(?:[/a-zA-Z0 ** _module template yaml tags -#+HEADER: :tangle "../src/sisudoc/meta/rgx_yaml_tags.d" +#+HEADER: :tangle "../src/sisudoc/meta/rgx_yaml.d" #+HEADER: :noweb yes #+BEGIN_SRC d <<doc_header_including_copyright_and_license>> diff --git a/org/default_shared_snippets.org b/org/default_shared_snippets.org index b5fa945..c6d037f 100644 --- a/org/default_shared_snippets.org +++ b/org/default_shared_snippets.org @@ -4,7 +4,7 @@ #+FILETAGS: :spine:default:shared: #+AUTHOR: Ralph Amissah #+EMAIL: [[mailto:ralph.amissah@gmail.com][ralph.amissah@gmail.com]] -#+COPYRIGHT: Copyright (C) 2015 - 2024 Ralph Amissah +#+COPYRIGHT: Copyright (C) 2015 - 2025 Ralph Amissah #+LANGUAGE: en #+STARTUP: content hideblocks hidestars noindent entitiespretty #+PROPERTY: header-args :exports code @@ -27,16 +27,14 @@ module sisudoc.io_out.html_snippet; @safe: template htmlSnippet() { - import - std.file, - std.outbuffer, - std.format, - std.uri, - std.conv : to; - import - sisudoc.io_out.rgx, - sisudoc.meta.rgx_files, - sisudoc.io_out.rgx_xhtml; + import std.file; + import std.outbuffer; + import std.format; + import std.uri; + import std.conv : to; + import sisudoc.io_out.rgx; + import sisudoc.meta.rgx_files; + import sisudoc.io_out.rgx_xhtml; auto format_html_blank_page_guide_home()( string css_style, string home_url, diff --git a/org/doc-reform.org b/org/doc-reform.org index 6236ab2..ee39909 100644 --- a/org/doc-reform.org +++ b/org/doc-reform.org @@ -4,7 +4,7 @@ #+FILETAGS: :spine:hub: #+AUTHOR: Ralph Amissah #+EMAIL: [[mailto:ralph.amissah@gmail.com][ralph.amissah@gmail.com]] -#+COPYRIGHT: Copyright (C) 2015 - 2024 Ralph Amissah +#+COPYRIGHT: Copyright (C) 2015 - 2025 Ralph Amissah #+LANGUAGE: en #+STARTUP: content hideblocks hidestars noindent entitiespretty #+PROPERTY: header-args :exports code @@ -25,7 +25,7 @@ #+NAME: listdir #+HEADER: :results output replace #+HEADER: :wrap src text -#+BEGIN_SRC sh +#+BEGIN_SRC shell ls -1 *\.org #+END_SRC @@ -78,7 +78,7 @@ util_spine_syntax_highlighting_vim.org #+NAME: listdir_spine #+HEADER: :results output replace #+HEADER: :wrap src text -#+BEGIN_SRC sh +#+BEGIN_SRC shell ls -1 spine\.org #+END_SRC @@ -98,7 +98,7 @@ misc and shared look at #+NAME: listdir_default #+HEADER: :results output replace #+HEADER: :wrap src text -#+BEGIN_SRC sh +#+BEGIN_SRC shell ls -1 default_*\.org #+END_SRC @@ -118,7 +118,7 @@ default_shared.org #+NAME: listdir_in #+HEADER: :results output replace #+HEADER: :wrap src text -#+BEGIN_SRC sh +#+BEGIN_SRC shell ls -1 in_*\.org #+END_SRC @@ -134,7 +134,7 @@ in_source_files.org #+NAME: listdir_meta #+HEADER: :results output replace #+HEADER: :wrap src text -#+BEGIN_SRC sh +#+BEGIN_SRC shell ls -1 ocda\.org meta_*\.org #+END_SRC @@ -150,7 +150,7 @@ ocda.org #+NAME: listdir_out #+HEADER: :results output replace #+HEADER: :wrap src text -#+BEGIN_SRC sh +#+BEGIN_SRC shell ls -1 output_*\.org out_*\.org #+END_SRC @@ -175,7 +175,7 @@ out_zip.org #+NAME: listdir_spine_misc #+HEADER: :results output replace #+HEADER: :wrap src text -#+BEGIN_SRC sh +#+BEGIN_SRC shell ls -1 spine_*\.org #+END_SRC @@ -192,7 +192,7 @@ spine_markup_sample.org #+NAME: listdir_config #+HEADER: :results output replace #+HEADER: :wrap src text -#+BEGIN_SRC sh +#+BEGIN_SRC shell ls -1 config_*\.org #+END_SRC @@ -212,7 +212,7 @@ config_nix.org #+NAME: listdir_util #+HEADER: :results output replace #+HEADER: :wrap src text -#+BEGIN_SRC sh +#+BEGIN_SRC shell ls -1 util_*\.org #+END_SRC diff --git a/org/in_source_files.org b/org/in_source_files.org index 674709a..5501af5 100644 --- a/org/in_source_files.org +++ b/org/in_source_files.org @@ -4,7 +4,7 @@ #+FILETAGS: :spine:sourcefile:read: #+AUTHOR: Ralph Amissah #+EMAIL: [[mailto:ralph.amissah@gmail.com][ralph.amissah@gmail.com]] -#+COPYRIGHT: Copyright (C) 2015 - 2024 Ralph Amissah +#+COPYRIGHT: Copyright (C) 2015 - 2025 Ralph Amissah #+LANGUAGE: en #+STARTUP: content hideblocks hidestars noindent entitiespretty #+PROPERTY: header-args :exports code @@ -31,14 +31,12 @@ +/ module sisudoc.io_in.read_config_files; @safe: -import - std.file, - std.path; -import - sisudoc.meta, - sisudoc.io_in.paths_source, - sisudoc.meta.rgx_files, - sisudoc.meta.rgx; +import std.file; +import std.path; +import sisudoc.meta; +import sisudoc.io_in.paths_source; +import sisudoc.meta.rgx_files; +import sisudoc.meta.rgx; <<meta_config_file_hub_read_site_config>> <<meta_config_file_hub_read_document_config>> <<meta_config_file_hub_read_site_yaml>> @@ -186,14 +184,12 @@ webserv: #+HEADER: :noweb yes #+BEGIN_SRC d static template readConfigDoc() { - import - std.file, - std.path; - import - sisudoc.meta, - sisudoc.io_in.paths_source, - sisudoc.meta.rgx_files, - sisudoc.meta.rgx; + import std.file; + import std.path; + import sisudoc.meta; + import sisudoc.io_in.paths_source; + import sisudoc.meta.rgx_files; + import sisudoc.meta.rgx; @system final auto readConfigDoc(M,E)(M _manifested, E _env) { mixin spineRgxIn; static auto rgx = RgxI(); @@ -249,14 +245,12 @@ static template readConfigDoc() { #+HEADER: :noweb yes #+BEGIN_SRC d static template configReadSiteYAML() { - import - std.file, - std.path; - import - sisudoc.meta, - sisudoc.io_in.paths_source, - sisudoc.meta.rgx_files, - sisudoc.meta.rgx; + import std.file; + import std.path; + import sisudoc.meta; + import sisudoc.io_in.paths_source; + import sisudoc.meta.rgx_files; + import sisudoc.meta.rgx; final YAMLDocument configReadSiteYAML(M,E)(M _manifested, E _env) { string _configuration = configReadInSiteYAML!()(_manifested, _env); auto _conf_file_details = configFilePaths!()(_manifested, _env); @@ -266,12 +260,10 @@ static template configReadSiteYAML() { } } static template configReadDocYAML() { - import - std.file, - std.path; - import - sisudoc.meta, - sisudoc.io_in.paths_source; + import std.file; + import std.path; + import sisudoc.meta; + import sisudoc.io_in.paths_source; final YAMLDocument configReadDocYAML(M,E)(M _manifested, E _env) { string _configuration = configReadInDocYAML!()(_manifested, _env); auto _conf_file_details = configFilePaths!()(_manifested, _env); @@ -297,15 +289,13 @@ static template configReadDocYAML() { module sisudoc.io_in.read_source_files; @safe: template spineRawMarkupContent() { - import - std.digest.sha, - std.file, - std.path; - import - sisudoc.meta, - sisudoc.io_in.paths_source, - sisudoc.meta.rgx_files, - sisudoc.meta.rgx; + import std.digest.sha; + import std.file; + import std.path; + import sisudoc.meta; + import sisudoc.io_in.paths_source; + import sisudoc.meta.rgx_files; + import sisudoc.meta.rgx; mixin spineRgxIn; static auto rgx = RgxI(); mixin spineRgxFiles; @@ -374,7 +364,7 @@ template spineRawMarkupContent() { sourcefile_body_content = _cii.contents; insert_file_list_get = _cii.insert_files.dup; images_list_get = _cii.images.dup; - } else if (_opt_action.source || _opt_action.pod) { + } else if (_opt_action.source_or_pod) { auto ins = Inserts(); ST_contents_inserts_images _cii = ins.scan_master_src_for_insert_files_and_import_content(_opt_action, sourcefile_body_content, fn_src); @@ -399,9 +389,8 @@ template spineRawMarkupContent() { } } struct MarkupRawUnit { - import - std.digest.sha, - std.file; + import std.digest.sha; + import std.file; <<meta_markup_source_raw_read_file_source_string>> <<meta_markup_source_raw_doc_header_and_content_split>> <<meta_markup_source_raw_source_line_array>> @@ -581,7 +570,7 @@ final char[][] getInsertMarkupSourceContentRawLineArray( #+BEGIN_SRC d char[][] contents_insert; int code_block_status = 0; -enum codeBlock { off, curly, tic, } +enum codeBlock { off, curly, tic, quotemarks } auto fn_pth_full = fn_src.match(rgx_files.src_pth_sst_or_ssm); auto markup_src_file_path = fn_pth_full.captures[1]; #+END_SRC @@ -598,11 +587,19 @@ if (code_block_status == codeBlock.curly) { } else if (line.matchFirst(rgx.block_curly_code_open)) { code_block_status = codeBlock.curly; contents_insert ~= line; +} else if (code_block_status == codeBlock.quotemarks) { + if (line.matchFirst(rgx.block_quotemarks_close)) { + code_block_status = codeBlock.off; + } + contents_insert ~= line; } else if (code_block_status == codeBlock.tic) { if (line.matchFirst(rgx.block_tic_close)) { code_block_status = codeBlock.off; } contents_insert ~= line; +} else if (line.matchFirst(rgx.block_quotemarks_code_open)) { + code_block_status = codeBlock.quotemarks; + contents_insert ~= line; } else if (line.matchFirst(rgx.block_tic_code_open)) { code_block_status = codeBlock.tic; contents_insert ~= line; @@ -622,7 +619,7 @@ if (code_block_status == codeBlock.curly) { markup_sourcesubfile_insert_content.length ); } - if (_opt_action.source || _opt_action.pod) { + if (_opt_action.source_or_pod) { _images ~= _extract_images(markup_sourcesubfile_insert_content); } auto ins = Inserts(); @@ -638,7 +635,7 @@ if (code_block_status == codeBlock.curly) { +/ } else { contents_insert ~= line; // images to extract for image list? - if (_opt_action.source || _opt_action.pod) { + if (_opt_action.source_or_pod) { string[] _image_linelist = _extract_images(line); if (_image_linelist.length > 0) { _images ~= _image_linelist; @@ -666,7 +663,7 @@ return ret; #+BEGIN_SRC d char[][] contents; int code_block_status = 0; -enum codeBlock { off, curly, tic, } +enum codeBlock { off, curly, tic, quotemarks } auto fn_pth_full = fn_src.match(rgx_files.src_pth_sst_or_ssm); auto markup_src_file_path = fn_pth_full.captures[1]; char[][] contents_insert; @@ -686,11 +683,19 @@ if (code_block_status == codeBlock.curly) { } else if (line.matchFirst(rgx.block_curly_code_open)) { code_block_status = codeBlock.curly; contents ~= line; +} else if (code_block_status == codeBlock.quotemarks) { + if (line.matchFirst(rgx.block_quotemarks_close)) { + code_block_status = codeBlock.off; + } + contents ~= line; } else if (code_block_status == codeBlock.tic) { if (line.matchFirst(rgx.block_tic_close)) { code_block_status = codeBlock.off; } contents ~= line; +} else if (line.matchFirst(rgx.block_quotemarks_code_open)) { + code_block_status = codeBlock.quotemarks; + contents ~= line; } else if (line.matchFirst(rgx.block_tic_code_open)) { code_block_status = codeBlock.tic; contents ~= line; @@ -719,7 +724,7 @@ if (code_block_status == codeBlock.curly) { fn_src_insert.to!string ); contents ~= contents_insert_st.insert_contents; - if (_opt_action.source || _opt_action.pod) { + if (_opt_action.source_or_pod) { string[] _image_linelist = _extract_images(contents_insert_st.images); if (_image_linelist.length > 0) { _images ~= _image_linelist; @@ -737,7 +742,7 @@ if (code_block_status == codeBlock.curly) { +/ } else { contents ~= line; - if (_opt_action.source || _opt_action.pod) { + if (_opt_action.source_or_pod) { string[] _image_linelist = _extract_images(line); if (_image_linelist.length > 0) { _images ~= _image_linelist; diff --git a/org/meta_conf_make_meta.org b/org/meta_conf_make_meta.org index 9c62322..7809370 100644 --- a/org/meta_conf_make_meta.org +++ b/org/meta_conf_make_meta.org @@ -4,7 +4,7 @@ #+FILETAGS: :spine:config: #+AUTHOR: Ralph Amissah #+EMAIL: [[mailto:ralph.amissah@gmail.com][ralph.amissah@gmail.com]] -#+COPYRIGHT: Copyright (C) 2015 - 2024 Ralph Amissah +#+COPYRIGHT: Copyright (C) 2015 - 2025 Ralph Amissah #+LANGUAGE: en #+STARTUP: content hideblocks hidestars noindent entitiespretty #+PROPERTY: header-args :noweb yes @@ -15,18 +15,6 @@ #+PROPERTY: header-args+ :mkdirp yes #+OPTIONS: H:3 num:nil toc:t \n:t ::t |:t ^:nil -:t f:t *:t -#+NAME: meta_check_input_markup -#+BEGIN_SRC d -string check_input_markup()( - string _txt, -) { - _txt = _txt - .replaceAll(regex(r"\\"), mkup.br_line_inline) - .strip; - return _txt; -} -#+END_SRC - - [[./doc-reform.org][doc-reform.org]] [[./][org/]] * generic @@ -209,24 +197,23 @@ webserv: #+NAME: meta_defaults_imports #+BEGIN_SRC d -import - std.algorithm, - std.array, - std.container, - std.exception, - std.file, - std.getopt, - std.json, - std.path, - std.process, - std.range, - std.regex, - std.stdio, - std.string, - std.typecons, - std.uni, - std.utf, - std.conv : to; +import std.algorithm; +import std.array; +import std.container; +import std.exception; +import std.file; +import std.getopt; +import std.json; +import std.path; +import std.process; +import std.range; +import std.regex; +import std.stdio; +import std.string; +import std.typecons; +import std.uni; +import std.utf; +import std.conv : to; import sisudoc.meta.conf_make_meta_structs; #+END_SRC @@ -251,20 +238,18 @@ module sisudoc.meta.conf_make_meta_structs; #+NAME: meta_defaults_template_structs_init #+BEGIN_SRC d -import - std.exception, - std.json, - std.path, - std.regex, - std.stdio, - std.string, - std.typecons, - std.utf, - std.conv : to; -import - sisudoc.meta.defaults, - sisudoc.meta.rgx_yaml, - sisudoc.meta.rgx; +import std.exception; +import std.json; +import std.path; +import std.regex; +import std.stdio; +import std.string; +import std.typecons; +import std.utf; +import std.conv : to; +import sisudoc.meta.defaults; +import sisudoc.meta.rgx_yaml; +import sisudoc.meta.rgx; mixin spineRgxIn; static auto rgx = RgxI(); mixin spineRgxYamlTags; @@ -553,6 +538,73 @@ JSONValue config_jsonstr = `{ #+END_SRC * YAML to spineStruct :module:conf_make_meta:yaml: + +** check markup + +#+NAME: meta_check_input_markup +#+BEGIN_SRC d +string check_input_markup()( + string _txt, +) { + _txt = _txt + .replaceAll(regex(r"\\"), mkup.br_line_inline) + .strip; + return _txt; +} +#+END_SRC + +** extract yaml + +#+NAME: meta_extract_yaml +#+BEGIN_SRC d +@system string _get_yaml_node_string(Y)( + Y _yaml, + string _return, + string _title, + string _subtitle, + bool _munge=false +) { + if ((_title in _yaml && _yaml[_title].type.sequence) + && (_yaml[_title].type.mapping + && _yaml[_title].tag.match(rgx_y.yaml_tag_is_map)) + ) { + if (_subtitle in _yaml[_title] + && _yaml[_title][_subtitle].type.string + && _yaml[_title][_subtitle].tag.match(rgx_y.yaml_tag_is_str) + ) { + _return = (!(_munge)) + ? _yaml[_title][_subtitle].get!string + : check_input_markup(_yaml[_title][_subtitle].get!string); + } + } + return _return; +} +@system int _get_yaml_node_int(Y)( + Y _yaml, + int _return, + string _title, + string _subtitle +) { + if ((_title in _yaml && _yaml[_title].type.sequence) + && (_yaml[_title].type.mapping + && _yaml[_title].tag.match(rgx_y.yaml_tag_is_map)) + ) { + if (_subtitle in _yaml[_title] + && _yaml[_title][_subtitle].type.string + && _yaml[_title][_subtitle].tag.match(rgx_y.yaml_tag_is_int) + ) { + _return = _yaml[_title][_subtitle].get!int; + } else if (_subtitle in _yaml[_title] + && _yaml[_title][_subtitle].type.string + && _yaml[_title][_subtitle].tag.match(rgx_y.yaml_tag_is_str) + ) { + _return = _yaml[_title][_subtitle].get!int; + } + } + return _return; +} +#+END_SRC + ** _module template_ #+HEADER: :tangle "../src/sisudoc/meta/conf_make_meta_yaml.d" @@ -566,24 +618,22 @@ JSONValue config_jsonstr = `{ module sisudoc.meta.conf_make_meta_yaml; @safe: template contentYAMLtoSpineStruct() { - import - std.algorithm, - std.array, - std.exception, - std.path, - std.regex, - std.stdio, - std.string, - std.typecons, - std.utf, - std.conv : to; - import - sisudoc.meta.conf_make_meta_structs, - sisudoc.meta.defaults, - sisudoc.meta.rgx_yaml, - sisudoc.meta.rgx; + import std.algorithm; + import std.array; + import std.exception; + import std.path; + import std.regex; + import std.stdio; + import std.string; + import std.typecons; + import std.utf; + import std.conv : to; + import sisudoc.meta.conf_make_meta_structs; + import sisudoc.meta.defaults; + import sisudoc.meta.rgx_yaml; + import sisudoc.meta.rgx; ConfComposite _struct_composite; - @system auto contentYAMLtoSpineStruct(C,Y,M,O,Cfg)( + @system ConfComposite contentYAMLtoSpineStruct(C,Y,M,O,Cfg)( C _struct_composite, Y _yaml, M _manifested, @@ -596,10 +646,11 @@ template contentYAMLtoSpineStruct() { mixin spineRgxYamlTags; static auto rgx_y = RgxYaml(); <<meta_check_input_markup>> + <<meta_extract_yaml>> confCompositeMakeBuild _mk; if (_identifier != "header") { // called only once per run anyway <<yaml_objects_conf>> - } else { + } else { // !(_identifier != "header") <<yaml_objects_make>> <<yaml_objects_meta>> } @@ -614,6 +665,7 @@ template contentYAMLtoSpineStruct() { #+NAME: yaml_objects_conf #+BEGIN_SRC d +string _init_string; /+ conf ------------------------------------------------------------------- +/ /+ _cfg. build defaults (else program runtime defaults) @@ -622,145 +674,52 @@ template contentYAMLtoSpineStruct() { +/ { if (_opt_action.webserver_http.length > 0) { - _struct_composite.conf.w_srv_http - = _opt_action.webserver_http; + _struct_composite.conf.w_srv_http = _opt_action.webserver_http; } else { - _struct_composite.conf.w_srv_http - = (_cfg.http_request_type.empty) - ? "http" - : _cfg.http_request_type; - if (("webserv" in _yaml && _yaml["webserv"].type.sequence) - && (_yaml["webserv"].type.mapping - && _yaml["webserv"].tag.match(rgx_y.yaml_tag_is_map)) - ) { - if ("http" in _yaml["webserv"] - && _yaml["webserv"]["http"].type.string - && _yaml["webserv"]["http"].tag.match(rgx_y.yaml_tag_is_str) - ) { - _struct_composite.conf.w_srv_http - = _yaml["webserv"]["http"].get!string; - } - } + _init_string = (_cfg.http_request_type.empty) ? "http" : _cfg.http_request_type; + _struct_composite.conf.w_srv_http = _get_yaml_node_string(_yaml, _init_string, "webserv", "http"); } if (_opt_action.cgi_search_title.length > 0) { - _struct_composite.conf.w_srv_cgi_search_form_title - = _opt_action.cgi_search_title; + _struct_composite.conf.w_srv_cgi_search_form_title = _opt_action.cgi_search_title; } else { - _struct_composite.conf.w_srv_cgi_search_form_title - = (_cfg.cgi_search_form_title.empty) - ? "≅ SiSU spine search form" - : _cfg.cgi_search_form_title; - if (("webserv" in _yaml && _yaml["webserv"].type.sequence) - && (_yaml["webserv"].type.mapping - && _yaml["webserv"].tag.match(rgx_y.yaml_tag_is_map)) - ) { - if ("cgi_search_form_title" in _yaml["webserv"] - && _yaml["webserv"]["cgi_search_form_title"].type.string - && _yaml["webserv"]["cgi_search_form_title"].tag.match(rgx_y.yaml_tag_is_str) - ) { - _struct_composite.conf.w_srv_cgi_search_form_title - = _yaml["webserv"]["cgi_search_form_title"].get!string; - } - } + _init_string = (_cfg.cgi_search_form_title.empty) ? "≅ SiSU spine search form" : _cfg.cgi_search_form_title; + _struct_composite.conf.w_srv_cgi_search_form_title = _get_yaml_node_string(_yaml, _init_string, "webserv", "cgi_search_form_title"); } if (_opt_action.cgi_sqlite_search_filename.length > 0) { - _struct_composite.conf.w_srv_cgi_search_script - = _opt_action.cgi_sqlite_search_filename; + _struct_composite.conf.w_srv_cgi_search_script = _opt_action.cgi_sqlite_search_filename; } else { - _struct_composite.conf.w_srv_cgi_search_script - = (_cfg.cgi_filename.empty) - ? "spine_search" - : _cfg.cgi_filename; - if (("webserv" in _yaml && _yaml["webserv"].type.sequence) - && (_yaml["webserv"].type.mapping - && _yaml["webserv"].tag.match(rgx_y.yaml_tag_is_map)) - ) { - if ("cgi_search_script" in _yaml["webserv"] - && _yaml["webserv"]["cgi_search_script"].type.string - && _yaml["webserv"]["cgi_search_script"].tag.match(rgx_y.yaml_tag_is_str) - ) { - _struct_composite.conf.w_srv_cgi_search_script - = _yaml["webserv"]["cgi_search_script"].get!string; - } - } + _init_string = (_cfg.cgi_filename.empty) ? "spine_search" : _cfg.cgi_filename; + _struct_composite.conf.w_srv_cgi_search_script = _get_yaml_node_string(_yaml, _init_string, "webserv", "cgi_search_script"); } if (_opt_action.sqliteDB_filename.length > 0) { - _struct_composite.conf.w_srv_db_sqlite_filename - = _opt_action.sqliteDB_filename; + _struct_composite.conf.w_srv_db_sqlite_filename = _opt_action.sqliteDB_filename; } else { - _struct_composite.conf.w_srv_db_sqlite_filename - = (_cfg.db_sqlite_filename.empty) - ? "spine.search.db" - : _cfg.db_sqlite_filename; - if (("webserv" in _yaml && _yaml["webserv"].type.sequence) - && (_yaml["webserv"].type.mapping - && _yaml["webserv"].tag.match(rgx_y.yaml_tag_is_map)) - ) { - if ("db_sqlite_filename" in _yaml["webserv"] - && _yaml["webserv"]["db_sqlite_filename"].type.string - && _yaml["webserv"]["db_sqlite_filename"].tag.match(rgx_y.yaml_tag_is_str) - ) { - _struct_composite.conf.w_srv_db_sqlite_filename - = _yaml["webserv"]["db_sqlite_filename"].get!string; - } - } + _init_string = (_cfg.db_sqlite_filename.empty) ? "spine.search.db" : _cfg.db_sqlite_filename; + _struct_composite.conf.w_srv_db_sqlite_filename = _get_yaml_node_string(_yaml, _init_string, "webserv", "db_sqlite_filename"); } if (_opt_action.sqliteDB_path.length > 0) { - _struct_composite.conf.w_srv_db_sqlite_path - = _opt_action.sqliteDB_path; + _struct_composite.conf.w_srv_db_sqlite_path = _opt_action.sqliteDB_path; } else { - _struct_composite.conf.w_srv_db_sqlite_path - = (_cfg.db_sqlite_path.empty) - ? "/var/www/sqlite" - : _cfg.db_sqlite_path; - if (("webserv" in _yaml && _yaml["webserv"].type.sequence) - && (_yaml["webserv"].type.mapping - && _yaml["webserv"].tag.match(rgx_y.yaml_tag_is_map)) - ) { - if ("db_sqlite_path" in _yaml["webserv"] - && _yaml["webserv"]["db_sqlite_path"].type.string - && _yaml["webserv"]["db_sqlite_path"].tag.match(rgx_y.yaml_tag_is_str) - ) { - _struct_composite.conf.w_srv_db_sqlite_path - = _yaml["webserv"]["db_sqlite_path"].get!string; - } - } + _init_string = (_cfg.db_sqlite_path.empty) ? "/var/www/sqlite" : _cfg.db_sqlite_path; + _struct_composite.conf.w_srv_db_sqlite_path = _get_yaml_node_string(_yaml, _init_string, "webserv", "db_sqlite_path"); } if (_opt_action.cgi_url_action.length > 0) { _struct_composite.conf.w_srv_cgi_action = _opt_action.cgi_url_action; } else { - _struct_composite.conf.w_srv_cgi_action - = (_cfg.www_url_doc_root.empty) - ? "http://locahost" // "https://sisudoc.org" - : _cfg.www_url_doc_root; - if (("webserv" in _yaml && _yaml["webserv"].type.sequence) - && (_yaml["webserv"].type.mapping - && _yaml["webserv"].tag.match(rgx_y.yaml_tag_is_map)) - ) { - if ("cgi_action" in _yaml["webserv"] - && _yaml["webserv"]["cgi_action"].type.string - && _yaml["webserv"]["cgi_action"].tag.match(rgx_y.yaml_tag_is_str) - ) { - _struct_composite.conf.w_srv_cgi_action - = _yaml["webserv"]["cgi_action"].get!string; - } else if (_opt_action.cgi_sqlite_search_filename.length > 0) { - _struct_composite.conf.w_srv_cgi_action - = _struct_composite.conf.w_srv_cgi_bin_url ~ "/" ~ _opt_action.cgi_sqlite_search_filename; - } + _init_string = (_cfg.www_url_doc_root.empty) ? "http://locahost" : _cfg.www_url_doc_root; // "https://sisudoc.org" + _struct_composite.conf.w_srv_cgi_action = _get_yaml_node_string(_yaml, _init_string, "webserv", "cgi_action"); + if (_opt_action.cgi_sqlite_search_filename.length > 0) { + _struct_composite.conf.w_srv_cgi_action = _struct_composite.conf.w_srv_cgi_bin_url ~ "/" ~ _opt_action.cgi_sqlite_search_filename; // not yet right } } if (!(_struct_composite.conf.output_path)) { _struct_composite.conf.output_path = ((_manifested.output.path).asNormalizedPath).array; } { if (_opt_action.output_dir_set.length > 0) { - _struct_composite.conf.output_path - = (_opt_action.output_dir_set.asNormalizedPath).array; + _struct_composite.conf.output_path = (_opt_action.output_dir_set.asNormalizedPath).array; } else { - _struct_composite.conf.output_path - = (_cfg.processing_path_doc_root.empty) - ? "/srv/www/spine" - : _cfg.processing_path_doc_root; + _struct_composite.conf.output_path = (_cfg.processing_path_doc_root.empty) ? "/srv/www/spine" : _cfg.processing_path_doc_root; if (("webserv" in _yaml && _yaml["webserv"].type.sequence) && (_yaml["webserv"].type.mapping && _yaml["webserv"].tag.match(rgx_y.yaml_tag_is_map)) @@ -782,75 +741,23 @@ template contentYAMLtoSpineStruct() { } } if (_opt_action.webserver_host_doc_root.length > 0) { // same as output_path immediately above, resolve FIX REMOVE - _struct_composite.conf.w_srv_data_root_path - = _opt_action.webserver_host_doc_root; + _struct_composite.conf.w_srv_data_root_path = _opt_action.webserver_host_doc_root; } else { - _struct_composite.conf.w_srv_data_root_path - = (_cfg.processing_path_doc_root.empty) - ? "/var/www/spine" - : _cfg.processing_path_doc_root; - if (("webserv" in _yaml && _yaml["webserv"].type.sequence) - && (_yaml["webserv"].type.mapping - && _yaml["webserv"].tag.match(rgx_y.yaml_tag_is_map)) - ) { - if ("data_root_path" in _yaml["webserv"] - && _yaml["webserv"]["data_root_path"].type.string - && _yaml["webserv"]["data_root_path"].tag.match(rgx_y.yaml_tag_is_str) - ) { - _struct_composite.conf.w_srv_data_root_path - = _yaml["webserv"]["data_root_path"].get!string; - } - } + _init_string = (_cfg.processing_path_doc_root.empty) ? "/var/www/spine" : _cfg.processing_path_doc_root; + _struct_composite.conf.w_srv_data_root_path = _get_yaml_node_string(_yaml, _init_string, "webserv", "data_root_path"); } } if (_opt_action.cgi_bin_root.length > 0) { - _struct_composite.conf.w_srv_cgi_bin_path - = _opt_action.cgi_bin_root; + _struct_composite.conf.w_srv_cgi_bin_path = _opt_action.cgi_bin_root; } else { - _struct_composite.conf.w_srv_cgi_bin_path - = (_cfg.cgi_bin_root.empty) - ? "/var/www/cgi/cgi-bin" - : _cfg.cgi_bin_root; - if (("webserv" in _yaml && _yaml["webserv"].type.sequence) - && (_yaml["webserv"].type.mapping - && _yaml["webserv"].tag.match(rgx_y.yaml_tag_is_map)) - ) { - if ("cgi_bin_path" in _yaml["webserv"] - && _yaml["webserv"]["cgi_bin_path"].type.string - && _yaml["webserv"]["cgi_bin_path"].tag.match(rgx_y.yaml_tag_is_str) - ) { - _struct_composite.conf.w_srv_cgi_bin_path - = _yaml["webserv"]["cgi_bin_path"].get!string; - } - } - } - { _struct_composite.conf.w_srv_data_root_part - = ""; - if (("webserv" in _yaml && _yaml["webserv"].type.sequence) - && (_yaml["webserv"].type.mapping - && _yaml["webserv"].tag.match(rgx_y.yaml_tag_is_map)) - ) { - if ("data_root_part" in _yaml["webserv"] - && _yaml["webserv"]["data_root_part"].type.string - && _yaml["webserv"]["data_root_part"].tag.match(rgx_y.yaml_tag_is_str) - ) { - _struct_composite.conf.w_srv_data_root_part = _yaml["webserv"]["data_root_part"].get!string; - } - } - } - { _struct_composite.conf.w_srv_images_root_part - = "image"; - if (("webserv" in _yaml && _yaml["webserv"].type.sequence) - && (_yaml["webserv"].type.mapping - && _yaml["webserv"].tag.match(rgx_y.yaml_tag_is_map)) - ) { - if ("images_root_part" in _yaml["webserv"] - && _yaml["webserv"]["images_root_part"].type.string - && _yaml["webserv"]["images_root_part"].tag.match(rgx_y.yaml_tag_is_str) - ) { - _struct_composite.conf.w_srv_images_root_part = _yaml["webserv"]["images_root_part"].get!string; - } - } + _init_string = (_cfg.cgi_bin_root.empty) ? "/var/www/cgi/cgi-bin" : _cfg.cgi_bin_root; + _struct_composite.conf.w_srv_cgi_bin_path = _get_yaml_node_string(_yaml, _init_string, "webserv", "cgi_bin_path"); + } { + _init_string = ""; _init_string = _get_yaml_node_string(_yaml, _init_string, "webserv", "data_root_part"); + if (!(_init_string.empty)) { _struct_composite.conf.w_srv_data_root_part = _init_string; } + } { + _init_string = "image"; _init_string = _get_yaml_node_string(_yaml, _init_string, "webserv", "images_root_part"); + if (!(_init_string.empty)) { _struct_composite.conf.w_srv_images_root_part = _init_string; } } } if (("webserv" in _yaml @@ -858,106 +765,68 @@ if (("webserv" in _yaml && (_yaml["webserv"].type.mapping && _yaml["webserv"].tag.match(rgx_y.yaml_tag_is_map)) ) { // cannot be used as is with opt_action FIX look at remaining, decide what to do later - if ("data_http" in _yaml["webserv"] - && _yaml["webserv"]["data_http"].type.string - && _yaml["webserv"]["data_http"].tag.match(rgx_y.yaml_tag_is_str) - ) { - _struct_composite.conf.w_srv_data_http = _yaml["webserv"]["data_http"].get!string; - } - // if (_opt_action.*.length > 0) { - if ("cgi_http" in _yaml["webserv"] - && _yaml["webserv"]["cgi_http"].type.string - && _yaml["webserv"]["cgi_http"].tag.match(rgx_y.yaml_tag_is_str) - ) { - _struct_composite.conf.w_srv_cgi_http = _yaml["webserv"]["cgi_http"].get!string; - } - // if (_opt_action.*.length > 0) { - if ("host" in _yaml["webserv"] - && _yaml["webserv"]["host"].type.string - && _yaml["webserv"]["host"].tag.match(rgx_y.yaml_tag_is_str) - ) { - _struct_composite.conf.w_srv_host = _yaml["webserv"]["host"].get!string; - } - if ("data_root_url" in _yaml["webserv"] - && _yaml["webserv"]["data_root_url"].type.string - && _yaml["webserv"]["data_root_url"].tag.match(rgx_y.yaml_tag_is_str) - ) { - _struct_composite.conf.w_srv_data_root_url = _yaml["webserv"]["data_root_url"].get!string; - _struct_composite.conf.w_srv_data_root_url_html = - _yaml["webserv"]["data_root_url"].get!string - ~ _struct_composite.conf.w_srv_data_root_part ~ "/" - ~ _manifested.src.language ~ "/" - ~ "html"; - } else { - _struct_composite.conf.w_srv_data_root_url = _struct_composite.conf.w_srv_data_root_part; - _struct_composite.conf.w_srv_data_root_url_html = - _struct_composite.conf.w_srv_data_root_part ~ "/" - ~ _manifested.src.language ~ "/" - ~ "html"; - } - if ("cgi_host" in _yaml["webserv"] - && _yaml["webserv"]["cgi_host"].type.string - && _yaml["webserv"]["cgi_host"].tag.match(rgx_y.yaml_tag_is_str) - ) { - _struct_composite.conf.w_srv_cgi_host = _yaml["webserv"]["cgi_host"].get!string; - } else { // composite construct - _struct_composite.conf.w_srv_cgi_host = _struct_composite.conf.w_srv_host; - } - if ("cgi_bin_subpath" in _yaml["webserv"] - && _yaml["webserv"]["cgi_bin_subpath"].type.string - && _yaml["webserv"]["cgi_bin_subpath"].tag.match(rgx_y.yaml_tag_is_str) - ) { - _struct_composite.conf.w_srv_cgi_bin_subpath = _yaml["webserv"]["cgi_bin_subpath"].get!string; - } - if ("cgi_port" in _yaml["webserv"] - && _yaml["webserv"]["cgi_port"].type.string - && _yaml["webserv"]["cgi_port"].tag.match(rgx_y.yaml_tag_is_str) - ) { - _struct_composite.conf.w_srv_cgi_port = _yaml["webserv"]["cgi_port"].get!string; - } - if ("cgi_user" in _yaml["webserv"] - && _yaml["webserv"]["cgi_user"].type.string - && _yaml["webserv"]["cgi_user"].tag.match(rgx_y.yaml_tag_is_str) - ) { - _struct_composite.conf.w_srv_cgi_user = _yaml["webserv"]["cgi_user"].get!string; - } - if ("cgi_bin_url" in _yaml["webserv"] - && _yaml["webserv"]["cgi_bin_url"].type.string - && _yaml["webserv"]["cgi_bin_url"].tag.match(rgx_y.yaml_tag_is_str) - ) { - _struct_composite.conf.w_srv_cgi_bin_url = _yaml["webserv"]["cgi_bin_url"].get!string; - } else { - _struct_composite.conf.w_srv_cgi_bin_url = - (_struct_composite.conf.w_srv_cgi_http.empty) - ? _struct_composite.conf.w_srv_http - :_struct_composite.conf.w_srv_cgi_http - ~ "://" - ~ (_struct_composite.conf.w_srv_cgi_host.empty) - ? _struct_composite.conf.w_srv_cgi_host - : _struct_composite.conf.w_srv_host - ~ _struct_composite.conf.w_srv_cgi_bin_subpath; - } - // if ("cgi_file_links" in _yaml["webserv"] - // && _yaml["webserv"]["cgi_file_links"].type.string - // && _yaml["webserv"]["cgi_file_links"].tag.match(rgx_y.yaml_tag_is_str) - // ) { - // _struct_composite.conf.w_srv_cgi_file_links = _yaml["webserv"]["cgi_file_links"].get!string; - // } + { + _init_string = ""; _init_string = _get_yaml_node_string(_yaml, _init_string, "webserv", "data_http"); + if (!(_init_string.empty)) { _struct_composite.conf.w_srv_data_http = _init_string; } + } { + _init_string = ""; _init_string = _get_yaml_node_string(_yaml, _init_string, "webserv", "cgi_http"); + if (!(_init_string.empty)) { _struct_composite.conf.w_srv_cgi_http = _init_string; } + } { + _init_string = ""; _init_string = _get_yaml_node_string(_yaml, _init_string, "webserv", "host"); + if (!(_init_string.empty)) { _struct_composite.conf.w_srv_host = _init_string; } + } { + _init_string = ""; _init_string = _get_yaml_node_string(_yaml, _init_string, "webserv", "cgi_bin_subpath"); + if (!(_init_string.empty)) { _struct_composite.conf.w_srv_cgi_bin_subpath = _init_string; } + } { + _init_string = ""; _init_string = _get_yaml_node_string(_yaml, _init_string, "webserv", "cgi_port"); + if (!(_init_string.empty)) { _struct_composite.conf.w_srv_cgi_port = _init_string; } + } { + _init_string = ""; _init_string = _get_yaml_node_string(_yaml, _init_string, "webserv", "cgi_user"); + if (!(_init_string.empty)) { _struct_composite.conf.w_srv_cgi_user = _init_string; } + } + if ("data_root_url" in _yaml["webserv"] + && _yaml["webserv"]["data_root_url"].type.string + && _yaml["webserv"]["data_root_url"].tag.match(rgx_y.yaml_tag_is_str) + ) { + _struct_composite.conf.w_srv_data_root_url = _yaml["webserv"]["data_root_url"].get!string; + _struct_composite.conf.w_srv_data_root_url_html = + _yaml["webserv"]["data_root_url"].get!string + ~ _struct_composite.conf.w_srv_data_root_part ~ "/" + ~ _manifested.src.language ~ "/" + ~ "html"; + } else { + _struct_composite.conf.w_srv_data_root_url = _struct_composite.conf.w_srv_data_root_part; + _struct_composite.conf.w_srv_data_root_url_html = + _struct_composite.conf.w_srv_data_root_part ~ "/" + ~ _manifested.src.language ~ "/" + ~ "html"; + } { + _init_string = ""; _init_string = _get_yaml_node_string(_yaml, _init_string, "webserv", "cgi_host"); + _struct_composite.conf.w_srv_cgi_host = (!(_init_string.empty)) ? _init_string : _struct_composite.conf.w_srv_host; + } + if ("cgi_bin_url" in _yaml["webserv"] + && _yaml["webserv"]["cgi_bin_url"].type.string + && _yaml["webserv"]["cgi_bin_url"].tag.match(rgx_y.yaml_tag_is_str) + ) { + _struct_composite.conf.w_srv_cgi_bin_url = _yaml["webserv"]["cgi_bin_url"].get!string; + } else { + _struct_composite.conf.w_srv_cgi_bin_url = + (_struct_composite.conf.w_srv_cgi_http.empty) ? _struct_composite.conf.w_srv_http :_struct_composite.conf.w_srv_cgi_http + ~ "://" + ~ (_struct_composite.conf.w_srv_cgi_host.empty) ? _struct_composite.conf.w_srv_cgi_host : _struct_composite.conf.w_srv_host + ~ _struct_composite.conf.w_srv_cgi_bin_subpath; + } + // if ("cgi_file_links" in _yaml["webserv"] + // && _yaml["webserv"]["cgi_file_links"].type.string + // && _yaml["webserv"]["cgi_file_links"].tag.match(rgx_y.yaml_tag_is_str) + // ) { + // _struct_composite.conf.w_srv_cgi_file_links = _yaml["webserv"]["cgi_file_links"].get!string; + // } } // make (in: conf, make, meta)? -if ("processing" in _yaml - && _yaml["processing"].type.sequence -) { - if (_yaml["processing"].type.mapping - && _yaml["processing"].tag.match(rgx_y.yaml_tag_is_map) - ) { - if ("concord_max" in _yaml["processing"] - && _yaml["processing"]["concord_max"].type.string - && _yaml["processing"]["concord_max"].tag.match(rgx_y.yaml_tag_is_str) - ) { - _struct_composite.conf.processing_concord_max = _yaml["processing"]["concord_max"].get!string; - } - } +{ + _init_string = ""; _init_string = _get_yaml_node_string(_yaml, _init_string, "processing", "concord_max"); + if (!(_init_string.empty)) { _struct_composite.conf.processing_concord_max = _init_string; } } if ("flag" in _yaml && _yaml["flag"].type.sequence @@ -965,65 +834,36 @@ if ("flag" in _yaml if (_yaml["flag"].type.mapping && _yaml["flag"].tag.match(rgx_y.yaml_tag_is_map) ) { - if ("act0" in _yaml["flag"] - && _yaml["flag"]["act0"].type.string - && _yaml["flag"]["act0"].tag.match(rgx_y.yaml_tag_is_str) - ) { - _struct_composite.conf.flag_act0 = _yaml["flag"]["act0"].get!string; - } - if ("act1" in _yaml["flag"] - && _yaml["flag"]["act1"].type.string - && _yaml["flag"]["act1"].tag.match(rgx_y.yaml_tag_is_str) - ) { - _struct_composite.conf.flag_act1 = _yaml["flag"]["act1"].get!string; - } - if ("act2" in _yaml["flag"] - && _yaml["flag"]["act2"].type.string - && _yaml["flag"]["act2"].tag.match(rgx_y.yaml_tag_is_str) - ) { - _struct_composite.conf.flag_act2 = _yaml["flag"]["act2"].get!string; - } - if ("act3" in _yaml["flag"] - && _yaml["flag"]["act3"].type.string - && _yaml["flag"]["act3"].tag.match(rgx_y.yaml_tag_is_str) - ) { - _struct_composite.conf.flag_act3 = _yaml["flag"]["act3"].get!string; - } - if ("act4" in _yaml["flag"] - && _yaml["flag"]["act4"].type.string - && _yaml["flag"]["act4"].tag.match(rgx_y.yaml_tag_is_str) - ) { - _struct_composite.conf.flag_act4 = _yaml["flag"]["act4"].get!string; - } - if ("act5" in _yaml["flag"] - && _yaml["flag"]["act5"].type.string - && _yaml["flag"]["act5"].tag.match(rgx_y.yaml_tag_is_str) - ) { - _struct_composite.conf.flag_act5 = _yaml["flag"]["act5"].get!string; - } - if ("act6" in _yaml["flag"] - && _yaml["flag"]["act6"].type.string - && _yaml["flag"]["act6"].tag.match(rgx_y.yaml_tag_is_str) - ) { - _struct_composite.conf.flag_act6 = _yaml["flag"]["act6"].get!string; - } - if ("act7" in _yaml["flag"] - && _yaml["flag"]["act7"].type.string - && _yaml["flag"]["act7"].tag.match(rgx_y.yaml_tag_is_str) - ) { - _struct_composite.conf.flag_act7 = _yaml["flag"]["act7"].get!string; - } - if ("act8" in _yaml["flag"] - && _yaml["flag"]["act8"].type.string - && _yaml["flag"]["act8"].tag.match(rgx_y.yaml_tag_is_str) - ) { - _struct_composite.conf.flag_act8 = _yaml["flag"]["act8"].get!string; - } - if ("act9" in _yaml["flag"] - && _yaml["flag"]["act9"].type.string - && _yaml["flag"]["act9"].tag.match(rgx_y.yaml_tag_is_str) - ) { - _struct_composite.conf.flag_act9 = _yaml["flag"]["act9"].get!string; + { + _init_string = ""; _init_string = _get_yaml_node_string(_yaml, _init_string, "flag", "act0"); + if (!(_init_string.empty)) { _struct_composite.conf.flag_act0 = _init_string; } + } { + _init_string = ""; _init_string = _get_yaml_node_string(_yaml, _init_string, "flag", "act1"); + if (!(_init_string.empty)) { _struct_composite.conf.flag_act1 = _init_string; } + } { + _init_string = ""; _init_string = _get_yaml_node_string(_yaml, _init_string, "flag", "act2"); + if (!(_init_string.empty)) { _struct_composite.conf.flag_act2 = _init_string; } + } { + _init_string = ""; _init_string = _get_yaml_node_string(_yaml, _init_string, "flag", "act3"); + if (!(_init_string.empty)) { _struct_composite.conf.flag_act3 = _init_string; } + } { + _init_string = ""; _init_string = _get_yaml_node_string(_yaml, _init_string, "flag", "act4"); + if (!(_init_string.empty)) { _struct_composite.conf.flag_act4 = _init_string; } + } { + _init_string = ""; _init_string = _get_yaml_node_string(_yaml, _init_string, "flag", "act5"); + if (!(_init_string.empty)) { _struct_composite.conf.flag_act5 = _init_string; } + } { + _init_string = ""; _init_string = _get_yaml_node_string(_yaml, _init_string, "flag", "act6"); + if (!(_init_string.empty)) { _struct_composite.conf.flag_act6 = _init_string; } + } { + _init_string = ""; _init_string = _get_yaml_node_string(_yaml, _init_string, "flag", "act7"); + if (!(_init_string.empty)) { _struct_composite.conf.flag_act7 = _init_string; } + } { + _init_string = ""; _init_string = _get_yaml_node_string(_yaml, _init_string, "flag", "act8"); + if (!(_init_string.empty)) { _struct_composite.conf.flag_act8 = _init_string; } + } { + _init_string = ""; _init_string = _get_yaml_node_string(_yaml, _init_string, "flag", "act9"); + if (!(_init_string.empty)) { _struct_composite.conf.flag_act9 = _init_string; } } } } @@ -1089,20 +929,11 @@ string[] selected_papersize(string _sizes_str) { } string _set_papersize; if (_opt_action.latex_papersize.length > 0) { - _set_papersize - = _opt_action.latex_papersize; + _set_papersize = _opt_action.latex_papersize; } else { - _set_papersize - = (_cfg.default_papersize.empty) - ? "a4,letter.portrait" - : _cfg.default_papersize; - if ("papersize" in _yaml["default"] - && _yaml["default"]["papersize"].type.string - && _yaml["default"]["papersize"].tag.match(rgx_y.yaml_tag_is_str) - ) { - _set_papersize - = _yaml["default"]["papersize"].get!string; - } + _set_papersize = (_cfg.default_papersize.empty) ? "a4,letter.portrait" : _cfg.default_papersize; + _init_string = _set_papersize; _init_string = _get_yaml_node_string(_yaml, _init_string, "default", "papersize"); + if (!(_init_string.empty)) { _set_papersize = _init_string; } } _struct_composite.conf.set_papersize = selected_papersize(_set_papersize); if ( @@ -1111,29 +942,18 @@ if ( && _yaml["default"].type.mapping && _yaml["default"].tag.match(rgx_y.yaml_tag_is_map) ) { - if ("text_wrap" in _yaml["default"] - && _yaml["default"]["text_wrap"].type.string - && _yaml["default"]["text_wrap"].tag.match(rgx_y.yaml_tag_is_str) - ) { - _struct_composite.conf.set_text_wrap = _yaml["default"]["text_wrap"].get!string; - } - if ("emphasis" in _yaml["default"] - && _yaml["default"]["emphasis"].type.string - && _yaml["default"]["emphasis"].tag.match(rgx_y.yaml_tag_is_str) - ) { - _struct_composite.conf.set_emphasis = _yaml["default"]["emphasis"].get!string; - } - if ("language" in _yaml["default"] - && _yaml["default"]["language"].type.string - && _yaml["default"]["language"].tag.match(rgx_y.yaml_tag_is_str) - ) { - _struct_composite.conf.set_language = _yaml["default"]["language"].get!string; - } - if ("digest" in _yaml["default"] - && _yaml["default"]["digest"].type.string - && _yaml["default"]["digest"].tag.match(rgx_y.yaml_tag_is_str) - ) { - _struct_composite.conf.set_digest = _yaml["default"]["digest"].get!string; + { + _init_string = ""; _init_string = _get_yaml_node_string(_yaml, _init_string, "default", "text_wrap"); + if (!(_init_string.empty)) { _struct_composite.conf.set_text_wrap = _init_string; } + } { + _init_string = ""; _init_string = _get_yaml_node_string(_yaml, _init_string, "default", "emphasis"); + if (!(_init_string.empty)) { _struct_composite.conf.set_emphasis = _init_string; } + } { + _init_string = ""; _init_string = _get_yaml_node_string(_yaml, _init_string, "default", "language"); + if (!(_init_string.empty)) { _struct_composite.conf.set_language = _init_string; } + } { + _init_string = ""; _init_string = _get_yaml_node_string(_yaml, _init_string, "default", "digest"); + if (!(_init_string.empty)) { _struct_composite.conf.set_digest = _init_string; } } } if ("search" in _yaml @@ -1142,29 +962,18 @@ if ("search" in _yaml if (_yaml["search"].type.mapping && _yaml["search"].tag.match(rgx_y.yaml_tag_is_map) ) { - if ("flag" in _yaml["search"] - && _yaml["search"]["flag"].type.string - && _yaml["search"]["flag"].tag.match(rgx_y.yaml_tag_is_str) - ) { - _struct_composite.conf.search_flag = _yaml["search"]["flag"].get!string; - } - if ("action" in _yaml["search"] - && _yaml["search"]["action"].type.string - && _yaml["search"]["action"].tag.match(rgx_y.yaml_tag_is_str) - ) { - _struct_composite.conf.search_action = _yaml["search"]["action"].get!string; - } - if ("db" in _yaml["search"] - && _yaml["search"]["db"].type.string - && _yaml["search"]["db"].tag.match(rgx_y.yaml_tag_is_str) - ) { - _struct_composite.conf.search_db = _yaml["search"]["db"].get!string; - } - if ("title" in _yaml["search"] - && _yaml["search"]["title"].type.string - && _yaml["search"]["title"].tag.match(rgx_y.yaml_tag_is_str) - ) { - _struct_composite.conf.search_title = _yaml["search"]["title"].get!string; + { + _init_string = ""; _init_string = _get_yaml_node_string(_yaml, _init_string, "search", "flag"); + if (!(_init_string.empty)) { _struct_composite.conf.search_flag = _init_string; } + } { + _init_string = ""; _init_string = _get_yaml_node_string(_yaml, _init_string, "search", "action"); + if (!(_init_string.empty)) { _struct_composite.conf.search_action = _init_string; } + } { + _init_string = ""; _init_string = _get_yaml_node_string(_yaml, _init_string, "search", "db"); + if (!(_init_string.empty)) { _struct_composite.conf.search_db = _init_string; } + } { + _init_string = ""; _init_string = _get_yaml_node_string(_yaml, _init_string, "search", "title"); + if (!(_init_string.empty)) { _struct_composite.conf.search_title = _init_string; } } } } @@ -1174,6 +983,8 @@ if ("search" in _yaml #+NAME: yaml_objects_make #+BEGIN_SRC d +string _init_string; +int _init_int; /+ make ------------------------------------------------------------------- +/ if ("make" in _yaml && _yaml["make"].type.sequence @@ -1181,41 +992,24 @@ if ("make" in _yaml if (_yaml["make"].type.mapping && _yaml["make"].tag.match(rgx_y.yaml_tag_is_map) ) { - if ("doc_type" in _yaml["make"] - && _yaml["make"]["doc_type"].type.string - && _yaml["make"]["doc_type"].tag.match(rgx_y.yaml_tag_is_str) - ) { - _struct_composite.make_str.doc_type = _yaml["make"]["doc_type"].get!string; - } - if ("breaks" in _yaml["make"] - && _yaml["make"]["breaks"].type.string - && _yaml["make"]["breaks"].tag.match(rgx_y.yaml_tag_is_str) - ) { - _struct_composite.make_str.breaks = _yaml["make"]["breaks"].get!string; - } - if ("bold" in _yaml["make"] - && _yaml["make"]["bold"].type.string - && _yaml["make"]["bold"].tag.match(rgx_y.yaml_tag_is_str) - ) { - _struct_composite.make_str.bold = _yaml["make"]["bold"].get!string; - } - if ("cover_image" in _yaml["make"] - && _yaml["make"]["cover_image"].type.string - && _yaml["make"]["cover_image"].tag.match(rgx_y.yaml_tag_is_str) - ) { - _struct_composite.make_str.cover_image = _yaml["make"]["cover_image"].get!string; - } - if ("css" in _yaml["make"] - && _yaml["make"]["css"].type.string - && _yaml["make"]["css"].tag.match(rgx_y.yaml_tag_is_str) - ) { - _struct_composite.make_str.css = _yaml["make"]["css"].get!string; - } - if ("emphasis" in _yaml["make"] - && _yaml["make"]["emphasis"].type.string - && _yaml["make"]["emphasis"].tag.match(rgx_y.yaml_tag_is_str) - ) { - _struct_composite.make_str.emphasis = _yaml["make"]["emphasis"].get!string; + { + _init_string = ""; _init_string = _get_yaml_node_string(_yaml, _init_string, "make", "doc_type"); + if (!(_init_string.empty)) { _struct_composite.make_str.doc_type = _init_string; } + } { + _init_string = ""; _init_string = _get_yaml_node_string(_yaml, _init_string, "make", "breaks"); + if (!(_init_string.empty)) { _struct_composite.make_str.breaks = _init_string; } + } { + _init_string = ""; _init_string = _get_yaml_node_string(_yaml, _init_string, "make", "bold"); + if (!(_init_string.empty)) { _struct_composite.make_str.bold = _init_string; } + } { + _init_string = ""; _init_string = _get_yaml_node_string(_yaml, _init_string, "make", "cover_image"); + if (!(_init_string.empty)) { _struct_composite.make_str.cover_image = _init_string; } + } { + _init_string = ""; _init_string = _get_yaml_node_string(_yaml, _init_string, "make", "css"); + if (!(_init_string.empty)) { _struct_composite.make_str.css = _init_string; } + } { + _init_string = ""; _init_string = _get_yaml_node_string(_yaml, _init_string, "make", "emphasis"); + if (!(_init_string.empty)) { _struct_composite.make_str.emphasis = _init_string; } } if ("footer" in _yaml["make"] && _yaml["make"]["footer"].type.string @@ -1307,16 +1101,9 @@ if ("make" in _yaml break; } } - if ("auto_num_depth" in _yaml["make"] - && _yaml["make"]["auto_num_depth"].type.string - && _yaml["make"]["auto_num_depth"].tag.match(rgx_y.yaml_tag_is_int) - ) { // not sure implemented for documents - _struct_composite.make_str.auto_num_depth = _yaml["make"]["auto_num_depth"].get!int; - } else if ("auto_num_depth" in _yaml["make"] - && _yaml["make"]["auto_num_depth"].type.string - && _yaml["make"]["auto_num_depth"].tag.match(rgx_y.yaml_tag_is_str) - ) { // not sure implemented for documents - _struct_composite.make_str.auto_num_depth = _yaml["make"]["auto_num_depth"].get!int; + { + _init_int = _get_yaml_node_int(_yaml, 99, "make", "auto_num_depth"); + if (!(_init_int == 99)) { _struct_composite.make_str.auto_num_depth = _init_int; } } if ("texpdf_font" in _yaml["make"] && _yaml["make"]["texpdf_font"].type.string @@ -1355,29 +1142,18 @@ if (_struct_composite.meta.creator_author.empty) { if (_yaml["creator"].type.mapping && _yaml["creator"].tag.match(rgx_y.yaml_tag_is_map) ) { - if ("author" in _yaml["creator"] - && _yaml["creator"]["author"].type.string - && _yaml["creator"]["author"].tag.match(rgx_y.yaml_tag_is_str) - ) { - _struct_composite.meta.creator_author = _yaml["creator"]["author"].get!string; - } - if ("email" in _yaml["creator"] - && _yaml["creator"]["email"].type.string - && _yaml["creator"]["email"].tag.match(rgx_y.yaml_tag_is_str) - ) { - _struct_composite.meta.creator_author_email = _yaml["creator"]["email"].get!string; - } - if ("illustrator" in _yaml["creator"] - && _yaml["creator"]["illustrator"].type.string - && _yaml["creator"]["illustrator"].tag.match(rgx_y.yaml_tag_is_str) - ) { - _struct_composite.meta.creator_illustrator = _yaml["creator"]["illustrator"].get!string; - } - if ("translator" in _yaml["creator"] - && _yaml["creator"]["translator"].type.string - && _yaml["creator"]["translator"].tag.match(rgx_y.yaml_tag_is_str) - ) { - _struct_composite.meta.creator_translator = _yaml["creator"]["translator"].get!string; + { + _init_string = ""; _init_string = _get_yaml_node_string(_yaml, _init_string, "creator", "author"); + if (!(_init_string.empty)) { _struct_composite.meta.creator_author = _init_string; } + } { + _init_string = ""; _init_string = _get_yaml_node_string(_yaml, _init_string, "creator", "email"); + if (!(_init_string.empty)) { _struct_composite.meta.creator_author_email = _init_string; } + } { + _init_string = ""; _init_string = _get_yaml_node_string(_yaml, _init_string, "creator", "illustrator"); + if (!(_init_string.empty)) { _struct_composite.meta.creator_illustrator = _init_string; } + } { + _init_string = ""; _init_string = _get_yaml_node_string(_yaml, _init_string, "creator", "translator"); + if (!(_init_string.empty)) { _struct_composite.meta.creator_translator = _init_string; } } } else if (_yaml["creator"].type.string && _yaml["creator"].tag.match(rgx_y.yaml_tag_is_str) @@ -1433,43 +1209,27 @@ if (_struct_composite.meta.title_main.empty) { ) { _struct_composite.meta.title_main = _yaml["title"]["title"].get!string; } - if ("edition" in _yaml["title"] - && _yaml["title"]["edition"].type.string - && _yaml["title"]["edition"].tag.match(rgx_y.yaml_tag_is_str) - ) { - _struct_composite.meta.title_edition = _yaml["title"]["edition"].get!string; - } - if ("full" in _yaml["title"] - && _yaml["title"]["full"].type.string - && _yaml["title"]["full"].tag.match(rgx_y.yaml_tag_is_str) - ) { - _struct_composite.meta.title_full = _yaml["title"]["full"].get!string; - } - if ("language" in _yaml["title"] - && _yaml["title"]["language"].type.string - && _yaml["title"]["language"].tag.match(rgx_y.yaml_tag_is_str) - ) { - _struct_composite.meta.title_language = _yaml["title"]["language"].get!string; - } - if ("note" in _yaml["title"] - && _yaml["title"]["note"].type.string - && _yaml["title"]["note"].tag.match(rgx_y.yaml_tag_is_str) - ) { - _struct_composite.meta.title_note = _yaml["title"]["note"].get!string; + { + _init_string = ""; _init_string = _get_yaml_node_string(_yaml, _init_string, "title", "edition"); + if (!(_init_string.empty)) { _struct_composite.meta.title_edition = _init_string; } + } { + _init_string = ""; _init_string = _get_yaml_node_string(_yaml, _init_string, "title", "full"); + if (!(_init_string.empty)) { _struct_composite.meta.title_full = _init_string; } + } { + _init_string = ""; _init_string = _get_yaml_node_string(_yaml, _init_string, "title", "language"); + if (!(_init_string.empty)) { _struct_composite.meta.title_language = _init_string; } + } { + _init_string = ""; _init_string = _get_yaml_node_string(_yaml, _init_string, "title", "note"); + if (!(_init_string.empty)) { _struct_composite.meta.title_note = _init_string; } } - if ("subtitle" in _yaml["title"] - && _yaml["title"]["subtitle"].type.string - && _yaml["title"]["subtitle"].tag.match(rgx_y.yaml_tag_is_str) - ) { - _struct_composite.meta.title_subtitle = _yaml["title"]["subtitle"].get!string; - } else if ("sub" in _yaml["title"] - && _yaml["title"]["sub"].type.string - && _yaml["title"]["sub"].tag.match(rgx_y.yaml_tag_is_str) - ) { - _struct_composite.meta.title_subtitle = _yaml["title"]["sub"].get!string; + if ("subtitle" in _yaml["title"]) { + _init_string = ""; _init_string = _get_yaml_node_string(_yaml, _init_string, "title", "subtitle"); + if (!(_init_string.empty)) { _struct_composite.meta.title_subtitle = _init_string; } + } else if ("sub" in _yaml["title"]) { + _init_string = ""; _init_string = _get_yaml_node_string(_yaml, _init_string, "title", "sub"); + if (!(_init_string.empty)) { _struct_composite.meta.title_subtitle = _init_string; } } - } else if ( - _yaml["title"].type.string + } else if (_yaml["title"].type.string && _yaml["title"].tag.match(rgx_y.yaml_tag_is_str) ) { _struct_composite.meta.title_main = _yaml["title"].get!string; @@ -1494,23 +1254,15 @@ if ("classify" in _yaml if (_yaml["classify"].type.mapping && _yaml["classify"].tag.match(rgx_y.yaml_tag_is_map) ) { - if ("dewey" in _yaml["classify"] - && _yaml["classify"]["dewey"].type.string - && _yaml["classify"]["dewey"].tag.match(rgx_y.yaml_tag_is_str) - ) { - _struct_composite.meta.classify_dewey = _yaml["classify"]["dewey"].get!string; - } - if ("loc" in _yaml["classify"] - && _yaml["classify"]["loc"].type.string - && _yaml["classify"]["loc"].tag.match(rgx_y.yaml_tag_is_str) - ) { - _struct_composite.meta.classify_loc = _yaml["classify"]["loc"].get!string; - } - if ("keywords" in _yaml["classify"] - && _yaml["classify"]["keywords"].type.string - && _yaml["classify"]["keywords"].tag.match(rgx_y.yaml_tag_is_str) - ) { - _struct_composite.meta.classify_keywords = _yaml["classify"]["keywords"].get!string; + { + _init_string = ""; _init_string = _get_yaml_node_string(_yaml, _init_string, "classify", "dewey"); + if (!(_init_string.empty)) { _struct_composite.meta.classify_dewey = _init_string; } + } { + _init_string = ""; _init_string = _get_yaml_node_string(_yaml, _init_string, "classify", "loc"); + if (!(_init_string.empty)) { _struct_composite.meta.classify_loc = _init_string; } + } { + _init_string = ""; _init_string = _get_yaml_node_string(_yaml, _init_string, "classify", "keywords"); + if (!(_init_string.empty)) { _struct_composite.meta.classify_keywords = _init_string; } } if ("topic_register" in _yaml["classify"] && _yaml["classify"]["topic_register"].type.string @@ -1564,47 +1316,27 @@ if ("date" in _yaml if (_yaml["date"].type.mapping && _yaml["date"].tag.match(rgx_y.yaml_tag_is_map) ) { - if ("added_to_site" in _yaml["date"] - && _yaml["date"]["added_to_site"].type.string - && _yaml["date"]["added_to_site"].tag.match(rgx_y.yaml_tag_is_str) - ) { - _struct_composite.meta.date_added_to_site = _yaml["date"]["added_to_site"].get!string; - } - if ("available" in _yaml["date"] - && _yaml["date"]["available"].type.string - && _yaml["date"]["available"].tag.match(rgx_y.yaml_tag_is_str) - ) { - _struct_composite.meta.date_available = _yaml["date"]["available"].get!string; - } - if ("created" in _yaml["date"] - && _yaml["date"]["created"].type.string - && _yaml["date"]["created"].tag.match(rgx_y.yaml_tag_is_str) - ) { - _struct_composite.meta.date_created = _yaml["date"]["created"].get!string; - } - if ("issued" in _yaml["date"] - && _yaml["date"]["issued"].type.string - && _yaml["date"]["issued"].tag.match(rgx_y.yaml_tag_is_str) - ) { - _struct_composite.meta.date_issued = _yaml["date"]["issued"].get!string; - } - if ("modified" in _yaml["date"] - && _yaml["date"]["modified"].type.string - && _yaml["date"]["modified"].tag.match(rgx_y.yaml_tag_is_str) - ) { - _struct_composite.meta.date_modified = _yaml["date"]["modified"].get!string; - } - if ("published" in _yaml["date"] - && _yaml["date"]["published"].type.string - && _yaml["date"]["published"].tag.match(rgx_y.yaml_tag_is_str) - ) { - _struct_composite.meta.date_published = _yaml["date"]["published"].get!string; - } - if ("valid" in _yaml["date"] - && _yaml["date"]["valid"].type.string - && _yaml["date"]["valid"].tag.match(rgx_y.yaml_tag_is_str) - ) { - _struct_composite.meta.date_valid = _yaml["date"]["valid"].get!string; + { + _init_string = ""; _init_string = _get_yaml_node_string(_yaml, _init_string, "date", "added_to_site"); + if (!(_init_string.empty)) { _struct_composite.meta.date_added_to_site = _init_string; } + } { + _init_string = ""; _init_string = _get_yaml_node_string(_yaml, _init_string, "date", "available"); + if (!(_init_string.empty)) { _struct_composite.meta.date_available = _init_string; } + } { + _init_string = ""; _init_string = _get_yaml_node_string(_yaml, _init_string, "date", "created"); + if (!(_init_string.empty)) { _struct_composite.meta.date_created = _init_string; } + } { + _init_string = ""; _init_string = _get_yaml_node_string(_yaml, _init_string, "date", "issued"); + if (!(_init_string.empty)) { _struct_composite.meta.date_issued = _init_string; } + } { + _init_string = ""; _init_string = _get_yaml_node_string(_yaml, _init_string, "date", "modified"); + if (!(_init_string.empty)) { _struct_composite.meta.date_modified = _init_string; } + } { + _init_string = ""; _init_string = _get_yaml_node_string(_yaml, _init_string, "date", "published"); + if (!(_init_string.empty)) { _struct_composite.meta.date_published = _init_string; } + } { + _init_string = ""; _init_string = _get_yaml_node_string(_yaml, _init_string, "date", "valid"); + if (!(_init_string.empty)) { _struct_composite.meta.date_valid = _init_string; } } } } @@ -1620,23 +1352,15 @@ if ("notes" in _yaml if (_yaml["notes"].type.mapping && _yaml["notes"].tag.match(rgx_y.yaml_tag_is_map) ) { - if ("abstract" in _yaml["notes"] - && _yaml["notes"]["abstract"].type.string - && _yaml["notes"]["abstract"].tag.match(rgx_y.yaml_tag_is_str) - ) { - _struct_composite.meta.notes_abstract = _yaml["notes"]["abstract"].get!string; - } - if ("description" in _yaml["notes"] - && _yaml["notes"]["description"].type.string - && _yaml["notes"]["description"].tag.match(rgx_y.yaml_tag_is_str) - ) { - _struct_composite.meta.notes_description = _yaml["notes"]["description"].get!string; - } - if ("summary" in _yaml["notes"] - && _yaml["notes"]["summary"].type.string - && _yaml["notes"]["summary"].tag.match(rgx_y.yaml_tag_is_str) - ) { - _struct_composite.meta.notes_summary = _yaml["notes"]["summary"].get!string; + { + _init_string = ""; _init_string = _get_yaml_node_string(_yaml, _init_string, "notes", "abstract"); + if (!(_init_string.empty)) { _struct_composite.meta.notes_abstract = _init_string; } + } { + _init_string = ""; _init_string = _get_yaml_node_string(_yaml, _init_string, "notes", "description"); + if (!(_init_string.empty)) { _struct_composite.meta.notes_description = _init_string; } + } { + _init_string = ""; _init_string = _get_yaml_node_string(_yaml, _init_string, "notes", "summary"); + if (!(_init_string.empty)) { _struct_composite.meta.notes_summary = _init_string; } } } } @@ -1646,29 +1370,18 @@ if ("original" in _yaml if (_yaml["original"].type.mapping && _yaml["original"].tag.match(rgx_y.yaml_tag_is_map) ) { - if ("language" in _yaml["original"] - && _yaml["original"]["language"].type.string - && _yaml["original"]["language"].tag.match(rgx_y.yaml_tag_is_str) - ) { - _struct_composite.meta.original_language = _yaml["original"]["language"].get!string; - } - if ("language_char" in _yaml["original"] - && _yaml["original"]["language_char"].type.string - && _yaml["original"]["language_char"].tag.match(rgx_y.yaml_tag_is_str) - ) { - _struct_composite.meta.original_language_char = _yaml["original"]["language_char"].get!string; - } - if ("source" in _yaml["original"] - && _yaml["original"]["source"].type.string - && _yaml["original"]["source"].tag.match(rgx_y.yaml_tag_is_str) - ) { - _struct_composite.meta.original_source = _yaml["original"]["source"].get!string; - } - if ("title" in _yaml["original"] - && _yaml["original"]["title"].type.string - && _yaml["original"]["title"].tag.match(rgx_y.yaml_tag_is_str) - ) { - _struct_composite.meta.original_title = _yaml["original"]["title"].get!string; + { + _init_string = ""; _init_string = _get_yaml_node_string(_yaml, _init_string, "original", "language"); + if (!(_init_string.empty)) { _struct_composite.meta.original_language = _init_string; } + } { + _init_string = ""; _init_string = _get_yaml_node_string(_yaml, _init_string, "original", "language_char"); + if (!(_init_string.empty)) { _struct_composite.meta.original_language_char = _init_string; } + } { + _init_string = ""; _init_string = _get_yaml_node_string(_yaml, _init_string, "original", "source"); + if (!(_init_string.empty)) { _struct_composite.meta.original_source = _init_string; } + } { + _init_string = ""; _init_string = _get_yaml_node_string(_yaml, _init_string, "original", "title"); + if (!(_init_string.empty)) { _struct_composite.meta.original_title = _init_string; } } } } @@ -1683,59 +1396,34 @@ if ("rights" in _yaml if (_yaml["rights"].type.mapping && _yaml["rights"].tag.match(rgx_y.yaml_tag_is_map) ) { - if ("copyright" in _yaml["rights"] - && _yaml["rights"]["copyright"].type.string - && _yaml["rights"]["copyright"].tag.match(rgx_y.yaml_tag_is_str) - ) { - _struct_composite.meta.rights_copyright = check_input_markup(_yaml["rights"]["copyright"].get!string); - } - if ("copyright_text" in _yaml["rights"] - && _yaml["rights"]["copyright_text"].type.string - && _yaml["rights"]["copyright_text"].tag.match(rgx_y.yaml_tag_is_str) - ) { - _struct_composite.meta.rights_copyright_text = _yaml["rights"]["copyright_text"].get!string; - } - if ("copyright_audio" in _yaml["rights"] - && _yaml["rights"]["copyright_audio"].type.string - && _yaml["rights"]["copyright_audio"].tag.match(rgx_y.yaml_tag_is_str) - ) { - _struct_composite.meta.rights_copyright_audio = _yaml["rights"]["copyright_audio"].get!string; - } - if ("copyright_cover" in _yaml["rights"] - && _yaml["rights"]["copyright_cover"].type.string - && _yaml["rights"]["copyright_cover"].tag.match(rgx_y.yaml_tag_is_str) - ) { - _struct_composite.meta.rights_copyright_cover = _yaml["rights"]["copyright_cover"].get!string; - } - if ("copyright_illustrations" in _yaml["rights"] - && _yaml["rights"]["copyright_illustrations"].type.string - && _yaml["rights"]["copyright_illustrations"].tag.match(rgx_y.yaml_tag_is_str) - ) { - _struct_composite.meta.rights_copyright_illustrations = _yaml["rights"]["copyright_illustrations"].get!string; - } - if ("copyright_photographs" in _yaml["rights"] - && _yaml["rights"]["copyright_photographs"].type.string - && _yaml["rights"]["copyright_photographs"].tag.match(rgx_y.yaml_tag_is_str) - ) { - _struct_composite.meta.rights_copyright_photographs = _yaml["rights"]["copyright_photographs"].get!string; - } - if ("copyright_translation" in _yaml["rights"] - && _yaml["rights"]["copyright_translation"].type.string - && _yaml["rights"]["copyright_translation"].tag.match(rgx_y.yaml_tag_is_str) - ) { - _struct_composite.meta.rights_copyright_translation = _yaml["rights"]["copyright_translation"].get!string; - } - if ("copyright_video" in _yaml["rights"] - && _yaml["rights"]["copyright_video"].type.string - && _yaml["rights"]["copyright_video"].tag.match(rgx_y.yaml_tag_is_str) - ) { - _struct_composite.meta.rights_copyright_video = _yaml["rights"]["copyright_video"].get!string; + { + _init_string = ""; _init_string = _get_yaml_node_string(_yaml, _init_string, "rights", "copyright", true); + if (!(_init_string.empty)) { _struct_composite.meta.rights_copyright = _init_string; } + } { + _init_string = ""; _init_string = _get_yaml_node_string(_yaml, _init_string, "rights", "copyright_text"); + if (!(_init_string.empty)) { _struct_composite.meta.rights_copyright_text = _init_string; } + } { + _init_string = ""; _init_string = _get_yaml_node_string(_yaml, _init_string, "rights", "copyright_audio"); + if (!(_init_string.empty)) { _struct_composite.meta.rights_copyright_audio = _init_string; } + } { + _init_string = ""; _init_string = _get_yaml_node_string(_yaml, _init_string, "rights", "copyright_cover"); + if (!(_init_string.empty)) { _struct_composite.meta.rights_copyright_cover = _init_string; } + } { + _init_string = ""; _init_string = _get_yaml_node_string(_yaml, _init_string, "rights", "copyright_illustrations"); + if (!(_init_string.empty)) { _struct_composite.meta.rights_copyright_illustrations = _init_string; } + } { + _init_string = ""; _init_string = _get_yaml_node_string(_yaml, _init_string, "rights", "copyright_photographs"); + if (!(_init_string.empty)) { _struct_composite.meta.rights_copyright_photographs = _init_string; } + } { + _init_string = ""; _init_string = _get_yaml_node_string(_yaml, _init_string, "rights", "copyright_translation"); + if (!(_init_string.empty)) { _struct_composite.meta.rights_copyright_translation = _init_string; } + } { + _init_string = ""; _init_string = _get_yaml_node_string(_yaml, _init_string, "rights", "copyright_video"); + if (!(_init_string.empty)) { _struct_composite.meta.rights_copyright_video = _init_string; } } - if ("license" in _yaml["rights"] - && _yaml["rights"]["license"].type.string - && _yaml["rights"]["license"].tag.match(rgx_y.yaml_tag_is_str) - ) { - _struct_composite.meta.rights_license = check_input_markup(_yaml["rights"]["license"].get!string); + { + _init_string = ""; _init_string = _get_yaml_node_string(_yaml, _init_string, "rights", "license", true); + if (!(_init_string.empty)) { _struct_composite.meta.rights_license = _init_string; } } } } @@ -1755,21 +1443,19 @@ if ("rights" in _yaml module sisudoc.meta.conf_make_meta_json; @safe: static template contentJSONtoSpineStruct() { - import - std.algorithm, - std.array, - std.exception, - std.regex, - std.stdio, - std.string, - std.typecons, - std.utf, - std.conv : to; - import - sisudoc.meta.conf_make_meta_structs, - sisudoc.meta.conf_make_meta_json, - sisudoc.meta.defaults, - sisudoc.meta.rgx; + import std.algorithm; + import std.array; + import std.exception; + import std.regex; + import std.stdio; + import std.string; + import std.typecons; + import std.utf; + import std.conv : to; + import sisudoc.meta.conf_make_meta_structs; + import sisudoc.meta.conf_make_meta_json; + import sisudoc.meta.defaults; + import sisudoc.meta.rgx; ConfComposite _struct_composite; auto contentJSONtoSpineStruct(C,J,M)(C _struct_composite, J _json, M _manifested, string _identifier) { mixin spineRgxIn; @@ -2423,16 +2109,15 @@ if ("rights" in _json.object) { #+BEGIN_SRC d template configParseYAMLreturnSpineStruct() { import dyaml; - import - sisudoc.meta.conf_make_meta_structs, - sisudoc.meta.conf_make_meta_json; + import sisudoc.meta.conf_make_meta_structs; + import sisudoc.meta.conf_make_meta_json; mixin contentYAMLtoSpineStruct; - @system auto configParseYAMLreturnSpineStruct(T,CCm,M,O,Cfg)( - T _document_struct, - CCm _make_and_meta_struct, - M _manifested, - O _opt_action, - Cfg _cfg + @system ConfComposite configParseYAMLreturnSpineStruct(T,M,O,Cfg)( + T _document_struct, + ConfComposite _make_and_meta_struct, + M _manifested, + O _opt_action, + Cfg _cfg ){ Node _yaml; if (_document_struct.content.length > 0) { @@ -2461,32 +2146,29 @@ template configParseYAMLreturnSpineStruct() { #+NAME: doc_header_convert_to_struct #+BEGIN_SRC d template docHeaderMakeAndMetaTupYamlExtractAndConvertToStruct() { - import - std.exception, - std.regex, - std.stdio, - std.traits, - std.typecons, - std.utf, - std.conv : to; - import - dyaml; - import - sisudoc.meta.conf_make_meta_structs, - sisudoc.meta.conf_make_meta_json, - sisudoc.meta.rgx_yaml, - sisudoc.meta.rgx; + import std.exception; + import std.regex; + import std.stdio; + // import std.traits; + import std.typecons; + import std.utf; + import std.conv : to; + import dyaml; + import sisudoc.meta.conf_make_meta_structs; + import sisudoc.meta.conf_make_meta_json; + import sisudoc.meta.rgx_yaml; + import sisudoc.meta.rgx; mixin spineRgxIn; mixin contentJSONtoSpineStruct; static auto rgx = RgxI(); mixin spineRgxYamlTags; static auto rgx_y = RgxYaml(); - @system auto docHeaderMakeAndMetaTupYamlExtractAndConvertToStruct(CCm,Src,M,O,Cfg)( - Src header_src, - CCm _make_and_meta_struct, - M _manifested, - O _opt_action, - Cfg _cfg, + @system ConfComposite docHeaderMakeAndMetaTupYamlExtractAndConvertToStruct(Src,M,O,Cfg)( + Src header_src, + ConfComposite _make_and_meta_struct, + M _manifested, + O _opt_action, + Cfg _cfg, ) { Node _yaml; try { @@ -2593,7 +2275,11 @@ header. ** dlang rgx example #+BEGIN_SRC d -import std.conv, std.regex, std.range, std.file, std.stdio; +import std.conv; +import std.regex; +import std.range; +import std.file; +import std.stdio; import std.string : format; void main(string[] argv) { immutable ratio = 1.5824; // UK pounds to US dollar as of this writing diff --git a/org/meta_debugs.org b/org/meta_debugs.org index fcf8e3c..8580c8b 100644 --- a/org/meta_debugs.org +++ b/org/meta_debugs.org @@ -4,7 +4,7 @@ #+FILETAGS: :spine:debugs: #+AUTHOR: Ralph Amissah #+EMAIL: [[mailto:ralph.amissah@gmail.com][ralph.amissah@gmail.com]] -#+COPYRIGHT: Copyright (C) 2015 - 2024 Ralph Amissah +#+COPYRIGHT: Copyright (C) 2015 - 2025 Ralph Amissah #+LANGUAGE: en #+STARTUP: content hideblocks hidestars noindent entitiespretty #+PROPERTY: header-args :exports code @@ -52,24 +52,22 @@ template spineDebugs() { #+NAME: debug_imports #+BEGIN_SRC d -import - sisudoc.meta.defaults, - sisudoc.meta.rgx_files; -import - std.algorithm, - std.array, - std.container, - std.exception, - std.json, - std.stdio, - std.file, - std.path, - std.range, - std.regex, - std.string, - std.typecons, - std.utf, - std.conv : to; +import sisudoc.meta.defaults; +import sisudoc.meta.rgx_files; +import std.algorithm; +import std.array; +import std.container; +import std.exception; +import std.json; +import std.stdio; +import std.file; +import std.path; +import std.range; +import std.regex; +import std.string; +import std.typecons; +import std.utf; +import std.conv : to; #+END_SRC ** initialize :report: diff --git a/org/nix-develop-dlang-shared.org b/org/nix-develop-dlang-shared.org new file mode 100644 index 0000000..671fa8d --- /dev/null +++ b/org/nix-develop-dlang-shared.org @@ -0,0 +1,737 @@ +-*- mode: org -*- +#+TITLE: dlang related shared versions +#+DESCRIPTION: dlang +#+FILETAGS: :dlang:develop:shared: +#+AUTHOR: Ralph Amissah +#+EMAIL: [[mailto:ralph.amissah@gmail.com][ralph.amissah@gmail.com]] +#+COPYRIGHT: Copyright (C) 2015 - 2025 Ralph Amissah +#+LANGUAGE: en +#+STARTUP: content hideblocks hidestars noindent entitiespretty +#+PROPERTY: header-args :noweb yes +#+PROPERTY: header-args+ :exports code +#+PROPERTY: header-args+ :results no +#+PROPERTY: header-args+ :cache no +#+PROPERTY: header-args+ :padline no +#+PROPERTY: header-args+ :mkdirp yes +#+OPTIONS: H:3 num:nil toc:t \n:t ::t |:t ^:nil -:t f:t *:t + +* nix +** direnv +*** NOTES to update direnv in .envrc-nix + +- https://github.com/nix-community/nix-direnv + +check for latest version: + +- https://github.com/nix-community/nix-direnv/releases + +update direnv version and sha hash: +- emacs org/nix-develop-dlang-shared.org + +re-tangle file: + +- emacs org/config_env.org + updates: .envrc-nix + +update flake.lock: +- nix flake update && nix flake check && nix flake show + +*** version SET + +#+NAME: direnv-version +#+BEGIN_SRC org +<<direnv_version_3_0_7>> +#+END_SRC + +#+NAME: direnv-hash +#+BEGIN_SRC org +<<direnv_hash_3_0_7>> +#+END_SRC + +*** versions + +**** 3.0.7 + +#+NAME: direnv_version_3_0_7 +#+BEGIN_SRC org +3.0.7 +#+END_SRC + +#+NAME: direnv_hash_3_0_7 +#+BEGIN_SRC org +sha256-bn8WANE5a91RusFmRI7kS751ApelG02nMcwRekC/qzc= +#+END_SRC + +**** 3.0.6 + +#+NAME: direnv_version_3_0_6 +#+BEGIN_SRC org +3.0.6 +#+END_SRC + +#+NAME: direnv_hash_3_0_6 +#+BEGIN_SRC org +sha256-RYcUJaRMf8oF5LznDrlCXbkOQrywm0HDv1VjYGaJGdM= +#+END_SRC + +**** 3.0.4 + +#+NAME: direnv_version_3_0_4 +#+BEGIN_SRC org +3.0.4 +#+END_SRC + +#+NAME: direnv_hash_3_0_4 +#+BEGIN_SRC org +sha256-DzlYZ33mWF/Gs8DDeyjr8mnVmQGx7ASYqA5WlxwvBG4= +#+END_SRC + +**** 3.0.0 + +#+NAME: direnv_version_3_0_0 +#+BEGIN_SRC org +3.0.0 +#+END_SRC + +#+NAME: direnv_hash_3_0_0 +#+BEGIN_SRC org +sha256-21TMnI2xWX7HkSTjFFri2UaohXVj854mgvWapWrxRXg= +#+END_SRC + +**** 2.4.0 + +#+NAME: direnv_version_2_4_0 +#+BEGIN_SRC org +2.4.0 +#+END_SRC + +#+NAME: direnv_hash_2_4_0 +#+BEGIN_SRC org +sha256-XQzUAvL6pysIJnRJyR7uVpmUSZfc7LSgWQwq/4mBr1U= +#+END_SRC + +* dlang +** ldc +*** tags link + +- https://github.com/ldc-developers/ldc/tags + +*** NOTES to update ldc + +check for latest version: + +update ldc version and sha hash: +- emacs ./org/nix-develop-dlang-shared.org + +re-tangle files: +- emacs ./org/nixpkgs_overlays_d_related.org + updates: nix-overlays/ldc/package.nix +- emacs ./org/config_nix.org + updates: flake.nix +- emacs ./org/config_env.org + updates: .envrc-nix + +update flake.lock: +- nix flake update && nix flake check && nix flake show + +build: +- nix build ".#spine-overlay-ldc" --print-build-logs + +adjust nix overlay if required (to get started): +- git clone --depth 1 https://github.com/NixOS/nixpkgs +- find ./nixpkgs/pkgs/ -type d -name "ldc" + ./nixpkgs/pkgs/by-name/ld/ldc +- compare with overlay: + ./nix-overlays/ldc +- overlay is tangled from: + emacs ./org/nixpkgs_overlays_d_related.org + +*** version SET +**** version & sha256 nix composite + +#+NAME: ldc-version-info +#+BEGIN_SRC org +version = "<<ldc-version>>"; +sha256 = "<<ldc-hash>>"; +#+END_SRC + +**** select version SET OK ✓ + +#+NAME: ldc-version +#+BEGIN_SRC org +<<ldc_version_1_41_0>> +#+END_SRC + +#+NAME: ldc-hash +#+BEGIN_SRC org +<<ldc_hash_1_41_0>> +#+END_SRC + +#+NAME: ldc-llvm-set +#+BEGIN_SRC org +<<ldc_llvm_set_1_41_0>> +#+END_SRC + +*** versions +**** 1.41 OK ✓ +***** 1.41.0 OK ✓ + + - nix-prefetch-url --unpack https://github.com/ldc-developers/ldc/archive/refs/tags/v1.41.0.tar.gz + - nix-prefetch-url --unpack https://github.com/ldc-developers/ldc/releases/download/v${version}/ldc-${version}-src.tar.gz + +#+NAME: ldc_version_1_41_0 +#+BEGIN_SRC nix +1.41.0 +#+END_SRC + +#+NAME: ldc_hash_1_41_0 +#+BEGIN_SRC nix +sha256-6LcpY3LSFK4KgEiGrFp/LONu5Vr+/+vI04wEEpF3s+s= +#+END_SRC + +#+NAME: ldc_llvm_set_1_41_0 +#+BEGIN_SRC nix +llvm_20 +#+END_SRC + +**** 1.40 OK ✓ +***** 1.40.1 OK ✓ + + - nix-prefetch-url --unpack https://github.com/ldc-developers/ldc/archive/refs/tags/v1.40.1.tar.gz + - nix-prefetch-url --unpack https://github.com/ldc-developers/ldc/releases/download/v${version}/ldc-${version}-src.tar.gz + +#+NAME: ldc_version_1_40_1 +#+BEGIN_SRC nix +1.40.1 +#+END_SRC + +#+NAME: ldc_hash_1_40_1 +#+BEGIN_SRC nix +sha256-WdnwdH25A5oMNNY3uWG2hxnaAT+S1hNuP7LElH3uuuk= +#+END_SRC + +#+NAME: ldc_llvm_set_1_40_1 +#+BEGIN_SRC nix +llvm_19 +#+END_SRC + +***** 1.40.0 OK ✓ + + - nix-prefetch-url --unpack https://github.com/ldc-developers/ldc/archive/refs/tags/v1.40.0.tar.gz + - nix-prefetch-url --unpack https://github.com/ldc-developers/ldc/releases/download/v${version}/ldc-${version}-src.tar.gz + +#+NAME: ldc_version_1_40_0 +#+BEGIN_SRC nix +1.40.0 +#+END_SRC + +#+NAME: ldc_hash_1_40_0 +#+BEGIN_SRC nix +sha256-LT85DlAebecPpBUgZP0ayKTVrTUqN6DMJVEWTatLOxY= +#+END_SRC + +#+NAME: ldc_llvm_set_1_40_0 +#+BEGIN_SRC nix +llvm_19 +#+END_SRC + +**** 1.39 OK ✓ +***** 1.39.0 OK ✓ + +- nix-prefetch-url --unpack https://github.com/ldc-developers/ldc/archive/refs/tags/v1.39.0.tar.gz +- nix-prefetch-url --unpack https://github.com/ldc-developers/ldc/releases/download/v${version}/ldc-${version}-src.tar.gz + +#+NAME: ldc_version_1_39_0 +#+BEGIN_SRC nix +1.39.0 +#+END_SRC + +#+NAME: ldc_hash_1_39_0 +#+BEGIN_SRC nix +sha256-ZiG0ATsY6Asu2nus3Y404fvqIwtKYoHl1JRUDU5A6mo= +#+END_SRC + +#+NAME: ldc_llvm_set_1_39_0 +#+BEGIN_SRC nix +llvm_18 +#+END_SRC + +**** =< 1.32 +***** 1.32.2 + +- nix-prefetch-url --unpack https://github.com/ldc-developers/ldc/archive/refs/tags/v1.32.1.tar.gz + +#+NAME: ldc_version_1_32_2 +#+BEGIN_SRC nix +1.32.2 +#+END_SRC + +#+NAME: ldc_hash_1_32_2 +#+BEGIN_SRC nix +sha256-v6Sq7nQyChJohDyI4inzObLfCVOkvLT87VLr4N2hzZU= +#+END_SRC + +***** 1.32.1 + +- nix-prefetch-url --unpack https://github.com/ldc-developers/ldc/archive/refs/tags/v1.32.1.tar.gz + +#+NAME: ldc_version_1_32_1 +#+BEGIN_SRC nix +1.32.1 +#+END_SRC + +#+NAME: ldc_hash_1_32_1 +#+BEGIN_SRC nix +sha256-s1U7+qiVJDF+zSHrLGPG6g+acIChYnXkb9p+OrNX6g8= +#+END_SRC + +***** 1.32.0 + +- nix-prefetch-url --unpack https://github.com/ldc-developers/ldc/archive/refs/tags/v1.32.0.tar.gz + +#+NAME: ldc_version_1_32_0 +#+BEGIN_SRC nix +1.32.0 +#+END_SRC + +#+NAME: ldc_hash_1_32_0 +#+BEGIN_SRC nix +sha256-xO4L+RtBbdVkE1PZsme2pIYAxJnHgr6xEtLkYOMpvqw= +#+END_SRC + +***** 1.31.0 + +- nix-prefetch-url --unpack https://github.com/ldc-developers/ldc/archive/refs/tags/v1.31.0.tar.gz + +#+NAME: ldc_version_1_31_0 +#+BEGIN_SRC nix +1.31.0 +#+END_SRC + +#+NAME: ldc_hash_1_31_0 +#+BEGIN_SRC nix +sha256-8cjs6eHjWAbDRBvyT75mbN3Y7vN1WSwZzY/uRwHNVFg= +#+END_SRC + +***** 1.30.0 + +- nix-prefetch-url --unpack https://github.com/ldc-developers/ldc/archive/refs/tags/v1.30.0.tar.gz + +#+NAME: ldc_version_1_30_0 +#+BEGIN_SRC nix +1.30.0 +#+END_SRC + +#+NAME: ldc_hash_1_30_0 +#+BEGIN_SRC nix +sha256-/bs3bwgkLZF5IqaiKnc5gCF/r6MQBG/F1kWUkK8j2s0= +#+END_SRC + +** dmd +*** tags link + +- https://github.com/dlang/dmd/tags + +*** version SET + +#+NAME: dmd-version +#+BEGIN_SRC org +<<dmd_version_2_111_0>> +#+END_SRC + +#+NAME: dmd-hash +#+BEGIN_SRC org +<<dmd_hash_2_111_0>> +#+END_SRC + +#+NAME: phobos-hash +#+BEGIN_SRC org +<<phobos_hash_2_111_0>> +#+END_SRC + +*** versions +**** 2.111.0 OK ✓ + +- nix-prefetch-url --unpack https://github.com/dlang/dmd/archive/refs/tags/v2.111.0.tar.gz +- nix-prefetch-url --unpack https://github.com/dlang/phobos/archive/refs/tags/v2.111.0.tar.gz + +#+NAME: dmd_version_2_111_0 +#+BEGIN_SRC nix +2.111.0 +#+END_SRC + +#+NAME: phobos_hash_2_111_0 +#+BEGIN_SRC nix +sha256-9jySZbODoL8sULhYKj/l4+c/uiG5xY2dO240k9XQtPk= +#+END_SRC + +#+NAME: dmd_hash_2_111_0 +#+BEGIN_SRC nix +sha256-2bjsGa9nTny818dLRV6LKkes+Ycq8W+PFjwhGVrD5TM= +#+END_SRC + +**** 2.110.0 OK ✓ + +- nix-prefetch-url --unpack https://github.com/dlang/dmd/archive/refs/tags/v2.110.0.tar.gz +- nix-prefetch-url --unpack https://github.com/dlang/phobos/archive/refs/tags/v2.110.0.tar.gz + +#+NAME: dmd_version_2_110_0 +#+BEGIN_SRC nix +2.110.0 +#+END_SRC + +#+NAME: phobos_hash_2_110_0 +#+BEGIN_SRC nix +sha256-CmJpcHM+sIsaYBlpALCFoQFG+93s8gUyWmM0tYqjXkk= +#+END_SRC + +#+NAME: dmd_hash_2_110_0 +#+BEGIN_SRC nix +sha256-icXp9xWF2AI2gp7z/lQFAChmXfQePe9b5pbpQ9Mn19Y= +#+END_SRC + +**** 2.109.1 OK ✓ + +- nix-prefetch-url --unpack https://github.com/dlang/dmd/archive/refs/tags/v2.109.1.tar.gz +- nix-prefetch-url --unpack https://github.com/dlang/phobos/archive/refs/tags/v2.109.1.tar.gz + +#+NAME: dmd_version_2_109_1 +#+BEGIN_SRC nix +2.109.1 +#+END_SRC + +#+NAME: phobos_hash_2_109_1 +#+BEGIN_SRC nix +sha256-73I0k7tCBwe5tl4K6uMs3/nT2JTZ2SppFYzmokS4W5Y= +#+END_SRC + +#+NAME: dmd_hash_2_109_1 +#+BEGIN_SRC nix +sha256-3nCDPZnb4eQZmhYYxcH6qOmsP8or0KYuzAa5g/C9xdU= +#+END_SRC + +**** 2.109.0 OK ✓ + +- nix-prefetch-url --unpack https://github.com/dlang/dmd/archive/refs/tags/v2.109.0.tar.gz +- nix-prefetch-url --unpack https://github.com/dlang/phobos/archive/refs/tags/v2.109.0.tar.gz + +#+NAME: dmd_version_2_109_0 +#+BEGIN_SRC nix +2.109.0 +#+END_SRC + +#+NAME: dmd_hash_2_109_0 +#+BEGIN_SRC nix +sha256-unAZgyZyT6qomlj6pdlOx4h1SKuDjutl1/0FM9AhBWc= +#+END_SRC + +#+NAME: phobos_hash_2_109_0 +#+BEGIN_SRC nix +sha256-b91FeluFqhmjHd1wwkyq98QzIlwjE646xNj2n6hP3aM= +#+END_SRC + +**** 2.108.0 OK ✓ + +- nix-prefetch-url --unpack https://github.com/dlang/dmd/archive/refs/tags/v2.108.0.tar.gz +- nix-prefetch-url --unpack https://github.com/dlang/phobos/archive/refs/tags/v2.108.0.tar.gz + +#+NAME: dmd_version_2_108_0 +#+BEGIN_SRC nix +2.108.0 +#+END_SRC + +#+NAME: dmd_hash_2_108_0 +#+BEGIN_SRC nix +sha256-tlWcFgKtXzfqMMkOq4ezhZHdYCXFckjN5+m6jO4VH0U= +#+END_SRC + +#+NAME: phobos_hash_2_108_0 +#+BEGIN_SRC nix +sha256-uU8S4rABOfhpKh+MvSbclkbdf0hrsuKF8SIpWMnPpfU= +#+END_SRC + +**** 2.107.0 OK ✓ + +- nix-prefetch-url --unpack https://github.com/dlang/dmd/archive/refs/tags/v2.107.0.tar.gz +- nix-prefetch-url --unpack https://github.com/dlang/phobos/archive/refs/tags/v2.107.0.tar.gz + +#+NAME: dmd_version_2_107_0 +#+BEGIN_SRC nix +2.107.0 +#+END_SRC + +#+NAME: dmd_hash_2_107_0 +#+BEGIN_SRC nix +<<sha256-blank>> +#+END_SRC + +#+NAME: phobos_hash_2_107_0 +#+BEGIN_SRC nix +<<sha256-blank>> +#+END_SRC + +**** 2.106.1 OK ✓ + +- nix-prefetch-url --unpack https://github.com/dlang/dmd/archive/refs/tags/v2.106.1.tar.gz +- nix-prefetch-url --unpack https://github.com/dlang/phobos/archive/refs/tags/v2.106.1.tar.gz + +#+NAME: dmd_version_2_106_1 +#+BEGIN_SRC nix +2.106.1 +#+END_SRC + +#+NAME: dmd_hash_2_106_1 +#+BEGIN_SRC nix +sha256-vjYa/Pxrz7J2htXT+fa+xaeen/Vxne++lELbHTSXBK8= +#+END_SRC + +#+NAME: phobos_hash_2_106_1 +#+BEGIN_SRC nix +sha256-yRL9ub3u4mREG9PVxBvgQ/LDXD57RadPTZ2h08qyh/s= +#+END_SRC + +#+NAME: dmd_version +#+BEGIN_SRC nix +<<dmd_version_2_104_0>> +#+END_SRC + +#+NAME: dmd_hash +#+BEGIN_SRC nix +<<dmd_hash_2_104_0>> +#+END_SRC + +#+NAME: phobos_hash +#+BEGIN_SRC nix +<<phobos_hash_2_104_0>> +#+END_SRC + +** dub +*** tags link + +- https://github.com/dlang/dub/releases + +*** version SET + +#+NAME: dub-version +#+HEADER: :noweb yes +#+BEGIN_SRC org +<<dub_version_1_40_0>> +#+END_SRC + +#+NAME: dub-hash +#+BEGIN_SRC org +<<dub_hash_1_40_0>> +#+END_SRC + +*** versions +**** 1.40 OK ✓ +***** 1.40.0 + +- nix-prefetch-url --unpack https://github.com/dlang/dub/archive/refs/tags/v1.40.0.tar.gz + +#+NAME: dub_version_1_40_0 +#+BEGIN_SRC nix +1.40.0 +#+END_SRC + +#+NAME: dub_hash_1_40_0 +#+BEGIN_SRC nix +sha256-OirchEKf66gis70gCSTOYcrHLyHhCsyt/rTEGT83Vcc= +#+END_SRC + +**** 1.39 OK ✓ +***** 1.39.0 + +- nix-prefetch-url --unpack https://github.com/dlang/dub/archive/refs/tags/v1.39.0.tar.gz + +#+NAME: dub_version_1_39_0 +#+BEGIN_SRC nix +1.39.0 +#+END_SRC + +#+NAME: dub_hash_1_39_0 +#+BEGIN_SRC nix +sha256-73b15A9+hClD6IbuxTy9QZKpTKjUFYBuqGOclUyhrnM= +#+END_SRC + +**** 1.38 OK ✓ +***** 1.38.1 + +- nix-prefetch-url --unpack https://github.com/dlang/dub/archive/refs/tags/v1.38.1.tar.gz + +#+NAME: dub_version_1_38_1 +#+BEGIN_SRC nix +1.38.1 +#+END_SRC + +#+NAME: dub_hash_1_38_1 +#+BEGIN_SRC nix +sha256-8Lr/0sx4SKwU1aNOxZArta0RXpDM+EWl29ZsPDdPWFo= +#+END_SRC + +**** 1.36 OK ✓ +***** 1.36.0 + +- nix-prefetch-url --unpack https://github.com/dlang/dub/archive/refs/tags/v1.36.0.tar.gz + +#+NAME: dub_version_1_36_0 +#+BEGIN_SRC nix +1.36.0 +#+END_SRC + +#+NAME: dub_hash_1_36_0 +#+BEGIN_SRC nix +sha256-S8pls9zxbGAQTwqYf4bDT2q7Ow12S8bBsJE5UmsACBs= +#+END_SRC + +**** 1.35 OK ✓ +***** 1.35.0 + +- nix-prefetch-url --unpack https://github.com/dlang/dub/archive/refs/tags/v1.35.0.tar.gz + +#+NAME: dub_version_1_35_0 +#+BEGIN_SRC nix +1.35.0 +#+END_SRC + +#+NAME: dub_hash_1_35_0 +#+BEGIN_SRC nix +sha256-hC46XKE6lLLMLGMGl4vDnLDBQy6P/Z7o3ayDJj0Sois= +#+END_SRC + +**** 1.34 OK ✓ +***** 1.34.0 + +- nix-prefetch-url --unpack https://github.com/dlang/dub/archive/refs/tags/v1.34.0.tar.gz + +#+NAME: dub_version_1_34_0 +#+BEGIN_SRC nix +1.34.0 +#+END_SRC + +#+NAME: dub_hash_1_34_0 +#+BEGIN_SRC nix +sha256-hC46XKE6lLLMLGMGl4vDnLDBQy6P/Z7o3ayDJj0Sois= +#+END_SRC + +**** 1.33 OK ✓ +***** 1.33.1 + +- nix-prefetch-url --unpack https://github.com/dlang/dub/archive/refs/tags/v1.33.1.tar.gz + +#+NAME: dub_version_1_33_1 +#+BEGIN_SRC nix +1.33.1 +#+END_SRC + +#+NAME: dub_hash_1_33_1 +#+BEGIN_SRC nix +sha256-QFgUsO04VRXBDjGI5QQs7u9XrexG7/V34TMgJP1D8yA= +#+END_SRC + +***** 1.33.0 + +- nix-prefetch-url --unpack https://github.com/dlang/dub/archive/refs/tags/v1.33.0.tar.gz + +#+NAME: dub_version_1_33_0 +#+BEGIN_SRC nix +1.33.0 +#+END_SRC + +#+NAME: dub_hash_1_33_0 +#+BEGIN_SRC nix +sha256-4Mha7WF6cg3DIccfpvOnheuvgfziv/7wo8iFsPXO4yY= +#+END_SRC + +**** 1.32 OK ✓ +***** 1.32.1 + +- nix-prefetch-url --unpack https://github.com/dlang/dub/archive/refs/tags/v1.32.1.tar.gz + +#+NAME: dub_version_1_32_1 +#+BEGIN_SRC nix +1.32.1 +#+END_SRC + +#+NAME: dub_hash_1_32_1 +#+BEGIN_SRC nix +sha256-5pW3Fu3PQ1ZLJnsuh7fPpEBNbVQgGfFyiuMrAVOJKQA= +#+END_SRC + +** dtools + +- https://github.com/dlang/tools + +*** version SET + +#+NAME: dtools-version +#+BEGIN_SRC org +<<dtools_version_2_110_0>> +#+END_SRC + +#+NAME: dtools-hash +#+BEGIN_SRC org +<<dtools_hash_2_110_0>> +#+END_SRC + +*** versions +**** 2.110.0 OK ✓ + +- https://github.com/dlang/tools/releases/tag/v2.110.0 + +#+NAME: dtools_version_2_110_0 +#+BEGIN_SRC nix +2.110.0 +#+END_SRC + +#+NAME: dtools_hash_2_110_0 +#+BEGIN_SRC nix +sha256-xMEHnrstL5hAkhp8+/z1I2KZWZ7eztWZnUGLTKCfbBI= +#+END_SRC + +**** 2.109.1 OK ✓ + +- https://github.com/dlang/tools/releases/tag/v2.109.1 + +#+NAME: dtools_version_2_109_1 +#+BEGIN_SRC nix +2.109.1 +#+END_SRC + +#+NAME: dtools_hash_2_109_1 +#+BEGIN_SRC nix +sha256-Pfj8Kwf5AlcrHhLs5A/0vIFWLZaNR3ro+esbs7oWN9I= +#+END_SRC + +**** 2.104.1 OK ✓ + +- https://github.com/dlang/tools/releases/tag/v2.104.2 + +#+NAME: dtools_version_2_104_2 +#+BEGIN_SRC nix +2.104.2 +#+END_SRC + +#+NAME: dtools_hash_2_104_2 +#+BEGIN_SRC nix +sha256-Pfj8Kwf5AlcrHhLs5A/0vIFWLZaNR3ro+esbs7oWN9I= +#+END_SRC + +** sha256 blank_hash + +#+NAME: blank_hash +#+BEGIN_SRC org +<<sha256-blank>> +#+END_SRC + +#+NAME: sha256-blank +#+BEGIN_SRC org +sha256-0000000000000000000000000000000000000000000= +#+END_SRC + +#+NAME: assumed_hash +#+BEGIN_SRC org +sha256-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA= +#+END_SRC + +* __END__ diff --git a/org/nixpkgs_overlays_d_related.org b/org/nixpkgs_overlays_d_related.org index 5eedd71..3b39d7a 100644 --- a/org/nixpkgs_overlays_d_related.org +++ b/org/nixpkgs_overlays_d_related.org @@ -17,6 +17,24 @@ #+OPTIONS: H:3 num:nil toc:t \n:nil @:t ::t |:t ^:nil _:nil -:t f:t *:t <:t * nix ( written to ./dlang-nix-flakes/ ) +** check updates CHECK + +- https://github.com/nix-community/nix-direnv/releases +- https://github.com/dlang/dmd/tags +- https://github.com/ldc-developers/ldc/releases +- https://github.com/dlang/dub/releases +- https://github.com/dlang/tools/tags + +- dependencies sisudoc-spine + - https://github.com/dlang-community/d2sqlite3/releases + - https://github.com/dlang-community/D-YAML + - https://github.com/tjhann/imageformats/tags + - https://github.com/dlang-community/tinyendian/releases + +- dependencies sisudoc-spine-search-cgi + - https://raw.githubusercontent.com/adamdruppe/arsd/master/core.d + - https://raw.githubusercontent.com/adamdruppe/arsd/master/cgi.d + ** README #+HEADER: :tangle "../nix-overlays/README" @@ -27,7 +45,7 @@ ,#+FILETAGS: :dlang:build:tools: ,#+AUTHOR: Ralph Amissah ,#+EMAIL: [[mailto:ralph.amissah@gmail.com][ralph.amissah@gmail.com]] -,#+COPYRIGHT: Copyright (C) 2015 - 2024 Ralph Amissah +,#+COPYRIGHT: Copyright (C) 2015 - 2025 Ralph Amissah ,#+LANGUAGE: en ,#+STARTUP: content hideblocks hidestars noindent entitiespretty @@ -173,7 +191,7 @@ nix flake update && nix flake check --show-trace && nix flake info && echo "" && ** .gitignore #+HEADER: :tangle-NO "../nix-overlays/.gitignore" -#+BEGIN_SRC sh +#+BEGIN_SRC gitignore # git ls-files --others --exclude-from=.git/info/exclude # git check-ignore -v flake.lock # git clean -ix @@ -216,7 +234,7 @@ tmp/** *** nixDevEnv.sh (.envrc) #+HEADER: :tangle-NO "../nix-overlays/nixDevEnv.sh" -#+BEGIN_SRC sh +#+BEGIN_SRC shell if [ -f .envrc-local ]; then source_env_if_exists .envrc-local || source .envrc-local fi @@ -228,7 +246,7 @@ fi *** .envrc-local #+HEADER: :tangle-NO "../nix-overlays/.envrc-local" -#+BEGIN_SRC sh +#+BEGIN_SRC shell #if [[ !( -f ./nix-flakes.org) && -f ../dlang-nix-flakes.org ]]; then # # for editing purpose link to the .org file that creates ./dlang-nix-flakes/ content # ln -s ../dlang-nix-flakes.org ./nix-flakes.org @@ -243,16 +261,17 @@ fi *** .envrc-nix - https://github.com/nix-community/nix-direnv +- https://github.com/nix-community/nix-direnv/releases - source_url - direnv fetchurl "https://raw.githubusercontent.com/nix-community/nix-direnv/<<direnv-version>>/direnvrc" "<<direnv-sha>>" - ${NixDirEnvVersion} #+HEADER: :tangle-NO "../nix-overlays/.envrc-nix" -#+BEGIN_SRC sh +#+BEGIN_SRC shell NIX_ENFORCE_PURITY=1 # - https://github.com/nix-community/nix-direnv -NixDirEnvVersion="<<direnv-version>>" -NixDirEnvSHA="<<direnv-sha>>" +NixDirEnvVersion="<<direnv_version>>" +NixDirEnvSHA="<<direnv_hash>>" if ! has nix_direnv_version || ! nix_direnv_version ${NixDirEnvVersion}; then source_url "https://raw.githubusercontent.com/nix-community/nix-direnv/${NixDirEnvVersion}/direnvrc" "${NixDirEnvSHA}" fi @@ -272,49 +291,6 @@ use flake . #use flake .#default #+END_SRC -*** 3.0.4 - -#+NAME: direnv-version -#+BEGIN_SRC sh -3.0.4 -#+END_SRC - -#+NAME: direnv-sha -#+BEGIN_SRC sh -sha256-DzlYZ33mWF/Gs8DDeyjr8mnVmQGx7ASYqA5WlxwvBG4= -#+END_SRC - -*** 3.0.0 - -#+BEGIN_SRC sh -3.0.0 -#+END_SRC - -#+BEGIN_SRC sh -sha256-21TMnI2xWX7HkSTjFFri2UaohXVj854mgvWapWrxRXg= -#+END_SRC - -*** 2.4.0 - -#+BEGIN_SRC sh -2.4.0 -#+END_SRC - -#+BEGIN_SRC sh -sha256-XQzUAvL6pysIJnRJyR7uVpmUSZfc7LSgWQwq/4mBr1U= -#+END_SRC - -#+NAME: direnv-sha_ -#+BEGIN_SRC sh -sha256-0000000000000000000000000000000000000000000= -#+END_SRC - -#+BEGIN_SRC sh -- https://github.com/nix-community/nix-direnv -NixDirEnvSHA="sha256-0000000000000000000000000000000000000000000=" -direnv fetchurl https://raw.githubusercontent.com/nix-community/nix-direnv/${NixDirEnvVersion}/direnvrc -#+END_SRC - ** .nix *** flake.nix @@ -323,11 +299,11 @@ direnv fetchurl https://raw.githubusercontent.com/nix-community/nix-direnv/${Nix { description = "dub d package manager"; inputs.nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable"; - inputs.flake-utils.url = "github:numtide/flake-utils"; + #inputs.flake-utils.url = "github:numtide/flake-utils"; outputs = { self, nixpkgs, - flake-utils, + #flake-utils, ... }@inputs: let name = "dev-dub"; @@ -357,14 +333,14 @@ direnv fetchurl https://raw.githubusercontent.com/nix-community/nix-direnv/${Nix in { packages = forAllSystems (system: let pkgs-ovl = pkgsForSystem system; - pkgs = nixpkgsFor.${system}; + pkgs-nix = nixpkgsFor.${system}; in with pkgs-ovl; { default = dub; }); devShells = forAllSystems (system: let pkgs-ovl = pkgsForSystem system; - pkgs = nixpkgsFor.${system}; + pkgs-nix = nixpkgsFor.${system}; shellHook = '' ''; in @@ -374,32 +350,34 @@ direnv fetchurl https://raw.githubusercontent.com/nix-community/nix-direnv/${Nix inherit shell; inherit devEnv; packages = [ - gnumake ldc dub dtools + gnumake ]; inherit shellHook; }; dsh-overlay-ldc-dub = mkShell { - name = "overlay - ldc-<<ldc_version>> - dub-<<dub_version>>"; + name = "overlay - ldc-<<ldc_version>> - dub-<<dub_version>> - dtools-<<dtools_version>>"; inherit shell; inherit devEnv; packages = [ - gnumake ldc dub + dtools + gnumake ]; inherit shellHook; }; dsh-overlay-dmd-dub = mkShell { - name = "overlay - dmd-<<dmd_version>> - dub-<<dub_version>>"; + name = "overlay - dmd-<<dmd_version>> - dub-<<dub_version>> - dtools-<<dtools_version>>"; inherit shell; inherit devEnv; packages = [ - gnumake dmd dub + dtools + gnumake ]; inherit shellHook; }; @@ -408,11 +386,12 @@ direnv fetchurl https://raw.githubusercontent.com/nix-community/nix-direnv/${Nix inherit shell; inherit devEnv; packages = [ - gnumake ldc gtkd tilix dub + dtools + gnumake ]; inherit shellHook; }; @@ -421,9 +400,10 @@ direnv fetchurl https://raw.githubusercontent.com/nix-community/nix-direnv/${Nix # inherit shell; # inherit devEnv; # packages = [ - # gnumake # gdc # dub + # dtools + # gnumake # ]; # inherit shellHook; #}; @@ -431,16 +411,27 @@ direnv fetchurl https://raw.githubusercontent.com/nix-community/nix-direnv/${Nix name = "nixpkgs - ldc - dub"; inherit shell; inherit devEnv; - #nativeBuildInputs = [ dub dmd ldc gdc gnumake ]; - #buildInputs = [ sqlite ]; - packages = with pkgs; [ + packages = with pkgs-nix; [ ldc dub + dtools gnumake ]; inherit shellHook; }; - default = import ./shell.nix {inherit pkgs;}; + dsh-nixpkgs-dmd-dub = mkShell { + name = "nixpkgs - ldc - dub"; + inherit shell; + inherit devEnv; + packages = with pkgs-nix; [ + dmd + dub + dtools + gnumake + ]; + inherit shellHook; + }; + default = import ./shell.nix {inherit pkgs-nix;}; }); }; } @@ -452,21 +443,21 @@ direnv fetchurl https://raw.githubusercontent.com/nix-community/nix-direnv/${Nix #+HEADER: :tangle-mode (identity #o755) #+HEADER: :shebang "#!/usr/bin/env -S nix-shell -I nixpkgs=/srv/nix/nixpkgs --pure\n#!nix-shell -i bash" #+BEGIN_SRC nix -{pkgs ? import <nixpkgs> {}}: -with pkgs; +{pkgs-nix ? import <nixpkgs> {}}: +with pkgs-nix; mkShell { buildInputs = [ # â¯â¯â¯ nix_related #nix direnv - nixVersions.nix_2_21 #nixVersions.latest #nixVersions.git + nixVersions.latest #nixVersions.latest #nixVersions.git nix-prefetch-git validatePkgConfig nix-output-monitor #nix-tree #nvd jq #gx - #alejandra + #nixfmt-rfc-style git # â¯â¯â¯ dev ldc @@ -512,33 +503,43 @@ pkgs.callPackage ./shell.nix {} - version in nixpkgs: - https://search.nixos.org/packages?channel=unstable&show=ldc&from=0&size=100&sort=relevance&type=packages&query=ldc -**** notes - -- OK ldc 1.32.2 tested - -*** overlays -**** default.nix OK ✓ +*** overlays OK ✓ +**** default.nix #+HEADER: :tangle "../nix-overlays/ldc/default.nix" #+BEGIN_SRC nix -import ./generic.nix { - <<ldc_version_info>> -} +import ./package.nix #+END_SRC -**** generic.nix OK ✓ (unaltered) +**** package.nix OK ✓ -#+HEADER: :tangle "../nix-overlays/ldc/generic.nix" +#+HEADER: :tangle "../nix-overlays/ldc/package.nix" #+BEGIN_SRC nix -{ version, sha256 }: -{ lib, stdenv, fetchurl, cmake, ninja, <<ldc_llvm_set>>, curl, tzdata -, libconfig, lit, gdb, unzip, darwin, bash -, callPackage, makeWrapper, runCommand, targetPackages -, ldcBootstrap ? callPackage ./bootstrap.nix { } +{ + lib, + stdenv, + fetchFromGitHub, + fetchpatch, + callPackage, + makeWrapper, + removeReferencesTo, + runCommand, + writeText, + targetPackages, + cmake, + ninja, + <<ldc_llvm_set>>, + curl, + tzdata, + lit, + gdb, + unzip, + + ldcBootstrap ? callPackage ./bootstrap.nix { }, }: let - pathConfig = runCommand "ldc-lib-paths" {} '' + pathConfig = runCommand "ldc-lib-paths" { } '' mkdir $out echo ${tzdata}/share/zoneinfo/ > $out/TZDatabaseDirFile echo ${curl.out}/lib/libcurl${stdenv.hostPlatform.extensions.sharedLibrary} > $out/LibcurlPathFile @@ -546,60 +547,54 @@ let in -stdenv.mkDerivation rec { +stdenv.mkDerivation (finalAttrs: { pname = "ldc"; - inherit version; + version = "<<ldc_version>>"; - src = fetchurl { - url = "https://github.com/ldc-developers/ldc/releases/download/v${version}/ldc-${version}-src.tar.gz"; - inherit sha256; + src = fetchFromGitHub { + owner = "ldc-developers"; + repo = "ldc"; + rev = "v${finalAttrs.version}"; + hash = "<<ldc_hash>>"; + fetchSubmodules = true; }; # https://issues.dlang.org/show_bug.cgi?id=19553 hardeningDisable = [ "fortify" ]; - postUnpack = '' - patchShebangs . - '' - + '' - rm ldc-${version}-src/tests/dmd/fail_compilation/mixin_gc.d - rm ldc-${version}-src/tests/dmd/runnable/xtest46_gc.d - rm ldc-${version}-src/tests/dmd/runnable/testptrref_gc.d - - # test depends on current year - rm ldc-${version}-src/tests/dmd/compilable/ddocYear.d - '' - + lib.optionalString stdenv.hostPlatform.isDarwin '' - # https://github.com/NixOS/nixpkgs/issues/34817 - rm -r ldc-${version}-src/tests/plugins/addFuncEntryCall - ''; - postPatch = '' - # Setting SHELL=$SHELL when dmd testsuite is run doesn't work on Linux somehow - #substituteInPlace tests/dmd/Makefile --replace "SHELL=/bin/bash" "SHELL=${bash}/bin/bash" - '' - + lib.optionalString stdenv.hostPlatform.isLinux '' - substituteInPlace runtime/phobos/std/socket.d --replace "assert(ih.addrList[0] == 0x7F_00_00_01);" "" - '' - + lib.optionalString stdenv.hostPlatform.isDarwin '' - substituteInPlace runtime/phobos/std/socket.d --replace "foreach (name; names)" "names = []; foreach (name; names)" + patchShebangs runtime tools tests + + rm tests/dmd/fail_compilation/mixin_gc.d + rm tests/dmd/runnable/xtest46_gc.d + rm tests/dmd/runnable/testptrref_gc.d + + # test depends on current year + rm tests/dmd/compilable/ddocYear.d + '' + lib.optionalString stdenv.hostPlatform.isLinux '' + substituteInPlace runtime/phobos/std/socket.d --replace-fail "assert(ih.addrList[0] == 0x7F_00_00_01);" "" + '' + lib.optionalString stdenv.hostPlatform.isDarwin '' + substituteInPlace runtime/phobos/std/socket.d --replace-fail "foreach (name; names)" "names = []; foreach (name; names)" + + # https://github.com/NixOS/nixpkgs/issues/34817 + rm -r tests/plugins/addFuncEntryCall ''; nativeBuildInputs = [ cmake ldcBootstrap lit lit.python <<ldc_llvm_set>>.dev makeWrapper ninja unzip - ] - ++ lib.optionals stdenv.hostPlatform.isDarwin [ - darwin.apple_sdk.frameworks.Foundation - ] - ++ lib.optionals (!stdenv.hostPlatform.isDarwin) [ + ] ++ lib.optionals (!stdenv.hostPlatform.isDarwin) [ # https://github.com/NixOS/nixpkgs/pull/36378#issuecomment-385034818 gdb ]; buildInputs = [ curl tzdata ]; + outputs = [ "out" "include" ]; + outputInclude = "include"; + cmakeFlags = [ "-DD_FLAGS=-d-version=TZDatabaseDir;-d-version=LibcurlPath;-J${pathConfig}" + "-DINCLUDE_INSTALL_DIR=${placeholder "include"}/include/d" ]; postConfigure = '' @@ -608,7 +603,7 @@ stdenv.mkDerivation rec { makeFlags = [ "DMD=$DMD" ]; - fixNames = lib.optionalString stdenv.hostPlatform.isDarwin '' + fixNames = lib.optionalString stdenv.hostPlatform.isDarwin '' fixDarwinDylibNames() { local flags=() @@ -628,14 +623,13 @@ stdenv.mkDerivation rec { ''; # https://github.com/ldc-developers/ldc/issues/2497#issuecomment-459633746 - additionalExceptions = lib.optionalString stdenv.hostPlatform.isDarwin - "|druntime-test-shared"; + additionalExceptions = lib.optionalString stdenv.hostPlatform.isDarwin "|druntime-test-shared"; checkPhase = '' # Build default lib test runners ninja -j$NIX_BUILD_CORES all-test-runners - ${fixNames} + ${finalAttrs.fixNames} # Run dmd testsuite export DMD_TESTSUITE_MAKE_ARGS="-j$NIX_BUILD_CORES DMD=$DMD" @@ -648,90 +642,89 @@ stdenv.mkDerivation rec { ctest -V -R "lit-tests" # Run default lib unittests - ctest -j$NIX_BUILD_CORES --output-on-failure -E "ldc2-unittest|lit-tests|dmd-testsuite${additionalExceptions}" + ctest -j$NIX_BUILD_CORES --output-on-failure -E "ldc2-unittest|lit-tests|dmd-testsuite${finalAttrs.additionalExceptions}" ''; postInstall = '' wrapProgram $out/bin/ldc2 \ - --prefix PATH ":" "${targetPackages.stdenv.cc}/bin" \ - --set-default CC "${targetPackages.stdenv.cc}/bin/cc" - ''; + --prefix PATH : ${targetPackages.stdenv.cc}/bin \ + --set-default CC ${targetPackages.stdenv.cc}/bin/cc + ''; + + preFixup = '' + find $out/bin -type f -exec ${removeReferencesTo}/bin/remove-references-to -t ${ldcBootstrap} '{}' + + ''; + + disallowedReferences = [ ldcBootstrap ]; meta = with lib; { - description = "The LLVM-based D compiler"; + description = "LLVM-based D compiler"; homepage = "https://github.com/ldc-developers/ldc"; + changelog = "https://github.com/ldc-developers/ldc/releases/tag/v${finalAttrs.version}"; # from https://github.com/ldc-developers/ldc/blob/master/LICENSE license = with licenses; [ bsd3 boost mit ncsa gpl2Plus ]; + mainProgram = "ldc2"; maintainers = with maintainers; [ lionello jtbx ]; platforms = [ "x86_64-linux" "i686-linux" "aarch64-linux" "x86_64-darwin" "aarch64-darwin" ]; }; -} -#+END_SRC - -**** bootstrap.nix -#+HEADER: :tangle "../nix-overlays/ldc/bootstrap.nix" -#+BEGIN_SRC nix -<<ldc_bootstrap_1-25-0>> -#+END_SRC - -#+NAME: ldc_bootstrap_1-25-0 -#+BEGIN_SRC nix -{ callPackage }: -callPackage ./binary.nix { - version = "1.25.0"; - hashes = { - # Get these from `nix-prefetch-url https://github.com/ldc-developers/ldc/releases/download/v1.19.0/ldc2-1.19.0-osx-x86_64.tar.xz` etc.. - osx-x86_64 = "sha256-6iKnbS+oalLKmyS8qYD/wS21b7+O+VgsWG2iT4PrWPU="; - linux-x86_64 = "sha256-sfg47RdlsIpryc3iZvE17OtLweh3Zw6DeuNJYgpuH+o="; - linux-aarch64 = "sha256-UDZ43x4flSo+SfsPeE8juZO2Wtk2ZzwySk0ADHnvJBI="; - osx-arm64 = "sha256-O/x0vy0wwQFaDc4uWSeMhx+chJKqbQb6e5QNYf+7DCw="; + passthru.ldcBootstrap = ldcBootstrap; + passthru.tests = + let + ldc = finalAttrs.finalPackage; + helloWorld = stdenv.mkDerivation (finalAttrs: { + name = "ldc-hello-world"; + src = writeText "hello_world.d" '' + module hello_world; + import std.stdio; + void main() { + writeln("Hello, world!"); + } + ''; + dontUnpack = true; + buildInputs = [ ldc ]; + dFlags = [ ]; + buildPhase = '' + ldc2 ${lib.escapeShellArgs finalAttrs.dFlags} -of=test $src + ''; + installPhase = '' + mkdir -p $out/bin + mv test $out/bin + ''; + }); + in { + # Without -shared, built binaries should not contain + # references to the compiler binaries. + no-references-to-compiler = helloWorld.overrideAttrs { + disallowedReferences = [ ldc ]; + dFlags = ["-g"]; + }; }; -} +}) #+END_SRC -#+NAME: ldc_bootstrap_1-30-0 -#+BEGIN_SRC nix -{ callPackage }: -callPackage ./binary.nix { - version = "1.30.0"; - hashes = { - # Get these from `nix store prefetch-file https://github.com/ldc-developers/ldc/releases/download/v1.19.0/ldc2-1.19.0-osx-x86_64.tar.xz` etc.. - osx-x86_64 = "sha256-AAWZvxuZC82xvrW6fpYm783TY+H8k3DvqE94ZF1yjmk="; - linux-x86_64 = "sha256-V4TUzEfQhFrwiX07dHOgjdAoGkzausCkhnQIQNAU/eE="; - linux-aarch64 = "sha256-kTeglub75iv/jWWNPCn15aCGAbmck0RQl6L7bFOUu7Y="; - osx-arm64 = "sha256-Nb/owBdIeroB9jLMDvwjo8bvsTC9vFyJPLMTOMsSAd4="; - }; -} -#+END_SRC +**** bootstrap.nix - this is the ldc bootstrap in current use, nixpkgs: +#+HEADER: :tangle "../nix-overlays/ldc/bootstrap.nix" #+BEGIN_SRC nix -{ callPackage }: -callPackage ./binary.nix { - version = "1.30.0"; - hashes = { - # Get these from `nix store prefetch-file https://github.com/ldc-developers/ldc/releases/download/v1.19.0/ldc2-1.19.0-osx-x86_64.tar.xz` etc.. - osx-x86_64 = "sha256-AAWZvxuZC82xvrW6fpYm783TY+H8k3DvqE94ZF1yjmk="; - linux-x86_64 = "sha256-V4TUzEfQhFrwiX07dHOgjdAoGkzausCkhnQIQNAU/eE="; - linux-aarch64 = "sha256-kTeglub75iv/jWWNPCn15aCGAbmck0RQl6L7bFOUu7Y="; - osx-arm64 = "sha256-Nb/owBdIeroB9jLMDvwjo8bvsTC9vFyJPLMTOMsSAd4="; - }; -} -#+END_SRC - -**** binary.nix (unaltered) - -#+HEADER: :tangle "../nix-overlays/ldc/binary.nix" -#+BEGIN_SRC nix -{ lib, stdenv, fetchurl, curl, tzdata, autoPatchelfHook, fixDarwinDylibNames, libxml2 -, version, hashes }: +{ + lib, + stdenv, + fetchurl, + curl, + tzdata, + autoPatchelfHook, + fixDarwinDylibNames, + libxml2, +}: let inherit (stdenv) hostPlatform; OS = if hostPlatform.isDarwin then "osx" else hostPlatform.parsed.kernel.name; ARCH = if hostPlatform.isDarwin && hostPlatform.isAarch64 then "arm64" else hostPlatform.parsed.cpu.name; + <<ldc_bootstrap_1-41-0_hashes>> in stdenv.mkDerivation { pname = "ldc-bootstrap"; inherit version; @@ -739,7 +732,7 @@ in stdenv.mkDerivation { src = fetchurl rec { name = "ldc2-${version}-${OS}-${ARCH}.tar.xz"; url = "https://github.com/ldc-developers/ldc/releases/download/v${version}/${name}"; - sha256 = hashes."${OS}-${ARCH}" or (throw "missing bootstrap sha256 for ${OS}-${ARCH}"); + hash = hashes."${OS}-${ARCH}" or (throw "missing bootstrap hash for ${OS}-${ARCH}"); }; dontConfigure = true; @@ -760,7 +753,7 @@ in stdenv.mkDerivation { ''; meta = with lib; { - description = "The LLVM-based D Compiler"; + description = "LLVM-based D Compiler"; homepage = "https://github.com/ldc-developers/ldc"; # from https://github.com/ldc-developers/ldc/blob/master/LICENSE license = with licenses; [ bsd3 boost mit ncsa gpl2Plus ]; @@ -770,271 +763,47 @@ in stdenv.mkDerivation { } #+END_SRC -*** versions SET -**** selected version SET OK ✓ -***** version & sha256 nix composite - -#+NAME: ldc_version_info -#+BEGIN_SRC nix -version = "<<ldc_version>>"; -sha256 = "<<ldc_hash>>"; -#+END_SRC - -***** select version SET OK ✓ - -#+NAME: ldc_version -#+BEGIN_SRC nix -<<ldc_version_1_39_0>> -#+END_SRC - -#+NAME: ldc_hash -#+BEGIN_SRC nix -<<ldc_hash_1_39_0>> -#+END_SRC - -#+NAME: ldc_llvm_set -#+BEGIN_SRC nix -<<ldc_llvm_set_1_39_0>> -#+END_SRC - -**** 1.39 OK ✓ -***** 1.39.0 OK ✓ - -- nix-prefetch-url --unpack https://github.com/ldc-developers/ldc/archive/refs/tags/v1.39.0.tar.gz -- nix-prefetch-url --unpack https://github.com/ldc-developers/ldc/releases/download/v${version}/ldc-${version}-src.tar.gz - -#+NAME: ldc_version_1_39_0 -#+BEGIN_SRC nix -1.39.0 -#+END_SRC - -#+NAME: ldc_hash_1_39_0 -#+BEGIN_SRC nix -sha256-g5usNvYHMxjjbwsWN2fgO9vT9X2ZJWuXSUrEObWaRWI= -#+END_SRC - -#+NAME: ldc_llvm_set_1_39_0 -#+BEGIN_SRC nix -llvm_18 -#+END_SRC - -**** 1.38 OK ✓ -***** 1.38.0 OK ✓ - -- nix-prefetch-url --unpack https://github.com/ldc-developers/ldc/archive/refs/tags/v1.38.0.tar.gz -- nix-prefetch-url --unpack https://github.com/ldc-developers/ldc/releases/download/v${version}/ldc-${version}-src.tar.gz - -#+NAME: ldc_version_1_38_0 -#+BEGIN_SRC nix -1.38.0 -#+END_SRC - -#+NAME: ldc_hash_1_38_0 -#+BEGIN_SRC nix -sha256-ymI47+Ai40zTB2dB+KBwxqN3GWNRxhlJpIpIyZN5844= -#+END_SRC - -#+NAME: ldc_llvm_set_1_38_0 -#+BEGIN_SRC nix -llvm_18 -#+END_SRC - -**** 1.37 OK ✓ -***** 1.37.0 OK ✓ +***** bootstrap.nix version SELECT +****** bootstrap.nix ldc2-1.41.0 -- nix-prefetch-url --unpack https://github.com/ldc-developers/ldc/archive/refs/tags/v1.37.0.tar.gz -- nix-prefetch-url --unpack https://github.com/ldc-developers/ldc/releases/download/v${version}/ldc-${version}-src.tar.gz - -#+NAME: ldc_version_1_37_0 +#+NAME: ldc_bootstrap_1-41-0_hashes #+BEGIN_SRC nix -1.37.0 +version = "1.41.0"; +hashes = { + # Get these from `nix store prefetch-file https://github.com/ldc-developers/ldc/releases/download/v1.41.0/ldc2-1.41.0-osx-x86_64.tar.xz` etc.. + osx-x86_64 = "sha256-W8/0i2PFakXbqs2wxb3cjqa+htSgx7LHyDGOBH9yEYE="; + linux-x86_64 = "sha256-SkOUV/D+WeadAv1rV1Sfw8h60PVa2fueQlB7b44yfI8="; + linux-aarch64 = "sha256-HEuVChPVM3ntT1ZDZsJ+xW1iYeIWhogNcMdIaz6Me6g="; + osx-arm64 = "sha256-FXJnBC8QsEchBhkxSqcZtPC/iHYB6TscY0qh7LPFRuQ="; +}; #+END_SRC -#+NAME: ldc_hash_1_37_0 -#+BEGIN_SRC nix -sha256-UOgK48Q2yQY3wsPUDzktwotyH3qrOh48o79PnCjboGQ= -#+END_SRC +****** bootstrap.nix ldc2-1.30.0 -#+NAME: ldc_llvm_set_1_37_0 +#+NAME: ldc_bootstrap_1-30-0_hashes #+BEGIN_SRC nix -llvm_17 +version = "1.30.0"; +hashes = { + # Get these from `nix store prefetch-file https://github.com/ldc-developers/ldc/releases/download/v1.30.0/ldc2-1.30.0-osx-x86_64.tar.xz` etc.. + osx-x86_64 = "sha256-AAWZvxuZC82xvrW6fpYm783TY+H8k3DvqE94ZF1yjmk="; + linux-x86_64 = "sha256-V4TUzEfQhFrwiX07dHOgjdAoGkzausCkhnQIQNAU/eE="; + linux-aarch64 = "sha256-kTeglub75iv/jWWNPCn15aCGAbmck0RQl6L7bFOUu7Y="; + osx-arm64 = "sha256-Nb/owBdIeroB9jLMDvwjo8bvsTC9vFyJPLMTOMsSAd4="; +}; #+END_SRC -**** 1.36 OK ✓ -***** 1.36.0 OK ✓ +****** bootstrap.nix ldc2-1.25.0 -- nix-prefetch-url --unpack https://github.com/ldc-developers/ldc/archive/refs/tags/v1.36.0.tar.gz - -#+NAME: ldc_version_1_36_0 +#+NAME: ldc_bootstrap_1-25-0_hashes #+BEGIN_SRC nix -1.36.0 -#+END_SRC - -#+NAME: ldc_hash_1_36_0 -#+BEGIN_SRC nix -sha256-oAx5BzEjqIfBf0Rsd4KklVajUSo9Natna31Trhu41u8= -#+END_SRC - -#+NAME: ldc_llvm_set_1_36_0 -#+BEGIN_SRC nix -llvm_17 -#+END_SRC - -**** 1.35 OK ✓ -***** 1.35.0 OK ✓ - -- nix-prefetch-url --unpack https://github.com/ldc-developers/ldc/archive/refs/tags/v1.35.0.tar.gz - -#+NAME: ldc_version_1_35_0 -#+BEGIN_SRC nix -1.35.0 -#+END_SRC - -#+NAME: ldc_hash_1_35_0 -#+BEGIN_SRC nix -sha256-bilpk3BsdsCT5gkTmqCz+HBDVfoPN1b2dY141EIm36A= -#+END_SRC - -#+NAME: ldc_llvm_set_1_35_0 -#+BEGIN_SRC nix -llvm_16 -#+END_SRC - -**** 1.34 OK ✓ -***** 1.34.0 OK ✓ - -- nix-prefetch-url --unpack https://github.com/ldc-developers/ldc/archive/refs/tags/v1.34.0.tar.gz - -#+NAME: ldc_version_1_34_0 -#+BEGIN_SRC nix -1.34.0 -#+END_SRC - -#+NAME: ldc_hash_1_34_0 -#+BEGIN_SRC nix -sha256-MAXG6ceSWFOMg5eXZnZ6WePXTzy5CsLLDc5ddXO+txk= -#+END_SRC - -#+NAME: ldc_llvm_set_1_34_0 -#+BEGIN_SRC nix -llvm_16 -#+END_SRC - -**** 1.33 OK ✓ -***** 1.33.0 OK ✓ - -- nix-prefetch-url --unpack https://github.com/ldc-developers/ldc/archive/refs/tags/v1.33.0.tar.gz - -#+NAME: ldc_version_1_33_0 -#+BEGIN_SRC nix -1.33.0 -#+END_SRC - -#+NAME: ldc_hash_1_33_0 -#+BEGIN_SRC nix -sha256-g0wbCMX1s6mPnvuvhjLw03fRfawcFxDkg8nuaEZYw6g= -#+END_SRC - -#+NAME: ldc_llvm_set_1_33_0 -#+BEGIN_SRC nix -llvm_15 -#+END_SRC - -**** 1.32 -***** 1.32.2 OK ✓ - -- nix-prefetch-url --unpack https://github.com/ldc-developers/ldc/archive/refs/tags/v1.32.1.tar.gz - -#+NAME: ldc_version_1_32_2 -#+BEGIN_SRC nix -1.32.2 -#+END_SRC - -#+NAME: ldc_hash_1_32_2 -#+BEGIN_SRC nix -sha256-v6Sq7nQyChJohDyI4inzObLfCVOkvLT87VLr4N2hzZU= -#+END_SRC - -#+NAME: ldc_llvm_set_1_32_2 -#+BEGIN_SRC nix -llvm_15 -#+END_SRC - -***** 1.32.1 - -- nix-prefetch-url --unpack https://github.com/ldc-developers/ldc/archive/refs/tags/v1.32.1.tar.gz - -#+NAME: ldc_version_1_32_1 -#+BEGIN_SRC nix -1.32.1 -#+END_SRC - -#+NAME: ldc_hash_1_32_1 -#+BEGIN_SRC nix -sha256-s1U7+qiVJDF+zSHrLGPG6g+acIChYnXkb9p+OrNX6g8= -#+END_SRC - -#+NAME: ldc_llvm_set_1_32_1 -#+BEGIN_SRC nix -llvm_14 -#+END_SRC - -***** 1.32.0 - -- nix-prefetch-url --unpack https://github.com/ldc-developers/ldc/archive/refs/tags/v1.32.0.tar.gz - -#+NAME: ldc_version_1_32_0 -#+BEGIN_SRC nix -1.32.0 -#+END_SRC - -#+NAME: ldc_hash_1_32_0 -#+BEGIN_SRC nix -sha256-xO4L+RtBbdVkE1PZsme2pIYAxJnHgr6xEtLkYOMpvqw= -#+END_SRC - -#+NAME: ldc_llvm_set_1_32_0 -#+BEGIN_SRC nix -llvm_14 -#+END_SRC - -**** 1.31 -***** 1.31.0 - -- nix-prefetch-url --unpack https://github.com/ldc-developers/ldc/archive/refs/tags/v1.31.0.tar.gz - -#+NAME: ldc_version_1_31_0 -#+BEGIN_SRC nix -1.31.0 -#+END_SRC - -#+NAME: ldc_hash_1_31_0 -#+BEGIN_SRC nix -sha256-8cjs6eHjWAbDRBvyT75mbN3Y7vN1WSwZzY/uRwHNVFg= -#+END_SRC - -#+NAME: ldc_llvm_set_1_31_0 -#+BEGIN_SRC nix -llvm_14 -#+END_SRC - -***** 1.30.0 - -- nix-prefetch-url --unpack https://github.com/ldc-developers/ldc/archive/refs/tags/v1.30.0.tar.gz - -#+NAME: ldc_version_1_30_0 -#+BEGIN_SRC nix -1.30.0 -#+END_SRC - -#+NAME: ldc_hash_1_30_0 -#+BEGIN_SRC nix -sha256-/bs3bwgkLZF5IqaiKnc5gCF/r6MQBG/F1kWUkK8j2s0= -#+END_SRC - -#+NAME: ldc_llvm_set_1_30_0 -#+BEGIN_SRC nix -llvm_14 +version = "1.25.0"; +hashes = { + # Get these from `nix store prefetch-file https://github.com/ldc-developers/ldc/releases/download/v1.25.0/ldc2-1.25.0-osx-x86_64.tar.xz` etc.. + osx-x86_64 = "sha256-6iKnbS+oalLKmyS8qYD/wS21b7+O+VgsWG2iT4PrWPU="; + linux-x86_64 = "sha256-sfg47RdlsIpryc3iZvE17OtLweh3Zw6DeuNJYgpuH+o="; + linux-aarch64 = "sha256-UDZ43x4flSo+SfsPeE8juZO2Wtk2ZzwySk0ADHnvJBI="; + osx-arm64 = "sha256-O/x0vy0wwQFaDc4uWSeMhx+chJKqbQb6e5QNYf+7DCw="; +}; #+END_SRC ** dmd OK ✓ @@ -1051,18 +820,19 @@ llvm_14 - version in nixpkgs: - https://search.nixos.org/packages?channel=unstable&show=dmd&from=0&size=100&sort=relevance&type=packages&query=dmd -**** notes KO ✗ - -- dmd nixpkg modified and appears to build ok - -- ISSUES dmd on nixos FAILS to build (my working projects), appears not to find parts of itself - *** overlays **** default.nix -***** default.nix >=2.108.0) #+HEADER: :tangle "../nix-overlays/dmd/default.nix" #+BEGIN_SRC nix +import ./package.nix +#+END_SRC + +**** package.nix OK ✓ +***** package.nix >=2.108.0) + +#+HEADER: :tangle "../nix-overlays/dmd/package.nix" +#+BEGIN_SRC nix import ./generic.nix { version = "<<dmd_version>>"; dmdHash = "<<dmd_hash>>"; @@ -1070,10 +840,9 @@ import ./generic.nix { } #+END_SRC -***** default.nix < 2.108.0) - +***** package.nix < 2.108.0) -#+HEADER: :tangle-NO "../nix-overlays/dmd/default.nix" +#+HEADER: :tangle-NO "../nix-overlays/dmd/package.nix" #+BEGIN_SRC nix import ./generic.nix { version = "<<dmd_version>>"; @@ -1086,31 +855,33 @@ import ./generic.nix { #+HEADER: :tangle "../nix-overlays/dmd/generic.nix" #+BEGIN_SRC nix -{ version -, dmdHash -, phobosHash +{ + version, + dmdHash, + phobosHash, }: -{ stdenv -, lib -, fetchFromGitHub -, removeReferencesTo -, makeWrapper -, which -, writeTextFile -, curl -, tzdata -, gdb -#, Foundation -, callPackage -, targetPackages -, fetchpatch -, bash -, installShellFiles -, git -, unzip -, dmdBootstrap ? callPackage ./bootstrap.nix { } -, dmdBin ? "${dmdBootstrap}/bin" +{ + stdenv, + lib, + fetchFromGitHub, + removeReferencesTo, + makeWrapper, + which, + writeTextFile, + curl, + tzdata, + gdb, + # Foundation, + callPackage, + targetPackages, + fetchpatch, + bash, + installShellFiles, + git, + unzip, + dmdBootstrap ? callPackage ./bootstrap.nix { }, + dmdBin ? "${dmdBootstrap}/bin", }: let @@ -1124,11 +895,8 @@ let }; bits = builtins.toString stdenv.hostPlatform.parsed.cpu.bits; - osname = - if stdenv.isDarwin then - "osx" - else - stdenv.hostPlatform.parsed.kernel.name; + osname = if stdenv.hostPlatform.isDarwin then "osx" + else stdenv.hostPlatform.parsed.kernel.name; pathToDmd = "\${NIX_BUILD_TOP}/dmd/generated/${osname}/release/${bits}/dmd"; in @@ -1185,6 +953,9 @@ stdenv.mkDerivation (finalAttrs: { rm dmd/compiler/test/runnable/gdb4149.d rm dmd/compiler/test/runnable/gdb4181.d rm dmd/compiler/test/compilable/ddocYear.d + rm dmd/compiler/test/compilable/sarif_success_test.d + rm dmd/compiler/test/fail_compilation/sarif_test.d + rm dmd/compiler/test/fail_compilation/sarifmultiple_test.d # Disable tests that rely on objdump whitespace until fixed upstream: # https://issues.dlang.org/show_bug.cgi?id=23317 @@ -1194,11 +965,11 @@ stdenv.mkDerivation (finalAttrs: { rm dmd/compiler/test/dshell/test6952.d '' + lib.optionalString (lib.versionAtLeast version "2.092.2") '' substituteInPlace dmd/compiler/test/dshell/test6952.d --replace-fail "/usr/bin/env bash" "${bash}/bin/bash" - '' + lib.optionalString stdenv.isLinux '' + '' + lib.optionalString stdenv.hostPlatform.isLinux '' substituteInPlace phobos/std/socket.d --replace-fail "assert(ih.addrList[0] == 0x7F_00_00_01);" "" - '' + lib.optionalString stdenv.isDarwin '' - substituteInPlace phobos/std/socket.d --replace-fail "foreach (name; names)" "names = []; foreach (name; names)" - ''; + ''; # + lib.optionalString stdenv.hostPlatform.isDarwin '' + # substituteInPlace phobos/std/socket.d --replace-fail "foreach (name; names)" "names = []; foreach (name; names)" + #''; nativeBuildInputs = [ makeWrapper @@ -1211,7 +982,7 @@ stdenv.mkDerivation (finalAttrs: { buildInputs = [ curl tzdata - # ] ++ lib.optionals stdenv.isDarwin [ + # ] ++ lib.optionals stdenv.hostPlatform.isDarwin [] # Foundation ]; @@ -1296,15 +1067,23 @@ stdenv.mkDerivation (finalAttrs: { disallowedReferences = [ dmdBootstrap ]; + passthru = { + inherit dmdBootstrap; + }; + meta = with lib; { description = "Official reference compiler for the D language"; homepage = "https://dlang.org/"; + changelog = "https://dlang.org/changelog/${finalAttrs.version}.html"; # Everything is now Boost licensed, even the backend. # https://github.com/dlang/dmd/pull/6680 license = licenses.boost; mainProgram = "dmd"; maintainers = with maintainers; [ lionello dukc jtbx ]; platforms = [ "x86_64-linux" "i686-linux" "x86_64-darwin" ]; + # ld: section __DATA/__thread_bss has type zero-fill but non-zero file offset file '/private/tmp/nix-build-dmd-2.109.1.drv-0/.rdmd-301/rdmd-build.d-A1CF043A7D87C5E88A58F3C0EF5A0DF7/objs/build.o' for architecture x86_64 + # clang-16: error: linker command failed with exit code 1 (use -v to see invocation) + broken = stdenv.hostPlatform.isDarwin && stdenv.hostPlatform.isx86_64; }; }) #+END_SRC @@ -1407,169 +1186,6 @@ stdenv.mkDerivation { } #+END_SRC -*** versions SET -**** selected version SET OK ✓ - -#+NAME: dmd_version -#+BEGIN_SRC nix -<<dmd_version_2_109_0>> -#+END_SRC - -#+NAME: dmd_hash -#+BEGIN_SRC nix -<<dmd_hash_2_109_0>> -#+END_SRC - -#+NAME: phobos_hash -#+BEGIN_SRC nix -<<phobos_hash_2_109_0>> -#+END_SRC - -**** 2.109.0 OK ✓ - -- nix-prefetch-url --unpack https://github.com/dlang/dmd/archive/refs/tags/v2.109.0.tar.gz -- nix-prefetch-url --unpack https://github.com/dlang/phobos/archive/refs/tags/v2.109.0.tar.gz - -#+NAME: dmd_version_2_109_0 -#+BEGIN_SRC nix -2.109.0 -#+END_SRC - -#+NAME: dmd_hash_2_109_0 -#+BEGIN_SRC nix -sha256-unAZgyZyT6qomlj6pdlOx4h1SKuDjutl1/0FM9AhBWc= -#+END_SRC - -#+NAME: phobos_hash_2_109_0 -#+BEGIN_SRC nix -sha256-b91FeluFqhmjHd1wwkyq98QzIlwjE646xNj2n6hP3aM= -#+END_SRC - -**** 2.108.0 OK ✓ - -- nix-prefetch-url --unpack https://github.com/dlang/dmd/archive/refs/tags/v2.108.0.tar.gz -- nix-prefetch-url --unpack https://github.com/dlang/phobos/archive/refs/tags/v2.108.0.tar.gz - -#+NAME: dmd_version_2_108_0 -#+BEGIN_SRC nix -2.108.0 -#+END_SRC - -#+NAME: dmd_hash_2_108_0 -#+BEGIN_SRC nix -sha256-tlWcFgKtXzfqMMkOq4ezhZHdYCXFckjN5+m6jO4VH0U= -#+END_SRC - -#+NAME: phobos_hash_2_108_0 -#+BEGIN_SRC nix -sha256-uU8S4rABOfhpKh+MvSbclkbdf0hrsuKF8SIpWMnPpfU= -#+END_SRC - -**** 2.107.0 - skip (asleep here apparently) - -- asleep apparently - -#+NAME: dmd_version_2_107_0 -#+BEGIN_SRC nix -2.107.0 -#+END_SRC - -#+NAME: dmd_hash_2_107_0 -#+BEGIN_SRC nix -<<sha256-blank>> -#+END_SRC - -#+NAME: phobos_hash_2_107_0 -#+BEGIN_SRC nix -<<sha256-blank>> -#+END_SRC - -**** 2.106.1 OK ✓ - -- nix-prefetch-url --unpack https://github.com/dlang/dmd/archive/refs/tags/v2.106.1.tar.gz -- nix-prefetch-url --unpack https://github.com/dlang/phobos/archive/refs/tags/v2.106.1.tar.gz - -#+NAME: dmd_version_2_106_1 -#+BEGIN_SRC nix -2.106.1 -#+END_SRC - -#+NAME: dmd_hash_2_106_1 -#+BEGIN_SRC nix -sha256-vjYa/Pxrz7J2htXT+fa+xaeen/Vxne++lELbHTSXBK8= -#+END_SRC - -#+NAME: phobos_hash_2_106_1 -#+BEGIN_SRC nix -sha256-yRL9ub3u4mREG9PVxBvgQ/LDXD57RadPTZ2h08qyh/s= -#+END_SRC - -**** 2.104.0 KO ✗ - -- nix-prefetch-url --unpack https://github.com/dlang/dmd/archive/refs/tags/v2.104.0.tar.gz -- nix-prefetch-url --unpack https://github.com/dlang/phobos/archive/refs/tags/v2.104.0.tar.gz - -#+NAME: dmd_version_2_104_0 -#+BEGIN_SRC nix -2.104.0 -#+END_SRC - -#+NAME: dmd_hash_2_104_0 -#+BEGIN_SRC nix -sha256-yv+uW6cYAId2HK/YSPxsR9Xt0o3LWa97z8KyzjFik6s= -#+END_SRC - -#+NAME: phobos_hash_2_104_0 -#+BEGIN_SRC nix -sha256-cWp36Gd/lh3gy21bf9z0/RqzlJmf6ypmx72aMeakcec= -#+END_SRC - -**** 2.102.2 KO ✗ - -- nix-prefetch-url --unpack https://github.com/dlang/dmd/archive/refs/tags/v2.102.2.tar.gz -- nix-prefetch-url --unpack https://github.com/dlang/phobos/archive/refs/tags/v2.102.2.tar.gz - -#+NAME: dmd_version_2_102_2 -#+BEGIN_SRC nix -2.102.2 -#+END_SRC - -#+NAME: dmd_hash_2_102_2 -#+BEGIN_SRC nix -sha256-der9nb31hJ+K1aJZdzIgs8+eRgVVsH97QnYEnVbKUws= -#+END_SRC - -#+NAME: phobos_hash_2_102_2 -#+BEGIN_SRC nix -sha256-SracmUm2aY/LDCyDqYuVS39pCbwO8UCL3TSB0CVHpHE= -#+END_SRC - -**** 2.100.2 KO ✗ - -- nix-prefetch-url --unpack https://github.com/dlang/dmd/archive/refs/tags/v2.100.2.tar.gz -- nix-prefetch-url --unpack https://github.com/dlang/druntime/archive/refs/tags/v2.100.2.tar.gz -- nix-prefetch-url --unpack https://github.com/dlang/phobos/archive/refs/tags/v2.100.2.tar.gz - -#+NAME: dmd_version_2_100_2 -#+BEGIN_SRC nix -2.100.2 -#+END_SRC - -#+NAME: dmd_hash_2_100_2 -#+BEGIN_SRC nix -sha256-o4+G3ARXIGObYHtHooYZKr+Al6kHpiwpMIog3i4BlDM= -#+END_SRC - -#+NAME: druntime_hash_2_100_2 -#+BEGIN_SRC nix -sha256-qXvY1ECN4mPwOGgOE1FWwvxoRvlSww3tGLWgBdhzAKo= -#+END_SRC - -#+NAME: phobos_hash_2_100_2 -#+BEGIN_SRC nix -sha256-kTHRaAKG7cAGb4IE/NGHWaZ8t7ZceKj03l6E8wLzJzs= -#+END_SRC - ** dub OK *** info **** links @@ -1583,29 +1199,32 @@ sha256-kTHRaAKG7cAGb4IE/NGHWaZ8t7ZceKj03l6E8wLzJzs= - version in nixpkgs: - https://search.nixos.org/packages?channel=unstable&show=dub&from=0&size=100&sort=relevance&type=packages&query=dub -**** notes - -- OK dub == current OK ✓ - -- NOTES for dub 1.33.0 >= 1.31.0 KO ✗ - - dub builds test tilix which calls in gtkd - - ISSUES dub FAILS to build project from local disk that has built without issue - since dub v1.23.0 - - BROKEN breaks on subproject ends up in nix: Error /homeless-shelter: - Permission denied - -- OK dub == 1.30.0 OK ✓ - *** overlays -**** default.nix OK ✓ +**** default.nix #+HEADER: :tangle "../nix-overlays/dub/default.nix" #+BEGIN_SRC nix -{ lib, stdenv, fetchFromGitHub, curl, libevent, rsync, ldc, dcompiler ? ldc }: +import ./package.nix +#+END_SRC + +**** package.nix OK ✓ + +#+HEADER: :tangle "../nix-overlays/dub/package.nix" +#+BEGIN_SRC nix +{ + lib, + stdenv, + fetchFromGitHub, + curl, + <<dcompiler>>, + dcompiler ? <<dcompiler>>, + libevent, + rsync, +}: assert dcompiler != null; -stdenv.mkDerivation rec { +stdenv.mkDerivation (finalAttrs: { pname = "dub"; version = "<<dub_version>>"; @@ -1614,30 +1233,21 @@ stdenv.mkDerivation rec { src = fetchFromGitHub { owner = "dlang"; repo = "dub"; - rev = "v${version}"; - sha256 = "<<dub_hash>>"; + rev = "v${finalAttrs.version}"; + hash = "<<dub_hash>>"; }; - #postUnpack = '' - # patchShebangs . - #''; - - dubvar = "\\$DUB"; postPatch = '' patchShebangs test - - # Can be removed with https://github.com/dlang/dub/pull/1368 - substituteInPlace test/fetchzip.sh \ - --replace "dub remove" "\"${dubvar}\" remove" ''; nativeBuildInputs = [ dcompiler libevent rsync ]; buildInputs = [ curl ]; - buildPhase = '' - for DC_ in dmd ldmd2 gdmd; do - echo "... check for D compiler $DC_ ..." - export DC=$(type -P $DC_ || echo "") + preBuild = '' + for DCn in dmd ldmd2 gdmd; do + echo "... check for D compiler $DCn ..." + export DC=$(type -P $DCn || echo "") if [ ! "$DC" == "" ]; then break fi @@ -1645,17 +1255,21 @@ stdenv.mkDerivation rec { if [ "$DC" == "" ]; then exit "Error: could not find D compiler" fi - echo "$DC_ found and used as D compiler in buildPhase for $pname" - $DC ./build.d - ./build + echo "$DCn found and used as D compiler in buildPhase for $pname" ''; - doCheck = !stdenv.isDarwin; + buildPhase = '' + runHook preBuild + $DC -run ./build.d + runHook postBuild + ''; + + doCheck = !stdenv.hostPlatform.isDarwin; checkPhase = '' + runHook preCheck export DUB=$NIX_BUILD_TOP/source/bin/dub export PATH=$PATH:$NIX_BUILD_TOP/source/bin/ - #export DC=${dcompiler.out}/bin/${if dcompiler.pname=="ldc" then "ldc2" else dcompiler.pname} if [ "$DC" == "" ]; then exit "Error: could not find D compiler" fi @@ -1663,208 +1277,44 @@ stdenv.mkDerivation rec { export HOME=$TMP rm -rf test/issue502-root-import - rm -rf test/dpath-variable - #rm test/dpath-variable.sh + rm -r test/dpath-variable # requires execution of dpath-variable.sh rm -rf test/git-dependency rm -rf test/use-c-sources # added to build v1.33.0 rm -rf test/pr2642-cache-db # added to build v1.34.0 rm -rf test/pr2644-describe-artifact-path # added to build v1.36.0 rm -rf test/pr2647-build-deep # added to build v1.36.0 + rm -rf test/issue2698-cimportpaths-broken-with-dmd-ldc # added to build v1.40.0 ./test/run-unittest.sh + runHook postCheck ''; installPhase = '' - mkdir -p $out/bin - cp bin/dub $out/bin + runHook preInstall + install -Dm755 bin/dub $out/bin/dub + runHook postInstall ''; meta = with lib; { - description = "Package and build manager for D applications and libraries"; + description = "Package and build manager for D programs and libraries"; homepage = "https://code.dlang.org/"; license = licenses.mit; + mainProgram = "dub"; maintainers = with maintainers; [ jtbx ]; platforms = [ "x86_64-linux" "i686-linux" "aarch64-linux" "x86_64-darwin" "aarch64-darwin" ]; }; -} -#+END_SRC - -*** versions SET -**** selected version SET - -#+NAME: dub_version -#+BEGIN_SRC nix -<<dub_version_1_36_0>> -#+END_SRC - -#+NAME: dub_hash -#+BEGIN_SRC nix -<<dub_hash_1_36_0>> -#+END_SRC - -**** 1.36 OK ✓ -***** 1.36.0 - -- nix-prefetch-url --unpack https://github.com/dlang/dub/archive/refs/tags/v1.36.0.tar.gz - -#+NAME: dub_version_1_36_0 -#+BEGIN_SRC nix -1.36.0 -#+END_SRC - -#+NAME: dub_hash_1_36_0 -#+BEGIN_SRC nix -sha256-S8pls9zxbGAQTwqYf4bDT2q7Ow12S8bBsJE5UmsACBs= -#+END_SRC - -**** 1.35 OK ✓ -***** 1.35.0 - -- nix-prefetch-url --unpack https://github.com/dlang/dub/archive/refs/tags/v1.35.0.tar.gz - -#+NAME: dub_version_1_35_0 -#+BEGIN_SRC nix -1.35.0 -#+END_SRC - -#+NAME: dub_hash_1_35_0 -#+BEGIN_SRC nix -sha256-hC46XKE6lLLMLGMGl4vDnLDBQy6P/Z7o3ayDJj0Sois= -#+END_SRC - -**** 1.34 OK ✓ -***** 1.34.0 - -- nix-prefetch-url --unpack https://github.com/dlang/dub/archive/refs/tags/v1.34.0.tar.gz - -#+NAME: dub_version_1_34_0 -#+BEGIN_SRC nix -1.34.0 -#+END_SRC - -#+NAME: dub_hash_1_34_0 -#+BEGIN_SRC nix -sha256-hC46XKE6lLLMLGMGl4vDnLDBQy6P/Z7o3ayDJj0Sois= -#+END_SRC - -**** 1.33 OK ✓ -***** 1.33.1 OK ✓ - -- nix-prefetch-url --unpack https://github.com/dlang/dub/archive/refs/tags/v1.33.1.tar.gz - -#+NAME: dub_version_1_33_1 -#+BEGIN_SRC nix -1.33.1 -#+END_SRC - -#+NAME: dub_hash_1_33_1 -#+BEGIN_SRC nix -sha256-QFgUsO04VRXBDjGI5QQs7u9XrexG7/V34TMgJP1D8yA= -#+END_SRC - -**** 1.33.0 OK ✓ - -- nix-prefetch-url --unpack https://github.com/dlang/dub/archive/refs/tags/v1.33.0.tar.gz - -#+NAME: dub_version_1_33_0 -#+BEGIN_SRC nix -1.33.0 -#+END_SRC - -#+NAME: dub_hash_1_33_0 -#+BEGIN_SRC nix -sha256-4Mha7WF6cg3DIccfpvOnheuvgfziv/7wo8iFsPXO4yY= -#+END_SRC - -**** 1.32.1 OK ✓ - -- nix-prefetch-url --unpack https://github.com/dlang/dub/archive/refs/tags/v1.32.1.tar.gz - -#+NAME: dub_version_1_32_1 -#+BEGIN_SRC nix -1.32.1 -#+END_SRC - -#+NAME: dub_hash_1_32_1 -#+BEGIN_SRC nix -sha256-5pW3Fu3PQ1ZLJnsuh7fPpEBNbVQgGfFyiuMrAVOJKQA= -#+END_SRC - -- ISSUES from 1.31.0 continuing - -**** 1.31.1 OK ✓ - -- nix-prefetch-url --unpack https://github.com/dlang/dub/archive/refs/tags/v1.31.1.tar.gz - -#+NAME: dub_version_1_31_1 -#+BEGIN_SRC nix -1.31.1 -#+END_SRC - -#+NAME: dub_hash_1_31_1 -#+BEGIN_SRC nix -sha256-dp64D51ypowXS1+EYKRXh5hpa3rMmiotvKO2FW+i92w= -#+END_SRC - -- ISSUES from 1.31.0 continuing - -**** 1.31.0 OK ✓ NOTE - -- nix-prefetch-url --unpack https://github.com/dlang/dub/archive/refs/tags/v1.31.0.tar.gz - -behavior change in dub requiring the setting of pwd in buildPhase - -#+NAME: dub_version_1_31_0 -#+BEGIN_SRC nix -1.31.0 -#+END_SRC - -#+NAME: dub_hash_1_31_0 -#+BEGIN_SRC nix -sha256-Ki8HJOfWFM1tF86s7Ng3STgC/uu5acVTP0Dj87M0l54= -#+END_SRC - -- ISSUES from 1.31.0 continuing -**** 1.30.0 OK ✓ - -- nix-prefetch-url --unpack https://github.com/dlang/dub/archive/refs/tags/v1.30.0.tar.gz - -#+NAME: dub_version_1_30_0 -#+BEGIN_SRC nix -1.30.0 -#+END_SRC - -#+NAME: dub_hash_1_30_0 -#+BEGIN_SRC nix -sha256-iVl7bjblvIxvrUX7Phq6h4AIAmZjNVkGYYFA1hhsE7c= +}) #+END_SRC -**** 1.29.1 - -- nix-prefetch-url --unpack https://github.com/dlang/dub/archive/refs/tags/v1.29.1.tar.gz +*** dcompiler -#+NAME: dub_version_1_29_1 +#+NAME: dcompiler #+BEGIN_SRC nix -1.29.1 +ldc #+END_SRC -#+NAME: dub_hash_1_29_1 #+BEGIN_SRC nix -sha256-XDV9p1bDhRL6gX+nizzjoErNJm8NnQK5O8wNnizloss= -#+END_SRC - -**** 1.28.0 - -- nix-prefetch-url --unpack https://github.com/dlang/dub/archive/refs/tags/v1.28.0.tar.gz - -#+NAME: dub_version_1_28_0 -#+BEGIN_SRC nix -1.28.0 -#+END_SRC - -#+NAME: dub_hash_1_28_0 -#+BEGIN_SRC nix -sha256-GOeaQyu8Y/DxZEAJPdlGH9ie/ZRTqvAw2jjvM3dESbg= +dmd #+END_SRC ** dtools OK ✓ @@ -1890,130 +1340,283 @@ sha256-GOeaQyu8Y/DxZEAJPdlGH9ie/ZRTqvAw2jjvM3dESbg= #+HEADER: :tangle "../nix-overlays/dtools/default.nix" #+BEGIN_SRC nix -{ stdenv, lib, fetchFromGitHub, fetchpatch, ldc, curl, gnumake42 }: +import ./package.nix +#+END_SRC + +**** package.nix + +#+HEADER: :tangle "../nix-overlays/dtools/package.nix" +#+BEGIN_SRC nix +{ + lib, + stdenv, + fetchFromGitHub, + ldc, + curl, +}: -stdenv.mkDerivation rec { +stdenv.mkDerivation (finalAttrs: { pname = "dtools"; version = "<<dtools_version>>"; src = fetchFromGitHub { owner = "dlang"; repo = "tools"; - rev = "v${version}"; - sha256 = "<<dtools_hash>>"; + rev = "v${finalAttrs.version}"; + hash = "<<dtools_hash>>"; name = "dtools"; }; patches = [ - (fetchpatch { - # part of https://github.com/dlang/tools/pull/441 - url = "https://github.com/dlang/tools/commit/6c6a042d1b08e3ec1790bd07a7f69424625ee866.patch"; # Fix LDC arm64 build - sha256 = "sha256-x6EclTYN1Y5FG57KLhbBK0BZicSYcZoWO7MTVcP4T18="; - }) + # Disable failing tests + ./disabled-tests.diff + # Fix LDC arm64 build + ./fix-ldc-arm64.diff ]; - nativeBuildInputs = [ ldc gnumake42 ]; # fails with make 4.4 + nativeBuildInputs = [ ldc ]; buildInputs = [ curl ]; - makeCmd = '' - make -f posix.mak all DMD_DIR=dmd DMD=${ldc.out}/bin/ldmd2 CC=${stdenv.cc}/bin/cc - ''; + makeFlags = [ + "CC=${stdenv.cc}/bin/cc" + "DMD=${ldc.out}/bin/ldmd2" + "INSTALL_DIR=$(out)" + ]; - buildPhase = '' - $makeCmd - ''; + enableParallelBuilding = true; doCheck = true; - - checkPhase = '' - $makeCmd test_rdmd - ''; - - installPhase = '' - $makeCmd INSTALL_DIR=$out install - ''; + checkTarget = "test_rdmd"; meta = with lib; { - description = "Ancillary tools for the D programming language compiler"; + description = "Ancillary tools for the D programming language"; homepage = "https://github.com/dlang/tools"; - license = lib.licenses.boost; - maintainers = with maintainers; [ ThomasMader ]; - platforms = lib.platforms.unix; + license = licenses.boost; + maintainers = with maintainers; [ jtbx ]; + platforms = platforms.unix; }; -} +}) #+END_SRC -*** versions SET +#+HEADER: :tangle "../nix-overlays/dtools/disabled-tests.diff" +#+BEGIN_SRC diff +--- a/rdmd_test.d ++++ b/rdmd_test.d +@@ -616,7 +616,7 @@ void runTests(string rdmdApp, string compiler, string model) + enforce(res.status == 1, res.output); + } + +- version (Posix) ++ version (none) + { + import std.conv : to; + auto makeVersion = execute(["make", "--version"]).output.splitLines()[0]; +#+END_SRC + +#+HEADER: :tangle "../nix-overlays/dtools/fix-ldc-arm64.diff" +#+BEGIN_SRC diff +Adapted from https://github.com/dlang/tools/commit/6c6a042d1b08e3ec1790bd07a7f69424625ee866.patch +--- /dev/null ++++ b/osmodel.mak +@@ -0,0 +1,75 @@ ++# osmodel.mak ++# ++# Detects and sets the macros: ++# ++# OS = one of {osx,linux,freebsd,openbsd,netbsd,dragonflybsd,solaris} ++# MODEL = one of { 32, 64 } ++# MODEL_FLAG = one of { -m32, -m64 } ++# ARCH = one of { x86, x86_64, aarch64 } ++# ++# Note: ++# Keep this file in sync between druntime, phobos, and dmd repositories! ++# Source: https://github.com/dlang/dmd/blob/master/src/osmodel.mak ++ ++ ++ifeq (,$(OS)) ++ uname_S:=$(shell uname -s) ++ ifeq (Darwin,$(uname_S)) ++ OS:=osx ++ endif ++ ifeq (Linux,$(uname_S)) ++ OS:=linux ++ endif ++ ifeq (FreeBSD,$(uname_S)) ++ OS:=freebsd ++ endif ++ ifeq (OpenBSD,$(uname_S)) ++ OS:=openbsd ++ endif ++ ifeq (NetBSD,$(uname_S)) ++ OS:=netbsd ++ endif ++ ifeq (DragonFly,$(uname_S)) ++ OS:=dragonflybsd ++ endif ++ ifeq (Solaris,$(uname_S)) ++ OS:=solaris ++ endif ++ ifeq (SunOS,$(uname_S)) ++ OS:=solaris ++ endif ++ ifeq (,$(OS)) ++ $(error Unrecognized or unsupported OS for uname: $(uname_S)) ++ endif ++endif ++ ++# When running make from XCode it may set environment var OS=MACOS. ++# Adjust it here: ++ifeq (MACOS,$(OS)) ++ OS:=osx ++endif ++ ++ifeq (,$(MODEL)) ++ ifeq ($(OS), solaris) ++ uname_M:=$(shell isainfo -n) ++ else ++ uname_M:=$(shell uname -m) ++ endif ++ ifneq (,$(findstring $(uname_M),x86_64 amd64)) ++ MODEL:=64 ++ ARCH:=x86_64 ++ endif ++ ifneq (,$(findstring $(uname_M),aarch64 arm64)) ++ MODEL:=64 ++ ARCH:=aarch64 ++ endif ++ ifneq (,$(findstring $(uname_M),i386 i586 i686)) ++ MODEL:=32 ++ ARCH:=x86 ++ endif ++ ifeq (,$(MODEL)) ++ $(error Cannot figure 32/64 model and arch from uname -m: $(uname_M)) ++ endif ++endif ++ ++MODEL_FLAG:=-m$(MODEL) +--- a/Makefile ++++ b/Makefile +@@ -9,9 +9,8 @@ DUB=dub + WITH_DOC = no + DOC = ../dlang.org + +-# Load operating system $(OS) (e.g. linux, osx, ...) and $(MODEL) (e.g. 32, 64) detection Makefile from dmd +-$(shell [ ! -d $(DMD_DIR) ] && git clone --depth=1 https://github.com/dlang/dmd $(DMD_DIR)) +-include $(DMD_DIR)/compiler/src/osmodel.mak ++# Load operating system $(OS) (e.g. linux, osx, ...) and $(MODEL) (e.g. 32, 64) detection Makefile ++include osmodel.mak + + ifeq (windows,$(OS)) + DOTEXE:=.exe +@@ -30,7 +29,7 @@ DFLAGS = $(MODEL_FLAG) $(if $(findstring windows,$(OS)),,-fPIC) -preview=dip1000 + DFLAGS += $(WARNINGS) + + # Default DUB flags (DUB uses a different architecture format) +-DUBFLAGS = --arch=$(subst 32,x86,$(subst 64,x86_64,$(MODEL))) ++DUBFLAGS = --arch=$(ARCH) + + TOOLS = \ + $(ROOT)/catdoc$(DOTEXE) \ +#+END_SRC + +** versions GET +*** direnv +***** select version + +#+NAME: direnv_version +#+HEADER: :noweb yes +#+BEGIN_SRC emacs-lisp +<<./nix-develop-dlang-shared.org:direnv-version()>> +#+END_SRC + +#+NAME: direnv_hash +#+BEGIN_SRC emacs-lisp +<<./nix-develop-dlang-shared.org:direnv-hash()>> +#+END_SRC + +*** ldc +***** version & sha256 nix composite -- https://github.com/dlang/tools +#+NAME: ldc_version_info +#+BEGIN_SRC emacs-lisp +<<./nix-develop-dlang-shared.org:ldc-version-info()>> +#+END_SRC -**** selected version SET OK ✓ +***** selected version -#+NAME: dtools_version -#+BEGIN_SRC nix -<<dtools_version_2_103_1>> +#+NAME: ldc_version +#+HEADER: :noweb yes +#+BEGIN_SRC emacs-lisp +<<./nix-develop-dlang-shared.org:ldc-version()>> #+END_SRC -#+NAME: dtools_hash -#+BEGIN_SRC nix -<<dtools_hash_2_103_1>> +#+NAME: ldc_hash +#+BEGIN_SRC emacs-lisp +<<./nix-develop-dlang-shared.org:ldc-hash()>> #+END_SRC -**** 2.103.1 OK ✓ +#+NAME: ldc_llvm_set +#+BEGIN_SRC emacs-lisp +<<./nix-develop-dlang-shared.org:ldc-llvm-set()>> +#+END_SRC -- https://github.com/dlang/tools/releases/tag/v2.103.1 +*** dmd +**** selected version -#+NAME: dtools_version_2_103_1 -#+BEGIN_SRC nix -2.103.1 +#+NAME: dmd_version +#+HEADER: :noweb yes +#+BEGIN_SRC emacs-lisp +<<./nix-develop-dlang-shared.org:dmd-version()>> #+END_SRC -#+NAME: dtools_hash_2_103_1 -#+BEGIN_SRC nix -sha256-XM4gUxcarQCOBR8W/o0iWAI54PyLDkH6CsDce22Cnu4= +#+NAME: dmd_hash +#+BEGIN_SRC org +<<./nix-develop-dlang-shared.org:dmd-hash()>> #+END_SRC -**** 2.102.2 +#+NAME: phobos_hash +#+BEGIN_SRC org +<<./nix-develop-dlang-shared.org:phobos-hash()>> +#+END_SRC -- https://github.com/dlang/tools/releases/tag/v2.102.2 +*** dub +**** selected version -#+NAME: dtools_version_2_102_2 -#+BEGIN_SRC nix -2.102.2 +#+NAME: dub_version +#+HEADER: :noweb yes +#+BEGIN_SRC emacs-lisp +<<./nix-develop-dlang-shared.org:dub-version()>> #+END_SRC -#+NAME: dtools_hash_2_102_2 +#+NAME: dub_hash #+BEGIN_SRC nix -sha256-XM4gUxcarQCOBR8W/o0iWAI54PyLDkH6CsDce22Cnu4= +<<./nix-develop-dlang-shared.org:dub-hash()>> #+END_SRC -**** 2.095.1 current nixpkgs 20-03-17 OK ✓ - -- https://github.com/dlang/tools/releases/tag/v2.095.1 +*** dtools +**** selected version -#+NAME: dtools_version_2_095_1 -#+BEGIN_SRC nix -2.095.1 +#+NAME: dtools_version +#+HEADER: :noweb yes +#+BEGIN_SRC emacs-lisp +<<./nix-develop-dlang-shared.org:dtools-version()>> #+END_SRC -#+NAME: dtools_hash_2_095_1 -#+BEGIN_SRC nix -sha256:0rdfk3mh3fjrb0h8pr8skwlq6ac9hdl1fkrkdl7n1fa2806b740b +#+NAME: dtools_hash +#+BEGIN_SRC emacs-lisp +<<./nix-develop-dlang-shared.org:dtools-hash()>> #+END_SRC ** sha256 blank_hash #+NAME: sha256-blank -#+BEGIN_SRC nix -sha256-0000000000000000000000000000000000000000000= +#+BEGIN_SRC emacs-lisp +<<./nix-develop-dlang-shared.org:sha256-blank()>> #+END_SRC #+NAME: blank_hash -#+BEGIN_SRC nix -sha256-0000000000000000000000000000000000000000000= +#+BEGIN_SRC emacs-lisp +<<./nix-develop-dlang-shared.org:sha256-blank()>> #+END_SRC -#+NAME: assumed_hash -#+BEGIN_SRC nix -sha256-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA= -#+END_SRC +* __END__ diff --git a/org/ocda.org b/org/ocda.org index dca0098..4c27706 100644 --- a/org/ocda.org +++ b/org/ocda.org @@ -1,10 +1,11 @@ -*- mode: org -*- #+TITLE: sisudoc spine (doc_reform) object-centric document abstraction #+DESCRIPTION: documents - structuring, publishing in multiple formats & search +#+SUMMARY: process markup document, create document abstraction #+FILETAGS: :spine:abstraction: #+AUTHOR: Ralph Amissah #+EMAIL: [[mailto:ralph.amissah@gmail.com][ralph.amissah@gmail.com]] -#+COPYRIGHT: Copyright (C) 2015 - 2024 Ralph Amissah +#+COPYRIGHT: Copyright (C) 2015 - 2025 Ralph Amissah #+LANGUAGE: en #+STARTUP: content hideblocks hidestars noindent entitiespretty #+PROPERTY: header-args :noweb yes @@ -18,7 +19,8 @@ - [[./doc-reform.org][doc-reform.org]] [[./][org/]] * (Object-Centric) Document Abstraction -Process markup document, create document abstraction. + +- Process markup document, create document abstraction ** _module template_ :module:metadoc_from_src: @@ -51,31 +53,29 @@ template docAbstraction() { #+HEADER: :noweb yes #+BEGIN_SRC d // ↓ abstraction imports -import - std.algorithm, - std.container, - std.digest.sha, - std.file, - std.json, - std.path; -import - sisudoc.meta, - sisudoc.meta.defaults, - sisudoc.meta.rgx, - sisudoc.meta.metadoc_object_setter, - sisudoc.meta.rgx; +import std.algorithm; +import std.container; +import std.digest.sha; +import std.file; +import std.json; +import std.path; +import sisudoc.meta; +import sisudoc.meta.defaults; +import sisudoc.meta.rgx; +import sisudoc.meta.metadoc_object_setter; +import sisudoc.meta.rgx; public import sisudoc.meta.metadoc_from_src_functions; mixin docAbstractionFunctions; #+END_SRC ** docAbstraction -*** abstraction summary +*** _toc_ abstraction summary #+NAME: docAbstraction #+HEADER: :noweb yes #+BEGIN_SRC d <<docAbstractionInit>> -<<docAbstractionInitSubstitutions>> +<<docAbstractionInitSubstitutionsDebug>> <<docAbstractionMainLoopSrcByLine>> <<docAbstractionPostMainLoop>> <<docAbstractionReturnsStruct>> @@ -109,8 +109,8 @@ scope(exit) { anchor_tag = ""; } mixin spineNode; -auto node_para_int_ = node_metadata_para_int; -auto node_para_str_ = node_metadata_para_str; +int[string] node_para_int_ = node_metadata_para_int; +string[string] node_para_str_ = node_metadata_para_str; ObjGenericComposite comp_obj_; line_occur = [ "heading" : 0, @@ -219,9 +219,9 @@ int cnt1 = 1; int cnt2 = 1; int cnt3 = 1; // abstraction init ↑ #+END_SRC -*** abstraction init substitutions +*** debug abstraction init substitutions -#+NAME: docAbstractionInitSubstitutions +#+NAME: docAbstractionInitSubstitutionsDebug #+HEADER: :noweb yes #+BEGIN_SRC d debug (substitutions) { @@ -231,8 +231,8 @@ debug (substitutions) { } if (conf_make_meta.make.substitute) { foreach(substitution_pair; conf_make_meta.make.substitute) { - writeln("regex to match: ", substitution_pair[Substitute.match]); - writeln("substitution to make: ", substitution_pair[Substitute.markup]); + writeln("regex to match: ", substitution_pair[Substitute.match]); + writeln("substitution to make: ", substitution_pair[Substitute.markup]); } } if (conf_make_meta.make.bold) { @@ -250,12 +250,12 @@ debug (substitutions) { } #+END_SRC -*** loop source by line (large block) +*** _loop_ source by line (large block) #+NAME: docAbstractionMainLoopSrcByLine #+HEADER: :noweb yes #+BEGIN_SRC d -auto loopMarkupSrcByLine( +_loopMarkupSrcByLineStruct loopMarkupSrcByLine( char[][] markup_sourcefile_content, string[string] an_object, uint[string] pith, @@ -364,7 +364,7 @@ auto loopMarkupSrcByLine( ._doc_header_and_make_substitutions_(conf_make_meta) ._doc_header_and_make_substitutions_fontface_(conf_make_meta); { - auto _get = line.txt_by_line_block_quote(an_object, pith); + ST_txt_by_line_block_generic _get = line.txt_by_line_block_quote(an_object, pith); { an_object = _get.this_object; pith = _get.pith; @@ -377,7 +377,7 @@ auto loopMarkupSrcByLine( ._doc_header_and_make_substitutions_fontface_(conf_make_meta) .replaceAll(rgx.para_delimiter, mkup.br_line_spaced ~ "$1"); { - auto _get = line.txt_by_line_block_group(an_object, pith); + ST_txt_by_line_block_generic _get = line.txt_by_line_block_group(an_object, pith); { an_object = _get.this_object; pith = _get.pith; @@ -393,7 +393,7 @@ auto loopMarkupSrcByLine( .replaceAll(rgx.spaces_keep, (m.captures[1]).translate([ ' ' : mkup.nbsp ])); } { - auto _get = line.txt_by_line_block_block(an_object, pith); + ST_txt_by_line_block_generic _get = line.txt_by_line_block_block(an_object, pith); { an_object = _get.this_object; pith = _get.pith; @@ -402,7 +402,7 @@ auto loopMarkupSrcByLine( continue; } else if (pith["block_is"] == eN.blk_is.poem) { { - auto _get = line.txt_by_line_block_poem(an_object, pith, cntr, object_number_poem, conf_make_meta, tag_in_seg); + ST_txt_by_line_block_poem _get = line.txt_by_line_block_poem(an_object, pith, cntr, object_number_poem, conf_make_meta, tag_in_seg); { an_object = _get.this_object; pith = _get.pith; @@ -436,7 +436,7 @@ auto loopMarkupSrcByLine( object_number_poem["start"] = obj_cite_digits.object_number.to!string; } { - auto _get = line.txt_by_line_block_start(pith, dochas, object_number_poem); + ST_txt_by_line_block_start _get = line.txt_by_line_block_start(pith, dochas, object_number_poem); { pith = _get.pith; dochas = _get.dochas; @@ -466,7 +466,7 @@ auto loopMarkupSrcByLine( || line.matchFirst(rgx.book_index_item_open) || pith["section"] == eN.sect.book_index) { { // book_index - auto _get = line.flow_book_index_(an_object, book_idx_tmp, pith, opt_action); + ST_flow_book_index _get = line.flow_book_index_(an_object, book_idx_tmp, pith, opt_action); { an_object = _get.this_object; pith = _get.pith; @@ -488,7 +488,7 @@ auto loopMarkupSrcByLine( comp_obj_comment.text = an_object[an_object_key].strip; the_document_body_section ~= comp_obj_comment; { - auto _get = txt_by_line_common_reset_(line_occur, an_object, pith); + ST_txt_by_line_common_reset _get = txt_by_line_common_reset_(line_occur, an_object, pith); { line_occur = _get.line_occur; an_object = _get.this_object; @@ -505,7 +505,7 @@ auto loopMarkupSrcByLine( && (pith["make_headings"] == eN.bi.off)) { // heading found { - auto _get = line.flow_heading_found_(heading_match_str, conf_make_meta.make.headings, heading_match_rgx, pith); + ST_flow_heading_found _get = line.flow_heading_found_(heading_match_str, conf_make_meta.make.headings, heading_match_rgx, pith); { heading_match_str = _get.heading_match_str; heading_match_rgx = _get.heading_match_rgx; @@ -520,7 +520,7 @@ auto loopMarkupSrcByLine( ) { // heading make set { - auto _get = line.flow_heading_make_set_(line_occur, heading_match_rgx, pith); + ST_flow_heading_make_set _get = line.flow_heading_make_set_(line_occur, heading_match_rgx, pith); { line = _get.line; an_object = _get.this_object; @@ -558,7 +558,7 @@ auto loopMarkupSrcByLine( ._doc_header_and_make_substitutions_(conf_make_meta) ._doc_header_and_make_substitutions_fontface_(conf_make_meta); { - auto _get = line.flow_para_match_(an_object, an_object_key, indent, bullet, pith, line_occur); + ST_flow_para_match _get = line.flow_para_match_(an_object, an_object_key, indent, bullet, pith, line_occur); { an_object = _get.this_object; an_object_key = _get.this_object_key; @@ -587,7 +587,7 @@ auto loopMarkupSrcByLine( } else if (pith["block_state"] == eN.blk_state.closing) { // line empty, with blocks flag { - auto _get = line.flow_block_flag_line_empty_( + ST_flow_block_flag_line_empty _get = line.flow_block_flag_line_empty_( an_object, bookindex_extract_hash, the_document_body_section, @@ -703,7 +703,7 @@ auto loopMarkupSrcByLine( _anchor_tag = obj_cite_digits.identifier; // (incrementally build toc) table of contents here! { - auto _get = obj_im.flow_table_of_contents_gather_headings( + ST_flow_table_of_contents_gather_headings _get = obj_im.flow_table_of_contents_gather_headings( an_object, conf_make_meta, tag_in_seg, @@ -724,7 +724,7 @@ auto loopMarkupSrcByLine( if (an_object["lev_markup_number"].to!int <= 4) { segnames["epub"] ~= tag_in_seg["seg_lv1to4"]; } - auto comp_obj_ = node_construct.node_emitter_heading( + ObjGenericComposite comp_obj_ = node_construct.node_emitter_heading( an_object, tag_in_seg, lev_anchor_tag, @@ -745,7 +745,7 @@ auto loopMarkupSrcByLine( the_document_body_section ~= comp_obj_; debug(objectrelated1) { writeln(line); } // check { - auto _get = txt_by_line_common_reset_(line_occur, an_object, pith); + ST_txt_by_line_common_reset _get = txt_by_line_common_reset_(line_occur, an_object, pith); { line_occur = _get.line_occur; an_object = _get.this_object; @@ -766,7 +766,7 @@ auto loopMarkupSrcByLine( an_object["bookindex_nugget"] = ("bookindex_nugget" in an_object) ? an_object["bookindex_nugget"] : ""; bookindex_unordered_hashes = bookindex_extract_hash.bookindex_nugget_hash(an_object["bookindex_nugget"], obj_cite_digits, tag_in_seg); an_object["is"] = "para"; - auto comp_obj_ = node_construct.node_location_emitter( + ObjGenericComposite comp_obj_ = node_construct.node_location_emitter( content_non_header, tag_in_seg, lev_anchor_tag, @@ -798,7 +798,7 @@ auto loopMarkupSrcByLine( the_document_body_section ~= comp_obj_; tag_assoc = an_object.inline_para_link_anchor(tag_in_seg, tag_assoc); { - auto _get = txt_by_line_common_reset_(line_occur, an_object, pith); + ST_txt_by_line_common_reset _get = txt_by_line_common_reset_(line_occur, an_object, pith); { line_occur = _get.line_occur; an_object = _get.this_object; @@ -872,7 +872,7 @@ auto loopMarkupSrcByLine( return ret; } { // loopMarkupSrcByLine - auto _doc_by_line = loopMarkupSrcByLine(markup_sourcefile_content, an_object, pith); + _loopMarkupSrcByLineStruct _doc_by_line = loopMarkupSrcByLine(markup_sourcefile_content, an_object, pith); the_document_toc_section = _doc_by_line.toc; the_document_body_section = _doc_by_line.body; the_document_glossary_section = _doc_by_line.glossary; @@ -883,7 +883,7 @@ auto loopMarkupSrcByLine( } #+END_SRC -*** post loop (consider and segment/break up further in code & org) +*** _post loop_ (consider and segment/break up further in code & org) #+NAME: docAbstractionPostMainLoop #+HEADER: :noweb yes @@ -1456,7 +1456,7 @@ debug(segnames) { } #+END_SRC -*** return structure +*** _return structure_ #+NAME: docAbstractionReturnsStruct #+HEADER: :noweb yes @@ -1534,7 +1534,7 @@ struct DocHas_ { return tag_assoc; } } -auto doc_has() { +DocHas_ doc_has() { return DocHas_(); } // the doc to be returned diff --git a/org/ocda_functions.org b/org/ocda_functions.org index 070b842..baae83e 100644 --- a/org/ocda_functions.org +++ b/org/ocda_functions.org @@ -4,7 +4,7 @@ #+FILETAGS: :spine:abstraction: #+AUTHOR: Ralph Amissah #+EMAIL: [[mailto:ralph.amissah@gmail.com][ralph.amissah@gmail.com]] -#+COPYRIGHT: Copyright (C) 2015 - 2024 Ralph Amissah +#+COPYRIGHT: Copyright (C) 2015 - 2025 Ralph Amissah #+LANGUAGE: en #+STARTUP: content hideblocks hidestars noindent entitiespretty #+PROPERTY: header-args :noweb yes @@ -1571,6 +1571,62 @@ ST_txt_by_line_block_start txt_by_line_block_start()( pith["block_is"] = eN.blk_is.table; pith["block_state"] = eN.blk_state.on; pith["block_delim"] = eN.blk_delim.curly_special; + } else if (auto m = line.matchFirst(rgx.block_quotemarks_code_open)) { + dochas["codeblock"]++; + an_object["lang"] = ""; + an_object["attrib"] = (m["attrib"]) ? m["attrib"].to!string : ""; + an_object["syntax"] = (m["syntax"]) ? m["syntax"].to!string : ""; + debug(codequotemarks) { writefln( "* [code quotemarks] %s", line); } + pith["block_is"] = eN.blk_is.code; + pith["block_state"] = eN.blk_state.on; + pith["block_delim"] = eN.blk_delim.quotemarks; // + } else if (auto m = line.matchFirst(rgx.block_quotemarks_poem_open)) { + dochas["poem"]++; + an_object["syntax"] = ""; + an_object["attrib"] = (m["attrib"]) ? m["attrib"].to!string : ""; + an_object["lang"] = (m["lang"]) ? m["lang"].to!string : ""; + debug(poem) { writefln( "* [poem quotemarks] %s", line); } + object_number_poem["start"] = obj_cite_digits.object_number.to!string; + pith["block_is"] = eN.blk_is.poem; + pith["block_state"] = eN.blk_state.on; + pith["block_delim"] = eN.blk_delim.quotemarks; // + pith["verse_new"] = eN.bi.on; + } else if (auto m = line.matchFirst(rgx.block_quotemarks_group_open)) { + dochas["group"]++; + an_object["syntax"] = ""; + an_object["attrib"] = (m["attrib"]) ? m["attrib"].to!string : ""; + an_object["lang"] = (m["lang"]) ? m["lang"].to!string : ""; + debug(group) { writefln( "* [group quotemarks] %s", line); } + pith["block_is"] = eN.blk_is.group; + pith["block_state"] = eN.blk_state.on; + pith["block_delim"] = eN.blk_delim.quotemarks; + } else if (auto m = line.matchFirst(rgx.block_quotemarks_block_open)) { + dochas["block"]++; + an_object["syntax"] = ""; + an_object["attrib"] = (m["attrib"]) ? m["attrib"].to!string : ""; + an_object["lang"] = (m["lang"]) ? m["lang"].to!string : ""; + debug(block) { writefln( "* [block quotemarks] %s", line); } + pith["block_is"] = eN.blk_is.block; + pith["block_state"] = eN.blk_state.on; + pith["block_delim"] = eN.blk_delim.quotemarks; + } else if (auto m = line.matchFirst(rgx.block_quotemarks_quote_open)) { + dochas["quote"]++; + an_object["syntax"] = ""; + an_object["attrib"] = m["attrib"].to!string; + an_object["lang"] = m["lang"].to!string; + debug(quote) { writefln( "* [quote quotemarks] %s", line); // quote (quotemarks) open + } + pith["block_is"] = eN.blk_is.quote; + pith["block_state"] = eN.blk_state.on; + pith["block_delim"] = eN.blk_delim.quotemarks; + } else if (auto m = line.matchFirst(rgx.block_quotemarks_table_open)) { // quotemarks table open + debug(table) { writefln( "* [table quotemarks] %s", line); } + dochas["table"] ++; + an_object["table_head"] = m["attrib"].to!string; + an_object["block_type"] = "quotemarks"; + pith["block_is"] = eN.blk_is.table; + pith["block_state"] = eN.blk_state.on; + pith["block_delim"] = eN.blk_delim.quotemarks; } else if (auto m = line.matchFirst(rgx.block_tic_code_open)) { dochas["codeblock"]++; an_object["lang"] = ""; @@ -1654,6 +1710,17 @@ ST_txt_by_line_block_generic txt_by_line_block_group()( debug(group) { writeln(line); } an_object[an_object_key] ~= line ~= "\n"; } + } else if (pith["block_delim"] == eN.blk_delim.quotemarks) { + if (line.matchFirst(rgx.block_quotemarks_close)) { + debug(group) { writeln(line); } + an_object[an_object_key] = an_object[an_object_key].stripRight; + pith["block_is"] = eN.blk_is.group; + pith["block_state"] = eN.blk_state.closing; + pith["block_delim"] = eN.blk_delim.off; + } else { + debug(group) { writeln(line); } + an_object[an_object_key] ~= line ~= "\n"; + } } else if (pith["block_delim"] == eN.blk_delim.tic) { if (line.matchFirst(rgx.block_tic_close)) { debug(group) { writeln(line); } @@ -1692,6 +1759,17 @@ ST_txt_by_line_block_generic txt_by_line_block_block()( debug(block) { writeln(line); } an_object[an_object_key] ~= line ~= "\n"; } + } else if (pith["block_delim"] == eN.blk_delim.quotemarks) { + if (line.matchFirst(rgx.block_quotemarks_close)) { + debug(block) { writeln(line); } + an_object[an_object_key] = an_object[an_object_key].stripRight; + pith["block_is"] = eN.blk_is.block; + pith["block_state"] = eN.blk_state.closing; + pith["block_delim"] = eN.blk_delim.off; + } else { + debug(block) { writeln(line); } + an_object[an_object_key] ~= line ~= "\n"; + } } else if (pith["block_delim"] == eN.blk_delim.tic) { if (line.matchFirst(rgx.block_tic_close)) { debug(block) { writeln(line); } @@ -1816,6 +1894,94 @@ ST_txt_by_line_block_poem txt_by_line_block_poem(CMM)( ++cntr; } } + } else if (pith["block_delim"] == eN.blk_delim.quotemarks) { + if (auto m = line.matchFirst(rgx.block_quotemarks_close)) { + an_object[an_object_key] = "verse"; + debug(poem) { writefln( "* [poem quotemarks] %s", line); } + if (processing.length > 0) { + an_object[an_object_key] = processing["verse"]; + } + if (an_object.length > 0) { + debug(poem) { writeln(__LINE__); writeln(obj_cite_digits.object_number, line); } + processing.remove("verse"); + an_object["is"] = "verse"; + ST_txtAndAnchorTagPlusHasFootnotesUrlsImages substantive_obj_misc_struct + = obj_im.obj_inline_markup_and_anchor_tags_and_misc(an_object, an_object_key, conf_make_meta, No._new_doc); + an_object["substantive"] = substantive_obj_misc_struct.obj_txt; + anchor_tag = substantive_obj_misc_struct.anchor_tag; + comp_obj_ = set_object_generic("body", "body", "block", "verse", an_object["substantive"], obj_cite_digits.object_number); + comp_obj_.metainfo.identifier = obj_cite_digits.identifier; + comp_obj_.metainfo.object_number_off = obj_cite_digits.off; + comp_obj_.metainfo.o_n_book_index = obj_cite_digits.bkidx; + comp_obj_.metainfo.object_number_type = obj_cite_digits.type; + comp_obj_.tags.html_segment_anchor_tag_is = tag_in_seg["seg_lv4"]; + comp_obj_.tags.epub_segment_anchor_tag_is = tag_in_seg["seg_lv1to4"]; + comp_obj_.has.inline_notes_reg = substantive_obj_misc_struct.has_notes_reg; + comp_obj_.has.inline_notes_star = substantive_obj_misc_struct.has_notes_star; + comp_obj_.has.inline_links = substantive_obj_misc_struct.has_links; + the_document_body_section ~= comp_obj_; + tag_assoc = an_object.inline_para_link_anchor(tag_in_seg, tag_assoc); + object_number_poem["end"] = obj_cite_digits.object_number.to!string; + object_reset(an_object); + processing.remove("verse"); + ++cntr; + } + pith["block_is"] = eN.blk_is.poem; + pith["block_state"] = eN.blk_state.closing; + pith["block_delim"] = eN.blk_delim.off; + } else { + processing["verse"] ~= line ~= "\n"; + if (pith["verse_new"] == eN.bi.on) { + obj_cite_digits = ocn_emit(pith["ocn"]); + pith["verse_new"] = eN.bi.off; + } else if (line.matchFirst(rgx.newline_eol_delimiter_only)) { + processing["verse"] = processing["verse"].stripRight; + pith["verse_new"] = eN.bi.on; + verse_line = eN.bi.off; + } + if (pith["verse_new"] == eN.bi.on) { + verse_line = 1; + an_object[an_object_key] = processing["verse"]; + debug(poem) { writefln( + "* %s tic\n%s", + obj_cite_digits.object_number, + an_object[an_object_key] + ); + } + processing.remove("verse"); + an_object["is"] = "verse"; + auto comp_obj_location + = node_construct.node_location_emitter( + content_non_header, + tag_in_seg, + lev_anchor_tag, + tag_assoc, + obj_cite_digits, + cntr, + heading_ptr-1, + an_object["is"] + ); + ST_txtAndAnchorTagPlusHasFootnotesUrlsImages substantive_obj_misc_struct + = obj_im.obj_inline_markup_and_anchor_tags_and_misc(an_object, an_object_key, conf_make_meta, No._new_doc); + an_object["substantive"] = substantive_obj_misc_struct.obj_txt; + anchor_tag = substantive_obj_misc_struct.anchor_tag; + comp_obj_ = set_object_generic("body", "body", "block", "verse", an_object["substantive"], obj_cite_digits.object_number); + comp_obj_.metainfo.identifier = obj_cite_digits.identifier; + comp_obj_.metainfo.object_number_off = obj_cite_digits.off; + comp_obj_.metainfo.o_n_book_index = obj_cite_digits.bkidx; + comp_obj_.metainfo.object_number_type = obj_cite_digits.type; + comp_obj_.tags.html_segment_anchor_tag_is = tag_in_seg["seg_lv4"]; + comp_obj_.tags.epub_segment_anchor_tag_is = tag_in_seg["seg_lv1to4"]; + comp_obj_.has.inline_notes_reg = substantive_obj_misc_struct.has_notes_reg; + comp_obj_.has.inline_notes_star = substantive_obj_misc_struct.has_notes_star; + comp_obj_.has.inline_links = substantive_obj_misc_struct.has_links; + the_document_body_section ~= comp_obj_; + tag_assoc = an_object.inline_para_link_anchor(tag_in_seg, tag_assoc); + object_reset(an_object); + processing.remove("verse"); + ++cntr; + } + } } else if (pith["block_delim"] == eN.blk_delim.tic) { if (auto m = line.matchFirst(rgx.block_tic_close)) { an_object[an_object_key] = "verse"; @@ -1934,6 +2100,19 @@ ST_txt_by_line_block_generic txt_by_line_block_code()( debug(codecurly) { writeln(line); } an_object[an_object_key] ~= line ~= "\n"; } + } else if (pith["block_delim"] == eN.blk_delim.quotemarks) { + if (line.matchFirst(rgx.block_quotemarks_close)) { + debug(codequotemarks) { writeln(line); } + an_object[an_object_key] = an_object[an_object_key] + .replaceFirst(rgx.newline_eol_delimiter_only, "") + .stripRight; + pith["block_is"] = eN.blk_is.code; + pith["block_state"] = eN.blk_state.closing; + pith["block_delim"] = eN.blk_delim.off; + } else { + debug(codequotemarks) { writeln(line); } + an_object[an_object_key] ~= line ~= "\n"; + } } else if (pith["block_delim"] == eN.blk_delim.tic) { if (line.matchFirst(rgx.block_tic_close)) { debug(codetic) { writeln(line); } @@ -2002,6 +2181,16 @@ ST_txt_by_line_block_generic txt_by_line_block_code()( debug(table) { writeln(line); } an_object[an_object_key] ~= line ~= "\n"; } + } else if (pith["block_delim"] == eN.blk_delim.quotemarks) { + if (line.matchFirst(rgx.block_quotemarks_close)) { + debug(table) { writeln(line); } + pith["block_is"] = eN.blk_is.table; + pith["block_state"] = eN.blk_state.closing; + pith["block_delim"] = eN.blk_delim.off; + } else { + debug(table) { writeln(line); } + an_object[an_object_key] ~= line ~= "\n"; + } } else if (pith["block_delim"] == eN.blk_delim.tic) { if (line.matchFirst(rgx.block_tic_close)) { debug(table) { writeln(line); } @@ -2045,6 +2234,17 @@ ST_txt_by_line_block_generic txt_by_line_block_quote()( debug(quote) { writeln(line); } an_object[an_object_key] ~= line ~= "\n"; } + } else if (pith["block_delim"] == eN.blk_delim.quotemarks) { + if (line.matchFirst(rgx.block_quotemarks_close)) { + debug(quote) { writeln(line); } + an_object[an_object_key] = an_object[an_object_key].stripRight; + pith["block_is"] = eN.blk_is.quote; + pith["block_state"] = eN.blk_state.closing; + pith["block_delim"] = eN.blk_delim.off; + } else { + debug(quote) { writeln(line); } + an_object[an_object_key] ~= line ~= "\n"; + } } else if (pith["block_delim"] == eN.blk_delim.tic) { if (line.matchFirst(rgx.block_tic_close)) { debug(quote) { writeln(line); } @@ -3899,7 +4099,7 @@ ST_the_section build_the_glossary_section( } } else { // para { - auto _get = line.flow_para_match_(an_object, an_object_key, indent, bullet, pith, line_occur); + ST_flow_para_match _get = line.flow_para_match_(an_object, an_object_key, indent, bullet, pith, line_occur); { an_object = _get.this_object; an_object_key = _get.this_object_key; @@ -4206,7 +4406,7 @@ ST_the_section build_the_blurb_section(Opt) ( tag_assoc[comp_obj_.tags.segment_anchor_tag_epub]["seg_lv1to4"] = comp_obj_.tags.segment_anchor_tag_epub; } else if (!(line.empty)) { { - auto _get = line.flow_para_match_(an_object, an_object_key, indent, bullet, pith, line_occur); + ST_flow_para_match _get = line.flow_para_match_(an_object, an_object_key, indent, bullet, pith, line_occur); { an_object = _get.this_object; an_object_key = _get.this_object_key; diff --git a/org/ocda_obj_setter.org b/org/ocda_obj_setter.org index 576c693..f37df13 100644 --- a/org/ocda_obj_setter.org +++ b/org/ocda_obj_setter.org @@ -4,7 +4,7 @@ #+FILETAGS: :spine:abstraction: #+AUTHOR: Ralph Amissah #+EMAIL: [[mailto:ralph.amissah@gmail.com][ralph.amissah@gmail.com]] -#+COPYRIGHT: Copyright (C) 2015 - 2024 Ralph Amissah +#+COPYRIGHT: Copyright (C) 2015 - 2025 Ralph Amissah #+LANGUAGE: en #+STARTUP: content hideblocks hidestars noindent entitiespretty #+PROPERTY: header-args :noweb yes @@ -437,6 +437,7 @@ static auto eN() { tic, curly_special, tic_special, + quotemarks, } } return _e(); diff --git a/org/out_curate_metadata.org b/org/out_curate_metadata.org index 40a47e7..559f5e0 100644 --- a/org/out_curate_metadata.org +++ b/org/out_curate_metadata.org @@ -4,7 +4,7 @@ #+FILETAGS: :spine:hub: #+AUTHOR: Ralph Amissah #+EMAIL: [[mailto:ralph.amissah@gmail.com][ralph.amissah@gmail.com]] -#+COPYRIGHT: Copyright (C) 2015 - 2024 Ralph Amissah +#+COPYRIGHT: Copyright (C) 2015 - 2025 Ralph Amissah #+LANGUAGE: en #+STARTUP: content hideblocks hidestars noindent entitiespretty #+PROPERTY: header-args :exports code @@ -50,19 +50,17 @@ template spineMetaDocCurate() { #+NAME: metadoc_curate_imports #+BEGIN_SRC d -import - sisudoc.meta.defaults, - sisudoc.meta.rgx; -import - std.array, - std.exception, - std.regex, - std.stdio, - std.string, - std.typecons, - std.uni, - std.utf, - std.conv : to; +import sisudoc.meta.defaults; +import sisudoc.meta.rgx; +import std.array; +import std.exception; +import std.regex; +import std.stdio; +import std.string; +import std.typecons; +import std.uni; +import std.utf; +import std.conv : to; #+END_SRC *** initialize :report: @@ -127,17 +125,15 @@ return hvst.curate; <<doc_header_including_copyright_and_license>> module sisudoc.meta.metadoc_curate_topics; @safe: - import - std.algorithm, - std.array, - std.exception, - std.regex, - std.stdio, - std.string, - std.conv : to; - import - sisudoc.meta.defaults, - sisudoc.meta.rgx; + import std.algorithm; + import std.array; + import std.exception; + import std.regex; + import std.stdio; + import std.string; + import std.conv : to; + import sisudoc.meta.defaults; + import sisudoc.meta.rgx; mixin spineCurateMetadata; mixin InternalMarkup; template spineMetaDocCuratesTopics() { @@ -472,17 +468,15 @@ try { <<doc_header_including_copyright_and_license>> module sisudoc.meta.metadoc_curate_authors; @safe: - import - std.algorithm, - std.array, - std.exception, - std.regex, - std.stdio, - std.string, - std.conv : to; - import - sisudoc.meta.defaults, - sisudoc.meta.rgx; + import std.algorithm; + import std.array; + import std.exception; + import std.regex; + import std.stdio; + import std.string; + import std.conv : to; + import sisudoc.meta.defaults; + import sisudoc.meta.rgx; mixin spineCurateMetadata; mixin InternalMarkup; template spineMetaDocCuratesAuthors() { diff --git a/org/out_latex.org b/org/out_latex.org index 9685554..9312827 100644 --- a/org/out_latex.org +++ b/org/out_latex.org @@ -4,7 +4,7 @@ #+FILETAGS: :spine:output:latex:pdf: #+AUTHOR: Ralph Amissah #+EMAIL: [[mailto:ralph.amissah@gmail.com][ralph.amissah@gmail.com]] -#+COPYRIGHT: Copyright (C) 2015 - 2024 Ralph Amissah +#+COPYRIGHT: Copyright (C) 2015 - 2025 Ralph Amissah #+LANGUAGE: en #+STARTUP: content hideblocks hidestars noindent entitiespretty #+PROPERTY: header-args :exports code @@ -41,9 +41,8 @@ module sisudoc.io_out.latex; #+HEADER: :noweb yes #+BEGIN_SRC d template paperLaTeX() { - import - std.format, - std.conv : to; + import std.format; + import std.conv : to; auto paperLaTeX() { <<Struct_shared_geometry_paper_dimensions>> return PaperType(); @@ -289,9 +288,8 @@ void outputLaTeX(D,M)( #+NAME: Initialize_output_style #+BEGIN_SRC d -import - std.format, - std.conv : to; +import std.format; +import std.conv : to; #+END_SRC **** write latex styles output :latex:out: @@ -663,15 +661,13 @@ fonts to try: #+NAME: ImportsAndMixins_imports #+BEGIN_SRC d -import - std.file, - std.outbuffer, - std.uri, - std.conv : to; -import - sisudoc.io_out, - sisudoc.io_out.rgx, - sisudoc.io_out.rgx_latex; +import std.file; +import std.outbuffer; +import std.uri; +import std.conv : to; +import sisudoc.io_out; +import sisudoc.io_out.rgx; +import sisudoc.io_out.rgx_latex; mixin spineRgxOut; static auto rgx = RgxO(); mixin spineRgxLSC; @@ -2050,7 +2046,7 @@ if (paper_set.is_portrait) { ***** (a4, a5, b4, letter, legal) * (portrait & landscape) -#+BEGIN_SRC sh +#+BEGIN_SRC shell $SpineBIN/spine --verbose --latex --set-papersize="a4,letter.portrait,b4.portrait" --output="$SpineOUT" $SpinePOD/* #+END_SRC diff --git a/org/out_metadata.org b/org/out_metadata.org index d43adf2..7a080fa 100644 --- a/org/out_metadata.org +++ b/org/out_metadata.org @@ -4,7 +4,7 @@ #+FILETAGS: :spine:output:metadata: #+AUTHOR: Ralph Amissah #+EMAIL: [[mailto:ralph.amissah@gmail.com][ralph.amissah@gmail.com]] -#+COPYRIGHT: Copyright (C) 2015 - 2024 Ralph Amissah +#+COPYRIGHT: Copyright (C) 2015 - 2025 Ralph Amissah #+LANGUAGE: en #+STARTUP: content hideblocks hidestars noindent entitiespretty #+PROPERTY: header-args :exports code @@ -28,7 +28,7 @@ module sisudoc.io_out.metadata; // @safe: template outputMetadata() { - void outputMetadata(T)(T doc_matters) { + void outputMetadata(T)(T doc_matters) { <<curated_html_search>> <<output_imports>> <<curated_html_themes_0>> @@ -47,11 +47,10 @@ template outputMetadata() { #+NAME: output_imports #+BEGIN_SRC d -import - std.digest.crc, - std.digest.sha, - std.file, - std.format; +import std.digest.crc; +import std.digest.sha; +import std.file; +import std.format; import sisudoc.io_out; mixin InternalMarkup; char[] metadata_; @@ -188,11 +187,6 @@ if (doc_matters.opt.action.html_link_markup_source) { } } } -metadata_ ~= "<p class=\"lev2\"><tt>" - ~ doc_matters.doc_digest.markup_doc.toHexString - ~ "</tt> - " - ~ doc_matters.src.filename - ~ "</p>"; if (doc_matters.conf_make_meta.meta.classify_topic_register_arr.length > 0) { metadata_ ~= "<hr /><p class=\"lev0\">Topics:</p>"; string[] _top = ["", "", "", "", ""]; @@ -324,9 +318,7 @@ void metadata_write_output(M)(M doc_matters, char[] metadata_) { } catch (ErrnoException ex) { // Handle error } - if (doc_matters.opt.action.vox_gt0) { - writeln(" ", pth_html.fn_scroll("metadata." ~ doc_matters.src.filename)); - } + if (doc_matters.opt.action.vox_gt0) { writeln(" ", pth_html.fn_scroll("metadata." ~ doc_matters.src.filename)); } } #+END_SRC diff --git a/org/out_odt.org b/org/out_odt.org index 4344473..3acc5ed 100644 --- a/org/out_odt.org +++ b/org/out_odt.org @@ -4,7 +4,7 @@ #+FILETAGS: :spine:output:xml:odt: #+AUTHOR: Ralph Amissah #+EMAIL: [[mailto:ralph.amissah@gmail.com][ralph.amissah@gmail.com]] -#+COPYRIGHT: Copyright (C) 2015 - 2024 Ralph Amissah +#+COPYRIGHT: Copyright (C) 2015 - 2025 Ralph Amissah #+LANGUAGE: en #+STARTUP: content hideblocks hidestars noindent entitiespretty #+PROPERTY: header-args :exports code @@ -1041,20 +1041,17 @@ void outputODT(D,I)( #+NAME: output_imports #+BEGIN_SRC d -import - sisudoc.io_out, - sisudoc.io_out.rgx, - sisudoc.io_out.rgx_xhtml; -import - std.file, - std.outbuffer, - std.uri, - std.zip, - std.conv : to; -import - sisudoc.io_out.create_zip_file, - sisudoc.io_out.xmls, - sisudoc.io_out.xmls_css; +import sisudoc.io_out; +import sisudoc.io_out.rgx; +import sisudoc.io_out.rgx_xhtml; +import std.file; +import std.outbuffer; +import std.uri; +import std.zip; +import std.conv : to; +import sisudoc.io_out.create_zip_file; +import sisudoc.io_out.xmls; +import sisudoc.io_out.xmls_css; #+END_SRC *** make directory tree diff --git a/org/out_sqlite.org b/org/out_sqlite.org index 991c4ad..a6802f6 100644 --- a/org/out_sqlite.org +++ b/org/out_sqlite.org @@ -4,7 +4,7 @@ #+FILETAGS: :spine:output:db:sql:sqlite: #+AUTHOR: Ralph Amissah #+EMAIL: [[mailto:ralph.amissah@gmail.com][ralph.amissah@gmail.com]] -#+COPYRIGHT: Copyright (C) 2015 - 2024 Ralph Amissah +#+COPYRIGHT: Copyright (C) 2015 - 2025 Ralph Amissah #+LANGUAGE: en #+STARTUP: content hideblocks hidestars noindent entitiespretty #+PROPERTY: header-args :exports code @@ -81,11 +81,8 @@ long _metadata_tid_lastrowid; #+HEADER: :noweb yes #+BEGIN_SRC d template SQLiteHubBuildTablesAndPopulate() { - void SQLiteHubBuildTablesAndPopulate(D,M)( - const D doc_abstraction, - M doc_matters, - ) { - auto pth_sqlite = spinePathsSQLite!()(doc_matters.sqlite.filename, doc_matters.sqlite.path); + void SQLiteHubBuildTablesAndPopulate(D)(D doc) { + auto pth_sqlite = spinePathsSQLite!()(doc.matters.sqlite.filename, doc.matters.sqlite.path); if ((isValidPath(pth_sqlite.base) && exists(pth_sqlite.base) != 0 && pth_sqlite.base.isDir)) { } else { try { @@ -93,20 +90,19 @@ template SQLiteHubBuildTablesAndPopulate() { } catch (FileException ex) { } } template SQLiteDbStatementComposite() { - void SQLiteDbStatementComposite(Db,D,M)( - Db db, - const D doc_abstraction, - M doc_matters, + void SQLiteDbStatementComposite(Db,D)( + Db db, + D doc ) { <<sqlite_db_statement_composite_collection>> - if (doc_matters.opt.action.vox_gt0) { + if (doc.matters.opt.action.vox_gt0) { writeln(" ", pth_sqlite.sqlite_file); } } } try { auto db = Database(pth_sqlite.sqlite_file); - SQLiteDbStatementComposite!()(db, doc_abstraction, doc_matters); + SQLiteDbStatementComposite!()(db, doc); } catch (FileException e) { writeln("Failed (FileException): ", e.msg, " ", pth_sqlite.sqlite_file); @@ -141,24 +137,20 @@ template SQLiteHubBuildTablesAndPopulate() { #+HEADER: :noweb yes #+BEGIN_SRC d template SQLiteHubDiscreteBuildTablesAndPopulate() { - void SQLiteHubDiscreteBuildTablesAndPopulate(D,M)( - const D doc_abstraction, - M doc_matters, - ) { - auto url_html = spineUrlsHTML!()(doc_matters.conf_make_meta.conf.w_srv_data_root_url_html, doc_matters.src.language); - auto pth_sqlite = spinePathsSQLiteDiscrete!()(doc_matters.output_path, doc_matters.src.language); // doc_matters.db_path + void SQLiteHubDiscreteBuildTablesAndPopulate(D)(D doc) { + auto url_html = spineUrlsHTML!()(doc.matters.conf_make_meta.conf.w_srv_data_root_url_html, doc.matters.src.language); + auto pth_sqlite = spinePathsSQLiteDiscrete!()(doc.matters.output_path, doc.matters.src.language); // doc.matters.db_path if ((isValidPath(pth_sqlite.base) && exists(pth_sqlite.base) != 0 && pth_sqlite.base.isDir)) { } else { try { pth_sqlite.base.mkdirRecurse; } catch (FileException ex) { } } - auto db = Database(pth_sqlite.sqlite_file(doc_matters.src.filename)); + auto db = Database(pth_sqlite.sqlite_file(doc.matters.src.filename)); template SQLiteDiscreteDbStatementComposite() { - void SQLiteDiscreteDbStatementComposite(Db,D,M)( - Db db, - const D doc_abstraction, - M doc_matters, + void SQLiteDiscreteDbStatementComposite(Db,D)( + Db db, + D doc ) { try { <<sqlite_db_statement_composite_discrete>> @@ -185,12 +177,12 @@ template SQLiteHubDiscreteBuildTablesAndPopulate() { import core.runtime; core.runtime.Runtime.terminate(); } - if (doc_matters.opt.action.vox_gt0) { - writeln(" ", pth_sqlite.sqlite_file(doc_matters.src.filename)); + if (doc.matters.opt.action.vox_gt0) { + writeln(" ", pth_sqlite.sqlite_file(doc.matters.src.filename)); } } } - SQLiteDiscreteDbStatementComposite!()(db, doc_abstraction, doc_matters); + SQLiteDiscreteDbStatementComposite!()(db, doc); } } #+END_SRC @@ -245,9 +237,7 @@ template SQLinsertDelimiter() { } } template SQLiteFormatAndLoadObject() { - auto SQLiteFormatAndLoadObject(M)( - M doc_matters, - ) { + auto SQLiteFormatAndLoadObject(M)(M doc_matters) { mixin spineRgxOut; mixin spineRgxXHTML; struct sqlite_format_and_load_objects { @@ -313,9 +303,7 @@ template SQLiteTablesReCreate() { #+HEADER: :noweb yes #+BEGIN_SRC d template SQLiteDeleteDocument() { - string SQLiteDeleteDocument(M)( - M doc_matters, - ) { + string SQLiteDeleteDocument(M)(M doc_matters) { <<sqlite_formatted_delete_format>> <<sqlite_formatted_delete_sql>> <<sqlite_formatted_delete_values>> @@ -330,9 +318,7 @@ template SQLiteDeleteDocument() { #+HEADER: :noweb yes #+BEGIN_SRC d template SQLiteInsertMetadata() { - string SQLiteInsertMetadata(M)( - M doc_matters, - ) { + string SQLiteInsertMetadata(M)(M doc_matters) { <<sqlite_formatted_insertions_doc_matters_metadata_format>> <<sqlite_formatted_insertions_doc_matters_metadata_sql>> <<sqlite_formatted_insertions_doc_matters_metadata_sql_values>> @@ -348,9 +334,7 @@ template SQLiteInsertMetadata() { #+HEADER: :noweb yes #+BEGIN_SRC d template SQLiteInsertMetadataTopics() { - string SQLiteInsertMetadataTopics(M)( - M doc_matters, - ) { + string SQLiteInsertMetadataTopics(M)(M doc_matters) { <<sqlite_formatted_insertions_topic_register_loop>> <<sqlite_formatted_insertions_topic_register_format>> <<sqlite_formatted_insertions_topic_register_sql>> @@ -368,12 +352,9 @@ template SQLiteInsertMetadataTopics() { #+HEADER: :noweb yes #+BEGIN_SRC d template SQLiteInsertDocObjectsLoop() { - string SQLiteInsertDocObjectsLoop(D,M)( - const D doc_abstraction, - M doc_matters, - ) { - string _uid = SQLinsertDelimiter!()(doc_matters.src.doc_uid); - auto url_html = spineUrlsHTML!()(doc_matters.conf_make_meta.conf.w_srv_data_root_url_html, doc_matters.src.language); + string SQLiteInsertDocObjectsLoop(D)(D doc) { + string _uid = SQLinsertDelimiter!()(doc.matters.src.doc_uid); + auto url_html = spineUrlsHTML!()(doc.matters.conf_make_meta.conf.w_srv_data_root_url_html, doc.matters.src.language); string insertDocObjectsRow(O)(O obj) { <<sqlite_formatted_insertions_doc_objects_format>> <<sqlite_formatted_insertions_doc_objects_sql>> @@ -525,8 +506,8 @@ template SQLiteDbDrop() { #+NAME: sqlite_db_statement_composite_collection #+BEGIN_SRC d string _db_statement; -if ((doc_matters.opt.action.sqlite_db_create)) { - auto pth_sqlite = spinePathsSQLite!()(doc_matters.sqlite.filename, doc_matters.sqlite.path); +if ((doc.matters.opt.action.sqlite_db_create)) { + auto pth_sqlite = spinePathsSQLite!()(doc.matters.sqlite.filename, doc.matters.sqlite.path); if ((isValidPath(pth_sqlite.base) && exists(pth_sqlite.base) != 0 && pth_sqlite.base.isDir)) { } else { try { @@ -534,27 +515,27 @@ if ((doc_matters.opt.action.sqlite_db_create)) { } catch (FileException ex) { } } _db_statement ~= SQLiteTablesReCreate!()(); - SQLiteDbRun!()(db, _db_statement, doc_matters.opt.action, "TABLE RE-CREATE"); + SQLiteDbRun!()(db, _db_statement, doc.matters.opt.action, "TABLE RE-CREATE"); _db_statement = []; } -if (doc_matters.opt.action.sqlite_delete) { - _db_statement ~= SQLiteDeleteDocument!()(doc_matters); - SQLiteDbRun!()(db, _db_statement, doc_matters.opt.action, "DELETE Document"); +if (doc.matters.opt.action.sqlite_delete) { + _db_statement ~= SQLiteDeleteDocument!()(doc.matters); + SQLiteDbRun!()(db, _db_statement, doc.matters.opt.action, "DELETE Document"); _db_statement = []; } -if (doc_matters.opt.action.sqlite_update) { - _db_statement ~= SQLiteDeleteDocument!()(doc_matters); - SQLiteDbRun!()(db, _db_statement, doc_matters.opt.action, "DELETE Document"); +if (doc.matters.opt.action.sqlite_update) { + _db_statement ~= SQLiteDeleteDocument!()(doc.matters); + SQLiteDbRun!()(db, _db_statement, doc.matters.opt.action, "DELETE Document"); _db_statement = []; - _db_statement ~= SQLiteInsertMetadata!()(doc_matters); - SQLiteDbRun!()(db, _db_statement, doc_matters.opt.action, "INSERT MetaData"); + _db_statement ~= SQLiteInsertMetadata!()(doc.matters); + SQLiteDbRun!()(db, _db_statement, doc.matters.opt.action, "INSERT MetaData"); _db_statement = []; - /+ get tid (lastrowid or max) for use in doc_objects table +/ - _db_statement ~= doc_abstraction.SQLiteInsertDocObjectsLoop!()(doc_matters); - SQLiteDbRun!()(db, _db_statement, doc_matters.opt.action, "INSERT DocObjects"); + /+ get tid (lastrowid or max) for use in doc.objects table +/ + _db_statement ~= doc.SQLiteInsertDocObjectsLoop!(); + SQLiteDbRun!()(db, _db_statement, doc.matters.opt.action, "INSERT DocObjects"); _db_statement = []; - _db_statement ~= SQLiteInsertMetadataTopics!()(doc_matters); - SQLiteDbRun!()(db, _db_statement, doc_matters.opt.action, "INSERT MetaDataTopics"); + _db_statement ~= SQLiteInsertMetadataTopics!()(doc.matters); + SQLiteDbRun!()(db, _db_statement, doc.matters.opt.action, "INSERT MetaDataTopics"); _db_statement = []; } db.close; @@ -567,10 +548,10 @@ db.close; { string _db_statement; _db_statement ~= SQLiteTablesReCreate!()(); - _db_statement ~= SQLiteInsertMetadata!()(doc_matters); - _db_statement ~= SQLiteInsertMetadataTopics!()(doc_matters); - _db_statement ~= doc_abstraction.SQLiteInsertDocObjectsLoop!()(doc_matters); - SQLiteDbRun!()(db, _db_statement, doc_matters.opt.action, "table CREATE Tables, INSERT DocObjects"); + _db_statement ~= SQLiteInsertMetadata!()(doc.matters); + _db_statement ~= SQLiteInsertMetadataTopics!()(doc.matters); + _db_statement ~= doc.SQLiteInsertDocObjectsLoop!(); + SQLiteDbRun!()(db, _db_statement, doc.matters.opt.action, "table CREATE Tables, INSERT DocObjects"); } db.close; #+END_SRC @@ -579,13 +560,12 @@ db.close; #+NAME: sqlite_imports #+BEGIN_SRC d -import - sisudoc.io_out, - sisudoc.io_out.rgx, - sisudoc.io_out.rgx_xhtml; -import - std.file, - std.uri; +import sisudoc.io_out; +import sisudoc.io_out.rgx; +import sisudoc.io_out.rgx_xhtml; +import std.file; +import std.uri; +// import std.digest.sha; import std.conv : to; import std.typecons : Nullable; import d2sqlite3; @@ -1534,23 +1514,23 @@ string[string] table(M,O)( #+NAME: sqlite_objects_loop #+BEGIN_SRC d -auto format_and_sqlite_load = SQLiteFormatAndLoadObject!()(doc_matters); +auto format_and_sqlite_load = SQLiteFormatAndLoadObject!()(doc.matters); string[string] obj_txt; string doc_text; string[] _insert_doc_objects; -foreach (part; doc_matters.has.keys_seq.sql) { - foreach (obj; doc_abstraction[part]) { +foreach (part; doc.matters.has.keys_seq.sql) { + foreach (obj; doc.abstraction[part]) { switch (obj.metainfo.is_of_part) { case "frontmatter": assert(part == "head", part); switch (obj.metainfo.is_of_type) { case "para": switch (obj.metainfo.is_a) { case "heading": - obj_txt = format_and_sqlite_load.heading(doc_matters, obj); + obj_txt = format_and_sqlite_load.heading(doc.matters, obj); break; default: { /+ debug +/ - if (doc_matters.opt.action.debug_do_sqlite) { + if (doc.matters.opt.action.debug_do_sqlite) { writeln(__FILE__, ":", __LINE__, ": ", obj.metainfo.is_a); } } @@ -1559,7 +1539,7 @@ foreach (part; doc_matters.has.keys_seq.sql) { break; default: { /+ debug +/ - if (doc_matters.opt.action.debug_do_sqlite) { + if (doc.matters.opt.action.debug_do_sqlite) { writeln(__FILE__, ":", __LINE__, ": ", obj.metainfo.is_of_type); } } @@ -1576,14 +1556,14 @@ foreach (part; doc_matters.has.keys_seq.sql) { writeln(__LINE__, ": ", obj.text); } } - obj_txt = format_and_sqlite_load.heading(doc_matters, obj); + obj_txt = format_and_sqlite_load.heading(doc.matters, obj); break; case "para": - obj_txt = format_and_sqlite_load.para(doc_matters, obj); + obj_txt = format_and_sqlite_load.para(doc.matters, obj); break; default: { /+ debug +/ - if (doc_matters.opt.action.debug_do_sqlite) { + if (doc.matters.opt.action.debug_do_sqlite) { writeln(__FILE__, ":", __LINE__, ": ", obj.metainfo.is_a); } } @@ -1593,28 +1573,28 @@ foreach (part; doc_matters.has.keys_seq.sql) { case "block": switch (obj.metainfo.is_a) { case "quote": - obj_txt = format_and_sqlite_load.quote(doc_matters, obj); + obj_txt = format_and_sqlite_load.quote(doc.matters, obj); break; case "group": - obj_txt = format_and_sqlite_load.group(doc_matters, obj); + obj_txt = format_and_sqlite_load.group(doc.matters, obj); break; case "block": - obj_txt = format_and_sqlite_load.block(doc_matters, obj); + obj_txt = format_and_sqlite_load.block(doc.matters, obj); break; case "poem": // double check on keeping both poem & verse break; case "verse": - obj_txt = format_and_sqlite_load.verse(doc_matters, obj); + obj_txt = format_and_sqlite_load.verse(doc.matters, obj); break; case "code": - obj_txt = format_and_sqlite_load.code(doc_matters, obj); + obj_txt = format_and_sqlite_load.code(doc.matters, obj); break; case "table": - obj_txt = format_and_sqlite_load.table(doc_matters, obj); + obj_txt = format_and_sqlite_load.table(doc.matters, obj); break; default: { /+ debug +/ - if (doc_matters.opt.action.debug_do_sqlite) { + if (doc.matters.opt.action.debug_do_sqlite) { writeln(__FILE__, ":", __LINE__, ": ", obj.metainfo.is_a); } } @@ -1623,7 +1603,7 @@ foreach (part; doc_matters.has.keys_seq.sql) { break; default: { /+ debug +/ - if (doc_matters.opt.action.debug_do_sqlite) { + if (doc.matters.opt.action.debug_do_sqlite) { writeln(__FILE__, ":", __LINE__, ": ", obj.metainfo.is_of_type); } } @@ -1636,23 +1616,23 @@ foreach (part; doc_matters.has.keys_seq.sql) { case "para": switch (obj.metainfo.is_a) { case "heading": - obj_txt = format_and_sqlite_load.heading(doc_matters, obj); + obj_txt = format_and_sqlite_load.heading(doc.matters, obj); break; case "glossary": assert(part == "glossary", part); - obj_txt = format_and_sqlite_load.para(doc_matters, obj); + obj_txt = format_and_sqlite_load.para(doc.matters, obj); break; case "bibliography": assert(part == "bibliography", part); - obj_txt = format_and_sqlite_load.para(doc_matters, obj); + obj_txt = format_and_sqlite_load.para(doc.matters, obj); break; case "bookindex": assert(part == "bookindex", part); - obj_txt = format_and_sqlite_load.para(doc_matters, obj); + obj_txt = format_and_sqlite_load.para(doc.matters, obj); break; case "blurb": assert(part == "blurb", part); - obj_txt = format_and_sqlite_load.para(doc_matters, obj); + obj_txt = format_and_sqlite_load.para(doc.matters, obj); break; default: { /+ debug +/ - if (doc_matters.opt.action.debug_do_sqlite) { + if (doc.matters.opt.action.debug_do_sqlite) { writeln(__FILE__, ":", __LINE__, ": ", obj.metainfo.is_a); } } @@ -1661,7 +1641,7 @@ foreach (part; doc_matters.has.keys_seq.sql) { break; default: { /+ debug +/ - if (doc_matters.opt.action.debug_do_sqlite) { + if (doc.matters.opt.action.debug_do_sqlite) { writeln(__FILE__, ":", __LINE__, ": ", obj.metainfo.is_of_type); } } @@ -1672,7 +1652,7 @@ foreach (part; doc_matters.has.keys_seq.sql) { break; default: { /+ debug +/ - if (doc_matters.opt.action.debug_do_sqlite) { + if (doc.matters.opt.action.debug_do_sqlite) { writeln(__FILE__, ":", __LINE__, ": ", obj.metainfo.is_of_part); // check where empty value could come from writeln(__FILE__, ":", __LINE__, ": ", obj.metainfo.is_a); writeln(__FILE__, ":", __LINE__, ": ", obj.text); // check where empty value could come from @@ -1681,9 +1661,9 @@ foreach (part; doc_matters.has.keys_seq.sql) { break; } if (obj.metainfo.is_a == "heading") { - if (doc_matters.opt.action.show_sqlite) { + if (doc.matters.opt.action.show_sqlite) { if (obj.metainfo.heading_lev_markup == 0) { - writeln(doc_matters.src.filename); + writeln(doc.matters.src.filename); } writeln( "markup: ", obj.metainfo.heading_lev_markup, diff --git a/org/out_src_pod.org b/org/out_src_pod.org index da2b050..4da9133 100644 --- a/org/out_src_pod.org +++ b/org/out_src_pod.org @@ -4,7 +4,7 @@ #+FILETAGS: :spine:output:source:pod: #+AUTHOR: Ralph Amissah #+EMAIL: [[mailto:ralph.amissah@gmail.com][ralph.amissah@gmail.com]] -#+COPYRIGHT: Copyright (C) 2015 - 2024 Ralph Amissah +#+COPYRIGHT: Copyright (C) 2015 - 2025 Ralph Amissah #+LANGUAGE: en #+STARTUP: content hideblocks hidestars noindent entitiespretty #+PROPERTY: header-args :exports code @@ -31,22 +31,29 @@ template spinePod() { <<output_imports>> void spinePod(T)(T doc_matters) { <<source_pod_init>> - try { - { - pod_archive_directory_tree(doc_matters, pths_pod); - } - auto t = pod_zip_make_ready(doc_matters, pths_pod); - static assert(t.length==3); - auto zip = t[0]; - auto fn_pod = t[1]; - auto _digests = t[2]; - { - zipArchive(doc_matters, fn_pod, zip); - } { - zipArchiveDigest(doc_matters, fn_pod, _digests); + if (doc_matters.opt.action.source_or_pod) { + try { + { + podArchive_directory_tree(doc_matters, pths_pod); + } + { + struct STsrcDigests { + std.zip.ZipArchive zip; + string fn_pod; + string[string][string] digests; + } + STsrcDigests _st; + _st = pod_zipMakeReady(doc_matters, pths_pod, _st); + { + zipArchive(doc_matters, _st.fn_pod, _st.zip); + if (doc_matters.src.language == doc_matters.pod.manifest_list_of_languages[$-1]) { + zipArchiveDigest(doc_matters, _st.fn_pod, _st.digests); + } + } + } + } catch (ErrnoException ex) { + // Handle error } - } catch (ErrnoException ex) { - // Handle error } } <<source_pod_mkdirs>> @@ -62,18 +69,15 @@ template spinePod() { #+NAME: output_imports #+BEGIN_SRC d -import - sisudoc.meta.rgx_files, - sisudoc.io_out; -import - std.digest.sha, - std.file, - std.outbuffer, - std.zip, - std.conv : to; -import - sisudoc.io_out.create_zip_file, - sisudoc.io_out.xmls; +import std.digest.sha; +import std.file; +import std.outbuffer; +import std.zip; +import std.conv : to; +import sisudoc.meta.rgx_files; +import sisudoc.io_out; +import sisudoc.io_out.create_zip_file; +import sisudoc.io_out.xmls; #+END_SRC *** init @@ -96,11 +100,10 @@ assert (doc_matters.src.filename.match(rgx_files.src_fn)); #+NAME: source_pod_archive_prepare_for_zip_and_get_digests #+BEGIN_SRC d -auto pod_zip_make_ready(M,P)(M doc_matters, P pths_pod) { +auto pod_zipMakeReady(M,P,S)(M doc_matters, P pths_pod, S _st) { auto pth_dr_doc_src = doc_matters.src_path_info; - if (doc_matters.opt.action.debug_do_pod - && doc_matters.opt.action.vox_gt1) { - writeln(__LINE__, ": ", + if (doc_matters.opt.action.vox_gt2) { // correct + writeln(__LINE__, ":", __FILE__, ":\n", doc_matters.src.filename, " -> ", pths_pod.fn_doc(doc_matters.src.filename, doc_matters.src.language).filesystem_open_zpod ); @@ -110,7 +113,7 @@ auto pod_zip_make_ready(M,P)(M doc_matters, P pths_pod) { string[string][string] _digests; { // bundle images - get digest foreach (image; doc_matters.srcs.image_list) { - debug(podimages) { + if (doc_matters.opt.action.vox_gt2) { writeln( pth_dr_doc_src.image_root.to!string, "/", image, " -> ", pths_pod.image_root(doc_matters.src.filename).zpod, "/", image @@ -133,12 +136,11 @@ auto pod_zip_make_ready(M,P)(M doc_matters, P pths_pod) { if (doc_matters.opt.action.source_or_pod) { fn_src_in.copy(fn_src_out_filesystem); } - if (doc_matters.opt.action.pod) { - zip = pod_archive("file_path_bin", fn_src_in, fn_src_out_pod_zip_base, zip); + if (doc_matters.opt.action.source_or_pod) { + zip = podArchive("file_path_bin", fn_src_in, fn_src_out_pod_zip_base, zip); } } else { - if (doc_matters.opt.action.debug_do_pod - && doc_matters.opt.action.vox_gt1) { + if (doc_matters.opt.action.debug_do_pod && doc_matters.opt.action.vox_gt1) { writeln("WARNING (io) src out NOT found (image): ", fn_src_in); } } @@ -158,12 +160,11 @@ auto pod_zip_make_ready(M,P)(M doc_matters, P pths_pod) { if (doc_matters.opt.action.source_or_pod) { fn_src_in.copy(fn_src_out_filesystem); } - if (doc_matters.opt.action.pod) { - zip = pod_archive("file_path_text", fn_src_in, fn_src_out_pod_zip_base, zip); + if (doc_matters.opt.action.source_or_pod) { + zip = podArchive("file_path_text", fn_src_in, fn_src_out_pod_zip_base, zip); } } else { - if (doc_matters.opt.action.debug_do_pod - && doc_matters.opt.action.vox_gt1) { + if (doc_matters.opt.action.debug_do_pod && doc_matters.opt.action.vox_gt1) { writeln("WARNING (io) src out NOT found (document make): ", fn_src_in); } } @@ -187,8 +188,7 @@ auto pod_zip_make_ready(M,P)(M doc_matters, P pths_pod) { = File(pths_pod.fn_pod_filelist(doc_matters.src.filename).filesystem_open_zpod, "w"); Node _pmy; string _pm = "doc:\n filename: " ~ doc_matters.src.filename ~ "\n language: " ~ doc_matters.pod.manifest_list_of_languages.to!string ~ "\n"; - if (doc_matters.opt.action.debug_do_pod - && doc_matters.opt.action.vox_gt1) { + if (doc_matters.opt.action.debug_do_pod && doc_matters.opt.action.vox_gt1) { try { _pmy = Loader.fromString(_pm).load(); } catch (ErrnoException ex) { @@ -205,8 +205,8 @@ auto pod_zip_make_ready(M,P)(M doc_matters, P pths_pod) { if (doc_matters.opt.action.source_or_pod) { pod_filelist_yaml_string.writeln(_pm); } - if (doc_matters.opt.action.pod) { - zip = pod_archive("string", _pm, fn_src_out_pod_zip_base, zip); + if (doc_matters.opt.action.source_or_pod) { + zip = podArchive("string", _pm, fn_src_out_pod_zip_base, zip); } } } @@ -220,47 +220,58 @@ auto pod_zip_make_ready(M,P)(M doc_matters, P pths_pod) { = pths_pod.fn_doc(doc_matters.src.filename, doc_matters.src.language).zpod.to!string; // needed without root path: string[] filelist_src_out_pod_arr; string[] filelist_src_zpod_arr; - if (exists(fn_src_in)) { // what of language? - debug(io) { writeln("(io debug) src in found: ", fn_src_in); } - { // take DIGEST write to pod file digests.txt - auto data = (cast(byte[]) (fn_src_in).read); - _digests["en"]["sst"] ~= data.sha256Of.toHexString ~ "::" ~ data.length.to!string ~ " - " ~ doc_matters.src.filename; // FIX language issue - // writeln(data.sha256Of.toHexString, "::", data.length, " - ", doc_matters.src.filename); - } - filelist_src_out_pod_arr ~= fn_src_out_pod_zip_base; - filelist_src_zpod_arr ~= fn_src_out_inside_pod; - string _pod_to_markup_file = doc_matters.src.pod_name ~ "/" ~ "media/text/" ~ doc_matters.src.language ~ "/" ~ doc_matters.src.filename; - if (doc_matters.opt.action.source_or_pod) { - fn_src_in.copy(fn_src_out_filesystem); - } - if (doc_matters.opt.action.pod) { - auto _rgx = regex(r"(?P<path_to_pod>\S+?)(?P<podname>[a-z_-]+)/(?P<from_root>media/text/)(?P<language>\S+?)/(?P<filename>\S+?\.ss[mt])"); - if (auto _x = fn_src_in.match(_rgx)){ - if (doc_matters.src.lng == doc_matters.pod.manifest_list_of_languages[$-1]) { - string _path_to_pod = _x.captures["path_to_pod"]; - string _podname = _x.captures["podname"]; - string _root_to_lang = _x.captures["from_root"]; - string _language = _x.captures["language"]; - string _filename = _x.captures["filename"]; - foreach (_lang; doc_matters.pod.manifest_list_of_languages) { - string _pth_mkup_src_in = _path_to_pod ~ _podname ~ "/" ~ _root_to_lang ~ _lang ~ "/" ~ _filename; - string _pth_mkup_src_out = "pod/" ~ _root_to_lang ~ _lang ~ "/" ~ _filename; - zip = pod_archive("file_path_text", _pth_mkup_src_in, _pth_mkup_src_out, zip); + if (doc_matters.src.language == doc_matters.pod.manifest_list_of_languages[$-1]) { // wait until all language versions of .ssm parsed + foreach (_lang; doc_matters.pod.manifest_list_of_languages) { // do for all language versions + string fn_src_out_filesystem_lng + = pths_pod.fn_doc(doc_matters.src.filename, _lang).filesystem_open_zpod.to!string; + string _sstm = (doc_matters.pod.manifest_path ~ "/media/text/" ~ _lang ~ "/" ~ doc_matters.src.filename); + string _pth_file_sstm; + if (exists(_sstm)) { _pth_file_sstm = _sstm; + } else if (exists(fn_src_in)) { _pth_file_sstm = fn_src_in; + } + if (exists(_pth_file_sstm)) { // what of language? + debug(io) { writeln("(io debug) src in found: ", _pth_file_sstm); } + { // take DIGEST write to pod file digests.txt + auto data = (cast(byte[]) (_pth_file_sstm).read); + _digests[_lang]["sstm"] ~= data.sha256Of.toHexString ~ "::" ~ data.length.to!string ~ " - " ~ doc_matters.src.filename ~ " - [" ~ _lang ~ "]"; + // writeln(data.sha256Of.toHexString, "::", data.length, " - ", doc_matters.src.filename); + } + filelist_src_out_pod_arr ~= fn_src_out_pod_zip_base; + filelist_src_zpod_arr ~= fn_src_out_inside_pod; + string _pod_to_markup_file = doc_matters.src.pod_name ~ "/" ~ "media/text/" ~ _lang ~ "/" ~ doc_matters.src.filename; + if (doc_matters.opt.action.source_or_pod) { + _pth_file_sstm.copy(fn_src_out_filesystem_lng); + } + if (doc_matters.opt.action.source_or_pod) { + auto _rgx_sstm = regex(r"(?P<path_to_pod>\S+?)(?P<podname>[a-z_-]+)/(?P<from_root>media/text/)(?P<language>\S+?)/(?P<filename>\S+?\.ss[mt])"); + if (auto _x = _pth_file_sstm.match(_rgx_sstm)){ + if (doc_matters.src.lng == doc_matters.pod.manifest_list_of_languages[$-1]) { // again wait until all language versions of .ssm parsed + string _path_to_pod = _x.captures["path_to_pod"]; + string _podname = _x.captures["podname"]; + string _root_to_lang = _x.captures["from_root"]; + string _language = _x.captures["language"]; // .ssi inserts expected to have same name across languages + string _filename = _x.captures["filename"]; + foreach (_lang1; doc_matters.pod.manifest_list_of_languages) { // do for all language versions + string _pth_mkup_src_in = _path_to_pod ~ _podname ~ "/" ~ _root_to_lang ~ _lang1 ~ "/" ~ _filename; + string _pth_mkup_src_out = "pod/" ~ _root_to_lang ~ _lang1 ~ "/" ~ _filename; + // writeln("\nin: ", _pth_mkup_src_in, "\nout: ", _pth_mkup_src_out); // DEBUG, REMOVE + zip = podArchive("file_path_text", _pth_mkup_src_in, _pth_mkup_src_out, zip); + } + } + } else { + zip = podArchive("file_path_text", _pth_file_sstm, fn_src_out_pod_zip_base, zip); } } } else { - zip = pod_archive("file_path_text", fn_src_in, fn_src_out_pod_zip_base, zip); + if (doc_matters.opt.action.debug_do_pod && doc_matters.opt.action.vox_gt1) { + writeln("WARNING (io) src in NOT found (markup source): \n", _sstm, "or in", fn_src_in); + } } } - } else { - if (doc_matters.opt.action.debug_do_pod - && doc_matters.opt.action.vox_gt1) { - writeln("WARNING (io) src in NOT found (markup source): ", fn_src_in); - } } } { // bundle insert files (.ssi) - get digest if (doc_matters.srcs.file_insert_list.length > 0) { - auto _rgx = regex(r"(?P<path_to_pod>\S+?)(?P<podname>[a-z_-]+)/(?P<from_root>media/text/)(?P<language>\S+?)/(?P<filename>\S+?\.ss[i])"); + auto _rgx_ssi = regex(r"(?P<path_to_pod>\S+?)(?P<podname>[a-z_-]+)/(?P<from_root>media/text/)(?P<language>\S+?)/(?P<filename>\S+?\.ss[i])"); foreach (insert_file; doc_matters.srcs.file_insert_list) { debug(pod) { writeln( @@ -272,7 +283,7 @@ auto pod_zip_make_ready(M,P)(M doc_matters, P pths_pod) { ).zpod ); } - if (auto _x = insert_file.match(_rgx)){ + if (auto _x = insert_file.match(_rgx_ssi)){ if (doc_matters.src.lng == doc_matters.pod.manifest_list_of_languages[$-1]) { string _path_to_pod = _x.captures["path_to_pod"]; string _podname = _x.captures["podname"]; @@ -297,12 +308,11 @@ auto pod_zip_make_ready(M,P)(M doc_matters, P pths_pod) { ).filesystem_open_zpod.to!string; _pth_mkup_src_in.copy(fn_src_out_filesystem); // check why here, thought dealt with elsewhere } - if (doc_matters.opt.action.pod) { - zip = pod_archive("file_path_text", _pth_mkup_src_in, _pth_mkup_src_out, zip); + if (doc_matters.opt.action.source_or_pod) { + zip = podArchive("file_path_text", _pth_mkup_src_in, _pth_mkup_src_out, zip); } } else { - if (doc_matters.opt.action.debug_do_pod - && doc_matters.opt.action.vox_gt1) { + if (doc_matters.opt.action.debug_do_pod && doc_matters.opt.action.vox_gt1) { writeln("WARNING (io) src out NOT found (insert file): ", _pth_mkup_src_in); } } @@ -332,12 +342,11 @@ auto pod_zip_make_ready(M,P)(M doc_matters, P pths_pod) { if (doc_matters.opt.action.source_or_pod) { fn_src_in.copy(fn_src_out_filesystem); } - if (doc_matters.opt.action.pod) { - zip = pod_archive("file_path_text", fn_src_in, fn_src_out_pod_zip_base, zip); + if (doc_matters.opt.action.source_or_pod) { + zip = podArchive("file_path_text", fn_src_in, fn_src_out_pod_zip_base, zip); } } else { - if (doc_matters.opt.action.debug_do_pod - && doc_matters.opt.action.vox_gt1) { + if (doc_matters.opt.action.debug_do_pod && doc_matters.opt.action.vox_gt1) { writeln("WARNING (io) src out NOT found (insert file): ", fn_src_in); } } @@ -345,24 +354,28 @@ auto pod_zip_make_ready(M,P)(M doc_matters, P pths_pod) { } } } - auto t = tuple(zip, fn_pod, _digests); - return t; + { + _st.zip = zip; + _st.fn_pod = fn_pod; + _st.digests = _digests; + } + return _st; } #+END_SRC ** mkdir :mkdir: +- create directory structure + #+NAME: source_pod_mkdirs #+BEGIN_SRC d -void pod_archive_directory_tree(M,P)(M doc_matters, P pths_pod) { // create directory structure +void podArchive_directory_tree(M,P)(M doc_matters, P pths_pod) { // create directory structure if (!exists(pths_pod.pod_dir_())) { // used both by pod zipped (& pod filesystem (unzipped) which makes its own recursive dirs) pths_pod.pod_dir_().mkdirRecurse; } if (doc_matters.opt.action.source_or_pod) { - if (doc_matters.opt.action.vox_gt0) { - writeln(" ", pths_pod.fn_pod_filelist(doc_matters.src.filename).filesystem_open_zpod); - } + // if (doc_matters.opt.action.vox_gt0) { writeln(" ", pths_pod.fn_pod_filelist(doc_matters.src.filename).filesystem_open_zpod); } if (!exists(pths_pod.text_root(doc_matters.src.filename).filesystem_open_zpod)) { pths_pod.text_root(doc_matters.src.filename).filesystem_open_zpod.mkdirRecurse; } @@ -401,7 +414,7 @@ void pod_archive_directory_tree(M,P)(M doc_matters, P pths_pod) { // create dire #+NAME: source_pod_archive_zip #+BEGIN_SRC d -@system auto pod_archive(Z)( +@system auto podArchive(Z)( string _source_type, string _data_in, string _pth_out, @@ -454,6 +467,7 @@ void zipArchive(M,F,Z)(M doc_matters, F fn_pod, Z zip) { void zipArchiveDigest(M,F,D)(M doc_matters, F fn_pod, D _digests) { import sisudoc.io_out.paths_output; auto pths_pod = spinePathsPods!()(doc_matters); + char[] _zip_digest; try { if (!exists(pths_pod.pod_dir_())) { // used both by pod zipped (& pod filesystem (unzipped) which makes its own recursive dirs) @@ -463,23 +477,20 @@ void zipArchiveDigest(M,F,D)(M doc_matters, F fn_pod, D _digests) { // Handle error } try { - writeln(pths_pod.pod_dir_(), "/", doc_matters.src.filename_base, ".digests.txt"); + // if (doc_matters.opt.action.vox_gt1) { writeln(" ", pths_pod.pod_dir_(), "/", doc_matters.src.filename_base, ".digests.txt"); } string _digest_fn = pths_pod.pod_dir_() ~ "/" ~ doc_matters.src.filename_base ~ ".digests.txt"; - writeln(_digest_fn); + // if (doc_matters.opt.action.vox_gt1) { writeln(_digest_fn); } auto f = File(_digest_fn, "w"); if (exists(fn_pod)) { try { - if (doc_matters.opt.action.vox_gt0 - && doc_matters.opt.action.pod) { - auto data = (cast(byte[]) (fn_pod).read); - if (doc_matters.opt.action.vox_gt1) { - writeln(doc_matters.src.filename, " > ", doc_matters.src.filename_base, ".zip"); - } - if (doc_matters.opt.action.pod) { - auto _zip_digest = (data.sha256Of.toHexString ~ "::" ~ data.length.to!string ~ " - " ~ doc_matters.src.filename_base ~ ".zip"); - writeln(_zip_digest); - f.writeln(_zip_digest); - } + auto data = (cast(byte[]) (fn_pod).read); + // if (doc_matters.opt.action.vox_gt1) { writeln(" ", doc_matters.src.filename, " > ", doc_matters.src.filename_base, ".zip"); } + if (doc_matters.opt.action.pod) { + _zip_digest = (data.sha256Of.toHexString ~ "::" ~ data.length.to!string ~ " - " ~ doc_matters.src.filename_base ~ ".zip"); + if (doc_matters.opt.action.vox_gt0) { writeln(" ", _zip_digest); } + if (doc_matters.opt.action.vox_gt0) { writeln(" ", pths_pod.pod_dir_(), "/", doc_matters.src.filename_base, "/"); } + if (doc_matters.opt.action.vox_gt0) { writeln(" ", _digest_fn); } + f.writeln(_zip_digest); } } catch (ErrnoException ex) { // Handle errors @@ -487,19 +498,19 @@ void zipArchiveDigest(M,F,D)(M doc_matters, F fn_pod, D _digests) { } foreach (_lang; doc_matters.pod.manifest_list_of_languages) { if (_lang in _digests) { - if (("sst" in _digests[_lang]) && (_digests[_lang]["sst"].length > 0)) { - writeln(_digests[_lang]["sst"]); - f.writeln(_digests[_lang]["sst"]); + if (("sstm" in _digests[_lang]) && (_digests[_lang]["sstm"].length > 0)) { + // if (doc_matters.opt.action.vox_gt1) { writeln(_digests[_lang]["sstm"]); } + f.writeln(_digests[_lang]["sstm"]); } if (("ssi" in _digests[_lang]) && (_digests[_lang]["ssi"].length > 0)) { - writeln(_digests[_lang]["ssi"]); + // if (doc_matters.opt.action.vox_gt1) { writeln(_digests[_lang]["ssi"]); } f.writeln(_digests[_lang]["ssi"]); } } } if ("shared" in _digests) { if (("images" in _digests["shared"]) && (_digests["shared"]["images"].length > 0)) { - writeln(_digests["shared"]["images"]); + // if (doc_matters.opt.action.vox_gt1) { writeln(_digests["shared"]["images"]); } f.writeln(_digests["shared"]["images"]); } } @@ -522,7 +533,7 @@ void zipArchiveDigest(M,F,D)(M doc_matters, F fn_pod, D _digests) { *** pod/{pods/} #+NAME: pod_gitignore -#+BEGIN_SRC sh +#+BEGIN_SRC shell # git ls-files --others --exclude-from=.git/info/exclude ,* !.gitignore @@ -600,7 +611,7 @@ tmp/** *** document pod structure #+NAME: pod_gitignore -#+BEGIN_SRC sh +#+BEGIN_SRC shell # git ls-files --others --exclude-from=.git/info/exclude ,* !.gitignore @@ -630,7 +641,7 @@ tmp/** *** pod po4a structure #+NAME: pod_gitignore -#+BEGIN_SRC sh +#+BEGIN_SRC shell # git ls-files --others --exclude-from=.git/info/exclude ,* !.gitignore diff --git a/org/out_xmls.org b/org/out_xmls.org index c3b9aab..65afb8c 100644 --- a/org/out_xmls.org +++ b/org/out_xmls.org @@ -4,7 +4,7 @@ #+FILETAGS: :spine:output:xml: #+AUTHOR: Ralph Amissah #+EMAIL: [[mailto:ralph.amissah@gmail.com][ralph.amissah@gmail.com]] -#+COPYRIGHT: Copyright (C) 2015 - 2024 Ralph Amissah +#+COPYRIGHT: Copyright (C) 2015 - 2025 Ralph Amissah #+LANGUAGE: en #+STARTUP: content hideblocks hidestars noindent entitiespretty #+PROPERTY: header-args :exports code @@ -20,7 +20,7 @@ #+NAME: year #+BEGIN_SRC text -2024 +2025 #+END_SRC * xml offspring (xhtml html epub) @@ -91,38 +91,34 @@ template outputXHTMLs() { #+NAME: output_imports_xml #+BEGIN_SRC d -import - std.file, - std.outbuffer, - std.uri, - std.conv : to; -import - sisudoc.io_out, - sisudoc.io_out.rgx, - sisudoc.meta.rgx_files, - sisudoc.io_out.rgx_xhtml, - sisudoc.io_out.create_zip_file, - sisudoc.io_out.xmls, - sisudoc.io_out.xmls_css; +import std.file; +import std.outbuffer; +import std.uri; +import std.conv : to; +import sisudoc.io_out; +import sisudoc.io_out.rgx; +import sisudoc.meta.rgx_files; +import sisudoc.io_out.rgx_xhtml; +import sisudoc.io_out.create_zip_file; +import sisudoc.io_out.xmls; +import sisudoc.io_out.xmls_css; #+END_SRC **** epub3 #+NAME: output_imports_epub #+BEGIN_SRC d -import - std.file, - std.outbuffer, - std.uri, - std.zip, - std.conv : to; -import - sisudoc.io_out, - sisudoc.io_out.rgx, - sisudoc.io_out.rgx_xhtml, - sisudoc.io_out.create_zip_file, - sisudoc.io_out.xmls, - sisudoc.io_out.xmls_css; +import std.file; +import std.outbuffer; +import std.uri; +import std.zip; +import std.conv : to; +import sisudoc.io_out; +import sisudoc.io_out.rgx; +import sisudoc.io_out.rgx_xhtml; +import sisudoc.io_out.create_zip_file; +import sisudoc.io_out.xmls; +import sisudoc.io_out.xmls_css; #+END_SRC *** misc @@ -1766,10 +1762,7 @@ module sisudoc.io_out.html; template outputHTML() { <<output_imports_xml>> mixin outputXHTMLs; - void scroll(D,M)( - const D doc_abstraction, - M doc_matters, - ) { + void scroll(D)(D doc) { <<output_html_scroll_0>> <<output_html_scroll_loop_parts>> <<output_html_scroll_is_frontmatter>> @@ -1778,10 +1771,7 @@ template outputHTML() { <<output_html_scroll_close_is_case>> } <<output_html_scroll_scroll_write_output>> - void seg(D,M)( - const D doc_abstraction, - M doc_matters, - ) { + void seg(D)(D doc) { <<output_html_seg_0>> <<output_html_seg_loop_parts>> <<output_html_seg_is_heading>> @@ -1808,7 +1798,7 @@ auto xhtml_format = outputXHTMLs(); static auto rgx = RgxO(); static auto rgx_xhtml = RgxXHTML(); string[] doc_html; -string[] doc; +string[] doc_out; string suffix = ".html"; string previous_section = ""; string delimit = ""; @@ -1818,8 +1808,8 @@ string delimit = ""; #+NAME: output_html_scroll_loop_parts #+BEGIN_SRC d -foreach (section; doc_matters.has.keys_seq.scroll) { - foreach (obj; doc_abstraction[section]) { +foreach (section; doc.matters.has.keys_seq.scroll) { + foreach (obj; doc.abstraction[section]) { delimit = xhtml_format.div_delimit(section, previous_section); string _txt = xhtml_format.special_characters_breaks_indents_bullets(obj); switch (obj.metainfo.is_of_part) { @@ -1834,14 +1824,14 @@ case "frontmatter": assert(section == "head" || "toc"); case "para": switch (obj.metainfo.is_a) { case "heading": - doc_html ~= delimit ~ xhtml_format.heading_scroll(_txt, obj, doc_matters, suffix); + doc_html ~= delimit ~ xhtml_format.heading_scroll(_txt, obj, doc.matters, suffix); break; case "toc": - doc_html ~= xhtml_format.para_scroll(_txt, obj, doc_matters, suffix); + doc_html ~= xhtml_format.para_scroll(_txt, obj, doc.matters, suffix); break; default: { /+ debug +/ - if (doc_matters.opt.action.debug_do_html) { + if (doc.matters.opt.action.debug_do_html) { writeln(__FILE__, ":", __LINE__, ": ", obj.metainfo.is_a); } } @@ -1850,7 +1840,7 @@ case "frontmatter": assert(section == "head" || "toc"); break; default: { /+ debug +/ - if (doc_matters.opt.action.debug_do_html) { + if (doc.matters.opt.action.debug_do_html) { writeln(__FILE__, ":", __LINE__, ": ", obj.metainfo.is_of_type); } } @@ -1868,14 +1858,14 @@ case "body": assert(section == "body" || "head"); case "para": switch (obj.metainfo.is_a) { case "heading": - doc_html ~= delimit ~ xhtml_format.heading_scroll(_txt, obj, doc_matters, suffix); + doc_html ~= delimit ~ xhtml_format.heading_scroll(_txt, obj, doc.matters, suffix); break; case "para": - doc_html ~= xhtml_format.para_scroll(_txt, obj, doc_matters, suffix); + doc_html ~= xhtml_format.para_scroll(_txt, obj, doc.matters, suffix); break; default: { /+ debug +/ - if (doc_matters.opt.action.debug_do_html) { + if (doc.matters.opt.action.debug_do_html) { writeln(__FILE__, ":", __LINE__, ": ", obj.metainfo.is_a); } } @@ -1885,28 +1875,28 @@ case "body": assert(section == "body" || "head"); case "block": switch (obj.metainfo.is_a) { case "quote": - doc_html ~= xhtml_format.quote_scroll(_txt, obj, doc_matters); + doc_html ~= xhtml_format.quote_scroll(_txt, obj, doc.matters); break; case "group": - doc_html ~= xhtml_format.group_scroll(_txt, obj, doc_matters); + doc_html ~= xhtml_format.group_scroll(_txt, obj, doc.matters); break; case "block": - doc_html ~= xhtml_format.block_scroll(_txt, obj, doc_matters); + doc_html ~= xhtml_format.block_scroll(_txt, obj, doc.matters); break; case "poem": break; case "verse": - doc_html ~= xhtml_format.verse_scroll(_txt, obj, doc_matters, suffix); + doc_html ~= xhtml_format.verse_scroll(_txt, obj, doc.matters, suffix); break; case "code": - doc_html ~= xhtml_format.code(_txt, obj, doc_matters); + doc_html ~= xhtml_format.code(_txt, obj, doc.matters); break; case "table": - doc_html ~= xhtml_format.table(_txt, obj, doc_matters); + doc_html ~= xhtml_format.table(_txt, obj, doc.matters); break; default: { /+ debug +/ - if (doc_matters.opt.action.debug_do_html) { + if (doc.matters.opt.action.debug_do_html) { writeln(__FILE__, ":", __LINE__, ": ", obj.metainfo.is_a); } } @@ -1915,7 +1905,7 @@ case "body": assert(section == "body" || "head"); break; default: { /+ debug +/ - if (doc_matters.opt.action.debug_do_html) { + if (doc.matters.opt.action.debug_do_html) { writeln(__FILE__, ":", __LINE__, ": ", obj.metainfo.is_of_type); } } @@ -1934,29 +1924,29 @@ case "backmatter": case "para": switch (obj.metainfo.is_a) { case "heading": - doc_html ~= delimit ~ xhtml_format.heading_scroll(_txt, obj, doc_matters, suffix); + doc_html ~= delimit ~ xhtml_format.heading_scroll(_txt, obj, doc.matters, suffix); break; case "endnote": assert(section == "endnotes"); - doc_html ~= xhtml_format.para_scroll(_txt, obj, doc_matters, suffix); + doc_html ~= xhtml_format.para_scroll(_txt, obj, doc.matters, suffix); break; case "glossary": assert(section == "glossary"); - doc_html ~= xhtml_format.para_scroll(_txt, obj, doc_matters, suffix); + doc_html ~= xhtml_format.para_scroll(_txt, obj, doc.matters, suffix); break; case "bibliography": assert(section == "bibliography"); - doc_html ~= xhtml_format.para_scroll(_txt, obj, doc_matters, suffix); + doc_html ~= xhtml_format.para_scroll(_txt, obj, doc.matters, suffix); break; case "bookindex": assert(section == "bookindex"); - doc_html ~= xhtml_format.para_scroll(_txt, obj, doc_matters, suffix); + doc_html ~= xhtml_format.para_scroll(_txt, obj, doc.matters, suffix); break; case "blurb": assert(section == "blurb"); - doc_html ~= xhtml_format.para_scroll(_txt, obj, doc_matters, suffix); + doc_html ~= xhtml_format.para_scroll(_txt, obj, doc.matters, suffix); break; case "tail": assert(section == "tail"); - doc_html ~= xhtml_format.para_scroll(_txt, obj, doc_matters, suffix); + doc_html ~= xhtml_format.para_scroll(_txt, obj, doc.matters, suffix); break; default: { /+ debug +/ - if (doc_matters.opt.action.debug_do_html) { + if (doc.matters.opt.action.debug_do_html) { writeln(__FILE__, ":", __LINE__, ": ", obj.metainfo.is_a); } } @@ -1965,7 +1955,7 @@ case "backmatter": break; default: { /+ debug +/ - if (doc_matters.opt.action.debug_do_html) { + if (doc.matters.opt.action.debug_do_html) { writeln(__FILE__, ":", __LINE__, ": ", obj.metainfo.is_of_type); } } @@ -1976,7 +1966,7 @@ case "comment": break; default: { /+ debug +/ - if (doc_matters.opt.action.debug_do_html) { + if (doc.matters.opt.action.debug_do_html) { writeln(__FILE__, ":", __LINE__, ": ", obj.metainfo.is_of_part); writeln(__FILE__, ":", __LINE__, ": ", obj.metainfo.is_a); writeln(__FILE__, ":", __LINE__, ": ", obj.text); @@ -1992,23 +1982,23 @@ default: } } } -doc = xhtml_format.html_head(doc_matters, "scroll") +doc_out = xhtml_format.html_head(doc.matters, "scroll") ~ doc_html ~ xhtml_format.dom_close -~ xhtml_format.tail(doc_matters); -scroll_write_output(doc, doc_matters); +~ xhtml_format.tail(doc.matters); +scroll_write_output(doc_out, doc.matters); #+END_SRC *** write output file #+NAME: output_html_scroll_scroll_write_output #+BEGIN_SRC d -@trusted void scroll_write_output(D,M)( - D doc, +@trusted void scroll_write_output(O,M)( + O doc_out, M doc_matters, ) { debug(asserts) { - static assert(is(typeof(doc) == string[])); + static assert(is(typeof(doc_out) == string[])); } auto pth_html = spinePathsHTML!()(doc_matters.output_path, doc_matters.src.language); try { @@ -2017,7 +2007,7 @@ scroll_write_output(doc, doc_matters); } { auto f = File(pth_html.fn_scroll(doc_matters.src.filename), "w"); - foreach (o; doc) { + foreach (o; doc_out) { f.writeln(o); } } @@ -2054,7 +2044,6 @@ static auto rgx_xhtml = RgxXHTML(); auto xhtml_format = outputXHTMLs(); string[][string] doc_html; string[][string] doc_html_endnotes; -string[] doc; string segment_filename; string[] top_level_headings = ["","","",""]; string previous_seg_filename = ""; @@ -2067,8 +2056,8 @@ string delimit = ""; #+NAME: output_html_seg_loop_parts #+BEGIN_SRC d -foreach (section; doc_matters.has.keys_seq.seg) { - foreach (obj; doc_abstraction[section]) { +foreach (section; doc.matters.has.keys_seq.seg) { + foreach (obj; doc.abstraction[section]) { delimit = xhtml_format.div_delimit(section, previous_section); string _txt = xhtml_format.special_characters_breaks_indents_bullets(obj); #+END_SRC @@ -2102,33 +2091,33 @@ if (obj.metainfo.is_a == "heading") { top_level_headings[3] = ""; goto default; default: - Tuple!(string, string[]) t = xhtml_format.heading_seg(_txt, obj, doc_matters, suffix, "seg"); + Tuple!(string, string[]) t = xhtml_format.heading_seg(_txt, obj, doc.matters, suffix, "seg"); top_level_headings[obj.metainfo.heading_lev_markup] = t[0]; break; } break; case 4: segment_filename = obj.tags.segment_anchor_tag_epub; - doc_html[segment_filename] ~= xhtml_format.html_head(doc_matters, "seg"); - auto navigation_bar = xhtml_format.nav_pre_next_svg(obj, doc_matters); + doc_html[segment_filename] ~= xhtml_format.html_head(doc.matters, "seg"); + auto navigation_bar = xhtml_format.nav_pre_next_svg(obj, doc.matters); doc_html[segment_filename] ~= navigation_bar.toc_pre_next; previous_seg_filename = segment_filename; foreach (top_level_heading; top_level_headings) { doc_html[segment_filename] ~= top_level_heading; } - Tuple!(string, string[]) t = xhtml_format.heading_seg(_txt, obj, doc_matters, suffix, "seg"); + Tuple!(string, string[]) t = xhtml_format.heading_seg(_txt, obj, doc.matters, suffix, "seg"); doc_html[segment_filename] ~= t[0].to!string; - doc_html[segment_filename] ~= xhtml_format.lev4_heading_subtoc(obj, doc_matters); + doc_html[segment_filename] ~= xhtml_format.lev4_heading_subtoc(obj, doc.matters); doc_html_endnotes[segment_filename] ~= t[1]; break; case 5: .. case 7: - Tuple!(string, string[]) t = xhtml_format.heading_seg(_txt, obj, doc_matters, suffix, "seg"); + Tuple!(string, string[]) t = xhtml_format.heading_seg(_txt, obj, doc.matters, suffix, "seg"); doc_html[segment_filename] ~= t[0].to!string; doc_html_endnotes[segment_filename] ~= t[1]; break; case 8: .. case 9: { /+ debug +/ - if (doc_matters.opt.action.debug_do_html) { + if (doc.matters.opt.action.debug_do_html) { writeln(__FILE__, ":", __LINE__, ": ", obj.metainfo.is_a, ": ", obj.metainfo.heading_lev_markup); writeln(__FILE__, ":", __LINE__, ": ", obj.text); } @@ -2136,7 +2125,7 @@ if (obj.metainfo.is_a == "heading") { break; default: { /+ debug +/ - if (doc_matters.opt.action.debug_do_html) { + if (doc.matters.opt.action.debug_do_html) { writeln(__FILE__, ":", __LINE__, ": ", obj.metainfo.is_a, ": ", obj.metainfo.heading_lev_markup); } } @@ -2163,12 +2152,12 @@ case "frontmatter": assert(section == "head" || "toc"); case "para": switch (obj.metainfo.is_a) { case "toc": - t = xhtml_format.para_seg(_txt, obj, doc_matters, suffix, "seg"); + t = xhtml_format.para_seg(_txt, obj, doc.matters, suffix, "seg"); doc_html[segment_filename] ~= t[0].to!string; break; default: { /+ debug +/ - if (doc_matters.opt.action.debug_do_html) { + if (doc.matters.opt.action.debug_do_html) { writeln(__FILE__, ":", __LINE__, ": ", obj.metainfo.is_a); } } @@ -2177,7 +2166,7 @@ case "frontmatter": assert(section == "head" || "toc"); break; default: { /+ debug +/ - if (doc_matters.opt.action.debug_do_html) { + if (doc.matters.opt.action.debug_do_html) { writeln(__FILE__, ":", __LINE__, ": ", obj.metainfo.is_a); } } @@ -2195,13 +2184,13 @@ case "body": assert(section == "body"); case "para": switch (obj.metainfo.is_a) { case "para": - t = xhtml_format.para_seg(_txt, obj, doc_matters, suffix, "seg"); + t = xhtml_format.para_seg(_txt, obj, doc.matters, suffix, "seg"); doc_html[segment_filename] ~= t[0].to!string; doc_html_endnotes[segment_filename] ~= t[1]; break; default: { /+ debug +/ - if (doc_matters.opt.action.debug_do_html) { + if (doc.matters.opt.action.debug_do_html) { writeln(__FILE__, ":", __LINE__, ": ", obj.metainfo.is_a); } } @@ -2211,24 +2200,24 @@ case "body": assert(section == "body"); case "block": switch (obj.metainfo.is_a) { case "quote": - t = xhtml_format.quote_seg(_txt, obj, doc_matters, suffix, "seg"); + t = xhtml_format.quote_seg(_txt, obj, doc.matters, suffix, "seg"); goto default; case "group": - t = xhtml_format.group_seg(_txt, obj, doc_matters, suffix, "seg"); + t = xhtml_format.group_seg(_txt, obj, doc.matters, suffix, "seg"); goto default; case "block": - t = xhtml_format.block_seg(_txt, obj, doc_matters, suffix, "seg"); + t = xhtml_format.block_seg(_txt, obj, doc.matters, suffix, "seg"); goto default; case "poem": break; case "verse": - t = xhtml_format.verse_seg(_txt, obj, doc_matters, suffix, "seg"); + t = xhtml_format.verse_seg(_txt, obj, doc.matters, suffix, "seg"); goto default; case "code": - doc_html[segment_filename] ~= xhtml_format.code(_txt, obj, doc_matters); + doc_html[segment_filename] ~= xhtml_format.code(_txt, obj, doc.matters); break; case "table": - doc_html[segment_filename] ~= xhtml_format.table(_txt, obj, doc_matters); + doc_html[segment_filename] ~= xhtml_format.table(_txt, obj, doc.matters); doc_html_endnotes[segment_filename] ~= ""; break; default: @@ -2240,7 +2229,7 @@ case "body": assert(section == "body"); doc_html[segment_filename] ~= t[0].to!string; doc_html_endnotes[segment_filename] ~= t[1]; } else { /+ debug +/ - if (doc_matters.opt.action.debug_do_html) { + if (doc.matters.opt.action.debug_do_html) { writeln(__FILE__, ":", __LINE__, ": ", obj.metainfo.is_a); } } @@ -2249,7 +2238,7 @@ case "body": assert(section == "body"); break; default: { /+ debug +/ - if (doc_matters.opt.action.debug_do_html) { + if (doc.matters.opt.action.debug_do_html) { writeln(__FILE__, ":", __LINE__, ": ", obj.metainfo.is_of_type); } } @@ -2268,37 +2257,37 @@ case "backmatter": case "para": switch (obj.metainfo.is_a) { case "endnote": assert(section == "endnotes"); - t = xhtml_format.para_seg(_txt, obj, doc_matters, suffix, "seg"); + t = xhtml_format.para_seg(_txt, obj, doc.matters, suffix, "seg"); doc_html[segment_filename] ~= t[0]; break; case "glossary": assert(section == "glossary"); - t = xhtml_format.para_seg(_txt, obj, doc_matters, suffix, "seg"); + t = xhtml_format.para_seg(_txt, obj, doc.matters, suffix, "seg"); doc_html[segment_filename] ~= t[0]; doc_html_endnotes[segment_filename] ~= t[1]; break; case "bibliography": assert(section == "bibliography"); - t = xhtml_format.para_seg(_txt, obj, doc_matters, suffix, "seg"); + t = xhtml_format.para_seg(_txt, obj, doc.matters, suffix, "seg"); doc_html[segment_filename] ~= t[0]; doc_html_endnotes[segment_filename] ~= t[1]; break; case "bookindex": assert(section == "bookindex"); - t = xhtml_format.para_seg(_txt, obj, doc_matters, suffix, "seg"); + t = xhtml_format.para_seg(_txt, obj, doc.matters, suffix, "seg"); doc_html[segment_filename] ~= t[0]; doc_html_endnotes[segment_filename] ~= t[1]; break; case "blurb": assert(section == "blurb"); - t = xhtml_format.para_seg(_txt, obj, doc_matters, suffix, "seg"); + t = xhtml_format.para_seg(_txt, obj, doc.matters, suffix, "seg"); doc_html[segment_filename] ~= t[0]; doc_html_endnotes[segment_filename] ~= t[1]; break; case "tail": assert(section == "tail"); - t = xhtml_format.para_seg(_txt, obj, doc_matters, suffix, "seg"); + t = xhtml_format.para_seg(_txt, obj, doc.matters, suffix, "seg"); doc_html[segment_filename] ~= t[0]; doc_html_endnotes[segment_filename] ~= t[1]; break; default: { /+ debug +/ - if (doc_matters.opt.action.debug_do_html) { + if (doc.matters.opt.action.debug_do_html) { writeln(__FILE__, ":", __LINE__, ": ", obj.metainfo.is_a); } } @@ -2307,7 +2296,7 @@ case "backmatter": break; default: { /+ debug +/ - if (doc_matters.opt.action.debug_do_html) { + if (doc.matters.opt.action.debug_do_html) { writeln(__FILE__, ":", __LINE__, ": ", obj.metainfo.is_of_type); } } @@ -2318,7 +2307,7 @@ case "comment": break; default: { /+ debug +/ - if (doc_matters.opt.action.debug_do_html) { + if (doc.matters.opt.action.debug_do_html) { writeln(__FILE__, ":", __LINE__, ": ", obj.metainfo.is_of_part); } } @@ -2333,7 +2322,7 @@ default: } } } -seg_write_output(doc_html, doc_html_endnotes, doc_matters); +seg_write_output(doc_html, doc_html_endnotes, doc.matters); #+END_SRC *** write output files @@ -2418,9 +2407,7 @@ void css(M)(M doc_matters) { #+NAME: copy_html_images #+BEGIN_SRC d -@trusted void images_cp(M)( // @system - M doc_matters, -) { +@trusted void images_cp(M)(M doc_matters) { // @system { /+ (copy html images) +/ auto pth_html = spinePathsHTML!()(doc_matters.output_path, doc_matters.src.language); if (!exists(pth_html.image)) { @@ -2562,10 +2549,10 @@ xmlns="urn:oasis:names:tc:opendocument:xmlns:container"> #+NAME: output_epub3_constructs_oebps_content #+HEADER: :noweb yes #+BEGIN_SRC d -string epub3_oebps_content(D,M,P)(D doc_abstraction, M doc_matters, P parts) { +string epub3_oebps_content(D,P)(D doc, P parts) { auto xhtml_format = outputXHTMLs(); - auto pth_epub3 = spinePathsEPUB!()(doc_matters.output_path, doc_matters.src.language); - string _uuid = "18275d951861c77f78acd05672c9906924c59f18a2e0ba06dad95959693e9bd8"; // TODO sort uuid in doc_matters! + auto pth_epub3 = spinePathsEPUB!()(doc.matters.output_path, doc.matters.src.language); + string _uuid = "18275d951861c77f78acd05672c9906924c59f18a2e0ba06dad95959693e9bd8"; // TODO sort uuid in doc.matters! string content = format(q"┃<?xml version="1.0" encoding="utf-8"?> <<epub3_package_version>> <metadata @@ -2589,25 +2576,25 @@ string epub3_oebps_content(D,M,P)(D doc_abstraction, M doc_matters, P parts) { <item id="nav" href="toc_nav.xhtml" media-type="application/xhtml+xml" properties="nav" /> ┃", _uuid, - xhtml_format.special_characters_text(doc_matters.conf_make_meta.meta.title_main), - (doc_matters.conf_make_meta.meta.title_sub.empty) - ? "" : xhtml_format.special_characters_text(doc_matters.conf_make_meta.meta.title_sub), - (doc_matters.conf_make_meta.meta.creator_author.empty) - ? "" : xhtml_format.special_characters_text(doc_matters.conf_make_meta.meta.creator_author), - (doc_matters.conf_make_meta.meta.creator_author.empty) - ? "" : xhtml_format.special_characters_text(doc_matters.conf_make_meta.meta.creator_author), - doc_matters.src.language, // language, fix (needed in dochead metadata) - (doc_matters.conf_make_meta.meta.date_published.empty) - ? "" : xhtml_format.special_characters_date(doc_matters.conf_make_meta.meta.date_published), - (doc_matters.conf_make_meta.meta.rights_copyright.empty) - ? "" : xhtml_format.special_characters_text(doc_matters.conf_make_meta.meta.rights_copyright), + xhtml_format.special_characters_text(doc.matters.conf_make_meta.meta.title_main), + (doc.matters.conf_make_meta.meta.title_sub.empty) + ? "" : xhtml_format.special_characters_text(doc.matters.conf_make_meta.meta.title_sub), + (doc.matters.conf_make_meta.meta.creator_author.empty) + ? "" : xhtml_format.special_characters_text(doc.matters.conf_make_meta.meta.creator_author), + (doc.matters.conf_make_meta.meta.creator_author.empty) + ? "" : xhtml_format.special_characters_text(doc.matters.conf_make_meta.meta.creator_author), + doc.matters.src.language, // language, fix (needed in dochead metadata) + (doc.matters.conf_make_meta.meta.date_published.empty) + ? "" : xhtml_format.special_characters_date(doc.matters.conf_make_meta.meta.date_published), + (doc.matters.conf_make_meta.meta.rights_copyright.empty) + ? "" : xhtml_format.special_characters_text(doc.matters.conf_make_meta.meta.rights_copyright), _uuid, _uuid, (pth_epub3.fn_oebps_css).chompPrefix("OEBPS/"), ); content ~= parts["manifest_documents"]; // TODO sort jpg & png - foreach (image; doc_matters.srcs.image_list) { + foreach (image; doc.matters.srcs.image_list) { content ~= format(q"┃ <item id="%s" href="%s/%s" media-type="image/%s" /> ┃", image.baseName.stripExtension, @@ -2625,8 +2612,8 @@ string epub3_oebps_content(D,M,P)(D doc_abstraction, M doc_matters, P parts) { content ~= " " ~ "</guide>" ~ "\n "; content ~= "" ~ "</package>"; debug(epubmanifest) { - foreach (section; doc_matters.has.keys_seq.seg) { // TODO - foreach (obj; doc_abstraction[section]) { + foreach (section; doc.matters.has.keys_seq.seg) { // TODO + foreach (obj; doc.abstraction[section]) { if (obj.metainfo.is_a == "heading") { if (obj.metainfo.heading_lev_markup == 4) { writefln( @@ -2658,7 +2645,7 @@ string epub3_oebps_content(D,M,P)(D doc_abstraction, M doc_matters, P parts) { #+NAME: output_epub3_constructs_oebps_toc_nav_xhtml #+BEGIN_SRC d -string epub3_oebps_toc_nav_xhtml(D,I)(D doc_abstraction, I doc_matters) { +string epub3_oebps_toc_nav_xhtml(D)(D doc) { enum DomTags { none, open, close, close_and_open, open_still, } auto markup = InlineMarkup(); static auto rgx = RgxO(); @@ -2677,12 +2664,12 @@ string epub3_oebps_toc_nav_xhtml(D,I)(D doc_abstraction, I doc_matters) { </header> <nav epub:type="toc" id="toc"> ┃", - (doc_matters.conf_make_meta.meta.title_full).special_characters_text, + (doc.matters.conf_make_meta.meta.title_full).special_characters_text, ); string _toc_nav_tail = ""; - // writeln(doc_matters.has.keys_seq.seg); // DEBUG line - foreach (sect; doc_matters.has.keys_seq.seg) { - foreach (obj; doc_abstraction[sect]) { + // writeln(doc.matters.has.keys_seq.seg); // DEBUG line + foreach (sect; doc.matters.has.keys_seq.seg) { + foreach (obj; doc.abstraction[sect]) { if ((sect == "head") && (obj.metainfo.is_a == "heading")) { toc = toc_head; } @@ -2738,7 +2725,7 @@ string epub3_oebps_toc_nav_xhtml(D,I)(D doc_abstraction, I doc_matters) { } break; } - if (doc_matters.has.keys_seq.seg[doc_matters.has.keys_seq.seg.length - 2] == sect) { + if (doc.matters.has.keys_seq.seg[doc.matters.has.keys_seq.seg.length - 2] == sect) { // writeln(n, ": ", sect, ": ", _txt, " - ", obj.metainfo.dom_structure_collapsed_tags_status); // DEBUG // read last heading (heading prior to closing) and determine what those instructions imply still need to be done // CLOSE // DomTags { 0 none, 1 open, 2 close, 3 close_and_open, 4 open_still, } @@ -2778,16 +2765,12 @@ string epub3_oebps_toc_nav_xhtml(D,I)(D doc_abstraction, I doc_matters) { #+NAME: output_epub3_xhtml_seg_output #+BEGIN_SRC d -@system void outputEPub3(D,I)( - const D doc_abstraction, - I doc_matters, -) { +@system void outputEPub3(D)(D doc) { mixin spineRgxOut; mixin spineRgxXHTML; auto xhtml_format = outputXHTMLs(); static auto rgx = RgxO(); static auto rgx_xhtml = RgxXHTML(); - string[] doc; string segment_filename; string[] top_level_headings = ["","","",""]; string[string] oepbs_content_parts; @@ -2810,8 +2793,8 @@ string epub3_oebps_toc_nav_xhtml(D,I)(D doc_abstraction, I doc_matters) { #+NAME: output_epub3_xhtml_seg_output_loop #+BEGIN_SRC d -foreach (section; doc_matters.has.keys_seq.seg) { - foreach (obj; doc_abstraction[section]) { +foreach (section; doc.matters.has.keys_seq.seg) { + foreach (obj; doc.abstraction[section]) { string _txt = xhtml_format.special_characters_breaks_indents_bullets(obj); #+END_SRC @@ -2845,8 +2828,8 @@ if (obj.metainfo.is_a == "heading") { goto default; default: epubWrite.doc_parts ~= obj.tags.segment_anchor_tag_epub; - epubWrite.doc_epub3[obj.tags.segment_anchor_tag_epub] ~= xhtml_format.epub3_seg_head(doc_matters); - Tuple!(string, string[]) t = xhtml_format.heading_seg(_txt, obj, doc_matters, suffix, "epub"); + epubWrite.doc_epub3[obj.tags.segment_anchor_tag_epub] ~= xhtml_format.epub3_seg_head(doc.matters); + Tuple!(string, string[]) t = xhtml_format.heading_seg(_txt, obj, doc.matters, suffix, "epub"); epubWrite.doc_epub3[obj.tags.segment_anchor_tag_epub] ~= t[0]; epubWrite.doc_epub3_endnotes[obj.tags.segment_anchor_tag_epub] ~= t[1]; break; @@ -2854,19 +2837,19 @@ if (obj.metainfo.is_a == "heading") { break; case 4: segment_filename = obj.tags.segment_anchor_tag_epub; - epubWrite.doc_epub3[segment_filename] ~= xhtml_format.epub3_seg_head(doc_matters); - Tuple!(string, string[]) t = xhtml_format.heading_seg(_txt, obj, doc_matters, suffix, "epub"); + epubWrite.doc_epub3[segment_filename] ~= xhtml_format.epub3_seg_head(doc.matters); + Tuple!(string, string[]) t = xhtml_format.heading_seg(_txt, obj, doc.matters, suffix, "epub"); epubWrite.doc_epub3[segment_filename] ~= t[0]; epubWrite.doc_epub3_endnotes[segment_filename] ~= t[1]; break; case 5: .. case 7: - Tuple!(string, string[]) t = xhtml_format.heading_seg(_txt, obj, doc_matters, suffix, "epub"); + Tuple!(string, string[]) t = xhtml_format.heading_seg(_txt, obj, doc.matters, suffix, "epub"); epubWrite.doc_epub3[segment_filename] ~= t[0]; epubWrite.doc_epub3_endnotes[segment_filename] ~= t[1]; break; case 8: .. case 9: { /+ debug +/ - if (doc_matters.opt.action.debug_do_epub) { + if (doc.matters.opt.action.debug_do_epub) { writeln(__FILE__, ":", __LINE__, ": ", obj.metainfo.is_a, ": ", obj.metainfo.heading_lev_markup); writeln(__FILE__, ":", __LINE__, ": ", obj.text); } @@ -2874,7 +2857,7 @@ if (obj.metainfo.is_a == "heading") { break; default: { /+ debug +/ - if (doc_matters.opt.action.debug_do_epub) { + if (doc.matters.opt.action.debug_do_epub) { writeln(__FILE__, ":", __LINE__, ": ", obj.metainfo.is_a, ": ", obj.metainfo.heading_lev_markup); } } @@ -2901,13 +2884,13 @@ case "frontmatter": assert(section == "head" || "toc"); case "para": switch (obj.metainfo.is_a) { case "toc": - t = xhtml_format.para_seg(_txt, obj, doc_matters, suffix, "epub"); + t = xhtml_format.para_seg(_txt, obj, doc.matters, suffix, "epub"); epubWrite.doc_epub3[segment_filename] ~= t[0]; epubWrite.doc_epub3_endnotes[segment_filename] ~= t[1]; break; default: { /+ debug +/ - if (doc_matters.opt.action.debug_do_epub) { + if (doc.matters.opt.action.debug_do_epub) { writeln(__FILE__, ":", __LINE__, ": ", obj.metainfo.is_a); } } @@ -2916,7 +2899,7 @@ case "frontmatter": assert(section == "head" || "toc"); break; default: { /+ debug +/ - if (doc_matters.opt.action.debug_do_epub) { + if (doc.matters.opt.action.debug_do_epub) { writeln(__FILE__, ":", __LINE__, ": ", obj.metainfo.is_of_type); } } @@ -2934,13 +2917,13 @@ case "body": assert(section == "body"); case "para": switch (obj.metainfo.is_a) { case "para": - t = xhtml_format.para_seg(_txt, obj, doc_matters, suffix, "epub"); + t = xhtml_format.para_seg(_txt, obj, doc.matters, suffix, "epub"); epubWrite.doc_epub3[segment_filename] ~= t[0]; epubWrite.doc_epub3_endnotes[segment_filename] ~= t[1]; break; default: { /+ debug +/ - if (doc_matters.opt.action.debug_do_epub) { + if (doc.matters.opt.action.debug_do_epub) { writeln(__FILE__, ":", __LINE__, ": ", obj.metainfo.is_a); } } @@ -2950,37 +2933,37 @@ case "body": assert(section == "body"); case "block": switch (obj.metainfo.is_a) { case "quote": - t = xhtml_format.quote_seg(_txt, obj, doc_matters, suffix, "epub"); + t = xhtml_format.quote_seg(_txt, obj, doc.matters, suffix, "epub"); epubWrite.doc_epub3[segment_filename] ~= t[0].to!string; epubWrite.doc_epub3_endnotes[segment_filename] ~= t[1]; break; case "group": - t = xhtml_format.group_seg(_txt, obj, doc_matters, suffix, "epub"); + t = xhtml_format.group_seg(_txt, obj, doc.matters, suffix, "epub"); epubWrite.doc_epub3[segment_filename] ~= t[0].to!string; epubWrite.doc_epub3_endnotes[segment_filename] ~= t[1]; break; case "block": - t = xhtml_format.block_seg(_txt, obj, doc_matters, suffix, "epub"); + t = xhtml_format.block_seg(_txt, obj, doc.matters, suffix, "epub"); epubWrite.doc_epub3[segment_filename] ~= t[0].to!string; epubWrite.doc_epub3_endnotes[segment_filename] ~= t[1]; break; case "poem": break; case "verse": - t = xhtml_format.verse_seg(_txt, obj, doc_matters, suffix, "epub"); + t = xhtml_format.verse_seg(_txt, obj, doc.matters, suffix, "epub"); epubWrite.doc_epub3[segment_filename] ~= t[0].to!string; epubWrite.doc_epub3_endnotes[segment_filename] ~= t[1]; break; case "code": - epubWrite.doc_epub3[segment_filename] ~= xhtml_format.code(_txt, obj, doc_matters); + epubWrite.doc_epub3[segment_filename] ~= xhtml_format.code(_txt, obj, doc.matters); break; case "table": - epubWrite.doc_epub3[segment_filename] ~= xhtml_format.table(_txt, obj, doc_matters); + epubWrite.doc_epub3[segment_filename] ~= xhtml_format.table(_txt, obj, doc.matters); epubWrite.doc_epub3_endnotes[segment_filename] ~= ""; break; default: { /+ debug +/ - if (doc_matters.opt.action.debug_do_epub) { + if (doc.matters.opt.action.debug_do_epub) { writeln(__FILE__, ":", __LINE__, ": ", obj.metainfo.is_a); } } @@ -2989,7 +2972,7 @@ case "body": assert(section == "body"); break; default: { /+ debug +/ - if (doc_matters.opt.action.debug_do_epub) { + if (doc.matters.opt.action.debug_do_epub) { writeln(__FILE__, ":", __LINE__, ": ", obj.metainfo.is_of_type); } } @@ -3008,37 +2991,37 @@ case "backmatter": case "para": switch (obj.metainfo.is_a) { case "endnote": assert(section == "endnotes"); - t = xhtml_format.para_seg(_txt, obj, doc_matters, suffix, "epub"); + t = xhtml_format.para_seg(_txt, obj, doc.matters, suffix, "epub"); epubWrite.doc_epub3[segment_filename] ~= t[0]; break; case "glossary": assert(section == "glossary"); - t = xhtml_format.para_seg(_txt, obj, doc_matters, suffix, "epub"); + t = xhtml_format.para_seg(_txt, obj, doc.matters, suffix, "epub"); epubWrite.doc_epub3[segment_filename] ~= t[0]; epubWrite.doc_epub3_endnotes[segment_filename] ~= t[1]; break; case "bibliography": assert(section == "bibliography"); - t = xhtml_format.para_seg(_txt, obj, doc_matters, suffix, "epub"); + t = xhtml_format.para_seg(_txt, obj, doc.matters, suffix, "epub"); epubWrite.doc_epub3[segment_filename] ~= t[0]; epubWrite.doc_epub3_endnotes[segment_filename] ~= t[1]; break; case "bookindex": assert(section == "bookindex"); - t = xhtml_format.para_seg(_txt, obj, doc_matters, suffix, "epub"); + t = xhtml_format.para_seg(_txt, obj, doc.matters, suffix, "epub"); epubWrite.doc_epub3[segment_filename] ~= t[0]; epubWrite.doc_epub3_endnotes[segment_filename] ~= t[1]; break; case "blurb": assert(section == "blurb"); - t = xhtml_format.para_seg(_txt, obj, doc_matters, suffix, "epub"); + t = xhtml_format.para_seg(_txt, obj, doc.matters, suffix, "epub"); epubWrite.doc_epub3[segment_filename] ~= t[0]; epubWrite.doc_epub3_endnotes[segment_filename] ~= t[1]; break; case "tail": assert(section == "tail"); - t = xhtml_format.para_seg(_txt, obj, doc_matters, suffix, "epub"); + t = xhtml_format.para_seg(_txt, obj, doc.matters, suffix, "epub"); epubWrite.doc_epub3[segment_filename] ~= t[0]; epubWrite.doc_epub3_endnotes[segment_filename] ~= t[1]; break; default: { /+ debug +/ - if (doc_matters.opt.action.debug_do_epub) { + if (doc.matters.opt.action.debug_do_epub) { writeln(__FILE__, ":", __LINE__, ": ", obj.metainfo.is_a); } } @@ -3047,7 +3030,7 @@ case "backmatter": break; default: { /+ debug +/ - if (doc_matters.opt.action.debug_do_epub) { + if (doc.matters.opt.action.debug_do_epub) { writeln(__FILE__, ":", __LINE__, ": ", obj.metainfo.is_of_type); } } @@ -3064,7 +3047,7 @@ case "backmatter": break; default: { /+ debug +/ - if (doc_matters.opt.action.debug_do_epub) { + if (doc.matters.opt.action.debug_do_epub) { writeln(__FILE__, ":", __LINE__, ": ", obj.metainfo.is_of_part); } } @@ -3133,9 +3116,9 @@ if (obj.metainfo.is_a == "heading") { /+ epub specific documents +/ epubWrite.mimetypes = epub3_mimetypes; epubWrite.meta_inf_container_xml = epub3_container_xml; - epubWrite.oebps_toc_nav_xhtml = doc_abstraction.epub3_oebps_toc_nav_xhtml(doc_matters); - epubWrite.oebps_content_opf = doc_abstraction.epub3_oebps_content(doc_matters, oepbs_content_parts); - epubWrite.epub3_write_output_files(doc_matters); + epubWrite.oebps_toc_nav_xhtml = doc.epub3_oebps_toc_nav_xhtml; + epubWrite.oebps_content_opf = doc.epub3_oebps_content(oepbs_content_parts); + epubWrite.epub3_write_output_files(doc.matters); } #+END_SRC diff --git a/org/out_xmls_css.org b/org/out_xmls_css.org index 4e099de..1ba12d0 100644 --- a/org/out_xmls_css.org +++ b/org/out_xmls_css.org @@ -4,7 +4,7 @@ #+FILETAGS: :spine:output:xmls:css: #+AUTHOR: Ralph Amissah #+EMAIL: [[mailto:ralph.amissah@gmail.com][ralph.amissah@gmail.com]] -#+COPYRIGHT: Copyright (C) 2015 - 2024 Ralph Amissah +#+COPYRIGHT: Copyright (C) 2015 - 2025 Ralph Amissah #+LANGUAGE: en #+STARTUP: content hideblocks hidestars noindent entitiespretty #+PROPERTY: header-args :exports code diff --git a/org/out_zip.org b/org/out_zip.org index 7b4b365..5ffd1ae 100644 --- a/org/out_zip.org +++ b/org/out_zip.org @@ -4,7 +4,7 @@ #+FILETAGS: :spine:zip: #+AUTHOR: Ralph Amissah #+EMAIL: [[mailto:ralph.amissah@gmail.com][ralph.amissah@gmail.com]] -#+COPYRIGHT: Copyright (C) 2015 - 2024 Ralph Amissah +#+COPYRIGHT: Copyright (C) 2015 - 2025 Ralph Amissah #+LANGUAGE: en #+STARTUP: content hideblocks hidestars noindent entitiespretty #+PROPERTY: header-args :exports code @@ -28,11 +28,10 @@ module sisudoc.io_out.create_zip_file; @safe: template createZipFile() { - import - std.file, - std.outbuffer, - std.string, - std.zip; + import std.file; + import std.outbuffer; + import std.string; + import std.zip; void createZipFile( string zip_file_name, void[] compressed_zip_data, diff --git a/org/output_hub.org b/org/output_hub.org index b73c582..c87c757 100644 --- a/org/output_hub.org +++ b/org/output_hub.org @@ -4,7 +4,7 @@ #+FILETAGS: :spine:output:hub: #+AUTHOR: Ralph Amissah #+EMAIL: [[mailto:ralph.amissah@gmail.com][ralph.amissah@gmail.com]] -#+COPYRIGHT: Copyright (C) 2015 - 2024 Ralph Amissah +#+COPYRIGHT: Copyright (C) 2015 - 2025 Ralph Amissah #+LANGUAGE: en #+STARTUP: content hideblocks hidestars noindent entitiespretty #+PROPERTY: header-args :exports code @@ -32,15 +32,12 @@ module sisudoc.io_out.hub; @safe: template outputHub() { <<output_imports>> - @system void outputHub(D,I)( - const D doc_abstraction, - I doc_matters - ) { + @system void outputHub(D)(D doc) { mixin Msg; - auto msg = Msg!()(doc_matters); + auto msg = Msg!()(doc.matters); enum outTask { source_or_pod, sqlite, sqlite_multi, latex, odt, epub, html_scroll, html_seg, html_stuff } - void Scheduled(D,I)(int sched, D doc_abstraction, I doc_matters) { - auto msg = Msg!()(doc_matters); + void Scheduled(D)(int sched, D doc) { + auto msg = Msg!()(doc.matters); <<output_scheduled_task_source_or_pod>> <<output_scheduled_task_epub>> <<output_scheduled_task_html_meta>> @@ -51,17 +48,15 @@ template outputHub() { <<output_scheduled_task_odt>> <<output_scheduled_task_sqlite>> } - if (doc_matters.opt.action.vox_gt0) { - writeln(" ", doc_matters.src.filename_base); - } - if (!(doc_matters.opt.action.parallelise_subprocesses)) { - foreach(schedule; doc_matters.opt.action.output_task_scheduler) { - Scheduled!()(schedule, doc_abstraction, doc_matters); + if (doc.matters.opt.action.vox_gt0) { writeln(doc.matters.src.filename_base); } + if (!(doc.matters.opt.action.parallelise_subprocesses)) { + foreach(schedule; doc.matters.opt.action.output_task_scheduler) { + Scheduled!()(schedule, doc); } } else { import std.parallelism; - foreach(schedule; parallel(doc_matters.opt.action.output_task_scheduler)) { - Scheduled!()(schedule, doc_abstraction, doc_matters); + foreach(schedule; parallel(doc.matters.opt.action.output_task_scheduler)) { + Scheduled!()(schedule, doc); } } <<output_shared_sqlite_db>> @@ -136,17 +131,11 @@ import sisudoc.io_out, #+BEGIN_SRC d if (sched == outTask.source_or_pod) { msg.v("spine (doc reform) source processing... "); - if (doc_matters.opt.action.pod) { - msg.v("spine (doc reform) source pod processing... "); - } + if (doc.matters.opt.action.pod) { msg.v("spine (doc reform) source pod processing... "); } import sisudoc.io_out.source_pod; - spinePod!()(doc_matters); - if (doc_matters.opt.action.source) { - msg.vv("spine (doc reform) source done"); - } - if (doc_matters.opt.action.pod) { - msg.vv("spine (doc reform) source pod done"); - } + spinePod!()(doc.matters); + if (doc.matters.opt.action.source) { msg.vv("spine (doc reform) source done"); } + if (doc.matters.opt.action.pod) { msg.vv("spine (doc reform) source pod done"); } } #+END_SRC @@ -157,7 +146,7 @@ if (sched == outTask.source_or_pod) { if (sched == outTask.epub) { msg.v("epub3 processing... "); import sisudoc.io_out.epub3; - doc_abstraction.outputEPub3!()(doc_matters); + doc.outputEPub3!(); msg.vv("epub3 done"); } #+END_SRC @@ -168,7 +157,7 @@ if (sched == outTask.epub) { #+NAME: output_scheduled_task_html_meta #+BEGIN_SRC d if (sched == outTask.html_stuff) { - outputMetadata!()(doc_matters); + outputMetadata!()(doc.matters); msg.vv("html metadata done"); } #+END_SRC @@ -180,7 +169,7 @@ if (sched == outTask.html_stuff) { if (sched == outTask.html_scroll) { msg.v("html scroll processing... "); import sisudoc.io_out.html; - outputHTML!().scroll(doc_abstraction, doc_matters); + outputHTML!().scroll(doc); msg.vv("html scroll done"); } #+END_SRC @@ -192,7 +181,7 @@ if (sched == outTask.html_scroll) { if (sched == outTask.html_seg) { msg.v("html seg processing... "); import sisudoc.io_out.html; - outputHTML!().seg(doc_abstraction, doc_matters); + outputHTML!().seg(doc); msg.vv("html seg done"); } #+END_SRC @@ -203,8 +192,8 @@ if (sched == outTask.html_seg) { #+BEGIN_SRC d if (sched == outTask.html_stuff) { import sisudoc.io_out.html; - outputHTML!().css(doc_matters); - outputHTML!().images_cp(doc_matters); + outputHTML!().css(doc.matters); + outputHTML!().images_cp(doc.matters); msg.vv("html css & images done"); } #+END_SRC @@ -226,17 +215,17 @@ if (sched == outTask.latex) { msg.v("latex processing... (available for downstream processing & pdf output"); import sisudoc.io_out.latex; import std.file; - if ((isValidPath(doc_matters.output_path ~ "/latex/sty")) - && (!(exists(doc_matters.output_path ~ "/latex/sty"))) + if ((isValidPath(doc.matters.output_path ~ "/latex/sty")) + && (!(exists(doc.matters.output_path ~ "/latex/sty"))) ) { outputLaTeXstyInit!()( - doc_matters.output_path, - doc_matters.opt.action.generated_by, - doc_matters.generator_program.name_version_and_compiler, - doc_matters.generator_program.time_output_generated, + doc.matters.output_path, + doc.matters.opt.action.generated_by, + doc.matters.generator_program.name_version_and_compiler, + doc.matters.generator_program.time_output_generated, ); } - outputLaTeX!()(doc_abstraction, doc_matters); + outputLaTeX!()(doc.abstraction, doc.matters); msg.vv("latex done"); } #+END_SRC @@ -248,7 +237,7 @@ if (sched == outTask.latex) { if (sched == outTask.odt) { msg.v("odf:odt processing... "); import sisudoc.io_out.odt; - outputODT!()(doc_abstraction, doc_matters); + outputODT!()(doc.abstraction, doc.matters); msg.vv("odf:odt done"); } #+END_SRC @@ -260,7 +249,7 @@ if (sched == outTask.odt) { if (sched == outTask.sqlite) { msg.v("sqlite processing... "); import sisudoc.io_out.sqlite; - doc_abstraction.SQLiteHubDiscreteBuildTablesAndPopulate!()(doc_matters); + doc.SQLiteHubDiscreteBuildTablesAndPopulate!(); msg.vv("sqlite done"); } #+END_SRC @@ -271,15 +260,15 @@ if (sched == outTask.sqlite) { #+NAME: output_shared_sqlite_db #+BEGIN_SRC d -if (doc_matters.opt.action.sqlite_update) { +if (doc.matters.opt.action.sqlite_update) { msg.v("sqlite update processing..."); import sisudoc.io_out.sqlite; - doc_abstraction.SQLiteHubBuildTablesAndPopulate!()(doc_matters); + doc.SQLiteHubBuildTablesAndPopulate!(); msg.vv("sqlite update done"); -} else if (doc_matters.opt.action.sqlite_delete) { +} else if (doc.matters.opt.action.sqlite_delete) { msg.v("sqlite delete processing..."); import sisudoc.io_out.sqlite; - doc_abstraction.SQLiteHubBuildTablesAndPopulate!()(doc_matters); + doc.SQLiteHubBuildTablesAndPopulate!(); msg.vv("sqlite delete done"); } #+END_SRC diff --git a/org/output_show.org b/org/output_show.org index 53e2d77..ffea8b3 100644 --- a/org/output_show.org +++ b/org/output_show.org @@ -4,7 +4,7 @@ #+FILETAGS: :spine:hub: #+AUTHOR: Ralph Amissah #+EMAIL: [[mailto:ralph.amissah@gmail.com][ralph.amissah@gmail.com]] -#+COPYRIGHT: Copyright (C) 2015 - 2024 Ralph Amissah +#+COPYRIGHT: Copyright (C) 2015 - 2025 Ralph Amissah #+LANGUAGE: en #+STARTUP: content hideblocks hidestars noindent entitiespretty #+PROPERTY: header-args :exports code @@ -28,10 +28,8 @@ module sisudoc.meta.metadoc_show_summary; @safe: template spineMetaDocSummary() { - void spineMetaDocSummary(S,T)( - const S doc_abstraction, - T doc_matters, - ) { + void spineMetaDocSummary(D)(D doc) { + auto doc_matters = doc.matters; <<metadoc_show_summary_imports>> <<metadoc_show_imports_shared>> mixin InternalMarkup; @@ -55,7 +53,7 @@ string[string] check = [ "last_object_number_book_index" : "0", ]; foreach (k; doc_matters.has.keys_seq.seg) { - foreach (obj; doc_abstraction[k]) { + foreach (obj; doc.abstraction[k]) { if (obj.metainfo.is_of_part != "empty") { if (!empty(obj.metainfo.object_number)) { if (k == "body") { @@ -92,9 +90,9 @@ writefln( doc_matters.src.language, markup.repeat_character_by_number_provided("-", char_repeat_number), "- toc arr length:", - to!int(doc_abstraction["toc"].length), - "- doc_abstraction arr length:", - to!int(doc_abstraction["body"].length), + to!int(doc.abstraction["toc"].length), + "- doc.abstraction arr length:", + to!int(doc.abstraction["body"].length), " doc body last obj on.#:", to!int(check["last_object_number_body"]), " - number of tables:", @@ -110,26 +108,26 @@ writefln( " - number of images:", doc_matters.has.images, "- endnotes length:", // subtract headings - (doc_abstraction["endnotes"].length > 2) - ? (to!int(doc_abstraction["endnotes"].length - 2)) + (doc.abstraction["endnotes"].length > 2) + ? (to!int(doc.abstraction["endnotes"].length - 2)) : 0, "- glossary length:", - (doc_abstraction["glossary"].length > 1) - ? (to!int(doc_abstraction["glossary"].length)) + (doc.abstraction["glossary"].length > 1) + ? (to!int(doc.abstraction["glossary"].length)) : 0, "- biblio length:", - (doc_abstraction["bibliography"].length > 1) - ? (to!int(doc_abstraction["bibliography"].length)) + (doc.abstraction["bibliography"].length > 1) + ? (to!int(doc.abstraction["bibliography"].length)) : 0, "- bookindex length:", - (doc_abstraction["bookindex"].length > 1) - ? (to!int(doc_abstraction["bookindex"].length)) + (doc.abstraction["bookindex"].length > 1) + ? (to!int(doc.abstraction["bookindex"].length)) : 0, " book idx last obj on.#:", to!int(check["last_object_number_book_index"]), "- blurb length:", - (doc_abstraction["blurb"].length > 1) - ? (to!int(doc_abstraction["blurb"].length)) + (doc.abstraction["blurb"].length > 1) + ? (to!int(doc.abstraction["blurb"].length)) : 0, "* last obj on.#:", to!int(check["last_object_number"]), @@ -252,9 +250,7 @@ writefln( #+HEADER: :noweb yes #+BEGIN_SRC d template spineShowConfig() { - void spineShowConfig(T)( - T doc_matters, - ) { + void spineShowConfig(T)(T doc_matters) { <<metadoc_show_summary_imports>> <<metadoc_show_imports_shared>> mixin InternalMarkup; @@ -348,9 +344,7 @@ writefln( module sisudoc.meta.metadoc_show_make; @safe: template spineShowMake() { - void spineShowMake(T)( - T doc_matters, - ) { + void spineShowMake(T)(T doc_matters) { <<metadoc_show_summary_imports>> <<metadoc_show_imports_shared>> mixin InternalMarkup; @@ -422,9 +416,7 @@ writefln( module sisudoc.meta.metadoc_show_metadata; @safe: template spineShowMetaData() { - void spineShowMetaData(T)( - T doc_matters, - ) { + void spineShowMetaData(T)(T doc_matters) { <<metadoc_show_summary_imports>> <<metadoc_show_imports_shared>> mixin InternalMarkup; @@ -540,27 +532,25 @@ writefln( #+NAME: metadoc_show_imports_shared #+BEGIN_SRC d -import - std.array, - std.digest.crc, - std.digest.sha, - std.exception, - std.regex, - std.stdio, - std.string, - std.typecons, - std.uni, - std.utf, - std.conv : to; +import std.array; +import std.digest.crc; +import std.digest.sha; +import std.exception; +import std.regex; +import std.stdio; +import std.string; +import std.typecons; +import std.uni; +import std.utf; +import std.conv : to; #+END_SRC *** imports #+NAME: metadoc_show_summary_imports #+BEGIN_SRC d -import - sisudoc.meta.defaults, - sisudoc.meta.rgx; +import sisudoc.meta.defaults; +import sisudoc.meta.rgx; #+END_SRC *** initialize :report: diff --git a/org/sisudoc_spine_version_info_and_doc_header_including_copyright_and_license.org b/org/sisudoc_spine_version_info_and_doc_header_including_copyright_and_license.org index 28ead23..b536386 100644 --- a/org/sisudoc_spine_version_info_and_doc_header_including_copyright_and_license.org +++ b/org/sisudoc_spine_version_info_and_doc_header_including_copyright_and_license.org @@ -4,7 +4,7 @@ #+FILETAGS: :spine:abstraction: #+AUTHOR: Ralph Amissah #+EMAIL: [[mailto:ralph.amissah@gmail.com][ralph.amissah@gmail.com]] -#+COPYRIGHT: Copyright (C) 2015 - 2024 Ralph Amissah +#+COPYRIGHT: Copyright (C) 2015 - 2025 Ralph Amissah #+LANGUAGE: en #+STARTUP: content hideblocks hidestars noindent entitiespretty #+PROPERTY: header-args :noweb yes @@ -29,7 +29,7 @@ - Author: Ralph Amissah [ralph.amissah@gmail.com] - - Copyright: (C) 2015 - 2024 Ralph Amissah, All Rights Reserved. + - Copyright: (C) 2015 - 2025 Ralph Amissah, All Rights Reserved. - License: AGPL 3 or later: @@ -98,7 +98,7 @@ #+NAME: spine_project_version_part_minor #+BEGIN_SRC org -17 +18 #+END_SRC *** patch diff --git a/org/spine.org b/org/spine.org index 8ccaa0f..2b4b14e 100644 --- a/org/spine.org +++ b/org/spine.org @@ -4,7 +4,7 @@ #+FILETAGS: :spine:hub: #+AUTHOR: Ralph Amissah #+EMAIL: [[mailto:ralph.amissah@gmail.com][ralph.amissah@gmail.com]] -#+COPYRIGHT: Copyright (C) 2015 - 2024 Ralph Amissah +#+COPYRIGHT: Copyright (C) 2015 - 2025 Ralph Amissah #+LANGUAGE: en #+STARTUP: content hideblocks hidestars noindent entitiespretty #+PROPERTY: header-args :exports code @@ -37,7 +37,6 @@ - by zip filename #+HEADER: :tangle "../src/sisudoc/spine.d" -#+HEADER: :shebang "#!/usr/bin/env rdmd" #+HEADER: :noweb yes #+BEGIN_SRC d <<doc_header_including_copyright_and_license>> @@ -85,9 +84,7 @@ string program_name = "spine"; } } else { // note cannot parallelise sqlite shared db foreach(manifest; _manifests[1..$]) { - if (_opt_action.vox_gt2) { - writeln("parallelisation off: actions include sqlite shared db"); - } + if (_opt_action.vox_gt2) { writeln("parallelisation off: actions include sqlite shared db"); } if (!empty(manifest.src.filename)) { <<spine_each_file_do_scope>> <<spine_each_file_do_abstraction>> @@ -128,52 +125,48 @@ string program_name = "spine"; #+NAME: imports_spine #+BEGIN_SRC d -import - std.algorithm, - std.datetime, - std.getopt, - std.file, - std.path, - std.process; -import - sisudoc.conf.compile_time_info, - sisudoc.meta, - sisudoc.meta.metadoc, - sisudoc.meta.metadoc_curate, - sisudoc.meta.metadoc_curate_authors, - sisudoc.meta.metadoc_curate_topics, - sisudoc.meta.metadoc_from_src, - sisudoc.meta.conf_make_meta_structs, - sisudoc.meta.conf_make_meta_json, - sisudoc.meta.defaults, - sisudoc.meta.doc_debugs, - sisudoc.meta.rgx, - sisudoc.meta.rgx_yaml, - sisudoc.meta.rgx_files, - sisudoc.io_in.paths_source, - sisudoc.io_in.read_config_files, - sisudoc.io_in.read_source_files, - sisudoc.io_out.hub; +import std.algorithm; +import std.datetime; +import std.getopt; +import std.file; +import std.path; +import std.process; +import sisudoc.conf.compile_time_info; +import sisudoc.meta; +import sisudoc.meta.metadoc; +import sisudoc.meta.metadoc_curate; +import sisudoc.meta.metadoc_curate_authors; +import sisudoc.meta.metadoc_curate_topics; +import sisudoc.meta.metadoc_from_src; +import sisudoc.meta.conf_make_meta_structs; +import sisudoc.meta.conf_make_meta_json; +import sisudoc.meta.defaults; +import sisudoc.meta.doc_debugs; +import sisudoc.meta.rgx; +import sisudoc.meta.rgx_yaml; +import sisudoc.meta.rgx_files; +import sisudoc.io_in.paths_source; +import sisudoc.io_in.read_config_files; +import sisudoc.io_in.read_source_files; +import sisudoc.io_out.hub; #+END_SRC ***** spine metadoc :spine: #+NAME: imports_spine_metadoc #+BEGIN_SRC d -import - std.datetime, - std.digest.crc, - std.digest.sha; -import - sisudoc.meta, - sisudoc.meta.metadoc_from_src, - sisudoc.meta.conf_make_meta_structs, - sisudoc.meta.conf_make_meta_json, - sisudoc.meta.defaults, - sisudoc.io_in.paths_source, - sisudoc.io_in.read_config_files, - sisudoc.io_in.read_source_files, - sisudoc.io_out.hub; +import std.datetime; +import std.digest.crc; +import std.digest.sha; +import sisudoc.meta; +import sisudoc.meta.metadoc_from_src; +import sisudoc.meta.conf_make_meta_structs; +import sisudoc.meta.conf_make_meta_json; +import sisudoc.meta.defaults; +import sisudoc.io_in.paths_source; +import sisudoc.io_in.read_config_files; +import sisudoc.io_in.read_source_files; +import sisudoc.io_out.hub; #+END_SRC ****** notes @@ -848,11 +841,19 @@ struct OptActions { bool _is; if (opts["serial"] == true) { _is = false; - } else if (sqlite_shared_db_action) { + } else if ( + sqlite_shared_db_action + || source_or_pod + ) { _is = false; } else if (opts["parallel"] == true) { _is = true; - if (sqlite_shared_db_action) { _is = false; } + if ( + sqlite_shared_db_action + || source_or_pod + ) { + _is = false; + } } else if ( opts["abstraction"] || concordance @@ -862,7 +863,6 @@ struct OptActions { || odt || latex || manifest - || source_or_pod || sqlite_discrete ) { _is = true; @@ -1255,12 +1255,7 @@ foreach(arg; args[1..$]) { #+NAME: spine_each_file_do_scope #+BEGIN_SRC d scope(success) { - if (_opt_action.vox_gt0) { - writefln( - "%s", - "-- ~ document complete, ok ~ ------------------------------------", - ); - } + if (_opt_action.vox_gt0) { writeln("-- ~ document complete, ok ~ ------------------------------------"); } } scope(failure) { debug(checkdoc) { @@ -1282,7 +1277,7 @@ enforce( *** 1. _document abstraction_ [#A] - return tuple of: - - doc_abstraction (the document) + - doc.abstraction (the document) - doc_matters #+NAME: spine_each_file_do_abstraction @@ -1292,11 +1287,8 @@ if ((_opt_action.debug_do) ) { writeln("--->\nstepX commence → (document abstraction) [", manifest.src.filename, "]"); } -auto t = spineAbstraction!()(_env, program_info, _opt_action, _cfg, manifest, _make_and_meta_struct); -static assert(t.length==2); -auto doc_abstraction = t[dAM.abstraction]; -auto doc_matters = t[dAM.matters]; -if ((doc_matters.opt.action.debug_do) +auto doc = spineAbstraction!()(_env, program_info, _opt_action, _cfg, manifest, _make_and_meta_struct); +if ((doc.matters.opt.action.debug_do) || (_opt_action.debug_do_stages) ) { writeln("- stepX complete for [", manifest.src.filename, "]"); @@ -1323,9 +1315,9 @@ if ((doc_matters.opt.action.debug_do) #+NAME: spine_each_file_do_debugs_checkdoc_0 #+BEGIN_SRC d /+ ↓ debugs +/ -if (doc_matters.opt.action.show_summary) { +if (doc.matters.opt.action.show_summary) { import sisudoc.meta.metadoc_show_summary; - spineMetaDocSummary!()(doc_abstraction, doc_matters); + spineMetaDocSummary!()(doc); } #+END_SRC @@ -1335,9 +1327,9 @@ if (doc_matters.opt.action.show_summary) { #+NAME: spine_each_file_do_debugs_checkdoc_1 #+BEGIN_SRC d /+ ↓ debugs +/ -if (doc_matters.opt.action.show_metadata) { +if (doc.matters.opt.action.show_metadata) { import sisudoc.meta.metadoc_show_metadata; - spineShowMetaData!()(doc_matters); + spineShowMetaData!()(doc.matters); } #+END_SRC @@ -1347,9 +1339,9 @@ if (doc_matters.opt.action.show_metadata) { #+NAME: spine_each_file_do_debugs_checkdoc_2 #+BEGIN_SRC d /+ ↓ debugs +/ -if (doc_matters.opt.action.show_make) { +if (doc.matters.opt.action.show_make) { import sisudoc.meta.metadoc_show_make; - spineShowMake!()(doc_matters); + spineShowMake!()(doc.matters); } #+END_SRC @@ -1359,9 +1351,9 @@ if (doc_matters.opt.action.show_make) { #+NAME: spine_each_file_do_debugs_checkdoc_3 #+BEGIN_SRC d /+ ↓ debugs +/ -if (doc_matters.opt.action.show_config) { +if (doc.matters.opt.action.show_config) { import sisudoc.meta.metadoc_show_config; - spineShowConfig!()(doc_matters); + spineShowConfig!()(doc.matters); } #+END_SRC @@ -1370,17 +1362,17 @@ if (doc_matters.opt.action.show_config) { #+NAME: spine_each_file_do_debugs_checkdoc_4 #+BEGIN_SRC d -if (doc_matters.opt.action.curate) { - auto _hvst = spineMetaDocCurate!()(doc_matters, hvst); +if (doc.matters.opt.action.curate) { + auto _hvst = spineMetaDocCurate!()(doc.matters, hvst); if ( _hvst.title.length > 0 && _hvst.author_surname_fn.length > 0 ) { hvst.curates ~= _hvst; } else { - if ((doc_matters.opt.action.debug_do) + if ((doc.matters.opt.action.debug_do) || (_opt_action.debug_do_curate) - || (doc_matters.opt.action.vox_gt2) + || (doc.matters.opt.action.vox_gt2) ) { writeln("WARNING curate: document header yaml does not contain information related to: title or author: ", _hvst.path_html_segtoc); } @@ -1394,8 +1386,8 @@ if (doc_matters.opt.action.curate) { #+NAME: spine_each_file_do_debugs_checkdoc_5 #+BEGIN_SRC d /+ ↓ debugs +/ -if (doc_matters.opt.action.debug_do) { - spineDebugs!()(doc_abstraction, doc_matters); +if (doc.matters.opt.action.debug_do) { + spineDebugs!()(doc.abstraction, doc.matters); } #+END_SRC @@ -1413,16 +1405,12 @@ if (!(_opt_action.skip_output)) { #+NAME: spine_each_file_do_selected_output #+BEGIN_SRC d /+ ↓ output hub +/ -if (!(doc_matters.opt.action.skip_output)) { - if ((_opt_action.debug_do) - || (_opt_action.debug_do_stages) - ) { +if (!(doc.matters.opt.action.skip_output)) { + if ((_opt_action.debug_do) || (_opt_action.debug_do_stages)) { writeln("step5 commence → (process outputs) [", manifest.src.filename, "]"); } - doc_abstraction.outputHub!()(doc_matters); - if ((_opt_action.debug_do) - || (_opt_action.debug_do_stages) - ) { + doc.outputHub!(); + if ((_opt_action.debug_do) || (_opt_action.debug_do_stages)) { writeln("- step5 complete for [", manifest.src.filename, "]"); } } @@ -1467,13 +1455,13 @@ template spineAbstraction() { <<spine_metadoc_mixin>> enum makeMeta { make, meta } enum docAbst { doc_abstract_obj, doc_has } - @system auto spineAbstraction(E,P,O,Cfg,M,S)( - E _env, - P program_info, - O _opt_action, - Cfg _cfg, - M _manifest, - S _make_and_meta_struct + @system auto spineAbstraction(E,P,O,Cfg,M)( + E _env, + P program_info, + O _opt_action, + Cfg _cfg, + M _manifest, + ConfComposite _make_and_meta_struct ){ <<spine_conf_files_in_yaml>> <<spine_each_file_do_read_and_split_dr_markup_file_content_into_header_and_body>> @@ -1489,8 +1477,19 @@ template spineAbstraction() { } auto doc_matters = ST_DocumentMatters(); <<spine_each_file_do_document_matters_msg_step4_end>> - auto t = tuple(doc_abstraction, doc_matters); - return t; + auto theDOC() { + struct ST_DOC { + const auto abstraction() { + return doc_abstraction; + } + auto matters() { + return doc_matters; + } + } + return ST_DOC(); + } + auto the_doc = theDOC(); + return the_doc; } } #+END_SRC @@ -1589,12 +1588,12 @@ if ((_opt_action.debug_do) - prepare the document abstraction used in downstream processing - _return tuple of_: - - document abstraction (_the_document_ or doc_abstraction) + - document abstraction (_the_document_ or doc.abstraction) - document abstraction keys - (head, toc, body, endnotes, glossary, bibliography, bookindex, blurb, tail) - - (transfer to _doc_matters_) - - segnames for html epub (transfer to _doc_matters_) - - image list (transfer to _doc_matters_) + - (transfer to _doc.matters_) + - segnames for html epub (transfer to _doc.matters_) + - image list (transfer to _doc.matters_) #+NAME: spine_each_file_do_document_abstraction #+BEGIN_SRC d @@ -1632,7 +1631,7 @@ if ((_opt_action.debug_do) if ((_opt_action.debug_do) || (_opt_action.debug_do_stages) ) { - writeln("step4 commence → (doc_matters) [", _manifest.src.filename, "]"); + writeln("step4 commence → (doc.matters) [", _manifest.src.filename, "]"); } #+END_SRC @@ -1691,7 +1690,7 @@ auto generated_time() { #+NAME: spine_each_file_do_document_matters_2_meta #+BEGIN_SRC d -auto conf_make_meta() { +ConfComposite conf_make_meta() { return _make_and_meta_struct; } auto doc_digest() { diff --git a/org/spine_info.org b/org/spine_info.org index a5ab360..2d61c20 100644 --- a/org/spine_info.org +++ b/org/spine_info.org @@ -4,7 +4,7 @@ #+FILETAGS: :spine:info: #+AUTHOR: Ralph Amissah #+EMAIL: [[mailto:ralph.amissah@gmail.com][ralph.amissah@gmail.com]] -#+COPYRIGHT: Copyright (C) 2015 - 2024 Ralph Amissah +#+COPYRIGHT: Copyright (C) 2015 - 2025 Ralph Amissah #+LANGUAGE: en #+STARTUP: content hideblocks hidestars noindent entitiespretty #+PROPERTY: header-args :exports code @@ -77,7 +77,7 @@ <<sisudoc_spine_README_command_examples_populate_db_text>> -,*** generate a cgi search form in d +,*** generate a cgi search form <<sisudoc_spine_README_command_examples_search_db_cgi_text>> @@ -85,7 +85,7 @@ <<sisudoc_spine_README_command_examples_compile_search_db_cgi_text>> -,*** create db & search form +,*** create db <<sisudoc_spine_README_command_examples_create_db_and_search_form_text>> @@ -122,7 +122,7 @@ ,#+FILETAGS: :spine:build:tools: ,#+AUTHOR: Ralph Amissah ,#+EMAIL: [[mailto:ralph.amissah@gmail.com][ralph.amissah@gmail.com]] -,#+COPYRIGHT: Copyright (C) 2015 - 2024 Ralph Amissah +,#+COPYRIGHT: Copyright (C) 2015 - 2025 Ralph Amissah ,#+LANGUAGE: en ,#+STARTUP: content hideblocks hidestars noindent entitiespretty ,#+OPTIONS: H:3 num:nil toc:t \n:nil @:t ::t |:t ^:nil _:nil -:t f:t *:t <:t @@ -196,7 +196,7 @@ <<sisudoc_spine_README_command_examples_compile_search_db_cgi_text>> -### create db & search form +### create db <<sisudoc_spine_README_command_examples_create_db_and_search_form_text>> @@ -240,7 +240,7 @@ author: name: "Ralph Amissah" email: ralph.amissah@gmail.com -copyright: "(C) 2015 - 2024 Ralph Amissah, All Rights Reserved." +copyright: "(C) 2015 - 2025 Ralph Amissah, All Rights Reserved." license: - "project code: AGPL 3 or later" @@ -624,23 +624,16 @@ for a document collection you can point to the document collection: #+NAME: sisudoc_spine_README_command_examples_search_db_cgi_text #+BEGIN_SRC text -spine -v --cgi-search-form-codegen \ - --output=/var/www/html \ - ~spineMarkupSamples/pod - -spine -v --cgi-search-form-codegen --config=~spineMarkupSamples/pod +The CGI search form is built separately in the sisudoc-spine-search-cgi/ directory. -spine -v --cgi-search-form-codegen --config=~spineMarkupSamples/pod/.dr/config_local_site +Steps: +1. Clone the sisudoc-spine-search-cgi repository +2. Configure views/configuration.txt with your web server settings +3. Build the CGI binary using Nix or dub +4. Deploy the CGI binary to your web server's cgi-bin directory -spine --cgi-search-form-codegen --output=`echo ~webDocRoot` ~spineMarkupSamples/pod - -spine --cgi-search-form-codegen --cgi-sqlite-search-filename="spine_search" --output=`echo ~webDocRoot` - -spine -v --cgi-search-form-codegen \ - --sqlite-db-filename="spine.search.db" \ - --cgi-sqlite-search-filename="spine-search" \ - --output=/var/www/html \ - ~spineMarkupSamples/pod +For detailed instructions, see: + sisudoc-spine-search-cgi/README.md #+END_SRC #+NAME: sisudoc_spine_README_command_examples_compile_search_db_cgi_text @@ -676,9 +669,10 @@ cgi-bin directory #+BEGIN_SRC text spine -v \ --sqlite-db-create --sqlite-db-filename="spine.search.db" \ - --cgi-search-form-codegen --cgi-sqlite-search-filename="spine-search" \ --output=/var/www/html \ ~spineMarkupSamples/pod/* + +Note: The CGI search form is built separately in sisudoc-spine-search-cgi/ #+END_SRC #+NAME: sisudoc_spine_README_command_examples_html_with_links_to_search_form_text @@ -975,7 +969,7 @@ webserv: - Author: Ralph Amissah [ralph.amissah@gmail.com] -- Copyright: (C) 2015 - 2024 Ralph Amissah +- Copyright: (C) 2015 - 2025 Ralph Amissah #+END_SRC *** license @@ -1140,6 +1134,7 @@ webserv: - code: cgi.d aria2c https://raw.githubusercontent.com/adamdruppe/arsd/master/cgi.d + aria2c https://raw.githubusercontent.com/adamdruppe/arsd/master/core.d - License: BSL-1.0 Boost Software License 1.0 @@ -1154,14 +1149,14 @@ webserv: * CHANGELOG :changelog: -#+BEGIN_SRC sh +#+BEGIN_SRC shell CHL="CHANGELOG" git log --pretty=format:'-_-%+s %+as %ae%+h%d%+b' --no-merges \ | sed "/^\\s*$/d" | sed "s/^\([ ]\)*\*/\1-/" | sed "s/ \+$//" | sed "s/^-_-$//" \ > ${CHL} #+END_SRC -#+BEGIN_SRC sh +#+BEGIN_SRC shell git log --pretty=format:"-_-_%+s %+as %ae%+h%d%+b" --no-merges \ > ${CHL} && sed -i '/^$/d; s/^\([ ]\)*\*/\1-/; s/ \+$//; s/^-_-_//' ${CHL} #+END_SRC diff --git a/org/spine_markup_sample.org b/org/spine_markup_sample.org index 288d2ec..d0381ac 100644 --- a/org/spine_markup_sample.org +++ b/org/spine_markup_sample.org @@ -4,7 +4,7 @@ #+FILETAGS: :spine:build:tools: #+AUTHOR: Ralph Amissah #+EMAIL: [[mailto:ralph.amissah@gmail.com][ralph.amissah@gmail.com]] -#+COPYRIGHT: Copyright (C) 2015 - 2024 Ralph Amissah +#+COPYRIGHT: Copyright (C) 2015 - 2025 Ralph Amissah #+LANGUAGE: en #+STARTUP: content hideblocks hidestars noindent entitiespretty #+PROPERTY: header-args :exports code @@ -333,7 +333,7 @@ date: modified: "2020-04-11" rights: - copyright: "Copyright (C) Ralph Amissah 2007, 2024" + copyright: "Copyright (C) Ralph Amissah 2007, 2025" license: "AGPL 3 (part of SiSU Spine documentation)" classify: diff --git a/org/util_spine_markup_conversion_from_sisu.org b/org/util_spine_markup_conversion_from_sisu.org index 99852b0..56f79dd 100644 --- a/org/util_spine_markup_conversion_from_sisu.org +++ b/org/util_spine_markup_conversion_from_sisu.org @@ -4,7 +4,7 @@ #+FILETAGS: :spine:info: #+AUTHOR: Ralph Amissah #+EMAIL: [[mailto:ralph.amissah@gmail.com][ralph.amissah@gmail.com]] -#+COPYRIGHT: Copyright (C) 2015 - 2024 Ralph Amissah +#+COPYRIGHT: Copyright (C) 2015 - 2025 Ralph Amissah #+LANGUAGE: en #+STARTUP: content hideblocks hidestars noindent entitiespretty #+PROPERTY: header-args :exports code diff --git a/org/util_spine_syntax_highlighting_emacs.org b/org/util_spine_syntax_highlighting_emacs.org index 00f82a6..7272faf 100644 --- a/org/util_spine_syntax_highlighting_emacs.org +++ b/org/util_spine_syntax_highlighting_emacs.org @@ -1,10 +1,10 @@ -*- mode: org -*- -#+TITLE: sisudoc spine (doc_reform) information files +#+TITLE: sisudoc spine (doc_reform) emacs syntax highlighting #+DESCRIPTION: documents - structuring, various output representations & search #+FILETAGS: :spine:info: #+AUTHOR: Ralph Amissah #+EMAIL: [[mailto:ralph.amissah@gmail.com][ralph.amissah@gmail.com]] -#+COPYRIGHT: Copyright (C) 2015 - 2024 Ralph Amissah +#+COPYRIGHT: Copyright (C) 2015 - 2025 Ralph Amissah #+LANGUAGE: en #+STARTUP: content hideblocks hidestars noindent entitiespretty #+PROPERTY: header-args :exports code @@ -21,7 +21,7 @@ ** README -#+HEADER: :tangle "../sundry/misc/editor-syntax-etc/emacs/README" +#+HEADER: :tangle "../sundry/editor-syntax-etc/emacs/README" #+BEGIN_SRC elisp ; put this into your .emacs file, then use the mode file: @@ -31,7 +31,7 @@ ** autoload sisuspine-mode-autoloads.el -#+HEADER: :tangle "../sundry/misc/editor-syntax-etc/emacs/sisu-spine-mode-autoloads.el" +#+HEADER: :tangle "../sundry/editor-syntax-etc/emacs/sisu-spine-mode-autoloads.el" #+BEGIN_SRC elisp (add-to-list 'load-path (or (file-name-directory #$) (car load-path))) (autoload 'sisu-spine-mode "sisu-spine-mode" "\ @@ -47,17 +47,18 @@ and search. ** mode sisu-spine-mode.el -#+HEADER: :tangle "../sundry/misc/editor-syntax-etc/emacs/sisu-spine-mode.el" +#+HEADER: :tangle "../sundry/editor-syntax-etc/emacs/sisu-spine-mode.el" #+BEGIN_SRC elisp ;;; sisu-spine-mode.el --- Major mode for SiSU (spine parser) markup text -;; Copyright (C) 2011, 2024 Free Software Foundation, Inc. +;; Copyright (C) 2011, 2025 Free Software Foundation, Inc. ;; Author: Ralph Amissah & Ambrose Kofi Laing ;; Maintainer: Ralph Amissah <ralph.amissah@gmail.com> ;; Keywords: text, syntax, processes, tools ;; Version: 8.0.0 -;; URL: https://www.sisudoc.org/ +;; URL: https://git.sisudoc.org/projects/sisudoc-spine/tree/sundry/editor-syntax-etc/emacs/sisu-spine-mode.el +;; https://sisudoc.org/ ;; originally looked at (based on) doc-mode, with kind permission of the author ;; Author: SUN, Tong <suntong001@users.sf.net>, (c)2001-6, all right reserved ;; Version: $Date: 2006/01/19 03:13:41 $ $Revision: 1.14 $ @@ -199,6 +200,14 @@ and search. (cons "^```[ ]+poem$\\|^```$" 'sisu-general-font-lock-red2) (cons "^```[ ]+alt$\\|^```$" 'sisu-general-font-lock-red2) ;;grouped text --------- + ;(cons "^'''[ ]code\\(.\\|\n\\)+?\n'''\n" 'sisu-general-font-lock-red2) + (cons "^'''[ ]+code.*?$\\|^'''$" 'sisu-general-font-lock-red2) + (cons "^'''[ ]+table.*?$\\|^'''$" 'sisu-general-font-lock-red2) + (cons "^'''[ ]+group$\\|^'''$" 'sisu-general-font-lock-red2) + (cons "^'''[ ]+block$\\|^'''$" 'sisu-general-font-lock-red2) + (cons "^'''[ ]+poem$\\|^'''$" 'sisu-general-font-lock-red2) + (cons "^'''[ ]+alt$\\|^'''$" 'sisu-general-font-lock-red2) + ;;grouped text --------- (cons "^group{\\|^}group" 'sisu-general-font-lock-red2) (cons "^block{\\|^}block" 'sisu-general-font-lock-red2) (cons "^code{\\|^}code" 'sisu-general-font-lock-red2) diff --git a/org/util_spine_syntax_highlighting_vim.org b/org/util_spine_syntax_highlighting_vim.org index bd9aa6d..b66b67d 100644 --- a/org/util_spine_syntax_highlighting_vim.org +++ b/org/util_spine_syntax_highlighting_vim.org @@ -1,10 +1,10 @@ -*- mode: org -*- -#+TITLE: sisudoc spine (doc_reform) information files +#+TITLE: sisudoc spine (doc_reform) vim syntax highlighting & colorschemes #+DESCRIPTION: documents - structuring, various output representations & search #+FILETAGS: :spine:info: #+AUTHOR: Ralph Amissah #+EMAIL: [[mailto:ralph.amissah@gmail.com][ralph.amissah@gmail.com]] -#+COPYRIGHT: Copyright (C) 2015 - 2024 Ralph Amissah +#+COPYRIGHT: Copyright (C) 2015 - 2025 Ralph Amissah #+LANGUAGE: en #+STARTUP: content hideblocks hidestars noindent entitiespretty #+PROPERTY: header-args :exports code @@ -20,21 +20,21 @@ * Vim Syntax highlighting ** filetype -#+HEADER: :tangle "../sundry/misc/editor-syntax-etc/vim/filetype.vim" +#+HEADER: :tangle "../sundry/editor-syntax-etc/vim/filetype.vim" #+BEGIN_SRC text " SiSU filetype file if exists("did_load_filetypes") finish endif augroup filetypedetect - au! BufNewFile,BufRead *.sst,*.ssm,*.ssi,*.-sst setf sisu - au! BufNewFile,BufRead *._sst,*.sst.meta,*.-sst.meta,*._sst.meta setf sisu + au! BufNewFile,BufRead *.sst,*.ssm,*.ssi,*.-sst setf sisu-spine + au! BufNewFile,BufRead *._sst,*.sst.meta,*.-sst.meta,*._sst.meta setf sisu-spine augroup END #+END_SRC ** debian vim addon manager -#+HEADER: :tangle "../sundry/misc/editor-syntax-etc/vim/vim-sisu.yaml" +#+HEADER: :tangle "../sundry/editor-syntax-etc/vim/vim-sisu.yaml" #+BEGIN_SRC text #vim-addons: debian vim-addon-manager addon: sisu @@ -45,326 +45,827 @@ files: - syntax/sisu.vim #+END_SRC +** markup syntax +*** sisu.vim + +#+HEADER: :tangle "../sundry/editor-syntax-etc/vim/syntax/sisu.vim" +#+BEGIN_SRC text +" SiSU Vim syntax file +" SiSU Maintainer: Ralph Amissah <ralph.amissah@gmail.com> +" SiSU Markup: SiSU (sisu-5.6.7) +" Last Change: 2017-06-22 +" URL: <https://git.sisudoc.org/projects/sisudoc-spine/tree/sundry/editor-syntax-etc/vim/syntax/sisu.vim> +" <https://sisudoc.org/> +"(originally looked at Ruby Vim by Mirko Nasato) + +if version < 600 + syntax clear +elseif exists("b:current_syntax") + finish +else +endif +let s:cpo_save = &cpo +set cpo&vim + +"% "Errors: +syn match sisu_error contains=sisu_link,sisu_error_wspace "<![^ei]\S\+!>" + +"% "Markers Identifiers: +if !exists("sisu_no_identifiers") + syn match sisu_mark_endnote "\~^" + syn match sisu_break contains=@NoSpell " \\\\\( \|$\)\|<br>\|<br />" + syn match sisu_control contains=@NoSpell "^\(-\\\\-\|=\\\\=\|-\.\.-\|<:p[bn]>\)\s*$" + syn match sisu_control contains=@NoSpell "^<:\(bo\|---\)>\s*$" + syn match sisu_marktail contains=@NoSpell "^--[+~-]#\s*$" + syn match sisu_marktail "[~-]#" + syn match sisu_control "\"" + syn match sisu_underline "\(^\| \)_[a-zA-Z0-9]\+_\([ .,]\|$\)" + syn match sisu_number contains=@NoSpell "[0-9a-f]\{32\}\|[0-9a-f]\{64\}" + syn match sisu_link contains=@NoSpell "\(_\?https\?://\|\.\.\/\)\S\+" + syn match sisu_link " \*\~\S\+" + syn match sisu_require contains=@NoSpell "^<<\s*[a-zA-Z0-9^./_-]\+\.ss[it]$" + syn match sisu_structure "^:A\~$" + +"% "Document Sub Headers: + syn match sisu_sub_header_title "^\s\+:\(subtitle\|short\|edition\|language\|lang_char\|note\):\s" "group=sisu_header_content + syn match sisu_sub_header_creator "^\s\+:\(author\|editor\|contributor\|illustrator\|photographer\|translator\|digitized_by\|prepared_by\|audio\|video\):\s" " &hon &institution + syn match sisu_sub_header_rights "^\s\+:\(copyright\|text\|translation\|illustrations\|photographs\|preparation\|digitization\|audio\|video\|license\|all\):\s" " access_rights license + syn match sisu_sub_header_classify "^\s\+:\(topic_register\|keywords\|subject\|dewey\|loc\):\s" + syn match sisu_sub_header_identifier "^\s\+:\(oclc\|isbn\):\s" + syn match sisu_sub_header_date "^\s\+:\(added_to_site\|available\|created\|issued\|modified\|published\|valid\|translated\|original_publication\):\s" + syn match sisu_sub_header_original "^\s\+:\(publisher\|date\|language\|lang_char\|institution\|nationality\|source\):\s" + syn match sisu_sub_header_make "^\s\+:\(headings\|num_top\|breaks\|language\|italics\|bold\|emphasis\|substitute\|omit\|plaintext_wrap\|texpdf_font_mono\|texpdf_font\|stamp\|promo\|ad\|manpage\|home_button_text\|home_button_image\|cover_image\|footer\):\s" + syn match sisu_sub_header_notes "^\s\+:\(description\|abstract\|comment\|coverage\|relation\|source\|history\|type\|format\|prefix\|prefix_[ab]\|suffix\):\s" + syn match sisu_within_index_ignore "\S\+[:;]\(\s\+\|$\)" + syn match sisu_within_index "[:|;]\|+\d\+" + +"% "semantic markers: (ignore) + syn match sisu_sem_marker ";{\|};[a-z._]*[a-z]" + syn match sisu_sem_marker_block "\([a-z][a-z._]*\|\):{\|}:[a-z._]*[a-z]" + syn match sisu_sem_ex_marker ";\[\|\];[a-z._]*[a-z]" + syn match sisu_sem_ex_marker_block "\([a-z][a-z._]*\|\):\[\|\]:[a-z._]*[a-z]" + syn match sisu_sem_block contains=sisu_error,sisu_error_wspace,sisu_content_alt,sisu_link,sisu_linked,sisu_break,sisu_sem_block,sisu_sem_content,sisu_sem_marker_block,sisu_sem_marker,sisu_sem_ex_marker_block,sisu_sem_ex_marker,sisu_mark_endnote,sisu_content_endnote "\([a-z]*\):{[^}].\{-}}:\1" + syn match sisu_sem_content contains=sisu_error,sisu_error_wspace,sisu_content_alt,sisu_link,sisu_linked,sisu_break,sisu_sem_marker_block,sisu_sem_marker,sisu_sem_ex_marker_block,sisu_sem_ex_marker ";{[^}].\{-}};[a-z]\+" + syn match sisu_sem_ex_block contains=sisu_error,sisu_error_wspace,sisu_content_alt,sisu_link,sisu_linked,sisu_break,sisu_sem_block,sisu_sem_content,sisu_sem_marker_block,sisu_sem_marker,sisu_sem_ex_marker_block,sisu_sem_ex_marker,sisu_mark_endnote,sisu_content_endnote "\([a-z]*\):\[[^}].\{-}\]:\1" + syn match sisu_sem_ex_content contains=sisu_error,sisu_error_wspace,sisu_content_alt,sisu_link,sisu_linked,sisu_break,sisu_sem_marker_block,sisu_sem_marker,sisu_sem_ex_marker_block,sisu_sem_ex_marker ";\[[^}].\{-}\];[a-z]\+" +endif + +"% "URLs Numbers And ASCII Codes: +syn match sisu_number "\<\(0x\x\+\|0b[01]\+\|0\o\+\|0\.\d\+\|0\|[1-9][\.0-9_]*\)\>" +syn match sisu_number "?\(\\M-\\C-\|\\c\|\\C-\|\\M-\)\=\(\\\o\{3}\|\\x\x\{2}\|\\\=\w\)" + +"% "Tuned Error: (is error if not already matched) +syn match sisu_error contains=sisu_error "[\~/\*!_]{\|}[\~/\*!_]" +syn match sisu_error contains=sisu_error "<a href\|</a>]" + +"% "Simple Paired Enclosed Markup: +"url/link +syn region sisu_link contains=sisu_error,sisu_error_wspace matchgroup=sisu_action start="^<<\s*|[a-zA-Z0-9^._-]\+|@|[a-zA-Z0-9^._-]\+|"rs=s+2 end="$" + +"% "Document Header: +" title +syn region sisu_header_content contains=sisu_error,sisu_comment,sisu_break,sisu_link,sisu_sub_header_title matchgroup=sisu_header start="^[@]title:[+-]\?\(\s\|\n\)"rs=e-1 end="\n$" +" creator +syn region sisu_header_content contains=sisu_error,sisu_comment,sisu_break,sisu_link,sisu_sub_header_creator matchgroup=sisu_header start="^[@]creator:[+-]\?\(\s\|\n\)"rs=e-1 end="\n$" +" dates +syn region sisu_header_content contains=sisu_error,sisu_comment,sisu_break,sisu_link,sisu_sub_header_date matchgroup=sisu_header start="^[@]date:[+-]\?\(\s\|\n\)"rs=e-1 end="\n$" +" publisher +syn region sisu_header_content contains=sisu_error,sisu_comment,sisu_break,sisu_link,sisu_sub_header_publisher matchgroup=sisu_header start="^[@]publisher:[+-]\?\(\s\|\n\)"rs=e-1 end="\n$" +" rights +syn region sisu_header_content contains=sisu_error,sisu_comment,sisu_break,sisu_link,sisu_sub_header_rights matchgroup=sisu_header start="^[@]rights:[+-]\?\(\s\|\n\)"rs=e-1 end="\n$" +" classify document +syn region sisu_header_content contains=sisu_error,sisu_comment,sisu_break,sisu_link,sisu_sub_header_classify matchgroup=sisu_header start="^[@]classify:[+-]\?\(\s\|\n\)"rs=e-1 end="\n$" +" identifier document +syn region sisu_header_content contains=sisu_error,sisu_comment,sisu_break,sisu_link,sisu_sub_header_identifier matchgroup=sisu_header start="^[@]identifier:[+-]\?\(\s\|\n\)"rs=e-1 end="\n$" +" original language (depreciated) +syn region sisu_header_content contains=sisu_error,sisu_comment,sisu_break,sisu_link,sisu_sub_header_original matchgroup=sisu_header start="^[@]original:[+-]\?\(\s\|\n\)"rs=e-1 end="\n$" +" notes +syn region sisu_header_content contains=sisu_error,sisu_comment,sisu_break,sisu_link,sisu_sub_header_notes matchgroup=sisu_header start="^[@]notes:[+-]\?\(\s\|\n\)"rs=e-1 end="\n$" +" links of interest +syn region sisu_header_content contains=sisu_error,sisu_comment,sisu_break,sisu_linked,sisu_sub_header_links matchgroup=sisu_header start="^[@]links:[+-]\?\(\s\|\n\)"rs=e-1 end="\n$" +" make, processing instructions +syn region sisu_header_content contains=sisu_error,sisu_comment,sisu_break,sisu_link,sisu_sub_header_make matchgroup=sisu_header start="^[@]make:[+-]\?\(\s\|\n\)"rs=e-1 end="\n$" + +"% "Headings: +syn region sisu_heading contains=sisu_mark_endnote,sisu_content_endnote,sisu_marktail,sisu_strikeout,sisu_number,sisu_bold,sisu_control,sisu_identifier,sisu_ocn,sisu_error,sisu_error_wspace matchgroup=sisu_structure start="^\([1-4]\|:\?[A-D]\)\~\(\S\+\|[^-]\)" end="$" + +"% "Block Group Text: +" table +syn region sisu_content_alt contains=sisu_strikeout,sisu_number,sisu_bold,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_contain start="^table{.\+" end="}table" +" table +syn region sisu_content_alt contains=sisu_strikeout,sisu_number,sisu_bold,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_contain start="^```\s\+table" end="^```\(\s\|$\)" +syn region sisu_content_alt contains=sisu_strikeout,sisu_number,sisu_bold,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_contain start="^{\(t\|table\)\(\~h\)\?\(\sc[0-9]\+;\)\?[0-9; ]*}" end="\n$" +" block, group, poem, alt +syn region sisu_content_alt contains=sisu_mark_endnote,sisu_content_endnote,sisu_link,sisu_mark,sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_contain start="^\z(block\|group\|poem\|alt\){" end="^}\z1" +syn region sisu_content_alt contains=sisu_mark_endnote,sisu_content_endnote,sisu_link,sisu_mark,sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_contain start="^```\s\+\(block\|group\|poem\|alt\)" end="^```\(\s\|$\)" +" box +syn region sisu_content_alt contains=sisu_mark_endnote,sisu_content_endnote,sisu_link,sisu_mark,sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_contain start="^box\(\.[a-z]\+\)\?{" end="^}box" +syn region sisu_content_alt contains=sisu_mark_endnote,sisu_content_endnote,sisu_link,sisu_mark,sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_contain start="^```\s\+\box\(\.[a-z]\+\)\?" end="^```\(\s\|$\)" +" code +syn region sisu_content_alt contains=sisu_error,@NoSpell matchgroup=sisu_contain start="^code\(\.[a-z][0-9a-z_]\+\)\?{" end="^}code" +syn region sisu_content_alt contains=sisu_error,@NoSpell matchgroup=sisu_contain start="^```\s\+code\(\.[a-z][0-9a-z_]\+\)\?" end="^```\(\s\|$\)" +" quote +syn region sisu_normal contains=sisu_fontface,sisu_bold,sisu_control,sisu_identifier,sisu_content_endnote,sisu_mark_endnote,sisu_link,sisu_sem_block,sisu_sem_content,sisu_sem_marker_block,sisu_sem_marker,sisu_sem_ex_marker_block,sisu_sem_ex_marker,sisu_linked,sisu_error,sisu_error_wspace matchgroup=sisu_contain start="^```\s\+quote" end="^```\(\s\|$\)" + +"% "Endnotes: +" regular endnote or asterisk or plus sign endnote +syn region sisu_content_endnote contains=sisu_link,sisu_strikeout,sisu_underline,sisu_number,sisu_bold,sisu_control,sisu_identifier,sisu_error,sisu_error_wspace,sisu_mark,sisu_break,sisu_sem_block,sisu_sem_content,sisu_sem_marker_block,sisu_sem_marker,sisu_sem_ex_marker_block,sisu_sem_ex_marker matchgroup=sisu_mark_endnote start="\~{[*+]*" end="}\~" skip="\n" +" numbered asterisk or plus sign endnote +syn region sisu_content_endnote contains=sisu_link,sisu_strikeout,sisu_underline,sisu_number,sisu_bold,sisu_control,sisu_identifier,sisu_error,sisu_error_wspace,sisu_mark,sisu_break,sisu_sem_block,sisu_sem_content,sisu_sem_marker matchgroup=sisu_mark_endnote start="\~\[[*+]*" end="\]\~" skip="\n" +" endnote content marker (for binary content marking) +syn region sisu_content_endnote contains=sisu_strikeout,sisu_number,sisu_bold,sisu_control,sisu_link,sisu_identifier,sisu_error,sisu_error_wspace,sisu_mark,sisu_break matchgroup=sisu_mark_endnote start="\^\~" end="\n$" + +"% "Links And Images: +" image with url link (and possibly footnote of url) +syn region sisu_linked contains=sisu_fontface,sisu_strikeout,sisu_number,sisu_bold,sisu_control,sisu_identifier,sisu_sem_block,sisu_sem_content,sisu_sem_marker_block,sisu_sem_marker,sisu_sem_ex_marker_block,sisu_sem_ex_marker,sisu_sem_block,sisu_error matchgroup=sisu_link start="{\(\~^\s\)\?" end="}\(https\?:/\/\|:\|\.\.\/\|#\)\S\+" oneline +" sisu outputs, short notation +syn region sisu_linked contains=sisu_fontface,sisu_strikeout,sisu_number,sisu_bold,sisu_control,sisu_identifier,sisu_sem_block,sisu_sem_content,sisu_sem_marker_block,sisu_sem_marker,sisu_sem_ex_marker_block,sisu_sem_ex_marker,sisu_sem_block,sisu_error matchgroup=sisu_link start="{\(\~^\s\)\?" end="\[[1-5][sS]*\]}\S\+\.ss[tm]" oneline +" image +syn region sisu_linked contains=sisu_fontface,sisu_strikeout,sisu_number,sisu_bold,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_link start="{" end="}image" oneline + +"% "Some Line Operations: +" bold line +syn region sisu_bold contains=sisu_strikeout,sisu_identifier,sisu_content_endnote,sisu_mark_endnote,sisu_error,sisu_error_wspace matchgroup=sisu_markpara start="^!_ " end=" \\\\\|$" +" indent and bullet paragraph +syn region sisu_normal contains=sisu_fontface,sisu_bold,sisu_control,sisu_identifier,sisu_content_endnote,sisu_mark_endnote,sisu_link,sisu_sem_block,sisu_sem_content,sisu_sem_marker_block,sisu_sem_marker,sisu_sem_ex_marker_block,sisu_sem_ex_marker,sisu_linked,sisu_error,sisu_error_wspace matchgroup=sisu_markpara start="^_\([1-9*]\|[1-9]\*\) " end="$" +" indent and bullet (bold start) paragraph +syn region sisu_bold contains=sisu_fontface,sisu_bold,sisu_control,sisu_identifier,sisu_content_endnote,sisu_mark_endnote,sisu_link,sisu_sem_block,sisu_sem_content,sisu_sem_marker_block,sisu_sem_marker,sisu_sem_ex_marker_block,sisu_sem_ex_marker,sisu_linked,sisu_error,sisu_error_wspace matchgroup=sisu_markpara start="^_\([1-9*]\|[1-9]\*\)!_\? " end=" \\\\\|$" +" hanging indent paragraph [proposed] +syn region sisu_normal contains=sisu_fontface,sisu_bold,sisu_control,sisu_identifier,sisu_content_endnote,sisu_mark_endnote,sisu_link,sisu_sem_block,sisu_sem_content,sisu_sem_marker_block,sisu_sem_marker,sisu_sem_ex_marker_block,sisu_sem_ex_marker,sisu_linked,sisu_error,sisu_error_wspace matchgroup=sisu_markpara start="^_[0-9]\?_[0-9] " end="$" +" hanging indent (bold start/ definition) paragraph [proposed] +syn region sisu_bold contains=sisu_fontface,sisu_bold,sisu_control,sisu_identifier,sisu_content_endnote,sisu_mark_endnote,sisu_link,sisu_sem_block,sisu_sem_content,sisu_sem_marker_block,sisu_sem_marker,sisu_sem_ex_marker_block,sisu_sem_ex_marker,sisu_linked,sisu_error,sisu_error_wspace matchgroup=sisu_markpara start="^_[0-9]\?_[0-9]!_\? " end=" \\\\\|$" +" list numbering +syn region sisu_normal contains=sisu_strikeout,sisu_identifier,sisu_content_endnote,sisu_mark_endnote,sisu_link,sisu_linked,sisu_error,sisu_error_wspace matchgroup=sisu_markpara start="^\(#[ 1]\|_# \)" end="$" + +"% "Font Face Curly Brackets: +"syn region sisu_identifier contains=sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_sem start="\S\+:{" end="}:[^<>,.!?:; ]\+" oneline +" book index: +syn region sisu_index contains=sisu_within_index_ignore,sisu_within_index matchgroup=sisu_index_block start="^={" end="}" +" emphasis: +syn region sisu_bold contains=sisu_strikeout,sisu_number,sisu_bold,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_fontface start="\*{" end="}\*" +" bold: +syn region sisu_bold contains=sisu_strikeout,sisu_number,sisu_bold,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_fontface start="!{" end="}!" +" underscore: +syn region sisu_underline contains=sisu_strikeout,sisu_number,sisu_bold,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_fontface start="_{" end="}_" +" italics: +syn region sisu_identifier contains=sisu_strikeout,sisu_number,sisu_bold,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_fontface start="/{" end="}/" +" added: +syn region sisu_underline contains=sisu_strikeout,sisu_number,sisu_bold,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_fontface start="+{" end="}+" +" superscript: +syn region sisu_identifier contains=sisu_strikeout,sisu_number,sisu_bold,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_fontface start="\^{" end="}\^" +" subscript: +syn region sisu_identifier contains=sisu_strikeout,sisu_number,sisu_bold,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_fontface start=",{" end="}," +" monospace: +syn region sisu_identifier contains=sisu_strikeout,sisu_number,sisu_bold,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_fontface start="#{" end="}#" +" strikethrough: +syn region sisu_strikeout contains=sisu_error matchgroup=sisu_fontface start="-{" end="}-" + +"% "Single Words Bold Italicise Etc: (depreciated) +syn region sisu_bold contains=sisu_error matchgroup=sisu_bold start="\([ (]\|^\)\*[^\|{\n\~\\]"hs=e-1 end="\*"he=e-0 skip="[a-zA-Z0-9']" oneline +syn region sisu_identifier contains=sisu_error matchgroup=sisu_content_alt start="\([ ]\|^\)/[^{ \|\n\\]"hs=e-1 end="/\[ \.\]" skip="[a-zA-Z0-9']" oneline +"misc +syn region sisu_identifier contains=sisu_error matchgroup=sisu_fontface start="\^[^ {\|\n\\]"rs=s+1 end="\^[ ,.;:'})\\\n]" skip="[a-zA-Z0-9']" oneline + +"% "Expensive Mode: +if !exists("sisu_no_expensive") +else " not Expensive + syn region sisu_content_alt matchgroup=sisu_control start="^\s*def\s" matchgroup=NONE end="[?!]\|\>" skip="\.\|\(::\)" oneline +endif " Expensive? + +"% "Headers And Headings: (Document Instructions) +syn match sisu_control contains=sisu_error,sisu_error_wspace "4\~! \S\+" +syn region sisu_markpara contains=sisu_error,sisu_error_wspace start="^=begin" end="^=end.*$" + +"% "Errors: +syn match sisu_error_wspace contains=sisu_error_wspace "^\s\+[^:]" +syn match sisu_error_wspace contains=sisu_error_wspace "\s\s\+" +syn match sisu_error_wspace contains=sisu_error_wspace "\s\+$" +syn match sisu_error contains=sisu_error_wspace "\t\+" +syn match sisu_error contains=sisu_error,sisu_error_wspace "\([^ (][_\\]\||[^ (}]\)https\?:\S\+" +syn match sisu_error contains=sisu_error "_\?https\?:\S\+[}><]" +syn match sisu_error contains=sisu_error "\([!*/_\+,^]\){\([^(\}\1)]\)\{-}\n$" +syn match sisu_error contains=sisu_error "^[\~]{[^{]\{-}\n$" +syn match sisu_error contains=sisu_error "\s\+.{{" +syn match sisu_error contains=sisu_error "^\~\s*$" +syn match sisu_error contains=sisu_error "^0\~.*" +syn match sisu_error contains=sisu_error "^[1-9]\~\s*$" +syn match sisu_error contains=sisu_error "^[1-9]\~\S\+\s*$" +syn match sisu_error contains=sisu_error "[^{]\~\^[^ \)]" +syn match sisu_error contains=sisu_error "\~\^\s\+\.\s*" +syn match sisu_error contains=sisu_error "{\~^\S\+" +syn match sisu_error contains=sisu_error "[_/\*!^]{[ .,:;?><]*}[_/\*!^]" +syn match sisu_error contains=sisu_error "[^ (\"'(\[][_/\*!]{\|}[_/\*!][a-zA-Z0-9)\]\"']" +syn match sisu_error contains=sisu_error "<dir>" +"errors for filetype sisu, though not error in 'metaverse': +syn match sisu_error contains=sisu_error,sisu_match,sisu_strikeout,sisu_contain,sisu_content_alt,sisu_mark,sisu_break,sisu_number "<[a-zA-Z\/]\+>" +syn match sisu_error "/\?<\([biu]\)>[^(</\1>)]\{-}\n$" + +"% "Error Exceptions: +syn match sisu_control "\n$" "contains=ALL +"syn match sisu_control " //" +syn match sisu_error "%{" +syn match sisu_error "<br>_\?https\?:\S\+\|_\?https\?:\S\+<br>" +syn match sisu_error "[><]_\?https\?:\S\+\|_\?https\?:\S\+[><]" +syn match sisu_comment "^%\{1,2\}.\+" + +"% "Definitions Default Highlighting: +hi def link sisu_normal Normal +hi def link sisu_bold Statement +hi def link sisu_header PreProc +hi def link sisu_header_content Normal +hi def link sisu_sub_header_title Statement +hi def link sisu_sub_header_creator Statement +hi def link sisu_sub_header_date Statement +hi def link sisu_sub_header_publisher Statement +hi def link sisu_sub_header_rights Statement +hi def link sisu_sub_header_classify Statement +hi def link sisu_sub_header_identifier Statement +hi def link sisu_sub_header_original Statement +hi def link sisu_sub_header_links Statement +hi def link sisu_sub_header_notes Statement +hi def link sisu_sub_header_make Statement +hi def link sisu_heading Title +hi def link sisu_structure Operator +hi def link sisu_contain Include +hi def link sisu_mark_endnote Delimiter +hi def link sisu_require NonText +hi def link sisu_link NonText +hi def link sisu_linked String +hi def link sisu_fontface Delimiter +hi def link sisu_strikeout DiffDelete +hi def link sisu_content_alt Special +hi def link sisu_sem_content SpecialKey +hi def link sisu_sem_block Special +hi def link sisu_sem_marker Visual +"hi def link sisu_sem_marker Structure +hi def link sisu_sem_marker_block MatchParen +hi def link sisu_sem_ex_marker FoldColumn +hi def link sisu_sem_ex_marker_block Folded +hi def link sisu_sem_ex_content Comment +"hi def link sisu_sem_ex_content SpecialKey +hi def link sisu_sem_ex_block Comment +hi def link sisu_index SpecialKey +hi def link sisu_index_block Visual +hi def link sisu_content_endnote Special +hi def link sisu_control Delimiter +hi def link sisu_within_index Delimiter +hi def link sisu_within_index_ignore SpecialKey +hi def link sisu_ocn Include +hi def link sisu_number Number +hi def link sisu_identifier Function +hi def link sisu_underline Underlined +hi def link sisu_markpara Include +hi def link sisu_marktail Include +hi def link sisu_mark Identifier +hi def link sisu_break Structure +hi def link sisu_html Type +hi def link sisu_action Identifier +hi def link sisu_comment Comment +hi def link sisu_error_sem_marker Error +hi def link sisu_error_wspace Error +hi def link sisu_error Error +let b:current_syntax = "sisu" +let &cpo = s:cpo_save +unlet s:cpo_save +#+END_SRC + +*** sisu-spine.vim + +#+HEADER: :tangle "../sundry/editor-syntax-etc/vim/syntax/sisu-spine.vim" +#+BEGIN_SRC text +" SiSU Vim syntax file (sisu-spine) +" SiSU Maintainer: Ralph Amissah <ralph.amissah@gmail.com> +" SiSU Markup: SiSU (sisu-5.6.7) +" sisu-spine Markup: sisu-spine +" Last Change: 2017-06-22, 2025-02-21 +" URL: <https://git.sisudoc.org/projects/sisudoc-spine/tree/sundry/editor-syntax-etc/vim/syntax/sisu-spine.vim> +" <https://git.sisudoc.org/projects/sisudoc-spine/tree/sundry/editor-syntax-etc/vim/syntax/sisu.vim> +" <https://sisudoc.org/> +"(originally looked at Ruby Vim by Mirko Nasato) + +if version < 600 + syntax clear +elseif exists("b:current_syntax") + finish +else +endif +let s:cpo_save = &cpo +set cpo&vim + +"% "Errors: +syn match sisu_error contains=sisu_link,sisu_error_wspace "<![^ei]\S\+!>" + +"% "Markers Identifiers: +if !exists("sisu_no_identifiers") + syn match sisu_mark_endnote "\~^" + syn match sisu_break contains=@NoSpell " \\\\\( \|$\)\|<br>\|<br />" + syn match sisu_control contains=@NoSpell "^\(-\\\\-\|=\\\\=\|-\.\.-\|<:p[bn]>\)\s*$" + syn match sisu_control contains=@NoSpell "^<:\(bo\|---\)>\s*$" + syn match sisu_marktail contains=@NoSpell "^--[+~-]#\s*$" + syn match sisu_marktail "[~-]#" + syn match sisu_control "\"" + syn match sisu_underline "\(^\| \)_[a-zA-Z0-9]\+_\([ .,]\|$\)" + syn match sisu_number contains=@NoSpell "[0-9a-f]\{32\}\|[0-9a-f]\{64\}" + syn match sisu_link contains=@NoSpell "\(_\?https\?://\|\.\.\/\)\S\+" + syn match sisu_link " \*\~\S\+" + syn match sisu_require contains=@NoSpell "^<<\s*[a-zA-Z0-9^./_-]\+\.ss[it]$" + syn match sisu_structure "^:A\~$" + +"% "Document Sub Headers: + syn match sisu_sub_header_title "^\s\+:\(subtitle\|short\|edition\|language\|lang_char\|note\):\s" "group=sisu_header_content + syn match sisu_sub_header_creator "^\s\+:\(author\|editor\|contributor\|illustrator\|photographer\|translator\|digitized_by\|prepared_by\|audio\|video\):\s" " &hon &institution + syn match sisu_sub_header_rights "^\s\+:\(copyright\|text\|translation\|illustrations\|photographs\|preparation\|digitization\|audio\|video\|license\|all\):\s" " access_rights license + syn match sisu_sub_header_classify "^\s\+:\(topic_register\|keywords\|subject\|dewey\|loc\):\s" + syn match sisu_sub_header_identifier "^\s\+:\(oclc\|isbn\):\s" + syn match sisu_sub_header_date "^\s\+:\(added_to_site\|available\|created\|issued\|modified\|published\|valid\|translated\|original_publication\):\s" + syn match sisu_sub_header_original "^\s\+:\(publisher\|date\|language\|lang_char\|institution\|nationality\|source\):\s" + syn match sisu_sub_header_make "^\s\+:\(headings\|num_top\|breaks\|language\|italics\|bold\|emphasis\|substitute\|omit\|plaintext_wrap\|texpdf_font_mono\|texpdf_font\|stamp\|promo\|ad\|manpage\|home_button_text\|home_button_image\|cover_image\|footer\):\s" + syn match sisu_sub_header_notes "^\s\+:\(description\|abstract\|comment\|coverage\|relation\|source\|history\|type\|format\|prefix\|prefix_[ab]\|suffix\):\s" + syn match sisu_within_index_ignore "\S\+[:;]\(\s\+\|$\)" + syn match sisu_within_index "[:|;]\|+\d\+" + +"% "semantic markers: (ignore) + syn match sisu_sem_marker ";{\|};[a-z._]*[a-z]" + syn match sisu_sem_marker_block "\([a-z][a-z._]*\|\):{\|}:[a-z._]*[a-z]" + syn match sisu_sem_ex_marker ";\[\|\];[a-z._]*[a-z]" + syn match sisu_sem_ex_marker_block "\([a-z][a-z._]*\|\):\[\|\]:[a-z._]*[a-z]" + syn match sisu_sem_block contains=sisu_error,sisu_error_wspace,sisu_content_alt,sisu_link,sisu_linked,sisu_break,sisu_sem_block,sisu_sem_content,sisu_sem_marker_block,sisu_sem_marker,sisu_sem_ex_marker_block,sisu_sem_ex_marker,sisu_mark_endnote,sisu_content_endnote "\([a-z]*\):{[^}].\{-}}:\1" + syn match sisu_sem_content contains=sisu_error,sisu_error_wspace,sisu_content_alt,sisu_link,sisu_linked,sisu_break,sisu_sem_marker_block,sisu_sem_marker,sisu_sem_ex_marker_block,sisu_sem_ex_marker ";{[^}].\{-}};[a-z]\+" + syn match sisu_sem_ex_block contains=sisu_error,sisu_error_wspace,sisu_content_alt,sisu_link,sisu_linked,sisu_break,sisu_sem_block,sisu_sem_content,sisu_sem_marker_block,sisu_sem_marker,sisu_sem_ex_marker_block,sisu_sem_ex_marker,sisu_mark_endnote,sisu_content_endnote "\([a-z]*\):\[[^}].\{-}\]:\1" + syn match sisu_sem_ex_content contains=sisu_error,sisu_error_wspace,sisu_content_alt,sisu_link,sisu_linked,sisu_break,sisu_sem_marker_block,sisu_sem_marker,sisu_sem_ex_marker_block,sisu_sem_ex_marker ";\[[^}].\{-}\];[a-z]\+" +endif + +"% "URLs Numbers And ASCII Codes: +syn match sisu_number "\<\(0x\x\+\|0b[01]\+\|0\o\+\|0\.\d\+\|0\|[1-9][\.0-9_]*\)\>" +syn match sisu_number "?\(\\M-\\C-\|\\c\|\\C-\|\\M-\)\=\(\\\o\{3}\|\\x\x\{2}\|\\\=\w\)" + +"% "Tuned Error: (is error if not already matched) +syn match sisu_error contains=sisu_error "[\~/\*!_]{\|}[\~/\*!_]" +syn match sisu_error contains=sisu_error "<a href\|</a>]" + +"% "Simple Paired Enclosed Markup: +"url/link +syn region sisu_link contains=sisu_error,sisu_error_wspace matchgroup=sisu_action start="^<<\s*|[a-zA-Z0-9^._-]\+|@|[a-zA-Z0-9^._-]\+|"rs=s+2 end="$" + +"% "Document Header: +" title +syn region sisu_header_content contains=sisu_error,sisu_comment,sisu_break,sisu_link,sisu_sub_header_title matchgroup=sisu_header start="^[@]title:[+-]\?\(\s\|\n\)"rs=e-1 end="\n$" +" creator +syn region sisu_header_content contains=sisu_error,sisu_comment,sisu_break,sisu_link,sisu_sub_header_creator matchgroup=sisu_header start="^[@]creator:[+-]\?\(\s\|\n\)"rs=e-1 end="\n$" +" dates +syn region sisu_header_content contains=sisu_error,sisu_comment,sisu_break,sisu_link,sisu_sub_header_date matchgroup=sisu_header start="^[@]date:[+-]\?\(\s\|\n\)"rs=e-1 end="\n$" +" publisher +syn region sisu_header_content contains=sisu_error,sisu_comment,sisu_break,sisu_link,sisu_sub_header_publisher matchgroup=sisu_header start="^[@]publisher:[+-]\?\(\s\|\n\)"rs=e-1 end="\n$" +" rights +syn region sisu_header_content contains=sisu_error,sisu_comment,sisu_break,sisu_link,sisu_sub_header_rights matchgroup=sisu_header start="^[@]rights:[+-]\?\(\s\|\n\)"rs=e-1 end="\n$" +" classify document +syn region sisu_header_content contains=sisu_error,sisu_comment,sisu_break,sisu_link,sisu_sub_header_classify matchgroup=sisu_header start="^[@]classify:[+-]\?\(\s\|\n\)"rs=e-1 end="\n$" +" identifier document +syn region sisu_header_content contains=sisu_error,sisu_comment,sisu_break,sisu_link,sisu_sub_header_identifier matchgroup=sisu_header start="^[@]identifier:[+-]\?\(\s\|\n\)"rs=e-1 end="\n$" +" original language (depreciated) +syn region sisu_header_content contains=sisu_error,sisu_comment,sisu_break,sisu_link,sisu_sub_header_original matchgroup=sisu_header start="^[@]original:[+-]\?\(\s\|\n\)"rs=e-1 end="\n$" +" notes +syn region sisu_header_content contains=sisu_error,sisu_comment,sisu_break,sisu_link,sisu_sub_header_notes matchgroup=sisu_header start="^[@]notes:[+-]\?\(\s\|\n\)"rs=e-1 end="\n$" +" links of interest +syn region sisu_header_content contains=sisu_error,sisu_comment,sisu_break,sisu_linked,sisu_sub_header_links matchgroup=sisu_header start="^[@]links:[+-]\?\(\s\|\n\)"rs=e-1 end="\n$" +" make, processing instructions +syn region sisu_header_content contains=sisu_error,sisu_comment,sisu_break,sisu_link,sisu_sub_header_make matchgroup=sisu_header start="^[@]make:[+-]\?\(\s\|\n\)"rs=e-1 end="\n$" + +"% "Headings: +syn region sisu_heading contains=sisu_mark_endnote,sisu_content_endnote,sisu_marktail,sisu_strikeout,sisu_number,sisu_bold,sisu_control,sisu_identifier,sisu_ocn,sisu_error,sisu_error_wspace matchgroup=sisu_structure start="^\([1-4]\|:\?[A-D]\)\~\(\S\+\|[^-]\)" end="$" + +"% "Block Group Text: +" table +syn region sisu_content_alt contains=sisu_strikeout,sisu_number,sisu_bold,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_contain start="^table{.\+" end="}table" +" table +syn region sisu_content_alt contains=sisu_strikeout,sisu_number,sisu_bold,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_contain start="^```\s\+table" end="^```\(\s\|$\)" +syn region sisu_content_alt contains=sisu_strikeout,sisu_number,sisu_bold,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_contain start="^'''\s\+table" end="^'''\(\s\|$\)" +syn region sisu_content_alt contains=sisu_strikeout,sisu_number,sisu_bold,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_contain start="^{\(t\|table\)\(\~h\)\?\(\sc[0-9]\+;\)\?[0-9; ]*}" end="\n$" +" block, group, poem, alt +syn region sisu_content_alt contains=sisu_mark_endnote,sisu_content_endnote,sisu_link,sisu_mark,sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_contain start="^\z(block\|group\|poem\|alt\){" end="^}\z1" +syn region sisu_content_alt contains=sisu_mark_endnote,sisu_content_endnote,sisu_link,sisu_mark,sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_contain start="^```\s\+\(block\|group\|poem\|alt\)" end="^```\(\s\|$\)" +syn region sisu_content_alt contains=sisu_mark_endnote,sisu_content_endnote,sisu_link,sisu_mark,sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_contain start="^'''\s\+\(block\|group\|poem\|alt\)" end="^'''\(\s\|$\)" +" box +syn region sisu_content_alt contains=sisu_mark_endnote,sisu_content_endnote,sisu_link,sisu_mark,sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_contain start="^box\(\.[a-z]\+\)\?{" end="^}box" +syn region sisu_content_alt contains=sisu_mark_endnote,sisu_content_endnote,sisu_link,sisu_mark,sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_contain start="^```\s\+\box\(\.[a-z]\+\)\?" end="^```\(\s\|$\)" +syn region sisu_content_alt contains=sisu_mark_endnote,sisu_content_endnote,sisu_link,sisu_mark,sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_contain start="^'''\s\+\box\(\.[a-z]\+\)\?" end="^'''\(\s\|$\)" +" code +syn region sisu_content_alt contains=sisu_error,@NoSpell matchgroup=sisu_contain start="^code\(\.[a-z][0-9a-z_]\+\)\?{" end="^}code" +syn region sisu_content_alt contains=sisu_error,@NoSpell matchgroup=sisu_contain start="^```\s\+code\(\.[a-z][0-9a-z_]\+\)\?" end="^```\(\s\|$\)" +syn region sisu_content_alt contains=sisu_error,@NoSpell matchgroup=sisu_contain start="^'''\s\+code\(\.[a-z][0-9a-z_]\+\)\?" end="^'''\(\s\|$\)" +" quote +syn region sisu_normal contains=sisu_fontface,sisu_bold,sisu_control,sisu_identifier,sisu_content_endnote,sisu_mark_endnote,sisu_link,sisu_sem_block,sisu_sem_content,sisu_sem_marker_block,sisu_sem_marker,sisu_sem_ex_marker_block,sisu_sem_ex_marker,sisu_linked,sisu_error,sisu_error_wspace matchgroup=sisu_contain start="^```\s\+quote" end="^```\(\s\|$\)" +syn region sisu_normal contains=sisu_fontface,sisu_bold,sisu_control,sisu_identifier,sisu_content_endnote,sisu_mark_endnote,sisu_link,sisu_sem_block,sisu_sem_content,sisu_sem_marker_block,sisu_sem_marker,sisu_sem_ex_marker_block,sisu_sem_ex_marker,sisu_linked,sisu_error,sisu_error_wspace matchgroup=sisu_contain start="^'''\s\+quote" end="^'''\(\s\|$\)" + +"% "Endnotes: +" regular endnote or asterisk or plus sign endnote +syn region sisu_content_endnote contains=sisu_link,sisu_strikeout,sisu_underline,sisu_number,sisu_bold,sisu_control,sisu_identifier,sisu_error,sisu_error_wspace,sisu_mark,sisu_break,sisu_sem_block,sisu_sem_content,sisu_sem_marker_block,sisu_sem_marker,sisu_sem_ex_marker_block,sisu_sem_ex_marker matchgroup=sisu_mark_endnote start="\~{[*+]*" end="}\~" skip="\n" +" numbered asterisk or plus sign endnote +syn region sisu_content_endnote contains=sisu_link,sisu_strikeout,sisu_underline,sisu_number,sisu_bold,sisu_control,sisu_identifier,sisu_error,sisu_error_wspace,sisu_mark,sisu_break,sisu_sem_block,sisu_sem_content,sisu_sem_marker matchgroup=sisu_mark_endnote start="\~\[[*+]*" end="\]\~" skip="\n" +" endnote content marker (for binary content marking) +syn region sisu_content_endnote contains=sisu_strikeout,sisu_number,sisu_bold,sisu_control,sisu_link,sisu_identifier,sisu_error,sisu_error_wspace,sisu_mark,sisu_break matchgroup=sisu_mark_endnote start="\^\~" end="\n$" + +"% "Links And Images: +" image with url link (and possibly footnote of url) +syn region sisu_linked contains=sisu_fontface,sisu_strikeout,sisu_number,sisu_bold,sisu_control,sisu_identifier,sisu_sem_block,sisu_sem_content,sisu_sem_marker_block,sisu_sem_marker,sisu_sem_ex_marker_block,sisu_sem_ex_marker,sisu_sem_block,sisu_error matchgroup=sisu_link start="{\(\~^\s\)\?" end="}\(https\?:/\/\|:\|\.\.\/\|#\)\S\+" oneline +" sisu outputs, short notation +syn region sisu_linked contains=sisu_fontface,sisu_strikeout,sisu_number,sisu_bold,sisu_control,sisu_identifier,sisu_sem_block,sisu_sem_content,sisu_sem_marker_block,sisu_sem_marker,sisu_sem_ex_marker_block,sisu_sem_ex_marker,sisu_sem_block,sisu_error matchgroup=sisu_link start="{\(\~^\s\)\?" end="\[[1-5][sS]*\]}\S\+\.ss[tm]" oneline +" image +syn region sisu_linked contains=sisu_fontface,sisu_strikeout,sisu_number,sisu_bold,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_link start="{" end="}image" oneline + +"% "Some Line Operations: +" bold line +syn region sisu_bold contains=sisu_strikeout,sisu_identifier,sisu_content_endnote,sisu_mark_endnote,sisu_error,sisu_error_wspace matchgroup=sisu_markpara start="^!_ " end=" \\\\\|$" +" indent and bullet paragraph +syn region sisu_normal contains=sisu_fontface,sisu_bold,sisu_control,sisu_identifier,sisu_content_endnote,sisu_mark_endnote,sisu_link,sisu_sem_block,sisu_sem_content,sisu_sem_marker_block,sisu_sem_marker,sisu_sem_ex_marker_block,sisu_sem_ex_marker,sisu_linked,sisu_error,sisu_error_wspace matchgroup=sisu_markpara start="^_\([1-9*]\|[1-9]\*\) " end="$" +" indent and bullet (bold start) paragraph +syn region sisu_bold contains=sisu_fontface,sisu_bold,sisu_control,sisu_identifier,sisu_content_endnote,sisu_mark_endnote,sisu_link,sisu_sem_block,sisu_sem_content,sisu_sem_marker_block,sisu_sem_marker,sisu_sem_ex_marker_block,sisu_sem_ex_marker,sisu_linked,sisu_error,sisu_error_wspace matchgroup=sisu_markpara start="^_\([1-9*]\|[1-9]\*\)!_\? " end=" \\\\\|$" +" hanging indent paragraph [proposed] +syn region sisu_normal contains=sisu_fontface,sisu_bold,sisu_control,sisu_identifier,sisu_content_endnote,sisu_mark_endnote,sisu_link,sisu_sem_block,sisu_sem_content,sisu_sem_marker_block,sisu_sem_marker,sisu_sem_ex_marker_block,sisu_sem_ex_marker,sisu_linked,sisu_error,sisu_error_wspace matchgroup=sisu_markpara start="^_[0-9]\?_[0-9] " end="$" +" hanging indent (bold start/ definition) paragraph [proposed] +syn region sisu_bold contains=sisu_fontface,sisu_bold,sisu_control,sisu_identifier,sisu_content_endnote,sisu_mark_endnote,sisu_link,sisu_sem_block,sisu_sem_content,sisu_sem_marker_block,sisu_sem_marker,sisu_sem_ex_marker_block,sisu_sem_ex_marker,sisu_linked,sisu_error,sisu_error_wspace matchgroup=sisu_markpara start="^_[0-9]\?_[0-9]!_\? " end=" \\\\\|$" +" list numbering +syn region sisu_normal contains=sisu_strikeout,sisu_identifier,sisu_content_endnote,sisu_mark_endnote,sisu_link,sisu_linked,sisu_error,sisu_error_wspace matchgroup=sisu_markpara start="^\(#[ 1]\|_# \)" end="$" + +"% "Font Face Curly Brackets: +"syn region sisu_identifier contains=sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_sem start="\S\+:{" end="}:[^<>,.!?:; ]\+" oneline +" book index: +syn region sisu_index contains=sisu_within_index_ignore,sisu_within_index matchgroup=sisu_index_block start="^={" end="}" +" emphasis: +syn region sisu_bold contains=sisu_strikeout,sisu_number,sisu_bold,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_fontface start="\*{" end="}\*" +" bold: +syn region sisu_bold contains=sisu_strikeout,sisu_number,sisu_bold,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_fontface start="!{" end="}!" +" underscore: +syn region sisu_underline contains=sisu_strikeout,sisu_number,sisu_bold,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_fontface start="_{" end="}_" +" italics: +syn region sisu_identifier contains=sisu_strikeout,sisu_number,sisu_bold,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_fontface start="/{" end="}/" +" added: +syn region sisu_underline contains=sisu_strikeout,sisu_number,sisu_bold,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_fontface start="+{" end="}+" +" superscript: +syn region sisu_identifier contains=sisu_strikeout,sisu_number,sisu_bold,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_fontface start="\^{" end="}\^" +" subscript: +syn region sisu_identifier contains=sisu_strikeout,sisu_number,sisu_bold,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_fontface start=",{" end="}," +" monospace: +syn region sisu_identifier contains=sisu_strikeout,sisu_number,sisu_bold,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_fontface start="#{" end="}#" +" strikethrough: +syn region sisu_strikeout contains=sisu_error matchgroup=sisu_fontface start="-{" end="}-" + +"% "Single Words Bold Italicise Etc: (depreciated) +syn region sisu_bold contains=sisu_error matchgroup=sisu_bold start="\([ (]\|^\)\*[^\|{\n\~\\]"hs=e-1 end="\*"he=e-0 skip="[a-zA-Z0-9']" oneline +syn region sisu_identifier contains=sisu_error matchgroup=sisu_content_alt start="\([ ]\|^\)/[^{ \|\n\\]"hs=e-1 end="/\[ \.\]" skip="[a-zA-Z0-9']" oneline +"misc +syn region sisu_identifier contains=sisu_error matchgroup=sisu_fontface start="\^[^ {\|\n\\]"rs=s+1 end="\^[ ,.;:'})\\\n]" skip="[a-zA-Z0-9']" oneline + +"% "Expensive Mode: +if !exists("sisu_no_expensive") +else " not Expensive + syn region sisu_content_alt matchgroup=sisu_control start="^\s*def\s" matchgroup=NONE end="[?!]\|\>" skip="\.\|\(::\)" oneline +endif " Expensive? + +"% "Headers And Headings: (Document Instructions) +syn match sisu_control contains=sisu_error,sisu_error_wspace "4\~! \S\+" +syn region sisu_markpara contains=sisu_error,sisu_error_wspace start="^=begin" end="^=end.*$" + +"% "Errors: +syn match sisu_error_wspace contains=sisu_error_wspace "^\s\+[^:]" +syn match sisu_error_wspace contains=sisu_error_wspace "\s\s\+" +syn match sisu_error_wspace contains=sisu_error_wspace "\s\+$" +syn match sisu_error contains=sisu_error_wspace "\t\+" +syn match sisu_error contains=sisu_error,sisu_error_wspace "\([^ (][_\\]\||[^ (}]\)https\?:\S\+" +syn match sisu_error contains=sisu_error "_\?https\?:\S\+[}><]" +syn match sisu_error contains=sisu_error "\([!*/_\+,^]\){\([^(\}\1)]\)\{-}\n$" +syn match sisu_error contains=sisu_error "^[\~]{[^{]\{-}\n$" +syn match sisu_error contains=sisu_error "\s\+.{{" +syn match sisu_error contains=sisu_error "^\~\s*$" +syn match sisu_error contains=sisu_error "^0\~.*" +syn match sisu_error contains=sisu_error "^[1-9]\~\s*$" +syn match sisu_error contains=sisu_error "^[1-9]\~\S\+\s*$" +syn match sisu_error contains=sisu_error "[^{]\~\^[^ \)]" +syn match sisu_error contains=sisu_error "\~\^\s\+\.\s*" +syn match sisu_error contains=sisu_error "{\~^\S\+" +syn match sisu_error contains=sisu_error "[_/\*!^]{[ .,:;?><]*}[_/\*!^]" +syn match sisu_error contains=sisu_error "[^ (\"'(\[][_/\*!]{\|}[_/\*!][a-zA-Z0-9)\]\"']" +syn match sisu_error contains=sisu_error "<dir>" +"errors for filetype sisu, though not error in 'metaverse': +syn match sisu_error contains=sisu_error,sisu_match,sisu_strikeout,sisu_contain,sisu_content_alt,sisu_mark,sisu_break,sisu_number "<[a-zA-Z\/]\+>" +syn match sisu_error "/\?<\([biu]\)>[^(</\1>)]\{-}\n$" + +"% "Error Exceptions: +syn match sisu_control "\n$" "contains=ALL +"syn match sisu_control " //" +syn match sisu_error "%{" +syn match sisu_error "<br>_\?https\?:\S\+\|_\?https\?:\S\+<br>" +syn match sisu_error "[><]_\?https\?:\S\+\|_\?https\?:\S\+[><]" +syn match sisu_comment "^%\{1,2\}.\+" + +"% "Definitions Default Highlighting: +hi def link sisu_normal Normal +hi def link sisu_bold Statement +hi def link sisu_header PreProc +hi def link sisu_header_content Normal +hi def link sisu_sub_header_title Statement +hi def link sisu_sub_header_creator Statement +hi def link sisu_sub_header_date Statement +hi def link sisu_sub_header_publisher Statement +hi def link sisu_sub_header_rights Statement +hi def link sisu_sub_header_classify Statement +hi def link sisu_sub_header_identifier Statement +hi def link sisu_sub_header_original Statement +hi def link sisu_sub_header_links Statement +hi def link sisu_sub_header_notes Statement +hi def link sisu_sub_header_make Statement +hi def link sisu_heading Title +hi def link sisu_structure Operator +hi def link sisu_contain Include +hi def link sisu_mark_endnote Delimiter +hi def link sisu_require NonText +hi def link sisu_link NonText +hi def link sisu_linked String +hi def link sisu_fontface Delimiter +hi def link sisu_strikeout DiffDelete +hi def link sisu_content_alt Special +hi def link sisu_sem_content SpecialKey +hi def link sisu_sem_block Special +hi def link sisu_sem_marker Visual +"hi def link sisu_sem_marker Structure +hi def link sisu_sem_marker_block MatchParen +hi def link sisu_sem_ex_marker FoldColumn +hi def link sisu_sem_ex_marker_block Folded +hi def link sisu_sem_ex_content Comment +"hi def link sisu_sem_ex_content SpecialKey +hi def link sisu_sem_ex_block Comment +hi def link sisu_index SpecialKey +hi def link sisu_index_block Visual +hi def link sisu_content_endnote Special +hi def link sisu_control Delimiter +hi def link sisu_within_index Delimiter +hi def link sisu_within_index_ignore SpecialKey +hi def link sisu_ocn Include +hi def link sisu_number Number +hi def link sisu_identifier Function +hi def link sisu_underline Underlined +hi def link sisu_markpara Include +hi def link sisu_marktail Include +hi def link sisu_mark Identifier +hi def link sisu_break Structure +hi def link sisu_html Type +hi def link sisu_action Identifier +hi def link sisu_comment Comment +hi def link sisu_error_sem_marker Error +hi def link sisu_error_wspace Error +hi def link sisu_error Error +let b:current_syntax = "sisu" +let &cpo = s:cpo_save +unlet s:cpo_save +#+END_SRC + ** color files *** def.vim -#+HEADER: :tangle "../sundry/misc/editor-syntax-etc/vim/colors/def.vim" +#+HEADER: :tangle "../sundry/editor-syntax-etc/vim/colors/def.vim" #+BEGIN_SRC text -" Vim color file -" Name: def -" Maintainer: Ralph Amissah <ralph@amissah.com> -" Last Change: 2013-02-14 -" URL: <https://git.sisudoc.org/projects/?p=software/spine.git;a=blob;f=data/sisu/conf/editor-syntax-etc/vim/colors/def.vim;hb=HEAD> -" Note: primarily 16 color cterm improved by tweaking of .Xdefaults +"%% Vim color file +" Name: def +" Maintainer: Ralph Amissah <ralph@amissah.com> +" Last Change: 2013-02-14, 2016-07-28, 2022-09-05 +" URL: <https://git.sisudoc.org/projects/sisudoc-spine/tree/sundry/editor-syntax-etc/vim/colors/def.vim> +" <https://sisudoc.org/> +" Note: primarily 16 color cterm improved by tweaking of .Xdefaults " (with occasional other colors selected from 256 color palate) " .Xdefaults tweaking to make identical to def (256) provided, " along with an alternative possibility using colors beyond " 256 color palate -:hi clear -if exists("syntax_on") - syntax reset -endif -:set t_Co=256 -:set background=dark -:let colors_name = "def" -" ------- -" terminal def -" ------- -:hi Normal ctermbg=0 ctermfg=7 -":hi Cursor ctermbg=5 ctermfg=0 -:hi lCursor cterm=reverse -:hi StatusLine cterm=bold,reverse -:hi StatusLineNC cterm=reverse -:hi Search cterm=none ctermbg=57 ctermfg=0 -:hi IncSearch cterm=none ctermbg=154 ctermfg=0 -:hi SpecialKey ctermfg=4 -:hi Visual cterm=reverse -:hi VisualNOS cterm=bold,underline -:hi MoreMsg ctermfg=2 -:hi ModeMsg cterm=bold -:hi Question ctermfg=2 -:hi Title cterm=bold ctermfg=3 -:hi NonText cterm=bold ctermfg=4 -:hi LineNr cterm=bold ctermbg=0 ctermfg=0* -:hi CursorLineNr cterm=bold ctermbg=166 ctermfg=0 -:hi Directory ctermfg=4 -:hi WildMenu ctermbg=3 ctermfg=0 -:hi VertSplit cterm=reverse -:hi Folded cterm=none ctermbg=0 ctermfg=8 -:hi FoldColumn ctermbg=7 ctermfg=4 -:hi DiffAdd cterm=none ctermbg=2 ctermfg=0 -:hi DiffChange cterm=none ctermbg=7 ctermfg=0 -:hi DiffDelete cterm=none ctermbg=7 ctermfg=0 -:hi DiffText cterm=none ctermbg=6 ctermfg=0 -:hi String cterm=none ctermfg=3 -:hi Comment cterm=none ctermbg=0 ctermfg=4 -:hi Constant ctermfg=1 -:hi Special ctermfg=6 -:hi Identifier ctermfg=6 -:hi Statement ctermfg=2 -:hi Operator ctermfg=2 -:hi PreProc ctermfg=1 -:hi Type cterm=bold ctermfg=3 -:hi Delimiter cterm=none ctermfg=2 -:hi Ignore cterm=bold ctermfg=7 -:hi Todo ctermbg=3 ctermfg=0 -:hi Underlined cterm=underline -:hi Include ctermfg=1 -:hi Define ctermfg=3 -:hi Function ctermfg=6 -:hi Structure ctermfg=2 -:hi MatchParen cterm=bold ctermbg=4 ctermfg=7 -:hi CursorLine cterm=bold -:hi CursorColumn ctermbg=17 -:hi ColorColumn ctermbg=17 -:hi SpellBad cterm=underline ctermbg=0 ctermfg=5 -:hi SpellCap cterm=underline ctermbg=0 ctermfg=5 -:hi SpellLocal cterm=underline ctermbg=0 ctermfg=5 -:hi SpellRare cterm=underline ctermbg=0 ctermfg=5 -:hi TrailingWhitespace ctermbg=1 -:hi ExtraWhitespace ctermbg=1 -:hi WarningMsg ctermfg=1 -:hi ErrorMsg cterm=bold ctermbg=1 ctermfg=7 -:hi Error cterm=bold ctermbg=1 ctermfg=7 -" ------- -" gui def -" ------- -:hi Normal guibg=#000000 guifg=#D3D3D3 -:hi Cursor guibg=#CC9966 guifg=#000000 -:hi lCursor gui=reverse -:hi StatusLine gui=bold,reverse -:hi StatusLineNC gui=reverse -:hi Search gui=none guibg=#5F00FF guifg=#000000 -:hi IncSearch gui=none guibg=#AFFF00 guifg=#000000 -:hi SpecialKey guifg=#5971AD -:hi Visual gui=reverse -:hi VisualNOS gui=bold,underline -:hi MoreMsg guifg=#4E9A06 -:hi ModeMsg gui=bold -:hi Question guifg=#4E9A06 -:hi Title gui=bold guifg=#C4A000 -:hi NonText gui=bold guifg=#5971AD -:hi LineNr gui=bold guibg=#000000 guifg=#808080 -:hi CursorLineNr gui=bold guibg=#D75F00 guifg=#000000 -:hi Directory guifg=#5971AD -:hi WildMenu guibg=#C4A000 guifg=#000000 -:hi VertSplit gui=reverse -:hi Folded gui=none guibg=#000000 guifg=#808080 -:hi FoldColumn guibg=#D3D3D3 guifg=#5971AD -:hi DiffAdd gui=none guibg=#4E9A06 guifg=#000000 -:hi DiffChange gui=none guibg=#D3D3D3 guifg=#000000 -:hi DiffDelete gui=none guibg=#D3D3D3 guifg=#000000 -:hi DiffText gui=none guibg=#06989A guifg=#000000 -:hi String gui=none guifg=#C4A000 -:hi Comment gui=none guibg=#000000 guifg=#5971AD -:hi Constant guifg=#CC0000 -:hi Special guifg=#06989A -:hi Identifier guifg=#06989A -:hi Statement guifg=#4E9A06 -:hi Operator guifg=#4E9A06 -:hi PreProc guifg=#CC0000 -:hi Type gui=bold guifg=#C4A000 -:hi Delimiter gui=none guifg=#4E9A06 -:hi Ignore gui=bold guifg=#D3D3D3 -:hi Todo guibg=#C4A000 guifg=#000000 -:hi Underlined gui=underline -:hi Include guifg=#CC0000 -:hi Define guifg=#C4A000 -:hi Function guifg=#06989A -:hi Structure guifg=#4E9A06 -:hi MatchParen gui=bold guibg=#5971AD guifg=#D3D3D3 -:hi CursorLine gui=bold -:hi CursorColumn guibg=#00005F -:hi ColorColumn guibg=#00005F -:hi SpellBad gui=underline guibg=#000000 guifg=#75507B -:hi SpellCap gui=underline guibg=#000000 guifg=#75507B -:hi SpellLocal gui=underline guibg=#000000 guifg=#75507B -:hi SpellRare gui=underline guibg=#000000 guifg=#75507B -:hi TrailingWhitespace guibg=#080000 -:hi ExtraWhitespace guibg=#CC0000 -:hi WarningMsg guifg=#CC0000 -:hi ErrorMsg gui=bold guibg=#CC0000 guifg=#D3D3D3 -:hi Error gui=bold guibg=#CC0000 guifg=#D3D3D3 -" ------- -"256 color .Xdefaults vim: cterm giu -"<https://vim.wikia.com/wiki/Xterm256_color_names_for_console_Vim> -"<https://guns.github.com/xterm-color-table.vim/images/xterm-color-table-with-visible-rgb.png> -" ------- -" 256 color .Xdefaults vim: cterm giu def -" ------- -" 16 color standard altered 256 altered beyond 256 -" black/dark grey -" 0 [ 0:#000000] #000000 -" 8 [ 8:#808080] [59:#5F5F5F] #555555 -" red -" 1 [ 1:#800000] 160:#DF0000 #CC0000 -" 9 [ 9:#FF0000] #EF2929 -" green -" 2 [ 2:#008000] 112:#87DF00 #4E9A06 -" 10 [10:#00FF00] 154:#AFFF00 #8AE234 -" yellow/orange -" 3 [ 3:#808000] 178:#DFAF00 #C4A000 -" 11 [11:#FFFF00] 184:#DFDF00 #FC9E4F -" blue -" 4 [ 4:#000080] 24:#005F87 #5971AD -" 12 [12:#0000FF] 73:#5FAFAF #729FCF -" magenta -" 5 [ 5:#800080] 90:#870087 #75507B -" 13 [13:#FF00FF] 126:#AF0087 #AD7FA8 -" cyan -" 6 [ 6:#008080] 37:#00AFAF #06989A -" 14 [14:#00FFFF] 87:#5FFFFF #34E2E2 -" white -" 7 [ 7:#C0C0C0] #D3D3D3 -" 15 [15:#FFFFFF] #EEEEEE -" -------- -" .Xdefaults (rxvt urxvt setting beyond 256 colors, vim colorscheme "def" gui settings) -" (vim colorscheme "def" cterm matches "def" gui if .Xdefaults set thus) -" -------- -" ! black -" Rxvt.color0 : #000000 -" Rxvt.color8 : #555555 -" ! red -" Rxvt.color1 : #CC0000 -" Rxvt.color9 : #EF2929 -" ! green -" Rxvt.color2 : #4E9A06 -" Rxvt.color10 : #8AE234 -" ! yellow -" Rxvt.color3 : #C4A000 -" Rxvt.color11 : #FCE94F -" ! blue -" Rxvt.color4 : #5971AD -" Rxvt.color12 : #729FCF -" ! magenta -" Rxvt.color5 : #75507B -" Rxvt.color13 : #AD7FA8 -" ! cyan -" Rxvt.color6 : #06989A -" Rxvt.color14 : #34E2E2 -" ! white -" Rxvt.color7 : #D3D7CF -" Rxvt.color15 : #EEEEEE -" -------- -" .Xdefaults 256 (rxvt urxvt setting, vim colorscheme "def256" cterm & gui settings) -" (vim colorscheme "def" cterm matches "def256" if .Xdefaults set thus) -" -------- -" ! black -" Rxvt.color0 : #000000 -" Rxvt.color8 : #808080 -" ! red -" Rxvt.color1 : #DF0000 -" Rxvt.color9 : #FF0000 -" ! green -" Rxvt.color2 : #87DF00 -" Rxvt.color10 : #AFFF00 -" ! yellow -" Rxvt.color3 : #DFAF00 -" Rxvt.color11 : #FFFF00 -" ! blue -" Rxvt.color4 : #5F87DF -" Rxvt.color12 : #87DFFF -" ! magenta -" Rxvt.color5 : #8700DF -" Rxvt.color13 : #87DFFF -" ! cyan -" Rxvt.color6 : #00DFDF -" Rxvt.color14 : #5F5FDF -" ! white -" Rxvt.color7 : #C0C0C0 -" Rxvt.color15 : #FFFFFF +: hi clear +: if exists("syntax_on") | syntax reset | endif +: let colors_name = "def" +: set t_Co=256 +: set background=dark +" ------- +" terminal def +" ------- +: hi Normal ctermfg=7 ctermbg=236 +: hi Cursor ctermfg=0 ctermbg=166 +: hi lCursor cterm=reverse +: hi CursorLine cterm=bold,underline "ctermul=166 "bg:236,59 +: hi CursorLineNr cterm=bold ctermfg=0 ctermbg=166 +: hi LineNr cterm=bold ctermfg=59 ctermbg=16 +: hi StatusLine cterm=bold,reverse +: hi StatusLineNC cterm=reverse +: hi StatusLineTerm cterm=bold ctermfg=15 ctermbg=2 +: hi StatusLineTermNC ctermfg=15 ctermbg=2 +: hi ColorColumn cterm=none ctermfg=231 ctermbg=236 "bg:233,59,242,67 +" hi ColorColumn cterm=inverse +" hi ColorColumn ctermfg=16 ctermbg=235 +" hi ColorColumn ctermfg=5 ctermbg=90 +: hi Folded cterm=none ctermfg=67 ctermbg=16 "fg:248,59,242,3,2,67 +" hi Folded cterm=none ctermfg=59 ctermbg=16 "fg:248,59,242,3 +: hi FoldColumn ctermfg=4 ctermbg=69 +: hi Search cterm=none ctermfg=0 ctermbg=57 "bg:57,11 +: hi IncSearch cterm=none ctermfg=0 ctermbg=154 +: hi SpecialKey ctermfg=4 +: hi Visual cterm=reverse +: hi VisualNOS cterm=bold,underline +: hi MoreMsg ctermfg=2 +: hi ModeMsg cterm=bold +: hi Question ctermfg=2 +: hi Title cterm=bold ctermfg=3 +: hi NonText cterm=bold ctermfg=4 +: hi Directory ctermfg=4 +: hi WildMenu ctermfg=0 ctermbg=3 +: hi VertSplit cterm=reverse +: hi DiffAdd cterm=none ctermfg=0 ctermbg=2 +: hi DiffChange cterm=none ctermfg=0 ctermbg=7 +: hi DiffDelete cterm=none ctermfg=0 ctermbg=7 +: hi DiffText cterm=none ctermfg=0 ctermbg=6 +: hi String cterm=none ctermfg=3 +: hi Comment cterm=none ctermfg=4 +: hi Constant ctermfg=1 +: hi Special ctermfg=6 "fg:67,140,5 +: hi Identifier cterm=none ctermfg=2 "bg:172,4,2 (default usually bold; choose orange, blue or lime green) +: hi Statement ctermfg=4 +: hi Operator ctermfg=2 +: hi PreProc ctermfg=1 "fg:2,5,140 +: hi Type ctermfg=3 "fg:67,2 +: hi Include ctermfg=1 "fg:124,140,5 +: hi Delimiter cterm=none ctermfg=2 +: hi Ignore cterm=bold ctermfg=7 +: hi Todo ctermfg=0 ctermbg=3 +: hi Underlined cterm=underline "ctermul=166 "fg:4,6 +: hi Define ctermfg=3 +: hi Function ctermfg=6 +: hi Structure ctermfg=2 +: hi MatchParen cterm=bold ctermfg=7 ctermbg=4 +: hi SpellBad cterm=underline ctermfg=5 ctermbg=0 +: hi SpellCap cterm=underline ctermfg=5 ctermbg=0 +: hi SpellLocal cterm=underline ctermfg=5 ctermbg=0 +: hi SpellRare cterm=underline ctermfg=5 ctermbg=0 +: hi TrailingWhitespace ctermbg=1 +: hi ExtraWhitespace ctermbg=1 +: hi WarningMsg ctermfg=1 +: hi ErrorMsg cterm=bold ctermfg=7 ctermbg=1 +: hi Error cterm=bold ctermfg=7 ctermbg=1 +: if &diff +: highlight! link DiffText MatchParen +: endif +" ------- +" gui def +" ------- +: hi Normal guifg=#D3D3D3 guibg=#000000 +: hi Cursor guifg=#000000 guibg=#CC9966 +: hi lCursor gui=reverse +: hi CursorLine gui=bold +: hi CursorLineNr gui=bold guifg=#000000 guibg=#D75F00 +: hi CursorColumn guibg=#00005F +: hi LineNr gui=bold guifg=#808080 guibg=#000000 +: hi StatusLine gui=bold,reverse +: hi StatusLineNC gui=reverse +: hi Search gui=none guifg=#000000 guibg=#5F00FF +: hi IncSearch gui=none guifg=#000000 guibg=#AFFF00 +: hi SpecialKey guifg=#5971AD +: hi Visual gui=reverse +: hi VisualNOS gui=bold,underline +: hi MoreMsg guifg=#4E9A06 +: hi ModeMsg gui=bold +: hi Question guifg=#4E9A06 +: hi Title gui=bold guifg=#C4A000 +: hi NonText gui=bold guifg=#5971AD +: hi Directory guifg=#5971AD +: hi WildMenu guifg=#000000 guibg=#C4A000 +: hi VertSplit gui=reverse +: hi Folded gui=none guifg=#808080 guibg=#000000 +: hi FoldColumn guifg=#5971AD guibg=#D3D3D3 +: hi DiffAdd gui=none guifg=#000000 guibg=#4E9A06 +: hi DiffChange gui=none guifg=#000000 guibg=#D3D3D3 +: hi DiffDelete gui=none guifg=#000000 guibg=#D3D3D3 +: hi DiffText gui=none guifg=#000000 guibg=#06989A +: hi String gui=none guifg=#C4A000 +: hi Comment gui=none guifg=#5971AD guibg=#000000 +: hi Constant guifg=#CC0000 +: hi Special guifg=#06989A +: hi Identifier guifg=#06989A +: hi Statement guifg=#4E9A06 +: hi Operator guifg=#4E9A06 +: hi PreProc guifg=#CC0000 +: hi Type gui=bold guifg=#C4A000 +: hi Delimiter gui=none guifg=#4E9A06 +: hi Ignore gui=bold guifg=#D3D3D3 +: hi Todo guifg=#000000 guibg=#C4A000 +: hi Underlined gui=underline +: hi Include guifg=#CC0000 +: hi Define guifg=#C4A000 +: hi Function guifg=#06989A +: hi Structure guifg=#4E9A06 +: hi MatchParen gui=bold guifg=#D3D3D3 guibg=#5971AD +: hi ColorColumn guibg=#00005F +: hi SpellBad gui=underline guifg=#75507B guibg=#000000 +: hi SpellCap gui=underline guifg=#75507B guibg=#000000 +: hi SpellLocal gui=underline guifg=#75507B guibg=#000000 +: hi SpellRare gui=underline guifg=#75507B guibg=#000000 +: hi TrailingWhitespace guibg=#080000 +: hi ExtraWhitespace guibg=#CC0000 +: hi WarningMsg guifg=#CC0000 +: hi ErrorMsg gui=bold guifg=#D3D3D3 guibg=#CC0000 +: hi Error gui=bold guifg=#D3D3D3 guibg=#CC0000 #+END_SRC *** slate.vim -#+HEADER: :tangle "../sundry/misc/editor-syntax-etc/vim/colors/slate.vim" +#+HEADER: :tangle "../sundry/editor-syntax-etc/vim/colors/slate.vim" #+BEGIN_SRC text "%% SiSU Vim color file -" Name: Slate -" Maintainer: Ralph Amissah <ralph@amissah.com> -" Last Change: 2013-02-09 -" URL: <https://git.sisudoc.org/projects/?p=software/spine.git;a=blob;f=data/sisu/conf/editor-syntax-etc/vim/colors/slate.vim;hb=HEAD> -" Notes: cterm now uses frugal-sisu 8 colors for term -" (for gui originally looked at desert Hans Fugal <hans@fugal.net> -" <https://hans.fugal.net/vim/colors/desert.vim> (April/May 2003)) -:set background=dark -:hi clear -if exists("syntax_on") - syntax reset -endif -:let colors_name = "slate" -" 0 = black, 1 = red, 2 = green, 3 = yellow/orange, 4 = blue, 5 = magenta, 6 = cyan, 7 = white -:hi Normal ctermbg=0 ctermfg=7 guibg=grey15 guifg=white -:hi Cursor term=reverse cterm=reverse guibg=khaki guifg=slategrey -:hi lCursor term=reverse cterm=reverse -:hi StatusLine term=reverse cterm=bold,reverse gui=none guibg=#c2bfa5 guifg=black -:hi StatusLineNC term=reverse cterm=reverse gui=none guibg=#c2bfa5 guifg=grey40 -:hi Search term=reverse cterm=none ctermbg=2 ctermfg=0 guibg=peru guifg=wheat -:hi IncSearch term=reverse cterm=bold ctermbg=2 ctermfg=7 guibg=black guifg=green -:hi SpecialKey term=bold ctermfg=4 guifg=yellowgreen -:hi Visual term=reverse cterm=reverse gui=none guibg=olivedrab guifg=khaki -:hi VisualNOS term=bold,underline cterm=bold,underline -:hi MoreMsg term=bold ctermfg=2 guifg=SeaGreen -:hi ModeMsg term=bold cterm=bold guifg=goldenrod -:hi Question term=standout ctermfg=2 guifg=springgreen -:hi Title term=bold cterm=bold ctermfg=3 gui=bold guifg=gold -:hi NonText term=bold cterm=bold ctermfg=4 guibg=grey15 guifg=RoyalBlue -:hi LineNr term=underline cterm=bold ctermbg=0 ctermfg=0* guifg=grey50 -:hi Directory term=bold ctermfg=4 -:hi WildMenu term=standout ctermbg=3 ctermfg=0 guibg=darkyellow guifg=black -:hi VertSplit term=reverse cterm=reverse gui=none guibg=#c2bfa5 guifg=grey40 -:hi Folded term=standout cterm=none ctermbg=0 ctermfg=7 guibg=black guifg=grey40 -:hi FoldColumn term=standout ctermbg=7 ctermfg=4 guibg=black guifg=grey20 -:hi DiffChange cterm=none ctermbg=7 ctermfg=0 guibg=darkgrey guifg=white -:hi DiffText cterm=none ctermbg=6 ctermfg=0 guibg=darkcyan guifg=white -:hi DiffAdd cterm=none ctermbg=2 ctermfg=0 guibg=darkgreen guifg=white -:hi DiffDelete cterm=none ctermbg=7 ctermfg=0 guibg=darkgrey guifg=black -:hi String cterm=none ctermfg=3 guifg=SkyBlue -:hi Comment term=bold cterm=none ctermbg=0 ctermfg=7 guifg=grey40 -:hi Constant term=underline ctermfg=1 guifg=#ffa0a0 -:hi Special term=bold ctermfg=6 guifg=darkkhaki -:hi Identifier term=underline ctermfg=6 guifg=salmon -:hi Statement term=bold ctermfg=6 guifg=CornflowerBlue -:hi Operator term=bold ctermfg=1 guifg=red -:hi PreProc term=underline ctermbg=7 ctermfg=1 guibg=white guifg=red -:hi Type term=underline ctermfg=2 guifg=CornflowerBlue -:hi Delimiter term=none cterm=none ctermfg=1 -:hi Ignore cterm=bold ctermfg=7 guifg=grey40 -:hi Todo term=standout ctermbg=3 ctermfg=0 guibg=yellow2 guifg=orangered -:hi Underlined term=underline cterm=underline -:hi Include ctermfg=1 guifg=red -:hi Define ctermfg=3 gui=bold guifg=gold -:hi Function ctermfg=6 guifg=navajowhite -:hi Structure ctermfg=2 guifg=green -:hi MatchParen cterm=bold ctermbg=4 ctermfg=7 -:hi CursorLine cterm=bold,underline guibg=black -:hi CursorColumn cterm=bold guibg=black -:hi SpellBad term=underline,standout cterm=none ctermbg=7 ctermfg=0 guibg=darkmagenta guifg=white -:hi SpellCap term=underline,standout cterm=none ctermbg=7 ctermfg=0 -:hi SpellLocal term=underline,standout cterm=none ctermbg=7 ctermfg=0 guibg=darkmagenta guifg=white -:hi SpellRare term=underline,standout cterm=none ctermbg=7 ctermfg=0 -:hi WarningMsg term=standout ctermfg=1 guibg=darkmagenta guifg=salmon -:hi ErrorMsg term=standout cterm=bold ctermbg=1 ctermfg=7 guibg=darkmagenta guifg=white -:hi Error term=reverse cterm=bold ctermbg=1 ctermfg=7 guibg=darkmagenta guifg=white -:hi Black ctermbg=grey ctermfg=black guibg=grey guifg=black -:hi Red ctermbg=black ctermfg=red guibg=black guifg=red -:hi Magenta ctermbg=black ctermfg=magenta guibg=black guifg=magenta -:hi Blue ctermbg=black ctermfg=blue guibg=black guifg=blue -:hi Cyan ctermbg=black ctermfg=cyan guibg=black guifg=cyan -:hi Green ctermbg=black ctermfg=green guibg=black guifg=green -:hi Yellow ctermbg=black ctermfg=yellow guibg=black guifg=yellow -:hi White ctermbg=black ctermfg=white guibg=black guifg=white +" Name: Slate +" Maintainer: Ralph Amissah <ralph@amissah.com> +" Last Change: 2013-02-09, 2022-09-05 +" URL: <https://git.sisudoc.org/projects/sisudoc-spine/tree/sundry/editor-syntax-etc/vim/colors/slate.vim> +" <https://sisudoc.org/> +" <https://sisudoc.org/> +" Notes: cterm now uses frugal-sisu 8 colors for term +" (for gui originally looked at desert Hans Fugal <hans@fugal.net> +" <http://hans.fugal.net/vim/colors/desert.vim> (April/May 2003)) +: hi clear +: if exists("syntax_on") +: syntax reset +: endif +: let colors_name = "slate" +: set background=dark +" ------- +" 0 = black, 1 = red, 2 = green, 3 = yellow/orange, 4 = blue, 5 = magenta, 6 = cyan, 7 = white +" ------- +: hi Normal ctermbg=0 ctermfg=7 guibg=grey15 guifg=white +: hi Cursor term=reverse cterm=reverse guibg=khaki guifg=slategrey +: hi lCursor term=reverse cterm=reverse +: hi StatusLine term=reverse cterm=bold,reverse gui=none guibg=#c2bfa5 guifg=black +: hi StatusLineNC term=reverse cterm=reverse gui=none guibg=#c2bfa5 guifg=grey40 +: hi Search term=reverse cterm=none ctermbg=2 ctermfg=0 guibg=peru guifg=wheat +: hi IncSearch term=reverse cterm=bold ctermbg=2 ctermfg=7 guibg=black guifg=green +: hi SpecialKey term=bold ctermfg=4 guifg=yellowgreen +: hi Visual term=reverse cterm=reverse gui=none guibg=olivedrab guifg=khaki +: hi VisualNOS term=bold,underline cterm=bold,underline +: hi MoreMsg term=bold ctermfg=2 guifg=SeaGreen +: hi ModeMsg term=bold cterm=bold guifg=goldenrod +: hi Question term=standout ctermfg=2 guifg=springgreen +: hi Title term=bold cterm=bold ctermfg=3 gui=bold guifg=gold +: hi NonText term=bold cterm=bold ctermfg=4 guibg=grey15 guifg=RoyalBlue +: hi LineNr term=underline cterm=bold ctermbg=0 ctermfg=0* guifg=grey50 +: hi Directory term=bold ctermfg=4 +: hi WildMenu term=standout ctermbg=3 ctermfg=0 guibg=darkyellow guifg=black +: hi VertSplit term=reverse cterm=reverse gui=none guibg=#c2bfa5 guifg=grey40 +: hi Folded term=standout cterm=none ctermbg=0 ctermfg=7 guibg=black guifg=grey40 +: hi FoldColumn term=standout ctermbg=7 ctermfg=4 guibg=black guifg=grey20 +: hi DiffChange cterm=none ctermbg=7 ctermfg=0 guibg=darkgrey guifg=white +: hi DiffText cterm=none ctermbg=6 ctermfg=0 guibg=darkcyan guifg=white +: hi DiffAdd cterm=none ctermbg=2 ctermfg=0 guibg=darkgreen guifg=white +: hi DiffDelete cterm=none ctermbg=7 ctermfg=0 guibg=darkgrey guifg=black +: hi String cterm=none ctermfg=3 guifg=SkyBlue +: hi Comment term=bold cterm=none ctermbg=0 ctermfg=7 guifg=grey40 +: hi Constant term=underline ctermfg=1 guifg=#ffa0a0 +: hi Special term=bold ctermfg=6 guifg=darkkhaki +: hi Identifier term=underline ctermfg=6 guifg=salmon +: hi Statement term=bold ctermfg=6 guifg=CornflowerBlue +: hi Operator term=bold ctermfg=1 guifg=red +: hi PreProc term=underline ctermbg=7 ctermfg=1 guibg=white guifg=red +: hi Type term=underline ctermfg=2 guifg=CornflowerBlue +: hi Delimiter term=none cterm=none ctermfg=1 +: hi Ignore cterm=bold ctermfg=7 guifg=grey40 +: hi Todo term=standout ctermbg=3 ctermfg=0 guibg=yellow2 guifg=orangered +: hi Underlined term=underline cterm=underline +: hi Include ctermfg=1 guifg=red +: hi Define ctermfg=3 gui=bold guifg=gold +: hi Function ctermfg=6 guifg=navajowhite +: hi Structure ctermfg=2 guifg=green +: hi MatchParen cterm=bold ctermbg=4 ctermfg=7 +: hi CursorLine cterm=bold,underline guibg=black +: hi CursorColumn cterm=bold guibg=black +: hi SpellBad term=underline,standout cterm=none ctermbg=7 ctermfg=0 guibg=darkmagenta guifg=white +: hi SpellCap term=underline,standout cterm=none ctermbg=7 ctermfg=0 +: hi SpellLocal term=underline,standout cterm=none ctermbg=7 ctermfg=0 guibg=darkmagenta guifg=white +: hi SpellRare term=underline,standout cterm=none ctermbg=7 ctermfg=0 +: hi WarningMsg term=standout ctermfg=1 guibg=darkmagenta guifg=salmon +: hi ErrorMsg term=standout cterm=bold ctermbg=1 ctermfg=7 guibg=darkmagenta guifg=white +: hi Error term=reverse cterm=bold ctermbg=1 ctermfg=7 guibg=darkmagenta guifg=white +: if &diff +: highlight! link DiffText MatchParen +: endif +: hi Black ctermbg=grey ctermfg=black guibg=grey guifg=black +: hi Red ctermbg=black ctermfg=red guibg=black guifg=red +: hi Magenta ctermbg=black ctermfg=magenta guibg=black guifg=magenta +: hi Blue ctermbg=black ctermfg=blue guibg=black guifg=blue +: hi Cyan ctermbg=black ctermfg=cyan guibg=black guifg=cyan +: hi Green ctermbg=black ctermfg=green guibg=black guifg=green +: hi Yellow ctermbg=black ctermfg=yellow guibg=black guifg=yellow +: hi White ctermbg=black ctermfg=white guibg=black guifg=white #+END_SRC *** def-sisu.vim -#+HEADER: :tangle "../sundry/misc/editor-syntax-etc/vim/colors/def-sisu.vim" +#+HEADER: :tangle "../sundry/editor-syntax-etc/vim/colors/def-sisu.vim" #+BEGIN_SRC text " Vim color file " Name: def-sisu " Maintainer: Ralph Amissah <ralph@amissah.com> " Last Change: 2013-02-14 -" URL: <https://git.sisudoc.org/projects/?p=software/spine.git;a=blob;f=data/sisu/conf/editor-syntax-etc/vim/colors/def-sisu.vim;hb=HEAD> +" URL: <https://git.sisudoc.org/projects/sisudoc-spine/tree/sundry/editor-syntax-etc/vim/colors/def-sisu.vim> +" <https://sisudoc.org/> " Note: primarily 16 color cterm improved by tweaking of .Xdefaults " (with occasional other colors selected from 256 color palate) " .Xdefaults tweaking to make identical to def (256) provided, @@ -585,15 +1086,184 @@ endif " Rxvt.color15 : #FFFFFF #+END_SRC +*** redo.vim + +#+HEADER: :tangle "../sundry/editor-syntax-etc/vim/colors/redo.vim" +#+BEGIN_SRC text +"%% Vim color file +" Name: redo +" Maintainer: Ralph Amissah <ralph@amissah.com> +" Last Change: 2013-02-14, 2016-07-28, 2022-09-05 +" URL: <> +" Note: this is a redo of def + +: hi clear +: if exists("syntax_on") | syntax reset | endif +: let colors_name = "redo" +: set t_Co=256 +: set background=dark +" ------- +" terminal def +" ------- +: hi Normal ctermfg=7 ctermbg=234 +: hi Cursor ctermfg=0 ctermbg=166 +: hi lCursor cterm=reverse +: hi CursorLine cterm=bold,underline "ctermul=242 "bg:236,59 +: hi CursorLineNr cterm=bold ctermfg=0 ctermbg=166 +: hi LineNr cterm=none ctermfg=248 ctermbg=236 +: hi StatusLine cterm=bold,reverse +: hi StatusLineNC cterm=reverse +: hi StatusLineTerm cterm=bold ctermfg=15 ctermbg=2 +: hi StatusLineTermNC ctermfg=15 ctermbg=2 +: hi ColorColumn ctermfg=231 ctermbg=236 "bg:233,59,236 +" hi ColorColumn cterm=inverse +" hi ColorColumn ctermfg=16 ctermbg=235 +" hi ColorColumn ctermfg=5 ctermbg=90 +: hi Folded cterm=none ctermfg=248 ctermbg=0 "fg:248,59,242,3 +: hi FoldColumn ctermfg=4 ctermbg=69 +: hi Search cterm=none ctermfg=0 ctermbg=57 "bg:57,11 +: hi IncSearch cterm=none ctermfg=0 ctermbg=154 +: hi SpecialKey ctermfg=4 +: hi Visual cterm=reverse +: hi VisualNOS cterm=bold,underline +: hi MoreMsg ctermfg=2 +: hi ModeMsg cterm=bold +: hi Question ctermfg=2 +: hi Title cterm=bold ctermfg=3 +: hi NonText cterm=bold ctermfg=4 +: hi Directory ctermfg=4 +: hi WildMenu ctermfg=0 ctermbg=3 +: hi VertSplit cterm=reverse +: hi DiffAdd cterm=none ctermfg=0 ctermbg=2 +: hi DiffChange cterm=none ctermfg=0 ctermbg=7 +: hi DiffDelete cterm=none ctermfg=0 ctermbg=7 +: hi DiffText cterm=none ctermfg=0 ctermbg=6 +: hi String cterm=none ctermfg=3 +: hi Comment cterm=none ctermfg=244 +: hi Constant ctermfg=124 +: hi Special ctermfg=67 "fg:67,140,5 +: hi Identifier cterm=none ctermfg=172 "bg:172,4,2 (default usually bold; choose orange, blue or lime green) +: hi Statement ctermfg=130 +: hi Operator ctermfg=2 +: hi PreProc ctermfg=196 "fg:2,5,140,1,166,196 +: hi Type ctermfg=67 "fg:67,2 +: hi Include ctermfg=124 "fg:124,140,5 +: hi Delimiter cterm=none ctermfg=2 +: hi Ignore cterm=bold ctermfg=7 +: hi Todo ctermfg=0 ctermbg=3 +: hi Underlined cterm=underline ctermfg=4 "ctermul=6 "fg:4,6 +: hi Define ctermfg=3 +: hi Function ctermfg=6 +: hi Structure ctermfg=2 +: hi MatchParen cterm=bold ctermfg=7 ctermbg=4 +: hi SpellBad cterm=underline ctermfg=5 ctermbg=0 +: hi SpellCap cterm=underline ctermfg=5 ctermbg=0 +: hi SpellLocal cterm=underline ctermfg=5 ctermbg=0 +: hi SpellRare cterm=underline ctermfg=5 ctermbg=0 +: hi TrailingWhitespace ctermbg=1 +: hi ExtraWhitespace ctermbg=1 +: hi WarningMsg ctermfg=1 +: hi ErrorMsg cterm=bold ctermfg=7 ctermbg=1 +: hi Error cterm=bold ctermfg=7 ctermbg=1 +: if &diff +: highlight! link DiffText MatchParen +: endif +#+END_SRC + +*** shift.vim + +#+HEADER: :tangle "../sundry/editor-syntax-etc/vim/colors/shift.vim" +#+BEGIN_SRC text +"%% Vim color file +" Name: shift +" Maintainer: Ralph Amissah <ralph@amissah.com> +" Last Change: 2013-02-14, 2016-07-28, 2022-09-09 +" URL: <> +" Note: this is a shift in redo which as a redo of def + +: hi clear +: if exists("syntax_on") | syntax reset | endif +: let colors_name = "shift" +: set t_Co=256 +: set background=dark +" ------- +" terminal def +" ------- +: hi Normal ctermfg=7 ctermbg=234 +: hi Cursor ctermfg=0 ctermbg=166 +: hi lCursor cterm=reverse +: hi CursorLine cterm=bold,underline ctermul=166 "bg:236,59 +: hi CursorLineNr cterm=bold ctermfg=0 ctermbg=166 +: hi LineNr cterm=none ctermfg=248 ctermbg=236 +: hi StatusLine cterm=bold,reverse +: hi StatusLineNC cterm=reverse +: hi StatusLineTerm cterm=bold ctermfg=15 ctermbg=2 +: hi StatusLineTermNC ctermfg=15 ctermbg=2 +: hi ColorColumn cterm=none ctermfg=7 ctermbg=236 "bg:233,59 +" hi ColorColumn cterm=inverse +" hi ColorColumn ctermfg=16 ctermbg=235 +" hi ColorColumn ctermfg=5 ctermbg=90 +: hi Folded cterm=none ctermfg=242 ctermbg=16 "fg:248,59,242,3 +: hi FoldColumn ctermfg=4 ctermbg=69 +: hi Search cterm=none ctermfg=0 ctermbg=57 "bg:57,11 +: hi IncSearch cterm=none ctermfg=0 ctermbg=154 +: hi SpecialKey ctermfg=4 +: hi Visual cterm=reverse +: hi VisualNOS cterm=bold,underline +: hi MoreMsg ctermfg=2 +: hi ModeMsg cterm=bold +: hi Question ctermfg=2 +: hi Title cterm=bold ctermfg=3 +: hi NonText cterm=bold ctermfg=4 +: hi Directory ctermfg=4 +: hi WildMenu ctermfg=0 ctermbg=3 +: hi VertSplit cterm=reverse +: hi DiffAdd cterm=none ctermfg=0 ctermbg=2 +: hi DiffChange cterm=none ctermfg=0 ctermbg=7 +: hi DiffDelete cterm=none ctermfg=0 ctermbg=7 +: hi DiffText cterm=none ctermfg=0 ctermbg=6 +: hi String cterm=none ctermfg=3 +: hi Comment cterm=none ctermfg=244 +: hi Constant ctermfg=124 +: hi Special ctermfg=67 "fg:67,140,5 +: hi Identifier cterm=none ctermfg=4 "bg:172,4,2 (default usually bold; choose orange, blue or lime green) +: hi Statement ctermfg=130 +: hi Operator ctermfg=2 +: hi PreProc ctermfg=196 "fg:2,5,140,1,166,196 +: hi Type ctermfg=67 "fg:67,2 +: hi Include ctermfg=124 "fg:124,140,5 +: hi Delimiter cterm=none ctermfg=2 +: hi Ignore cterm=bold ctermfg=7 +: hi Todo ctermfg=0 ctermbg=3 +: hi Underlined cterm=underline ctermfg=6 ctermul=6 "fg:4,6 +: hi Define ctermfg=3 +: hi Function ctermfg=6 +: hi Structure ctermfg=2 +: hi MatchParen cterm=bold ctermfg=7 ctermbg=4 +: hi SpellBad cterm=underline ctermfg=5 ctermbg=0 +: hi SpellCap cterm=underline ctermfg=5 ctermbg=0 +: hi SpellLocal cterm=underline ctermfg=5 ctermbg=0 +: hi SpellRare cterm=underline ctermfg=5 ctermbg=0 +: hi TrailingWhitespace ctermbg=1 +: hi ExtraWhitespace ctermbg=1 +: hi WarningMsg ctermfg=1 +: hi ErrorMsg cterm=bold ctermfg=7 ctermbg=1 +: hi Error cterm=bold ctermfg=7 ctermbg=1 +: if &diff +: highlight! link DiffText MatchParen +: endif +#+END_SRC + *** frugal-cterm.vim -#+HEADER: :tangle "../sundry/misc/editor-syntax-etc/vim/colors/frugal-cterm-sisu.vim" +#+HEADER: :tangle "../sundry/editor-syntax-etc/vim/colors/frugal-cterm-sisu.vim" #+BEGIN_SRC text " Vim color file " Name: frugal-cterm-sisu " Maintainer: Ralph Amissah <ralph@amissah.com> " Last Change: 2013-02-09 -" URL: <https://git.sisudoc.org/projects/?p=software/spine.git;a=blob;f=data/sisu/conf/editor-syntax-etc/vim/colors/frugal-cterm-sisu.vim;hb=HEAD> +" URL: <https://git.sisudoc.org/projects/sisudoc-spine/tree/sundry/editor-syntax-etc/vim/colors/frugal-cterm-sisu.vim> +" <https://sisudoc.org/> " Note: 8 color cterm, related colorschemes 8 & sparse :set background=dark :hi clear @@ -657,9 +1327,240 @@ endif :hi Error cterm=bold ctermbg=1 ctermfg=7 #+END_SRC -** ftplugin sisu.vim +** ftplugin sisu.vim & spine.vim (for the same files) +*** sisu.vim + +#+HEADER: :tangle "../sundry/editor-syntax-etc/vim/ftplugin/sisu.vim" +#+BEGIN_SRC text +"%% SiSU Vim ftplugin +" SiSU Maintainer: Ralph Amissah <ralph@amissah.com> +" SiSU Markup: SiSU (sisu-3.3) 2012-08-18 +" an ftplugin setting defaults for editing sisu markup files +:syntax on +:filetype off +":filetype on +:filetype indent on +:autocmd FileType sisu :set nonumber +:set encoding=utf-8 fileencodings= +:set ff=unix +:set autowrite " Automatically save before commands like :next and :make +:set nocompatible +:set tabstop=2 +:set expandtab +:set shiftwidth=2 +:set autoindent +:set showcmd " Show (partial) command in status line. +:set showmatch " Show matching brackets. +:set ignorecase " Do case insensitive matching +:set smartcase +:set incsearch +:set hlsearch +:set gdefault +:set guioptions=agr " add 'm' for menu +:map <silent> <C-m> :if &guioptions =~# 'm' <Bar> + \set guioptions-=m <Bar> + \set guioptions-=T <Bar> + \else <Bar> + \set guioptions+=m <Bar> + \set guioptions-=T <Bar> + \endif<CR> +:set paste +""% statusline +"set statusline= " +"set fillchars=stl:―,stlnc:—,vert:│,fold:Û°,diff:· +"" [ buffer number ] +"set statusline +=%#Normal#[ " +"set statusline +=%#Identifier#%n " buffer number +"set statusline +=%#PreProc#%M " modified flag +"set statusline +=%#Normal#] " +"" [ file name (& modified?) ] +"set statusline +=%#Normal#\ [ " +"set statusline +=%#Statement#%<%F%* " full path +""set statusline +=%#Statement#%<%t " full path +"set statusline +=%#PreProc#%M " modified flag +"set statusline +=%#Normal#] " +"" [ column : line number / number of lines in file, percentage of file ] [%v:%l/%L\ %p%%] +"set statusline +=%#Normal#\ [ " +"set statusline +=%#Identifier#%v " column & line +"set statusline +=%#Normal#: " +"set statusline +=%#Identifier#%l " column & line +"set statusline +=%#SpecialKey#/%L\ " total lines +"set statusline +=%#Identifier#%p " percentage of file +"set statusline +=%#SpecialKey#%% " +"set statusline +=%#Normal#] " " +"" [ file format : file type ] +"set statusline +=%#Normal#\ [ " +"set statusline +=%#SpecialKey#%{&fenc} " file format +"set statusline +=%#Normal#: " +"set statusline +=%#SpecialKey#%{&ff} " file format +"set statusline +=%#Normal#: " +"set statusline +=%#SpecialKey#%y " file type +"set statusline +=%#Normal#] " +"" [ character under cursor ] +"set statusline +=%#Normal#\ [ " +"set statusline +=%#String#0x%04B " character under cursor +"set statusline +=%#Normal#]\ " +"" [ syntastic ] +"set statusline +=%#warningmsg# +"set statusline +=%{SyntasticStatuslineFlag()}\ " +""set statusline+=%* +"" Status line background +"set statusline +=%#Folded#\ " +"" misc +"set laststatus=2 " status line always on +"% textwrap +:set whichwrap=<,>,h,l,[,] +:set nolinebreak " only affects display not buffer +:set wrap +:set wrapmargin=0 +"% map +":let mapleader = "," " consider +:map <leader>paste :set invpaste<cr> +"% wrap/formatting paragraph according to the current 'textwidth' with ^\ (control-\): +:imap <C-\> <C-O>gqap +:nmap <C-\> gqap +:vmap <C-\> gq +"% save file, go to next file in buffer +:map <leader>nf :w <enter> :n <enter> +"% vimdiff q exits +:if &diff +: cmap q qa +:endif +"% directory files, placed in vertical split window +:map <leader>ls :vs<cr> :Explore<cr> +:map <leader>dir :vs<cr> :Explore<cr> +"% remapping lines make cursor jump a line at a time within wrapped text +:nnoremap j gj +:nnoremap k gk +:vnoremap j gj +:vnoremap k gk +:nnoremap <Down> gj +:nnoremap <Up> gk +:vnoremap <Down> gj +:vnoremap <Up> gk +:inoremap <Down> <C-o>gj +:inoremap <Up> <C-o>gk +"% search and replace +:map <leader>rd :.,$s///c "search and replace down +:map <leader>rg :%s///c "search and replace whole file +:map <leader>rr :rubyd gsub!(//,"") +"% pwd t64 working directory set to that of the file you're editing +"changes pwd to directory of file in current buffer +:function! CHANGE_CURR_DIR() +: let _dir = expand("%:p:h") +: exec "cd " . _dir +: unlet _dir +:endfunction +"% Change to the directory the file in your current buffer is in +:if has("autocmd") + autocmd BufEnter * :lcd %:p:h +:endif +"% autocompletefilenames To search for files in the current directory +:set path=,, +"auto-completion for file to edit in current dir, used in normal mode +:map <leader>e :e <c-r>=expand("%:p:h") . "/" <cr> +:map <leader>pwd :exe 'cd ' . expand ("%:p:h")<cr> +"% searchhighlight t93: Toggle search highlight <C-n> +:function! ToggleHLSearched() +: if &hls +: set nohls +: else +: set hls +: endif +:endfun +:nmap <silent> <C-n> :silent call ToggleHLSearched()<cr> +"%% SiSU vim folds +"% foldsearchx FoldSearch (opens result of search all else closed) t77 +:map <leader>fs :set foldmethod=expr foldcolumn=2 foldlevel=0 <cr> +:map <leader>ff :F<cr> +:map <leader>fe :F<cr> zE +"% foldtoggle Fold Toggle mapped to <space> +:fun! ToggleFold() +: if foldlevel('.') == 0 +: normal! l +: else +: if foldclosed('.') < 0 +: foldclose +: else +: foldopen +: endif +: endif +" Clear status line +: echo +:endfun +" Map this function to Space key. +:noremap <space> :call ToggleFold()<cr> +"% foldtype Fold? set foldtext +:set foldtext=v:folddashes.substitute(getline(v:foldstart),'\\=','','g',) +:set foldexpr=getline(v:lnum-1)!~@/&&getline(v:lnum)!~@/&&getline(v:lnum+1)!~@/ +"% foldsearch t77: Fold on search result +:function! FoldMake(search) +: set fdm=manual +: normal zE +: normal G$ +: let folded = 0 "flag to set when a fold is found +: let flags = "w" "allow wrapping in the search +: let line1 = 0 "set marker for beginning of fold +: while search(a:search, flags) > 0 +: let line2 = line(".") +: if (line2 -1 > line1) +: "echo line1 . ":" . (line2-1) +: "echo "a fold goes here." +: execute ":" . line1 . "," . (line2-1) . "fold" +: let folded = 1 "at least one fold has been found +: endif +: let line1 = line2 "update marker +: let flags = "W" "turn off wrapping +: endwhile +" create the last fold which goes to the end of the file. +: normal $G +: let line2 = line(".") +: if (line2 > line1 && folded == 1) +: execute ":". line1 . "," . line2 . "fold" +: endif +: normal 1G +:endfunction +"% folds Fold Patterns +:command! -nargs=+ -complete=command FMake call FoldMake(<q-args>) +: if ( &filetype == "ruby" ) +: command! F FMake ^# ==\?\|^\s*\(\(def\|class\|module\)\s\|\(public\|protected\|private\|__END__\)\s*$\)\|\(^\s*\|\s\+\)#%\s +: command! Fa FMake \(^# ==\?\|^\s*\(\(\(def\|class\|module\)\s\)\|\(\(public\|protected\|private\|__END__\)\(\s*$\)\)\)\)\|^[0-9]\~\|\([#%]\|^["]\)\{1,4\}\s*%\|{\({\|!!\) +: command! FD FMake \(^# ==\?\|^\s*\(\(def\|class\|module\)\s\)\)\|^\s*\([#%"0-9]\{0,4\}\~\(%\+\s\|!!\)\|#\s\+=\+\s\+\) +: else +"% folds :F Fold Patterns SiSU Markup :F +: command! F FMake ^\([1-8]\|:\?[A-C]\)\~\|\(^%\|\(^\|\s\+\)[#"]\)%\{1,2\}\(\s\|$\)\|^<<\s*| +: command! Fa FMake ^\([1-8]\|:\?[A-C]\)\~\|\(^%\|\(^\|\s\+\)[#"]\)%\{1,2\}\(\s\|$\)\|^<<\s*|\|^\(Book\|Part\|Chapter\|Section\|Article\|BOOK\|PART\|CHAPTER\|SECTION\|ARTICLE\)\s +: command! F0 FMake ^\(\s*0\~\|@\S\+:[+-]\?\s\+\) +: command! FA FMake ^:\?A\~ +: command! FB FMake ^:\?[AB]\~ +: command! FC FMake ^:\?[A-C]\~ +: command! F1 FMake ^\(:\?[A-C]\|1\)\~ +: command! F2 FMake ^\(:\?[A-C]\|[12]\)\~ +: command! F3 FMake ^\(:\?[A-C]\|[1-3]\)\~ +: command! F4 FMake ^[1-4]\~ +: command! F5 FMake ^[4-5]\~ +: command! F6 FMake ^[4-6]\~ +: command! Fc FMake ^[%]\+\s\+ +: endif +"% folds Fold Patterns misc +":command! Fp FMake ^\s*[A-Za-z0-9#] +:command! Fp FMake ^\s*\S +:command! Fo FMake ^[%\"]\s*[{>] +"% linenumbering, on, relative, off +:map <Leader>nn :set <c-r>={'00':'','01':'r','10':'nor'}[&rnu.&nu]<CR>nu<CR> +"% cursorline +:map <leader>cu :if &cursorcolumn <Bar> + \set nocursorline nocursorcolumn <Bar> + \else <Bar> + \set cursorline cursorcolumn <Bar> + \endif<cr> +:map <leader>cu- :set nocursorline nocursorcolumn<cr> +:map <leader>cu+ :set cursorline cursorcolumn<cr> +#+END_SRC + +*** sisu-spine.vim -#+HEADER: :tangle "../sundry/misc/editor-syntax-etc/vim/ftplugin/sisu.vim" +#+HEADER: :tangle "../sundry/editor-syntax-etc/vim/ftplugin/sisu-spine.vim" #+BEGIN_SRC text "%% SiSU Vim ftplugin " SiSU Maintainer: Ralph Amissah <ralph@amissah.com> @@ -890,7 +1791,7 @@ endif ** templates *** sst.tpl -#+HEADER: :tangle "../sundry/misc/editor-syntax-etc/vim/templates/sst.tpl" +#+HEADER: :tangle "../sundry/editor-syntax-etc/vim/templates/sst.tpl" #+BEGIN_SRC text # SiSU 8.0 @@ -926,7 +1827,7 @@ make: *** ssm.tpl -#+HEADER: :tangle "../sundry/misc/editor-syntax-etc/vim/templates/ssm.tpl" +#+HEADER: :tangle "../sundry/editor-syntax-etc/vim/templates/ssm.tpl" #+BEGIN_SRC text # SiSU 8.0 master @@ -962,7 +1863,7 @@ make: *** ssm.tpl -#+HEADER: :tangle "../sundry/misc/editor-syntax-etc/vim/templates/ssi.tpl" +#+HEADER: :tangle "../sundry/editor-syntax-etc/vim/templates/ssi.tpl" #+BEGIN_SRC text # SiSU 8.0 insert @@ -7,13 +7,13 @@ with pkgs-nix; # â¯â¯â¯ nix_related #nix direnv - nixVersions.nix_2_21 #nixVersions.latest #nixVersions.git + nixVersions.latest #nixVersions.latest #nixVersions.git nix-prefetch-git validatePkgConfig nix-output-monitor nix-tree jq #gx - #alejandra + #nixfmt-rfc-style git # â¯â¯â¯ dev gnumake diff --git a/src/COPYRIGHT b/src/COPYRIGHT index 88b66fb..2a71121 100644 --- a/src/COPYRIGHT +++ b/src/COPYRIGHT @@ -5,7 +5,7 @@ - Author: Ralph Amissah [ralph.amissah@gmail.com] - - Copyright: (C) 2015 - 2024 Ralph Amissah + - Copyright: (C) 2015 - 2025 Ralph Amissah - code under src/* src/sisudoc/* - License: AGPL 3 or later: @@ -140,6 +140,7 @@ - code: cgi.d aria2c https://raw.githubusercontent.com/adamdruppe/arsd/master/cgi.d + aria2c https://raw.githubusercontent.com/adamdruppe/arsd/master/core.d - License: BSL-1.0 Boost Software License 1.0 diff --git a/src/ext_depends/D-YAML.meta b/src/ext_depends/D-YAML.meta index c9a2d17..82ffe9e 100644 --- a/src/ext_depends/D-YAML.meta +++ b/src/ext_depends/D-YAML.meta @@ -1,3 +1,3 @@ -D-YAML 2c915b3f +D-YAML eb99ff9d https://github.com/dlang-community/D-YAML Boost Software License 1.0 (BSL-1.0) diff --git a/src/ext_depends/D-YAML/.gitignore b/src/ext_depends/D-YAML/.gitignore index ce69e30..21800b2 100644 --- a/src/ext_depends/D-YAML/.gitignore +++ b/src/ext_depends/D-YAML/.gitignore @@ -65,3 +65,5 @@ example.yaml # Unittest Coverage output # *.lst + +.meson-subproject-wrap-hash.txt diff --git a/src/ext_depends/D-YAML/README.md b/src/ext_depends/D-YAML/README.md index 4781bdd..5c494d0 100644 --- a/src/ext_depends/D-YAML/README.md +++ b/src/ext_depends/D-YAML/README.md @@ -1,6 +1,5 @@ # D:YAML -[](https://travis-ci.org/dlang-community/D-YAML) [](https://codecov.io/gh/dlang-community/D-YAML) [](http://code.dlang.org/packages/dyaml) @@ -68,21 +67,21 @@ Full text of the license can be found in file `LICENSE_1_0.txt` and is also displayed here: Boost Software License - Version 1.0 - August 17th, 2003 - + Permission is hereby granted, free of charge, to any person or organization obtaining a copy of the software and accompanying documentation covered by this license (the "Software") to use, reproduce, display, distribute, execute, and transmit the Software, and to prepare derivative works of the Software, and to permit third-parties to whom the Software is furnished to do so, all subject to the following: - + The copyright notices in the Software and this entire statement, including the above license grant, this restriction and the following disclaimer, must be included in all copies of the Software, in whole or in part, and all derivative works of the Software, unless such copies or derivative works are solely in the form of machine-executable object code generated by a source language processor. - + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT diff --git a/src/ext_depends/D-YAML/docs/articles/spec_differences.md b/src/ext_depends/D-YAML/docs/articles/spec_differences.md index 93cf038..a669351 100644 --- a/src/ext_depends/D-YAML/docs/articles/spec_differences.md +++ b/src/ext_depends/D-YAML/docs/articles/spec_differences.md @@ -17,10 +17,6 @@ Differences that can cause valid YAML documents not to load: - No support for byte order marks and multiple Unicode encodings in a stream. - - Plain scalars in flow context cannot contain `,`, `:` and `?`. This - might change with `:` in the future. See - <http://pyyaml.org/wiki/YAMLColonInFlowContext> for details. - - The specification does not restrict characters for anchors and aliases. This may lead to problems, for instance, the document: diff --git a/src/ext_depends/D-YAML/meson.build b/src/ext_depends/D-YAML/meson.build index 8a09d6a..6a33ed6 100644 --- a/src/ext_depends/D-YAML/meson.build +++ b/src/ext_depends/D-YAML/meson.build @@ -1,7 +1,6 @@ project('D-YAML', 'd', meson_version: '>=0.40.0', - subproject_dir: 'contrib', - version: '0.8.4' + version: '0.10.0' ) project_soversion = '0' @@ -9,6 +8,12 @@ project_soversion = '0' src_dir = include_directories('source/') pkgc = import('pkgconfig') +d_compiler = meson.get_compiler('d') +global_d_args = [] +if d_compiler.get_id() == 'gcc' + global_d_args += ['-fall-instantiations'] +endif + dyaml_src = [ 'source/dyaml/composer.d', 'source/dyaml/constructor.d', @@ -31,17 +36,12 @@ dyaml_src = [ 'source/dyaml/serializer.d', 'source/dyaml/style.d', 'source/dyaml/tagdirective.d', - 'source/dyaml/test/common.d', - 'source/dyaml/test/compare.d', 'source/dyaml/test/constructor.d', - 'source/dyaml/test/emitter.d', - 'source/dyaml/test/errors.d', - 'source/dyaml/test/inputoutput.d', - 'source/dyaml/test/reader.d', 'source/dyaml/test/representer.d', - 'source/dyaml/test/resolver.d', - 'source/dyaml/test/tokens.d', - 'source/dyaml/token.d' + 'source/dyaml/test/suite.d', + 'source/dyaml/test/suitehelpers.d', + 'source/dyaml/token.d', + 'source/dyaml/stdsumtype.d' ] install_subdir('source/dyaml', install_dir: 'include/d/yaml/') @@ -53,12 +53,14 @@ dyaml_lib = library('dyaml', dependencies: [tinyendian_dep], install: true, version: meson.project_version(), + d_args: global_d_args, soversion: project_soversion ) pkgc.generate(name: 'dyaml', libraries: dyaml_lib, subdirs: 'd/yaml/', version: meson.project_version(), + extra_cflags: global_d_args, description: 'YAML parser and emitter for the D programming language.' ) @@ -66,5 +68,6 @@ pkgc.generate(name: 'dyaml', dyaml_dep = declare_dependency( link_with: dyaml_lib, include_directories: [src_dir], - dependencies: [tinyendian_dep] + dependencies: [tinyendian_dep], + compile_args: global_d_args, ) diff --git a/src/ext_depends/D-YAML/source/dyaml/composer.d b/src/ext_depends/D-YAML/source/dyaml/composer.d index e7b083a..5467af8 100644 --- a/src/ext_depends/D-YAML/source/dyaml/composer.d +++ b/src/ext_depends/D-YAML/source/dyaml/composer.d @@ -29,15 +29,6 @@ import dyaml.resolver; package: -/** - * Exception thrown at composer errors. - * - * See_Also: MarkedYAMLException - */ -class ComposerException : MarkedYAMLException -{ - mixin MarkedExceptionCtors; -} ///Composes YAML documents from events provided by a Parser. struct Composer @@ -70,7 +61,7 @@ struct Composer * Params: parser = Parser to provide YAML events. * resolver = Resolver to resolve tags (data types). */ - this(Parser parser, Resolver resolver) @safe + this(Parser parser, Resolver resolver) @safe nothrow { parser_ = parser; resolver_ = resolver; @@ -101,6 +92,22 @@ struct Composer return composeDocument(); } + /// Set file name. + ref inout(string) name() inout @safe return pure nothrow @nogc + { + return parser_.name; + } + /// Get a mark from the current reader position + Mark mark() const @safe pure nothrow @nogc + { + return parser_.mark; + } + + /// Get resolver + ref Resolver resolver() @safe return pure nothrow @nogc { + return resolver_; + } + private: void skipExpected(const EventID id) @safe @@ -158,8 +165,8 @@ struct Composer //it's not finished, i.e. we're currently composing it //and trying to use it recursively here. enforce(anchors_[anchor] != Node(), - new ComposerException("Found recursive alias: " ~ anchor, - event.startMark)); + new ComposerException(text("Found recursive alias: ", anchor), + event.startMark, "defined here", anchors_[anchor].startMark)); return anchors_[anchor]; } @@ -168,8 +175,8 @@ struct Composer const anchor = event.anchor; if((anchor !is null) && (anchor in anchors_) !is null) { - throw new ComposerException("Found duplicate anchor: " ~ anchor, - event.startMark); + throw new ComposerException(text("Found duplicate anchor: ", anchor), + event.startMark, "defined here", anchors_[anchor].startMark); } Node result; @@ -177,7 +184,9 @@ struct Composer //used to detect duplicate and recursive anchors. if(anchor !is null) { - anchors_[anchor] = Node(); + Node tempNode; + tempNode.startMark_ = event.startMark; + anchors_[anchor] = tempNode; } switch (parser_.front.id) @@ -265,12 +274,10 @@ struct Composer { //this is Composer, but the code is related to Constructor. throw new ConstructorException("While constructing a mapping, " ~ - "expected a mapping or a list of " ~ - "mappings for merging, but found: " ~ - text(node.type) ~ - " NOTE: line/column shows topmost parent " ~ - "to which the content is being merged", - startMark, endMark); + "expected a mapping or a list of " ~ + "mappings for merging, but found: " ~ + text(node.type), + endMark, "mapping started here", startMark); } ensureAppendersExist(pairAppenderLevel, nodeAppenderLevel); @@ -360,14 +367,14 @@ struct Composer } auto sorted = pairAppender.data.dup.sort!((x,y) => x.key > y.key); - if (sorted.length) { + if (sorted.length) + { foreach (index, const ref value; sorted[0 .. $ - 1].enumerate) - if (value.key == sorted[index + 1].key) { - const message = () @trusted { - return format("Key '%s' appears multiple times in mapping (first: %s)", - value.key.get!string, value.key.startMark); - }(); - throw new ComposerException(message, sorted[index + 1].key.startMark); + if (value.key == sorted[index + 1].key) + { + throw new ComposerException( + text("Key '", value.key.get!string, "' appears multiple times in mapping"), + sorted[index + 1].key.startMark, "defined here", value.key.startMark); } } @@ -380,22 +387,3 @@ struct Composer return node; } } - -// Provide good error message on multiple keys (which JSON supports) -@safe unittest -{ - import dyaml.loader : Loader; - - const str = `{ - "comment": "This is a common technique", - "name": "foobar", - "comment": "To write down comments pre-JSON5" -}`; - - try - auto node = Loader.fromString(str).load(); - catch (ComposerException exc) - assert(exc.message() == - "Key 'comment' appears multiple times in mapping " ~ - "(first: file <unknown>,line 2,column 5)\nfile <unknown>,line 4,column 5"); -} diff --git a/src/ext_depends/D-YAML/source/dyaml/constructor.d b/src/ext_depends/D-YAML/source/dyaml/constructor.d index 4cd1546..72c32f4 100644 --- a/src/ext_depends/D-YAML/source/dyaml/constructor.d +++ b/src/ext_depends/D-YAML/source/dyaml/constructor.d @@ -30,22 +30,6 @@ import dyaml.style; package: -// Exception thrown at constructor errors. -class ConstructorException : YAMLException -{ - /// Construct a ConstructorException. - /// - /// Params: msg = Error message. - /// start = Start position of the error context. - /// end = End position of the error context. - this(string msg, Mark start, Mark end, string file = __FILE__, size_t line = __LINE__) - @safe pure nothrow - { - super(msg ~ "\nstart: " ~ start.toString() ~ "\nend: " ~ end.toString(), - file, line); - } -} - /** Constructs YAML values. * * Each YAML scalar, sequence or mapping has a tag specifying its data type. @@ -76,109 +60,106 @@ Node constructNode(T)(const Mark start, const Mark end, const string tag, if((is(T : string) || is(T == Node[]) || is(T == Node.Pair[]))) { Node newNode; - try + noreturn error(string a, string b)() { - switch(tag) - { - case "tag:yaml.org,2002:null": - newNode = Node(YAMLNull(), tag); + enum msg = "Error constructing " ~ T.stringof ~ ": Only " ~ a ~ " can be " ~ b; + throw new ConstructorException(msg, start, "end", end); + } + switch(tag) + { + case "tag:yaml.org,2002:null": + newNode = Node(YAMLNull(), tag); + break; + case "tag:yaml.org,2002:bool": + static if(is(T == string)) + { + newNode = Node(constructBool(value, start, end), tag); break; - case "tag:yaml.org,2002:bool": - static if(is(T == string)) - { - newNode = Node(constructBool(value), tag); - break; - } - else throw new Exception("Only scalars can be bools"); - case "tag:yaml.org,2002:int": - static if(is(T == string)) - { - newNode = Node(constructLong(value), tag); - break; - } - else throw new Exception("Only scalars can be ints"); - case "tag:yaml.org,2002:float": - static if(is(T == string)) - { - newNode = Node(constructReal(value), tag); - break; - } - else throw new Exception("Only scalars can be floats"); - case "tag:yaml.org,2002:binary": - static if(is(T == string)) - { - newNode = Node(constructBinary(value), tag); - break; - } - else throw new Exception("Only scalars can be binary data"); - case "tag:yaml.org,2002:timestamp": - static if(is(T == string)) - { - newNode = Node(constructTimestamp(value), tag); - break; - } - else throw new Exception("Only scalars can be timestamps"); - case "tag:yaml.org,2002:str": - static if(is(T == string)) - { - newNode = Node(constructString(value), tag); - break; - } - else throw new Exception("Only scalars can be strings"); - case "tag:yaml.org,2002:value": - static if(is(T == string)) - { - newNode = Node(constructString(value), tag); - break; - } - else throw new Exception("Only scalars can be values"); - case "tag:yaml.org,2002:omap": - static if(is(T == Node[])) - { - newNode = Node(constructOrderedMap(value), tag); - break; - } - else throw new Exception("Only sequences can be ordered maps"); - case "tag:yaml.org,2002:pairs": - static if(is(T == Node[])) - { - newNode = Node(constructPairs(value), tag); - break; - } - else throw new Exception("Only sequences can be pairs"); - case "tag:yaml.org,2002:set": - static if(is(T == Node.Pair[])) - { - newNode = Node(constructSet(value), tag); - break; - } - else throw new Exception("Only mappings can be sets"); - case "tag:yaml.org,2002:seq": - static if(is(T == Node[])) - { - newNode = Node(constructSequence(value), tag); - break; - } - else throw new Exception("Only sequences can be sequences"); - case "tag:yaml.org,2002:map": - static if(is(T == Node.Pair[])) - { - newNode = Node(constructMap(value), tag); - break; - } - else throw new Exception("Only mappings can be maps"); - case "tag:yaml.org,2002:merge": - newNode = Node(YAMLMerge(), tag); + } + else error!("scalars", "bools"); + case "tag:yaml.org,2002:int": + static if(is(T == string)) + { + newNode = Node(constructLong(value, start, end), tag); break; - default: - newNode = Node(value, tag); + } + else error!("scalars", "ints"); + case "tag:yaml.org,2002:float": + static if(is(T == string)) + { + newNode = Node(constructReal(value, start, end), tag); break; - } - } - catch(Exception e) - { - throw new ConstructorException("Error constructing " ~ typeid(T).toString() - ~ ":\n" ~ e.msg, start, end); + } + else error!("scalars", "floats"); + case "tag:yaml.org,2002:binary": + static if(is(T == string)) + { + newNode = Node(constructBinary(value, start, end), tag); + break; + } + else error!("scalars", "binary data"); + case "tag:yaml.org,2002:timestamp": + static if(is(T == string)) + { + newNode = Node(constructTimestamp(value, start, end), tag); + break; + } + else error!("scalars", "timestamps"); + case "tag:yaml.org,2002:str": + static if(is(T == string)) + { + newNode = Node(constructString(value, start, end), tag); + break; + } + else error!("scalars", "strings"); + case "tag:yaml.org,2002:value": + static if(is(T == string)) + { + newNode = Node(constructString(value, start, end), tag); + break; + } + else error!("scalars", "values"); + case "tag:yaml.org,2002:omap": + static if(is(T == Node[])) + { + newNode = Node(constructOrderedMap(value, start, end), tag); + break; + } + else error!("sequences", "ordered maps"); + case "tag:yaml.org,2002:pairs": + static if(is(T == Node[])) + { + newNode = Node(constructPairs(value, start, end), tag); + break; + } + else error!("sequences", "pairs"); + case "tag:yaml.org,2002:set": + static if(is(T == Node.Pair[])) + { + newNode = Node(constructSet(value, start, end), tag); + break; + } + else error!("mappings", "sets"); + case "tag:yaml.org,2002:seq": + static if(is(T == Node[])) + { + newNode = Node(constructSequence(value, start, end), tag); + break; + } + else error!("sequences", "sequences"); + case "tag:yaml.org,2002:map": + static if(is(T == Node.Pair[])) + { + newNode = Node(constructMap(value, start, end), tag); + break; + } + else error!("mappings", "maps"); + case "tag:yaml.org,2002:merge": + newNode = Node(YAMLMerge(), tag); + break; + default: + newNode = Node(value, tag); + break; } newNode.startMark_ = start; @@ -188,16 +169,21 @@ Node constructNode(T)(const Mark start, const Mark end, const string tag, private: // Construct a boolean _node. -bool constructBool(const string str) @safe +bool constructBool(const string str, const Mark start, const Mark end) @safe { string value = str.toLower(); if(value.among!("yes", "true", "on")){return true;} if(value.among!("no", "false", "off")){return false;} - throw new Exception("Unable to parse boolean value: " ~ value); + throw new ConstructorException("Invalid boolean value: " ~ str, start, "ending at", end); +} + +@safe unittest +{ + assert(collectException!ConstructorException(constructBool("foo", Mark("unittest", 1, 0), Mark("unittest", 1, 3))).msg == "Invalid boolean value: foo"); } // Construct an integer (long) _node. -long constructLong(const string str) @safe +long constructLong(const string str, const Mark start, const Mark end) @safe { string value = str.replace("_", ""); const char c = value[0]; @@ -207,7 +193,7 @@ long constructLong(const string str) @safe value = value[1 .. $]; } - enforce(value != "", new Exception("Unable to parse float value: " ~ value)); + enforce(value != "", new ConstructorException("Unable to parse integer value: " ~ str, start, "ending at", end)); long result; try @@ -237,7 +223,7 @@ long constructLong(const string str) @safe } catch(ConvException e) { - throw new Exception("Unable to parse integer value: " ~ value); + throw new ConstructorException("Unable to parse integer value: " ~ str, start, "ending at", end); } return result; @@ -251,16 +237,18 @@ long constructLong(const string str) @safe string binary = "0b1010_0111_0100_1010_1110"; string sexagesimal = "190:20:30"; - assert(685230 == constructLong(canonical)); - assert(685230 == constructLong(decimal)); - assert(685230 == constructLong(octal)); - assert(685230 == constructLong(hexadecimal)); - assert(685230 == constructLong(binary)); - assert(685230 == constructLong(sexagesimal)); + assert(685230 == constructLong(canonical, Mark.init, Mark.init)); + assert(685230 == constructLong(decimal, Mark.init, Mark.init)); + assert(685230 == constructLong(octal, Mark.init, Mark.init)); + assert(685230 == constructLong(hexadecimal, Mark.init, Mark.init)); + assert(685230 == constructLong(binary, Mark.init, Mark.init)); + assert(685230 == constructLong(sexagesimal, Mark.init, Mark.init)); + assert(collectException!ConstructorException(constructLong("+", Mark.init, Mark.init)).msg == "Unable to parse integer value: +"); + assert(collectException!ConstructorException(constructLong("0xINVALID", Mark.init, Mark.init)).msg == "Unable to parse integer value: 0xINVALID"); } // Construct a floating point (real) _node. -real constructReal(const string str) @safe +real constructReal(const string str, const Mark start, const Mark end) @safe { string value = str.replace("_", "").toLower(); const char c = value[0]; @@ -271,7 +259,7 @@ real constructReal(const string str) @safe } enforce(value != "" && value != "nan" && value != "inf" && value != "-inf", - new Exception("Unable to parse float value: " ~ value)); + new ConstructorException("Unable to parse float value: \"" ~ str ~ "\"", start, "ending at", end)); real result; try @@ -297,7 +285,7 @@ real constructReal(const string str) @safe } catch(ConvException e) { - throw new Exception("Unable to parse float value: \"" ~ value ~ "\""); + throw new ConstructorException("Unable to parse float value: \"" ~ str ~ "\"", start, "ending at", end); } return result; @@ -316,16 +304,18 @@ real constructReal(const string str) @safe string negativeInf = "-.inf"; string NaN = ".NaN"; - assert(eq(685230.15, constructReal(canonical))); - assert(eq(685230.15, constructReal(exponential))); - assert(eq(685230.15, constructReal(fixed))); - assert(eq(685230.15, constructReal(sexagesimal))); - assert(eq(-real.infinity, constructReal(negativeInf))); - assert(to!string(constructReal(NaN)) == "nan"); + assert(eq(685230.15, constructReal(canonical, Mark.init, Mark.init))); + assert(eq(685230.15, constructReal(exponential, Mark.init, Mark.init))); + assert(eq(685230.15, constructReal(fixed, Mark.init, Mark.init))); + assert(eq(685230.15, constructReal(sexagesimal, Mark.init, Mark.init))); + assert(eq(-real.infinity, constructReal(negativeInf, Mark.init, Mark.init))); + assert(to!string(constructReal(NaN, Mark.init, Mark.init)) == "nan"); + assert(collectException!ConstructorException(constructReal("+", Mark.init, Mark.init)).msg == "Unable to parse float value: \"+\""); + assert(collectException!ConstructorException(constructReal("74.invalid", Mark.init, Mark.init)).msg == "Unable to parse float value: \"74.invalid\""); } // Construct a binary (base64) _node. -ubyte[] constructBinary(const string value) @safe +ubyte[] constructBinary(const string value, const Mark start, const Mark end) @safe { import std.ascii : newline; import std.array : array; @@ -337,7 +327,7 @@ ubyte[] constructBinary(const string value) @safe } catch(Base64Exception e) { - throw new Exception("Unable to decode base64 value: " ~ e.msg); + throw new ConstructorException("Unable to decode base64 value: " ~ e.msg, start, "ending at", end); } } @@ -347,13 +337,13 @@ ubyte[] constructBinary(const string value) @safe char[] buffer; buffer.length = 256; string input = Base64.encode(test, buffer).idup; - const value = constructBinary(input); + const value = constructBinary(input, Mark.init, Mark.init); assert(value == test); assert(value == [84, 104, 101, 32, 65, 110, 115, 119, 101, 114, 58, 32, 52, 50]); } // Construct a timestamp (SysTime) _node. -SysTime constructTimestamp(const string str) @safe +SysTime constructTimestamp(const string str, const Mark start, const Mark end) @safe { string value = str; @@ -429,7 +419,7 @@ SysTime constructTimestamp(const string str) @safe { string timestamp(string value) { - return constructTimestamp(value).toISOString(); + return constructTimestamp(value, Mark.init, Mark.init).toISOString(); } string canonical = "2001-12-15T02:59:43.1Z"; @@ -452,21 +442,21 @@ SysTime constructTimestamp(const string str) @safe } // Construct a string _node. -string constructString(const string str) @safe +string constructString(const string str, const Mark start, const Mark end) @safe { return str; } // Convert a sequence of single-element mappings into a sequence of pairs. -Node.Pair[] getPairs(string type, const Node[] nodes) @safe +Node.Pair[] getPairs(string type)(const Node[] nodes) @safe { + enum msg = "While constructing " ~ type ~ ", expected a mapping with single element"; Node.Pair[] pairs; pairs.reserve(nodes.length); foreach(node; nodes) { enforce(node.nodeID == NodeID.mapping && node.length == 1, - new Exception("While constructing " ~ type ~ - ", expected a mapping with single element")); + new ConstructorException(msg, node.startMark)); pairs ~= node.as!(Node.Pair[]); } @@ -475,30 +465,33 @@ Node.Pair[] getPairs(string type, const Node[] nodes) @safe } // Construct an ordered map (ordered sequence of key:value pairs without duplicates) _node. -Node.Pair[] constructOrderedMap(const Node[] nodes) @safe +Node.Pair[] constructOrderedMap(const Node[] nodes, const Mark start, const Mark end) @safe { - auto pairs = getPairs("ordered map", nodes); + auto pairs = getPairs!"an ordered map"(nodes); //Detect duplicates. //TODO this should be replaced by something with deterministic memory allocation. auto keys = new RedBlackTree!Node(); foreach(ref pair; pairs) { - enforce(!(pair.key in keys), - new Exception("Duplicate entry in an ordered map: " - ~ pair.key.debugString())); + auto foundMatch = keys.equalRange(pair.key); + enforce(foundMatch.empty, new ConstructorException( + "Duplicate entry in an ordered map", pair.key.startMark, + "first occurrence here", foundMatch.front.startMark)); keys.insert(pair.key); } return pairs; } @safe unittest { + uint lines; Node[] alternateTypes(uint length) @safe { Node[] pairs; foreach(long i; 0 .. length) { auto pair = (i % 2) ? Node.Pair(i.to!string, i) : Node.Pair(i, i.to!string); + pair.key.startMark_ = Mark("unittest", lines++, 0); pairs ~= Node([pair]); } return pairs; @@ -510,27 +503,29 @@ Node.Pair[] constructOrderedMap(const Node[] nodes) @safe foreach(long i; 0 .. length) { auto pair = Node.Pair(i.to!string, i); + pair.key.startMark_ = Mark("unittest", lines++, 0); pairs ~= Node([pair]); } return pairs; } - assertThrown(constructOrderedMap(alternateTypes(8) ~ alternateTypes(2))); - assertNotThrown(constructOrderedMap(alternateTypes(8))); - assertThrown(constructOrderedMap(sameType(64) ~ sameType(16))); - assertThrown(constructOrderedMap(alternateTypes(64) ~ alternateTypes(16))); - assertNotThrown(constructOrderedMap(sameType(64))); - assertNotThrown(constructOrderedMap(alternateTypes(64))); + assert(collectException!ConstructorException(constructOrderedMap(alternateTypes(8) ~ alternateTypes(2), Mark.init, Mark.init)).message == "Duplicate entry in an ordered map\nunittest:9,1\nfirst occurrence here: unittest:1,1"); + assertNotThrown(constructOrderedMap(alternateTypes(8), Mark.init, Mark.init)); + assert(collectException!ConstructorException(constructOrderedMap(sameType(64) ~ sameType(16), Mark.init, Mark.init)).message == "Duplicate entry in an ordered map\nunittest:83,1\nfirst occurrence here: unittest:19,1"); + assert(collectException!ConstructorException(constructOrderedMap(alternateTypes(64) ~ alternateTypes(16), Mark.init, Mark.init)).message == "Duplicate entry in an ordered map\nunittest:163,1\nfirst occurrence here: unittest:99,1"); + assertNotThrown(constructOrderedMap(sameType(64), Mark.init, Mark.init)); + assertNotThrown(constructOrderedMap(alternateTypes(64), Mark.init, Mark.init)); + assert(collectException!ConstructorException(constructOrderedMap([Node([Node(1), Node(2)])], Mark.init, Mark.init)).message == "While constructing an ordered map, expected a mapping with single element\n<unknown>:1,1"); } // Construct a pairs (ordered sequence of key: value pairs allowing duplicates) _node. -Node.Pair[] constructPairs(const Node[] nodes) @safe +Node.Pair[] constructPairs(const Node[] nodes, const Mark start, const Mark end) @safe { - return getPairs("pairs", nodes); + return getPairs!"pairs"(nodes); } // Construct a set _node. -Node[] constructSet(const Node.Pair[] pairs) @safe +Node[] constructSet(const Node.Pair[] pairs, const Mark start, const Mark end) @safe { // In future, the map here should be replaced with something with deterministic // memory allocation if possible. @@ -583,20 +578,20 @@ Node[] constructSet(const Node.Pair[] pairs) @safe auto nodeDuplicatesLong = DuplicatesLong.dup; auto nodeNoDuplicatesLong = noDuplicatesLong.dup; - assertThrown(constructSet(nodeDuplicatesShort)); - assertNotThrown(constructSet(nodeNoDuplicatesShort)); - assertThrown(constructSet(nodeDuplicatesLong)); - assertNotThrown(constructSet(nodeNoDuplicatesLong)); + assertThrown(constructSet(nodeDuplicatesShort, Mark.init, Mark.init)); + assertNotThrown(constructSet(nodeNoDuplicatesShort, Mark.init, Mark.init)); + assertThrown(constructSet(nodeDuplicatesLong, Mark.init, Mark.init)); + assertNotThrown(constructSet(nodeNoDuplicatesLong, Mark.init, Mark.init)); } // Construct a sequence (array) _node. -Node[] constructSequence(Node[] nodes) @safe +Node[] constructSequence(Node[] nodes, const Mark start, const Mark end) @safe { return nodes; } // Construct an unordered map (unordered set of key:value _pairs without duplicates) _node. -Node.Pair[] constructMap(Node.Pair[] pairs) @safe +Node.Pair[] constructMap(Node.Pair[] pairs, const Mark start, const Mark end) @safe { //Detect duplicates. //TODO this should be replaced by something with deterministic memory allocation. diff --git a/src/ext_depends/D-YAML/source/dyaml/dumper.d b/src/ext_depends/D-YAML/source/dyaml/dumper.d index 03d3620..e4aa1d3 100644 --- a/src/ext_depends/D-YAML/source/dyaml/dumper.d +++ b/src/ext_depends/D-YAML/source/dyaml/dumper.d @@ -73,9 +73,6 @@ struct Dumper // Default style for collection nodes. If style is $(D CollectionStyle.invalid), the _style is chosen automatically. CollectionStyle defaultCollectionStyle = CollectionStyle.invalid; - @disable bool opEquals(ref Dumper); - @disable int opCmp(ref Dumper); - ///Set indentation width. 2 by default. Must not be zero. @property void indent(uint indent) pure @safe nothrow in diff --git a/src/ext_depends/D-YAML/source/dyaml/emitter.d b/src/ext_depends/D-YAML/source/dyaml/emitter.d index 5aafc0e..b61fea1 100644 --- a/src/ext_depends/D-YAML/source/dyaml/emitter.d +++ b/src/ext_depends/D-YAML/source/dyaml/emitter.d @@ -153,9 +153,6 @@ struct Emitter(Range, CharType) if (isOutputRange!(Range, CharType)) ScalarStyle style_ = ScalarStyle.invalid; public: - @disable int opCmp(ref Emitter); - @disable bool opEquals(ref Emitter); - /** * Construct an emitter. * @@ -775,7 +772,7 @@ struct Emitter(Range, CharType) if (isOutputRange!(Range, CharType)) { if(style_ == ScalarStyle.invalid){style_ = chooseScalarStyle();} if((!canonical_ || (tag is null)) && - ((tag == "tag:yaml.org,2002:str") || (style_ == ScalarStyle.plain ? event_.implicit : !event_.implicit && (tag is null)))) + (((tag == "tag:yaml.org,2002:str") && event_.implicit) || (style_ == ScalarStyle.plain ? event_.implicit : !event_.implicit && (tag is null)))) { preparedTag_ = null; return; @@ -1283,9 +1280,6 @@ struct ScalarWriter(Range, CharType) } private: - @disable int opCmp(ref Emitter!(Range, CharType)); - @disable bool opEquals(ref Emitter!(Range, CharType)); - ///Used as "null" UTF-32 character. static immutable dcharNone = dchar.max; diff --git a/src/ext_depends/D-YAML/source/dyaml/event.d b/src/ext_depends/D-YAML/source/dyaml/event.d index f4a747f..36638e3 100644 --- a/src/ext_depends/D-YAML/source/dyaml/event.d +++ b/src/ext_depends/D-YAML/source/dyaml/event.d @@ -10,6 +10,7 @@ */ module dyaml.event; +import std.algorithm; import std.array; import std.conv; @@ -43,42 +44,30 @@ enum EventID : ubyte */ struct Event { - @disable int opCmp(ref Event); - ///Value of the event, if any. string value; ///Start position of the event in file/stream. Mark startMark; ///End position of the event in file/stream. Mark endMark; - union - { - struct - { - ///Anchor of the event, if any. - string _anchor; - ///Tag of the event, if any. - string _tag; - } - ///Tag directives, if this is a DocumentStart. - //TagDirectives tagDirectives; - TagDirective[] _tagDirectives; - } + ///Anchor of the event, if any. + string _anchor; + ///Tag of the event, if any. + string _tag; + ///Tag directives, if this is a DocumentStart. + TagDirective[] _tagDirectives; ///Event type. EventID id = EventID.invalid; ///Style of scalar event, if this is a scalar event. ScalarStyle scalarStyle = ScalarStyle.invalid; - union - { - ///Should the tag be implicitly resolved? - bool implicit; - /** - * Is this document event explicit? - * - * Used if this is a DocumentStart or DocumentEnd. - */ - bool explicitDocument; - } + ///Should the tag be implicitly resolved? + bool implicit; + /** + * Is this document event explicit? + * + * Used if this is a DocumentStart or DocumentEnd. + */ + alias explicitDocument = implicit; ///Collection style, if this is a SequenceStart or MappingStart. CollectionStyle collectionStyle = CollectionStyle.invalid; @@ -102,6 +91,117 @@ struct Event assert(id == EventID.documentStart, "Only DocumentStart events have tag directives."); return _tagDirectives; } + void toString(W)(ref W writer) const + { + import std.algorithm.iteration : substitute; + import std.format : formattedWrite; + import std.range : put; + final switch (id) + { + case EventID.scalar: + put(writer, "=VAL "); + if (anchor != "") + { + writer.formattedWrite!"&%s " (anchor); + } + if (tag != "") + { + writer.formattedWrite!"<%s> " (tag); + } + final switch(scalarStyle) + { + case ScalarStyle.singleQuoted: + put(writer, "'"); + break; + case ScalarStyle.doubleQuoted: + put(writer, "\""); + break; + case ScalarStyle.literal: + put(writer, "|"); + break; + case ScalarStyle.folded: + put(writer, ">"); + break; + case ScalarStyle.invalid: //default to plain + case ScalarStyle.plain: + put(writer, ":"); + break; + } + if (value != "") + { + writer.formattedWrite!"%s"(value.substitute("\n", "\\n", `\`, `\\`, "\r", "\\r", "\t", "\\t", "\b", "\\b")); + } + break; + case EventID.streamStart: + put(writer, "+STR"); + break; + case EventID.documentStart: + put(writer, "+DOC"); + if (explicitDocument) + { + put(writer, " ---"); + } + break; + case EventID.mappingStart: + put(writer, "+MAP"); + if (collectionStyle == CollectionStyle.flow) + { + put(writer, " {}"); + } + if (anchor != "") + { + put(writer, " &"); + put(writer, anchor); + } + if (tag != "") + { + put(writer, " <"); + put(writer, tag); + put(writer, ">"); + } + break; + case EventID.sequenceStart: + put(writer, "+SEQ"); + if (collectionStyle == CollectionStyle.flow) + { + put(writer, " []"); + } + if (anchor != "") + { + put(writer, " &"); + put(writer, anchor); + } + if (tag != "") + { + put(writer, " <"); + put(writer, tag); + put(writer, ">"); + } + break; + case EventID.streamEnd: + put(writer, "-STR"); + break; + case EventID.documentEnd: + put(writer, "-DOC"); + if (explicitDocument) + { + put(writer, " ..."); + } + break; + case EventID.mappingEnd: + put(writer, "-MAP"); + break; + case EventID.sequenceEnd: + put(writer, "-SEQ"); + break; + case EventID.alias_: + put(writer, "=ALI *"); + put(writer, anchor); + break; + case EventID.invalid: + assert(0, "Invalid EventID produced"); + } + } } /** diff --git a/src/ext_depends/D-YAML/source/dyaml/exception.d b/src/ext_depends/D-YAML/source/dyaml/exception.d index 145e9c3..8a2fe0d 100644 --- a/src/ext_depends/D-YAML/source/dyaml/exception.d +++ b/src/ext_depends/D-YAML/source/dyaml/exception.d @@ -7,165 +7,201 @@ ///Exceptions thrown by D:YAML and _exception related code. module dyaml.exception; - import std.algorithm; import std.array; -import std.string; import std.conv; +import std.exception; +import std.format; +import std.range; +import std.string; +import std.typecons; /// Base class for all exceptions thrown by D:YAML. class YAMLException : Exception { - /// Construct a YAMLException with specified message and position where it was thrown. - public this(string msg, string file = __FILE__, size_t line = __LINE__) - @safe pure nothrow @nogc - { - super(msg, file, line); - } + mixin basicExceptionCtors; } /// Position in a YAML stream, used for error messages. struct Mark { - package: - /// File name. - string name_; - /// Line number. - ushort line_; - /// Column number. - ushort column_; + /// File name. + string name = "<unknown>"; + /// Line number. + ushort line; + /// Column number. + ushort column; public: /// Construct a Mark with specified line and column in the file. this(string name, const uint line, const uint column) @safe pure nothrow @nogc { - name_ = name; - line_ = cast(ushort)min(ushort.max, line); + this.name = name; + this.line = cast(ushort)min(ushort.max, line); // This *will* overflow on extremely wide files but saves CPU time // (mark ctor takes ~5% of time) - column_ = cast(ushort)column; - } - - /// Get a file name. - @property string name() @safe pure nothrow @nogc const - { - return name_; - } - - /// Get a line number. - @property ushort line() @safe pure nothrow @nogc const - { - return line_; - } - - /// Get a column number. - @property ushort column() @safe pure nothrow @nogc const - { - return column_; - } - - /// Duplicate a mark - Mark dup () const scope @safe pure nothrow - { - return Mark(this.name_.idup, this.line_, this.column_); + this.column = cast(ushort)column; } /// Get a string representation of the mark. - string toString() const scope @safe pure nothrow + void toString(W)(ref W writer) const scope { // Line/column numbers start at zero internally, make them start at 1. - static string clamped(ushort v) @safe pure nothrow + void writeClamped(ushort v) { - return text(v + 1, v == ushort.max ? " or higher" : ""); + writer.formattedWrite!"%s"(v + 1); + if (v == ushort.max) + { + put(writer, "or higher"); + } } - return "file " ~ name_ ~ ",line " ~ clamped(line_) ~ ",column " ~ clamped(column_); + put(writer, name); + put(writer, ":"); + writeClamped(line); + put(writer, ","); + writeClamped(column); } } -// Base class of YAML exceptions with marked positions of the problem. +/// Base class of YAML exceptions with marked positions of the problem. abstract class MarkedYAMLException : YAMLException { /// Position of the error. Mark mark; + /// Additional position information, usually the start of a token or scalar + Nullable!Mark mark2; + /// A label for the extra information + string mark2Label; - // Construct a MarkedYAMLException with specified context and problem. - this(string context, scope const Mark contextMark, - string problem, scope const Mark problemMark, + // Construct a MarkedYAMLException with two marks + this(string context, const Mark mark, string mark2Label, const Nullable!Mark mark2, string file = __FILE__, size_t line = __LINE__) @safe pure nothrow { - const msg = context ~ '\n' ~ - (contextMark != problemMark ? contextMark.toString() ~ '\n' : "") ~ - problem ~ '\n' ~ problemMark.toString() ~ '\n'; - super(msg, file, line); - mark = problemMark.dup; + super(context, file, line); + this.mark = mark; + this.mark2 = mark2; + this.mark2Label = mark2Label; } // Construct a MarkedYAMLException with specified problem. - this(string problem, scope const Mark problemMark, + this(string msg, const Mark mark, string file = __FILE__, size_t line = __LINE__) @safe pure nothrow { - super(problem ~ '\n' ~ problemMark.toString(), file, line); - mark = problemMark.dup; + super(msg, file, line); + this.mark = mark; } - /// Construct a MarkedYAMLException from a struct storing constructor parameters. - this(ref const(MarkedYAMLExceptionData) data) @safe pure nothrow + /// Custom toString to add context without requiring allocation up-front + void toString(W)(ref W sink) const + { + sink.formattedWrite!"%s@%s(%s): "(typeid(this).name, file, line); + put(sink, msg); + put(sink, "\n"); + mark.toString(sink); + if (!mark2.isNull) + { + put(sink, "\n"); + put(sink, mark2Label); + put(sink, ":"); + mark2.get.toString(sink); + } + put(sink, "\n"); + put(sink, info.toString()); + } + /// Ditto + override void toString(scope void delegate(in char[]) sink) const { - with(data) this(context, contextMark, problem, problemMark); + toString!(typeof(sink))(sink); + } + /// An override of message + override const(char)[] message() const @safe nothrow + { + if (mark2.isNull) + { + return assertNotThrown(text(msg, "\n", mark)); + } + else + { + return assertNotThrown(text(msg, "\n", mark, "\n", mark2Label, ": ", mark2.get)); + } } } -package: -// A struct storing parameters to the MarkedYAMLException constructor. -struct MarkedYAMLExceptionData +/// Exception thrown on composer errors. +class ComposerException : MarkedYAMLException { - // Context of the error. - string context; - // Position of the context in a YAML buffer. - Mark contextMark; - // The error itself. - string problem; - // Position if the error. - Mark problemMark; + mixin MarkedExceptionCtors; } -// Constructors of YAML exceptions are mostly the same, so we use a mixin. -// -// See_Also: YAMLException -template ExceptionCtors() +/// Exception thrown on constructor errors. +class ConstructorException : MarkedYAMLException { - public this(string msg, string file = __FILE__, size_t line = __LINE__) - @safe pure nothrow - { - super(msg, file, line); - } + mixin MarkedExceptionCtors; +} + +/// Exception thrown on loader errors. +class LoaderException : MarkedYAMLException +{ + mixin MarkedExceptionCtors; } -// Constructors of marked YAML exceptions are mostly the same, so we use a mixin. -// -// See_Also: MarkedYAMLException +/// Exception thrown on node related errors. +class NodeException : MarkedYAMLException +{ + mixin MarkedExceptionCtors; +} + +/// Exception thrown on parser errors. +class ParserException : MarkedYAMLException +{ + mixin MarkedExceptionCtors; +} + +/// Exception thrown on Reader errors. +class ReaderException : MarkedYAMLException +{ + mixin MarkedExceptionCtors; +} + +/// Exception thrown on Representer errors. +class RepresenterException : YAMLException +{ + mixin basicExceptionCtors; +} + +/// Exception thrown on scanner errors. +class ScannerException : MarkedYAMLException +{ + mixin MarkedExceptionCtors; +} + +private: + +/// Constructors of marked YAML exceptions are identical, so we use a mixin. +/// +/// See_Also: MarkedYAMLException template MarkedExceptionCtors() { public: - this(string context, const Mark contextMark, string problem, - const Mark problemMark, string file = __FILE__, size_t line = __LINE__) + this(string msg, const Mark mark1, string mark2Label, + const Mark mark2, string file = __FILE__, size_t line = __LINE__) @safe pure nothrow { - super(context, contextMark, problem, problemMark, - file, line); + super(msg, mark1, mark2Label, Nullable!Mark(mark2), file, line); } - this(string problem, const Mark problemMark, + this(string msg, const Mark mark, string file = __FILE__, size_t line = __LINE__) @safe pure nothrow { - super(problem, problemMark, file, line); + super(msg, mark, file, line); } - - this(ref const(MarkedYAMLExceptionData) data) @safe pure nothrow + this(string msg, const Mark mark1, string mark2Label, + const Nullable!Mark mark2, string file = __FILE__, size_t line = __LINE__) + @safe pure nothrow { - super(data); + super(msg, mark1, mark2Label, mark2, file, line); } } diff --git a/src/ext_depends/D-YAML/source/dyaml/loader.d b/src/ext_depends/D-YAML/source/dyaml/loader.d index 6638dfc..358855a 100644 --- a/src/ext_depends/D-YAML/source/dyaml/loader.d +++ b/src/ext_depends/D-YAML/source/dyaml/loader.d @@ -33,14 +33,8 @@ import dyaml.token; struct Loader { private: - // Processes character data to YAML tokens. - Scanner scanner_; - // Processes tokens to YAML events. - Parser parser_; - // Resolves tags (data types). - Resolver resolver_; - // Name of the input file or stream, used in error messages. - string name_ = "<unknown>"; + // Assembles YAML documents + Composer composer_; // Are we done loading? bool done_; // Last node read from stream @@ -49,10 +43,6 @@ struct Loader bool rangeInitialized; public: - @disable this(); - @disable int opCmp(ref Loader); - @disable bool opEquals(ref Loader); - /** Construct a Loader to load YAML from a file. * * Params: filename = Name of the file to load from. @@ -147,33 +137,30 @@ struct Loader /// Ditto private this(ubyte[] yamlData, string name = "<unknown>") @safe { - resolver_ = Resolver.withDefaultResolvers; - name_ = name; try { - auto reader_ = new Reader(yamlData, name); - scanner_ = Scanner(reader_); - parser_ = new Parser(scanner_); + auto reader = Reader(yamlData, name); + auto parser = new Parser(Scanner(reader)); + composer_ = Composer(parser, Resolver.withDefaultResolvers); } - catch(YAMLException e) + catch(MarkedYAMLException e) { - throw new YAMLException("Unable to open %s for YAML loading: %s" - .format(name_, e.msg), e.file, e.line); + throw new LoaderException("Unable to open %s for YAML loading: %s" + .format(name, e.msg), e.mark, e.file, e.line); } } /// Set stream _name. Used in debugging messages. - void name(string name) pure @safe nothrow @nogc + ref inout(string) name() inout @safe return pure nothrow @nogc { - name_ = name; - scanner_.name = name; + return composer_.name; } /// Specify custom Resolver to use. auto ref resolver() pure @safe nothrow @nogc { - return resolver_; + return composer_.resolver; } /** Load single YAML document. @@ -189,10 +176,12 @@ struct Loader */ Node load() @safe { - enforce!YAMLException(!empty, "Zero documents in stream"); + enforce(!empty, + new LoaderException("Zero documents in stream", composer_.mark)); auto output = front; popFront(); - enforce!YAMLException(empty, "More than one document in stream"); + enforce(empty, + new LoaderException("More than one document in stream", composer_.mark)); return output; } @@ -217,22 +206,23 @@ struct Loader */ void popFront() @safe { - // Composer initialization is done here in case the constructor is - // modified, which is a pretty common case. - static Composer composer; - if (!rangeInitialized) - { - composer = Composer(parser_, resolver_); - rangeInitialized = true; - } + scope(success) rangeInitialized = true; assert(!done_, "Loader.popFront called on empty range"); - if (composer.checkNode()) + try { - currentNode = composer.getNode(); + if (composer_.checkNode()) + { + currentNode = composer_.getNode(); + } + else + { + done_ = true; + } } - else + catch(MarkedYAMLException e) { - done_ = true; + throw new LoaderException("Unable to load %s: %s" + .format(name, e.msg), e.mark, e.mark2Label, e.mark2, e.file, e.line); } } /** Implements the front range primitive. @@ -248,30 +238,6 @@ struct Loader } return currentNode; } - - // Scan all tokens, throwing them away. Used for benchmarking. - void scanBench() @safe - { - try - { - while(!scanner_.empty) - { - scanner_.popFront(); - } - } - catch(YAMLException e) - { - throw new YAMLException("Unable to scan YAML from stream " ~ - name_ ~ " : " ~ e.msg, e.file, e.line); - } - } - - - // Parse and return all events. Used for debugging. - auto parse() @safe - { - return parser_; - } } /// Load single YAML document from a file: @safe unittest @@ -408,6 +374,89 @@ EOS"; loader.name = filename; Node unused; - auto e = loader.load().collectException!ScannerException(unused); + auto e = loader.load().collectException!LoaderException(unused); assert(e.mark.name == filename); } +/// https://github.com/dlang-community/D-YAML/issues/325 +@safe unittest +{ + assert(Loader.fromString("--- {x: a}").load()["x"] == "a"); +} + +// Ensure exceptions are thrown as appropriate +@safe unittest +{ + LoaderException e; + // No documents + e = collectException!LoaderException(Loader.fromString("", "filename.yaml").load()); + assert(e); + with(e) + { + assert(mark.name == "filename.yaml"); + assert(mark.line == 0); + assert(mark.column == 0); + } + // Too many documents + e = collectException!LoaderException(Loader.fromString("--- 4\n--- 6\n--- 5", "filename.yaml").load()); + assert(e, "No exception thrown"); + with(e) + { + assert(mark.name == "filename.yaml"); + // FIXME: should be position of second document, not end of file + //assert(mark.line == 1); + //assert(mark.column == 0); + } + // Invalid document + e = collectException!LoaderException(Loader.fromString("[", "filename.yaml").load()); + assert(e, "No exception thrown"); + with(e) + { + assert(mark.name == "filename.yaml"); + // FIXME: should be position of second document, not end of file + assert(mark.line == 0); + assert(mark.column == 1); + } +} + +@safe unittest +{ + assertThrown(Loader.fromString("Invalid character: \xFF").load()); +} + +@safe unittest +{ + assertThrown(Loader.fromFile("test/data/odd-utf16.stream-error").load()); +} + +// UTF-16 and 32 test +@safe unittest +{ + import std.conv : to; + import std.range : only; + enum string yaml = `ABCDØ`; + enum bom = '\uFEFF'; + foreach (doc; only( + cast(ubyte[])(bom~yaml.to!(wchar[])), + cast(ubyte[])(bom~yaml.to!(dchar[])), + )) + { + assert(Loader.fromBuffer(doc).load().as!string == yaml); + } +} +// Invalid unicode test +@safe unittest +{ + import std.conv : to; + import std.range : only; + enum string yaml = `ABCDØ`; + enum badBOM = '\uFFFE'; + foreach (doc; only( + cast(ubyte[])yaml.to!(wchar[]), + cast(ubyte[])yaml.to!(dchar[]), + cast(ubyte[])(badBOM~yaml.to!(wchar[])), + cast(ubyte[])(badBOM~yaml.to!(dchar[])), + )) + { + assertThrown(Loader.fromBuffer(doc).load()); + } +} diff --git a/src/ext_depends/D-YAML/source/dyaml/node.d b/src/ext_depends/D-YAML/source/dyaml/node.d index 4c3c5eb..fd47f7e 100644 --- a/src/ext_depends/D-YAML/source/dyaml/node.d +++ b/src/ext_depends/D-YAML/source/dyaml/node.d @@ -30,22 +30,6 @@ import dyaml.event; import dyaml.exception; import dyaml.style; -/// Exception thrown at node related errors. -class NodeException : MarkedYAMLException -{ - package: - // Construct a NodeException. - // - // Params: msg = Error message. - // start = Start position of the node. - this(string msg, const scope Mark start, - string file = __FILE__, size_t line = __LINE__) - @safe pure nothrow - { - super(msg, start, file, line); - } -} - // Node kinds. enum NodeID : ubyte { diff --git a/src/ext_depends/D-YAML/source/dyaml/parser.d b/src/ext_depends/D-YAML/source/dyaml/parser.d index befdfa4..cc2ea47 100644 --- a/src/ext_depends/D-YAML/source/dyaml/parser.d +++ b/src/ext_depends/D-YAML/source/dyaml/parser.d @@ -88,16 +88,6 @@ import dyaml.tagdirective; */ -/** - * Marked exception thrown at parser errors. - * - * See_Also: MarkedYAMLException - */ -class ParserException : MarkedYAMLException -{ - mixin MarkedExceptionCtors; -} - package: /// Generates events from tokens provided by a Scanner. /// @@ -173,6 +163,17 @@ final class Parser ensureState(); } + /// Set file name. + ref inout(string) name() inout @safe return pure nothrow @nogc + { + return scanner_.name; + } + /// Get a mark from the current reader position + Mark mark() const @safe pure nothrow @nogc + { + return scanner_.mark; + } + private: /// If current event is invalid, load the next valid one if possible. void ensureState() @safe @@ -508,9 +509,9 @@ final class Parser } const token = scanner_.front; - throw new ParserException("While parsing a " ~ (block ? "block" : "flow") ~ " node", - startMark, "expected node content, but found: " - ~ token.idString, token.startMark); + throw new ParserException("While parsing a " ~ (block ? "block" : "flow") + ~ " node, expected node content, but found: " ~ token.idString, + token.startMark, "node started here", startMark); } /// Handle escape sequences in a double quoted scalar. @@ -618,8 +619,8 @@ final class Parser } //handle must be in tagDirectives_ enforce(replacement !is null, - new ParserException("While parsing a node", startMark, - "found undefined tag handle: " ~ handle, tagMark)); + new ParserException("While parsing a node, found undefined tag handle: " + ~ handle, tagMark, "node started here", startMark)); return replacement ~ suffix; } return suffix; @@ -658,9 +659,8 @@ final class Parser if(scanner_.front.id != TokenID.blockEnd) { const token = scanner_.front; - throw new ParserException("While parsing a block collection", marks_.data.back, - "expected block end, but found " ~ token.idString, - token.startMark); + throw new ParserException("While parsing a block sequence, expected block end, but found: " + ~ token.idString, token.startMark, "sequence started here", marks_.data.back); } state_ = popState(); @@ -730,9 +730,8 @@ final class Parser if(scanner_.front.id != TokenID.blockEnd) { const token = scanner_.front; - throw new ParserException("While parsing a block mapping", marks_.data.back, - "expected block end, but found: " ~ token.idString, - token.startMark); + throw new ParserException("While parsing a block mapping, expected block end, but found: " + ~ token.idString, token.startMark, "mapping started here", marks_.data.back); } state_ = popState(); @@ -797,9 +796,8 @@ final class Parser else { const token = scanner_.front; - throw new ParserException("While parsing a flow sequence", marks_.data.back, - "expected ',' or ']', but got: " ~ - token.idString, token.startMark); + throw new ParserException("While parsing a flow sequence, expected ',' or ']', but got: " ~ + token.idString, token.startMark, "sequence started here", marks_.data.back); } } @@ -912,9 +910,8 @@ final class Parser else { const token = scanner_.front; - throw new ParserException("While parsing a flow mapping", marks_.data.back, - "expected ',' or '}', but got: " ~ - token.idString, token.startMark); + throw new ParserException("While parsing a flow mapping, expected ',' or '}', but got: " + ~ token.idString, token.startMark, "mapping started here", marks_.data.back); } } diff --git a/src/ext_depends/D-YAML/source/dyaml/queue.d b/src/ext_depends/D-YAML/source/dyaml/queue.d index 57b0d34..35b45c8 100644 --- a/src/ext_depends/D-YAML/source/dyaml/queue.d +++ b/src/ext_depends/D-YAML/source/dyaml/queue.d @@ -88,11 +88,6 @@ private: } public: - - @disable void opAssign(ref Queue); - @disable bool opEquals(ref Queue); - @disable int opCmp(ref Queue); - this(this) @safe nothrow @nogc { auto node = first_; diff --git a/src/ext_depends/D-YAML/source/dyaml/reader.d b/src/ext_depends/D-YAML/source/dyaml/reader.d index ae44c80..824c1d1 100644 --- a/src/ext_depends/D-YAML/source/dyaml/reader.d +++ b/src/ext_depends/D-YAML/source/dyaml/reader.d @@ -31,19 +31,8 @@ alias isBreak = among!('\n', '\u0085', '\u2028', '\u2029'); package: -///Exception thrown at Reader errors. -class ReaderException : YAMLException -{ - this(string msg, string file = __FILE__, size_t line = __LINE__) - @safe pure nothrow - { - super("Reader error: " ~ msg, file, line); - } -} - -/// Provides an API to read characters from a UTF-8 buffer and build slices into that -/// buffer to avoid allocations (see SliceBuilder). -final class Reader +/// Provides an API to read characters from a UTF-8 buffer. +struct Reader { private: // Buffer of currently loaded characters. @@ -102,8 +91,9 @@ final class Reader auto endianResult = fixUTFByteOrder(buffer); if(endianResult.bytesStripped > 0) { + // TODO: add line and column throw new ReaderException("Size of UTF-16 or UTF-32 input not aligned " ~ - "to 2 or 4 bytes, respectively"); + "to 2 or 4 bytes, respectively", Mark(name, 0, 0)); } version(unittest) { endian_ = endianResult.endian; } @@ -113,17 +103,18 @@ final class Reader const msg = utf8Result.errorMessage; if(msg !is null) { - throw new ReaderException("Error when converting to UTF-8: " ~ msg); + // TODO: add line and column + throw new ReaderException("Error when converting to UTF-8: " ~ msg, Mark(name, 0, 0)); } buffer_ = utf8Result.utf8; characterCount_ = utf8Result.characterCount; // Check that all characters in buffer are printable. + // TODO: add line and column enforce(isPrintableValidUTF8(buffer_), - new ReaderException("Special unicode characters are not allowed")); + new ReaderException("Special unicode characters are not allowed", Mark(name, 0, 0))); - this.sliceBuilder = SliceBuilder(this); checkASCII(); } @@ -212,8 +203,7 @@ final class Reader /// Get specified number of characters starting at current position. /// /// Note: This gets only a "view" into the internal buffer, which will be - /// invalidated after other Reader calls. Use SliceBuilder to build slices - /// for permanent use. + /// invalidated after other Reader calls. /// /// Params: length = Number of characters (code points, not bytes) to get. May /// reach past the end of the buffer; in that case the returned @@ -228,8 +218,7 @@ final class Reader /// Get specified number of bytes, not code points, starting at current position. /// /// Note: This gets only a "view" into the internal buffer, which will be - /// invalidated after other Reader calls. Use SliceBuilder to build slices - /// for permanent use. + /// invalidated after other Reader calls. /// /// Params: length = Number bytes (not code points) to get. May NOT reach past /// the end of the buffer; should be used with peek() to avoid @@ -396,17 +385,34 @@ final class Reader checkASCII(); } - /// Used to build slices of read data in Reader; to avoid allocations. - SliceBuilder sliceBuilder; - - /// Get a string describing current buffer position, used for error messages. + /// Get filename, line and column of current position. Mark mark() const pure nothrow @nogc @safe { return Mark(name_, line_, column_); } - /// Get file name. - string name() const @safe pure nothrow @nogc { return name_; } + /// Get filename, line and column of current position + some number of chars + Mark mark(size_t advance) const pure @safe + { + auto lineTemp = cast()line_; + auto columnTemp = cast()column_; + auto bufferOffsetTemp = cast()bufferOffset_; + for (size_t pos = 0; pos < advance; pos++) + { + if (bufferOffsetTemp >= buffer_.length) + { + break; + } + const c = decode(buffer_, bufferOffsetTemp); + if (c.isBreak || (c == '\r' && buffer_[bufferOffsetTemp] == '\n')) + { + lineTemp++; + columnTemp = 0; + } + columnTemp++; + } + return Mark(name_, lineTemp, columnTemp); + } - /// Set file name. - void name(string name) pure @safe nothrow @nogc { name_ = name; } + /// Get file name. + ref inout(string) name() inout @safe return pure nothrow @nogc { return name_; } /// Get current line number. uint line() const @safe pure nothrow @nogc { return line_; } @@ -448,267 +454,6 @@ private: } } -/// Used to build slices of already read data in Reader buffer, avoiding allocations. -/// -/// Usually these slices point to unchanged Reader data, but sometimes the data is -/// changed due to how YAML interprets certain characters/strings. -/// -/// See begin() documentation. -struct SliceBuilder -{ -private: - // No copying by the user. - @disable this(this); - @disable void opAssign(ref SliceBuilder); - - // Reader this builder works in. - Reader reader_; - - // Start of the slice om reader_.buffer_ (size_t.max while no slice being build) - size_t start_ = size_t.max; - // End of the slice om reader_.buffer_ (size_t.max while no slice being build) - size_t end_ = size_t.max; - - // Stack of slice ends to revert to (see Transaction) - // - // Very few levels as we don't want arbitrarily nested transactions. - size_t[4] endStack_; - // The number of elements currently in endStack_. - size_t endStackUsed_; - - @safe const pure nothrow @nogc invariant() - { - if(!inProgress) { return; } - assert(end_ <= reader_.bufferOffset_, "Slice ends after buffer position"); - assert(start_ <= end_, "Slice start after slice end"); - } - - // Is a slice currently being built? - bool inProgress() @safe const pure nothrow @nogc - in(start_ == size_t.max ? end_ == size_t.max : end_ != size_t.max, "start_/end_ are not consistent") - { - return start_ != size_t.max; - } - -public: - /// Begin building a slice. - /// - /// Only one slice can be built at any given time; before beginning a new slice, - /// finish the previous one (if any). - /// - /// The slice starts at the current position in the Reader buffer. It can only be - /// extended up to the current position in the buffer; Reader methods get() and - /// forward() move the position. E.g. it is valid to extend a slice by write()-ing - /// a string just returned by get() - but not one returned by prefix() unless the - /// position has changed since the prefix() call. - void begin() @safe pure nothrow @nogc - in(!inProgress, "Beginning a slice while another slice is being built") - in(endStackUsed_ == 0, "Slice stack not empty at slice begin") - { - - start_ = reader_.bufferOffset_; - end_ = reader_.bufferOffset_; - } - - /// Finish building a slice and return it. - /// - /// Any Transactions on the slice must be committed or destroyed before the slice - /// is finished. - /// - /// Returns a string; once a slice is finished it is definitive that its contents - /// will not be changed. - char[] finish() @safe pure nothrow @nogc - in(inProgress, "finish called without begin") - in(endStackUsed_ == 0, "Finishing a slice with running transactions.") - { - - auto result = reader_.buffer_[start_ .. end_]; - start_ = end_ = size_t.max; - return result; - } - - /// Write a string to the slice being built. - /// - /// Data can only be written up to the current position in the Reader buffer. - /// - /// If str is a string returned by a Reader method, and str starts right after the - /// end of the slice being built, the slice is extended (trivial operation). - /// - /// See_Also: begin - void write(scope char[] str) @safe pure nothrow @nogc - { - assert(inProgress, "write called without begin"); - assert(end_ <= reader_.bufferOffset_, - "AT START: Slice ends after buffer position"); - - // Nothing? Already done. - if (str.length == 0) { return; } - // If str starts at the end of the slice (is a string returned by a Reader - // method), just extend the slice to contain str. - if(&str[0] == &reader_.buffer_[end_]) - { - end_ += str.length; - } - // Even if str does not start at the end of the slice, it still may be returned - // by a Reader method and point to buffer. So we need to memmove. - else - { - copy(str, reader_.buffer_[end_..end_ + str.length * char.sizeof]); - end_ += str.length; - } - } - - /// Write a character to the slice being built. - /// - /// Data can only be written up to the current position in the Reader buffer. - /// - /// See_Also: begin - void write(dchar c) @safe pure - in(inProgress, "write called without begin") - { - if(c < 0x80) - { - reader_.buffer_[end_++] = cast(char)c; - return; - } - - // We need to encode a non-ASCII dchar into UTF-8 - char[4] encodeBuf; - const bytes = encode(encodeBuf, c); - reader_.buffer_[end_ .. end_ + bytes] = encodeBuf[0 .. bytes]; - end_ += bytes; - } - - /// Insert a character to a specified position in the slice. - /// - /// Enlarges the slice by 1 char. Note that the slice can only extend up to the - /// current position in the Reader buffer. - /// - /// Params: - /// - /// c = The character to insert. - /// position = Position to insert the character at in code units, not code points. - /// Must be less than slice length(); a previously returned length() - /// can be used. - void insert(const dchar c, const size_t position) @safe pure - in(inProgress, "insert called without begin") - in(start_ + position <= end_, "Trying to insert after the end of the slice") - { - - const point = start_ + position; - const movedLength = end_ - point; - - // Encode c into UTF-8 - char[4] encodeBuf; - if(c < 0x80) { encodeBuf[0] = cast(char)c; } - const size_t bytes = c < 0x80 ? 1 : encode(encodeBuf, c); - - if(movedLength > 0) - { - copy(reader_.buffer_[point..point + movedLength * char.sizeof], - reader_.buffer_[point + bytes..point + bytes + movedLength * char.sizeof]); - } - reader_.buffer_[point .. point + bytes] = encodeBuf[0 .. bytes]; - end_ += bytes; - } - - /// Get the current length of the slice. - size_t length() @safe const pure nothrow @nogc - { - return end_ - start_; - } - - /// A slice building transaction. - /// - /// Can be used to save and revert back to slice state. - struct Transaction - { - private: - // The slice builder affected by the transaction. - SliceBuilder* builder_; - // Index of the return point of the transaction in StringBuilder.endStack_. - size_t stackLevel_; - // True after commit() has been called. - bool committed_; - - public: - /// Begins a transaction on a SliceBuilder object. - /// - /// The transaction must end $(B after) any transactions created within the - /// transaction but $(B before) the slice is finish()-ed. A transaction can be - /// ended either by commit()-ing or reverting through the destructor. - /// - /// Saves the current state of a slice. - this(SliceBuilder* builder) @safe pure nothrow @nogc - { - builder_ = builder; - stackLevel_ = builder_.endStackUsed_; - builder_.push(); - } - - /// Commit changes to the slice. - /// - /// Ends the transaction - can only be called once, and removes the possibility - /// to revert slice state. - /// - /// Does nothing for a default-initialized transaction (the transaction has not - /// been started yet). - void commit() @safe pure nothrow @nogc - in(!committed_, "Can't commit a transaction more than once") - { - - if(builder_ is null) { return; } - assert(builder_.endStackUsed_ == stackLevel_ + 1, - "Parent transactions don't fully contain child transactions"); - builder_.apply(); - committed_ = true; - } - - /// Destroy the transaction and revert it if it hasn't been committed yet. - void end() @safe pure nothrow @nogc - in(builder_ && builder_.endStackUsed_ == stackLevel_ + 1, "Parent transactions don't fully contain child transactions") - { - builder_.pop(); - builder_ = null; - } - - } - -private: - // Push the current end of the slice so we can revert to it if needed. - // - // Used by Transaction. - void push() @safe pure nothrow @nogc - in(inProgress, "push called without begin") - in(endStackUsed_ < endStack_.length, "Slice stack overflow") - { - endStack_[endStackUsed_++] = end_; - } - - // Pop the current end of endStack_ and set the end of the slice to the popped - // value, reverting changes since the old end was pushed. - // - // Used by Transaction. - void pop() @safe pure nothrow @nogc - in(inProgress, "pop called without begin") - in(endStackUsed_ > 0, "Trying to pop an empty slice stack") - { - end_ = endStack_[--endStackUsed_]; - } - - // Pop the current end of endStack_, but keep the current end of the slice, applying - // changes made since pushing the old end. - // - // Used by Transaction. - void apply() @safe pure nothrow @nogc - in(inProgress, "apply called without begin") - in(endStackUsed_ > 0, "Trying to apply an empty slice stack") - { - --endStackUsed_; - } -} - - private: // Convert a UTF-8/16/32 buffer to UTF-8, in-place if possible. @@ -728,7 +473,7 @@ private: // this first. // $(D char[] utf8) input converted to UTF-8. May be a slice of input. // $(D size_t characterCount) Number of characters (code points) in input. -auto toUTF8(ubyte[] input, const UTFEncoding encoding) @safe pure nothrow +public auto toUTF8(ubyte[] input, const UTFEncoding encoding) @safe pure nothrow { // Documented in function ddoc. struct Result diff --git a/src/ext_depends/D-YAML/source/dyaml/representer.d b/src/ext_depends/D-YAML/source/dyaml/representer.d index f903b60..4d36ec6 100644 --- a/src/ext_depends/D-YAML/source/dyaml/representer.d +++ b/src/ext_depends/D-YAML/source/dyaml/representer.d @@ -31,11 +31,6 @@ import dyaml.serializer; import dyaml.style; package: -///Exception thrown on Representer errors. -class RepresenterException : YAMLException -{ - mixin ExceptionCtors; -} /** * Represents YAML nodes as scalar, sequence and mapping nodes ready for output. diff --git a/src/ext_depends/D-YAML/source/dyaml/resolver.d b/src/ext_depends/D-YAML/source/dyaml/resolver.d index 16d8419..4e82931 100644 --- a/src/ext_depends/D-YAML/source/dyaml/resolver.d +++ b/src/ext_depends/D-YAML/source/dyaml/resolver.d @@ -100,9 +100,6 @@ struct Resolver } public: - @disable bool opEquals(ref Resolver); - @disable int opCmp(ref Resolver); - /** * Add an implicit scalar resolver. * @@ -209,45 +206,6 @@ struct Resolver assert(false, "Cannot resolve an invalid node"); } } - @safe unittest - { - auto resolver = Resolver.withDefaultResolvers; - - bool tagMatch(string tag, string[] values) @safe - { - const string expected = tag; - foreach(value; values) - { - const string resolved = resolver.resolve(NodeID.scalar, null, value, true); - if(expected != resolved) - { - return false; - } - } - return true; - } - - assert(tagMatch("tag:yaml.org,2002:bool", - ["yes", "NO", "True", "on"])); - assert(tagMatch("tag:yaml.org,2002:float", - ["6.8523015e+5", "685.230_15e+03", "685_230.15", - "190:20:30.15", "-.inf", ".NaN"])); - assert(tagMatch("tag:yaml.org,2002:int", - ["685230", "+685_230", "02472256", "0x_0A_74_AE", - "0b1010_0111_0100_1010_1110", "190:20:30"])); - assert(tagMatch("tag:yaml.org,2002:merge", ["<<"])); - assert(tagMatch("tag:yaml.org,2002:null", ["~", "null", ""])); - assert(tagMatch("tag:yaml.org,2002:str", - ["abcd", "9a8b", "9.1adsf"])); - assert(tagMatch("tag:yaml.org,2002:timestamp", - ["2001-12-15T02:59:43.1Z", - "2001-12-14t21:59:43.10-05:00", - "2001-12-14 21:59:43.10 -5", - "2001-12-15 2:59:43.10", - "2002-12-14"])); - assert(tagMatch("tag:yaml.org,2002:value", ["="])); - assert(tagMatch("tag:yaml.org,2002:yaml", ["!", "&", "*"])); - } ///Returns: Default scalar tag. @property string defaultScalarTag() const pure @safe nothrow {return defaultScalarTag_;} diff --git a/src/ext_depends/D-YAML/source/dyaml/scanner.d b/src/ext_depends/D-YAML/source/dyaml/scanner.d index 77c3e38..f30ce79 100644 --- a/src/ext_depends/D-YAML/source/dyaml/scanner.d +++ b/src/ext_depends/D-YAML/source/dyaml/scanner.d @@ -74,14 +74,6 @@ alias isFlowScalarBreakSpace = among!(' ', '\t', '\0', '\n', '\r', '\u0085', '\u alias isNSAnchorName = c => !c.isWhiteSpace && !c.among!('[', ']', '{', '}', ',', '\uFEFF'); -/// Marked exception thrown at scanner errors. -/// -/// See_Also: MarkedYAMLException -class ScannerException : MarkedYAMLException -{ - mixin MarkedExceptionCtors; -} - /// Generates tokens from data provided by a Reader. struct Scanner { @@ -95,18 +87,12 @@ struct Scanner /// We emit the KEY token before all keys, so when we find a potential simple /// key, we try to locate the corresponding ':' indicator. Simple keys should be /// limited to a single line and 1024 characters. - /// - /// 16 bytes on 64-bit. static struct SimpleKey { - /// Character index in reader where the key starts. - uint charIndex = uint.max; + /// Position of the key + Mark mark; /// Index of the key token from start (first token scanned being 0). uint tokenIndex; - /// Line the key starts at. - uint line; - /// Column the key starts at. - ushort column; /// Is this required to be a simple key? bool required; /// Is this struct "null" (invalid)?. @@ -188,9 +174,14 @@ struct Scanner } /// Set file name. - void name(string name) @safe pure nothrow @nogc + ref inout(string) name() inout @safe return pure nothrow @nogc { - reader_.name = name; + return reader_.name; + } + /// Get a mark from the current reader position + Mark mark() const @safe pure nothrow @nogc + { + return reader_.mark; } private: @@ -198,7 +189,7 @@ struct Scanner /// function. string expected(T)(string expected, T found) { - return text("expected ", expected, ", but found ", found); + return text(expected, ", but found ", found); } /// Determine whether or not we need to fetch more tokens before peeking/getting a token. @@ -284,12 +275,11 @@ struct Scanner foreach(level, ref key; possibleSimpleKeys_) { if(key.isNull) { continue; } - if(key.line != reader_.line || reader_.charIndex - key.charIndex > 1024) + if(key.mark.line != reader_.mark.line || reader_.mark.column - key.mark.column > 1024) { enforce(!key.required, - new ScannerException("While scanning a simple key", - Mark(reader_.name, key.line, key.column), - "could not find expected ':'", reader_.mark)); + new ScannerException("While scanning a simple key, could not find expected ':'", + reader_.mark, "key started here", key.mark)); key.isNull = true; } } @@ -311,17 +301,19 @@ struct Scanner removePossibleSimpleKey(); const tokenCount = tokensTaken_ + cast(uint)tokens_.length; - const line = reader_.line; + const line = reader_.line; const column = reader_.column; - const key = SimpleKey(cast(uint)reader_.charIndex, tokenCount, line, - cast(ushort)min(column, ushort.max), required); + const key = SimpleKey(reader_.mark, tokenCount, required); if(possibleSimpleKeys_.length <= flowLevel_) { const oldLength = possibleSimpleKeys_.length; possibleSimpleKeys_.length = flowLevel_ + 1; - //No need to initialize the last element, it's already done in the next line. - possibleSimpleKeys_[oldLength .. flowLevel_] = SimpleKey.init; + // Make sure all the empty keys are null + foreach (ref emptyKey; possibleSimpleKeys_[oldLength .. flowLevel_]) + { + emptyKey.isNull = true; + } } possibleSimpleKeys_[flowLevel_] = key; } @@ -335,9 +327,8 @@ struct Scanner { const key = possibleSimpleKeys_[flowLevel_]; enforce(!key.required, - new ScannerException("While scanning a simple key", - Mark(reader_.name, key.line, key.column), - "could not find expected ':'", reader_.mark)); + new ScannerException("While scanning a simple key, could not find expected ':'", + reader_.mark, "key started here", key.mark)); possibleSimpleKeys_[flowLevel_].isNull = true; } } @@ -547,18 +538,18 @@ struct Scanner !possibleSimpleKeys_[flowLevel_].isNull) { const key = possibleSimpleKeys_[flowLevel_]; + assert(key.tokenIndex >= tokensTaken_); + possibleSimpleKeys_[flowLevel_].isNull = true; - Mark keyMark = Mark(reader_.name, key.line, key.column); + Mark keyMark = key.mark; const idx = key.tokenIndex - tokensTaken_; - assert(idx >= 0); - // Add KEY. // Manually inserting since tokens are immutable (need linked list). tokens_.insert(keyToken(keyMark, keyMark), idx); // If this key starts a new block mapping, we need to add BLOCK-MAPPING-START. - if(flowLevel_ == 0 && addIndent(key.column)) + if(flowLevel_ == 0 && addIndent(key.mark.column)) { tokens_.insert(blockMappingStartToken(keyMark, keyMark), idx); } @@ -753,23 +744,23 @@ struct Scanner /// /// Assumes that the caller is building a slice in Reader, and puts the scanned /// characters into that slice. - void scanAlphaNumericToSlice(string name)(const Mark startMark) + void scanAlphaNumericToSlice(string name)(ref char[] slice, const Mark startMark) { size_t length; dchar c = reader_.peek(); while(c.isAlphaNum || c.among!('-', '_')) { c = reader_.peek(++length); } - enforce(length > 0, new ScannerException("While scanning " ~ name, - startMark, expected("alphanumeric, '-' or '_'", c), reader_.mark)); + enforce(length > 0, new ScannerException(expected("While scanning a " ~ name ~ ", expected alphanumeric, '-' or '_'", c), + reader_.mark, name~" started here", startMark)); - reader_.sliceBuilder.write(reader_.get(length)); + slice ~= reader_.get(length); } /// Scan a string. /// /// Assumes that the caller is building a slice in Reader, and puts the scanned /// characters into that slice. - void scanAnchorAliasToSlice(const Mark startMark) @safe + char[] readAnchorAlias(const Mark startMark) @safe { size_t length; dchar c = reader_.peek(); @@ -778,10 +769,11 @@ struct Scanner c = reader_.peek(++length); } - enforce(length > 0, new ScannerException("While scanning an anchor or alias", - startMark, expected("a printable character besides '[', ']', '{', '}' and ','", c), reader_.mark)); + enforce(length > 0, new ScannerException( + expected("While scanning an anchor or alias, expected a printable character besides '[', ']', '{', '}' and ','", c), + reader_.mark, "started here", startMark)); - reader_.sliceBuilder.write(reader_.get(length)); + return reader_.get(length); } /// Scan and throw away all characters until next line break. @@ -794,14 +786,14 @@ struct Scanner /// /// Assumes that the caller is building a slice in Reader, and puts the scanned /// characters into that slice. - void scanToNextBreakToSlice() @safe + void scanToNextBreakToSlice(ref char[] slice) @safe { uint length; while(!reader_.peek(length).isBreak) { ++length; } - reader_.sliceBuilder.write(reader_.get(length)); + slice ~= reader_.get(length); } @@ -859,17 +851,15 @@ struct Scanner reader_.forward(); // Scan directive name - reader_.sliceBuilder.begin(); - scanDirectiveNameToSlice(startMark); - const name = reader_.sliceBuilder.finish(); + char[] name; + scanDirectiveNameToSlice(name, startMark); - reader_.sliceBuilder.begin(); + char[] value; // Index where tag handle ends and suffix starts in a tag directive value. uint tagHandleEnd = uint.max; - if(name == "YAML") { scanYAMLDirectiveValueToSlice(startMark); } - else if(name == "TAG") { tagHandleEnd = scanTagDirectiveValueToSlice(startMark); } - char[] value = reader_.sliceBuilder.finish(); + if(name == "YAML") { scanYAMLDirectiveValueToSlice(value, startMark); } + else if(name == "TAG") { tagHandleEnd = scanTagDirectiveValueToSlice(value, startMark); } Mark endMark = reader_.mark; @@ -891,55 +881,55 @@ struct Scanner /// /// Assumes that the caller is building a slice in Reader, and puts the scanned /// characters into that slice. - void scanDirectiveNameToSlice(const Mark startMark) @safe + void scanDirectiveNameToSlice(ref char[] slice, const Mark startMark) @safe { // Scan directive name. - scanAlphaNumericToSlice!"a directive"(startMark); + scanAlphaNumericToSlice!"directive"(slice, startMark); enforce(reader_.peek().among!(' ', '\0', '\n', '\r', '\u0085', '\u2028', '\u2029'), - new ScannerException("While scanning a directive", startMark, - expected("alphanumeric, '-' or '_'", reader_.peek()), reader_.mark)); + new ScannerException(expected("While scanning a directive, expected alphanumeric, '-' or '_'", reader_.peek()), + reader_.mark, "directive started here", startMark)); } /// Scan value of a YAML directive token. Returns major, minor version separated by '.'. /// /// Assumes that the caller is building a slice in Reader, and puts the scanned /// characters into that slice. - void scanYAMLDirectiveValueToSlice(const Mark startMark) @safe + void scanYAMLDirectiveValueToSlice(ref char[] slice, const Mark startMark) @safe { findNextNonSpace(); - scanYAMLDirectiveNumberToSlice(startMark); + scanYAMLDirectiveNumberToSlice(slice, startMark); enforce(reader_.peekByte() == '.', - new ScannerException("While scanning a directive", startMark, - expected("digit or '.'", reader_.peek()), reader_.mark)); + new ScannerException(expected("While scanning a directive, expected digit or '.'", reader_.peek()), + reader_.mark, "directive started here", startMark)); // Skip the '.'. reader_.forward(); - reader_.sliceBuilder.write('.'); - scanYAMLDirectiveNumberToSlice(startMark); + slice ~= '.'; + scanYAMLDirectiveNumberToSlice(slice, startMark); enforce(reader_.peek().among!(' ', '\0', '\n', '\r', '\u0085', '\u2028', '\u2029'), - new ScannerException("While scanning a directive", startMark, - expected("digit or '.'", reader_.peek()), reader_.mark)); + new ScannerException(expected("While scanning a directive, expected digit or '.'", reader_.peek()), + reader_.mark, "directive started here", startMark)); } /// Scan a number from a YAML directive. /// /// Assumes that the caller is building a slice in Reader, and puts the scanned /// characters into that slice. - void scanYAMLDirectiveNumberToSlice(const Mark startMark) @safe + void scanYAMLDirectiveNumberToSlice(ref char[] slice, const Mark startMark) @safe { enforce(isDigit(reader_.peek()), - new ScannerException("While scanning a directive", startMark, - expected("digit", reader_.peek()), reader_.mark)); + new ScannerException(expected("While scanning a directive, expected a digit", reader_.peek()), + reader_.mark, "directive started here", startMark)); // Already found the first digit in the enforce(), so set length to 1. uint length = 1; while(reader_.peek(length).isDigit) { ++length; } - reader_.sliceBuilder.write(reader_.get(length)); + slice ~= reader_.get(length); } /// Scan value of a tag directive. @@ -948,14 +938,14 @@ struct Scanner /// characters into that slice. /// /// Returns: Length of tag handle (which is before tag prefix) in scanned data - uint scanTagDirectiveValueToSlice(const Mark startMark) @safe + uint scanTagDirectiveValueToSlice(ref char[] slice, const Mark startMark) @safe { findNextNonSpace(); - const startLength = reader_.sliceBuilder.length; - scanTagDirectiveHandleToSlice(startMark); - const handleLength = cast(uint)(reader_.sliceBuilder.length - startLength); + const startLength = slice.length; + scanTagDirectiveHandleToSlice(slice, startMark); + const handleLength = cast(uint)(slice.length - startLength); findNextNonSpace(); - scanTagDirectivePrefixToSlice(startMark); + scanTagDirectivePrefixToSlice(slice, startMark); return handleLength; } @@ -964,24 +954,24 @@ struct Scanner /// /// Assumes that the caller is building a slice in Reader, and puts the scanned /// characters into that slice. - void scanTagDirectiveHandleToSlice(const Mark startMark) @safe + void scanTagDirectiveHandleToSlice(ref char[] slice, const Mark startMark) @safe { - scanTagHandleToSlice!"directive"(startMark); + scanTagHandleToSlice!"directive"(slice, startMark); enforce(reader_.peekByte() == ' ', - new ScannerException("While scanning a directive handle", startMark, - expected("' '", reader_.peek()), reader_.mark)); + new ScannerException(expected("While scanning a directive handle, expected ' '", reader_.peek()), + reader_.mark, "directive started here", startMark)); } /// Scan prefix of a tag directive. /// /// Assumes that the caller is building a slice in Reader, and puts the scanned /// characters into that slice. - void scanTagDirectivePrefixToSlice(const Mark startMark) @safe + void scanTagDirectivePrefixToSlice(ref char[] slice, const Mark startMark) @safe { - scanTagURIToSlice!"directive"(startMark); + scanTagURIToSlice!"directive"(slice, startMark); enforce(reader_.peek().among!(' ', '\0', '\n', '\r', '\u0085', '\u2028', '\u2029'), - new ScannerException("While scanning a directive prefix", startMark, - expected("' '", reader_.peek()), reader_.mark)); + new ScannerException(expected("While scanning a directive prefix, expected ' '", reader_.peek()), + reader_.mark, "directive started here", startMark)); } /// Scan (and ignore) ignored line after a directive. @@ -990,8 +980,8 @@ struct Scanner findNextNonSpace(); if(reader_.peekByte() == '#') { scanToNextBreak(); } enforce(reader_.peek().isBreak, - new ScannerException("While scanning a directive", startMark, - expected("comment or a line break", reader_.peek()), reader_.mark)); + new ScannerException(expected("While scanning a directive, expected a comment or a line break", reader_.peek()), + reader_.mark, "directive started here", startMark)); scanLineBreak(); } @@ -1011,10 +1001,7 @@ struct Scanner const startMark = reader_.mark; reader_.forward(); // The */& character was only peeked, so we drop it now - reader_.sliceBuilder.begin(); - scanAnchorAliasToSlice(startMark); - // On error, value is discarded as we return immediately - char[] value = reader_.sliceBuilder.finish(); + char[] value = readAnchorAlias(startMark); assert(!reader_.peek().isNSAnchorName, "Anchor/alias name not fully scanned"); @@ -1035,8 +1022,7 @@ struct Scanner const startMark = reader_.mark; dchar c = reader_.peek(1); - reader_.sliceBuilder.begin(); - scope(failure) { reader_.sliceBuilder.finish(); } + char[] slice; // Index where tag handle ends and tag suffix starts in the tag value // (slice) we will produce. uint handleEnd; @@ -1046,17 +1032,17 @@ struct Scanner reader_.forward(2); handleEnd = 0; - scanTagURIToSlice!"tag"(startMark); + scanTagURIToSlice!"tag"(slice, startMark); enforce(reader_.peekByte() == '>', - new ScannerException("While scanning a tag", startMark, - expected("'>'", reader_.peek()), reader_.mark)); + new ScannerException(expected("While scanning a tag, expected a '>'", reader_.peek()), + reader_.mark, "tag started here", startMark)); reader_.forward(); } else if(c.isWhiteSpace) { reader_.forward(); handleEnd = 0; - reader_.sliceBuilder.write('!'); + slice ~= '!'; } else { @@ -1076,24 +1062,23 @@ struct Scanner if(useHandle) { - scanTagHandleToSlice!"tag"(startMark); - handleEnd = cast(uint)reader_.sliceBuilder.length; + scanTagHandleToSlice!"tag"(slice, startMark); + handleEnd = cast(uint)slice.length; } else { reader_.forward(); - reader_.sliceBuilder.write('!'); - handleEnd = cast(uint)reader_.sliceBuilder.length; + slice ~= '!'; + handleEnd = cast(uint)slice.length; } - scanTagURIToSlice!"tag"(startMark); + scanTagURIToSlice!"tag"(slice, startMark); } enforce(reader_.peek().isBreakOrSpace, - new ScannerException("While scanning a tag", startMark, expected("' '", reader_.peek()), - reader_.mark)); + new ScannerException(expected("While scanning a tag, expected a ' '", reader_.peek()), + reader_.mark, "tag started here", startMark)); - char[] slice = reader_.sliceBuilder.finish(); return tagToken(startMark, reader_.mark, slice, handleEnd); } @@ -1115,23 +1100,22 @@ struct Scanner Mark endMark; uint indent = max(1, indent_ + 1); - reader_.sliceBuilder.begin(); - alias Transaction = SliceBuilder.Transaction; + char[] slice; // Used to strip the last line breaks written to the slice at the end of the // scalar, which may be needed based on chomping. - Transaction breaksTransaction = Transaction(&reader_.sliceBuilder); + char[] newBreakSlice; // Read the first indentation/line breaks before the scalar. - size_t startLen = reader_.sliceBuilder.length; + size_t startLen = newBreakSlice.length; if(increment == int.min) { - auto indentation = scanBlockScalarIndentationToSlice(); + auto indentation = scanBlockScalarIndentationToSlice(newBreakSlice); endMark = indentation[1]; indent = max(indent, indentation[0]); } else { indent += increment - 1; - endMark = scanBlockScalarBreaksToSlice(indent); + endMark = scanBlockScalarBreaksToSlice(newBreakSlice, indent); } // int.max means there's no line break (int.max is outside UTF-32). @@ -1140,24 +1124,22 @@ struct Scanner // Scan the inner part of the block scalar. while(reader_.column == indent && reader_.peekByte() != '\0') { - breaksTransaction.commit(); + slice ~= newBreakSlice; const bool leadingNonSpace = !reader_.peekByte().among!(' ', '\t'); // This is where the 'interesting' non-whitespace data gets read. - scanToNextBreakToSlice(); + scanToNextBreakToSlice(slice); lineBreak = scanLineBreak(); // This transaction serves to rollback data read in the // scanBlockScalarBreaksToSlice() call. - breaksTransaction = Transaction(&reader_.sliceBuilder); - startLen = reader_.sliceBuilder.length; + newBreakSlice = []; + startLen = slice.length; // The line breaks should actually be written _after_ the if() block // below. We work around that by inserting - endMark = scanBlockScalarBreaksToSlice(indent); + endMark = scanBlockScalarBreaksToSlice(newBreakSlice, indent); - // This will not run during the last iteration (see the if() vs the - // while()), hence breaksTransaction rollback (which happens after this - // loop) will never roll back data written in this if() block. + // This will not run during the last iteration if(reader_.column == indent && reader_.peekByte() != '\0') { // Unfortunately, folding rules are ambiguous. @@ -1168,16 +1150,16 @@ struct Scanner { // No breaks were scanned; no need to insert the space in the // middle of slice. - if(startLen == reader_.sliceBuilder.length) + if(startLen == slice.length + newBreakSlice.length) { - reader_.sliceBuilder.write(' '); + newBreakSlice ~= ' '; } } else { // We need to insert in the middle of the slice in case any line // breaks were scanned. - reader_.sliceBuilder.insert(lineBreak, startLen); + newBreakSlice.insert(lineBreak, 0); } ////this is Clark Evans's interpretation (also in the spec @@ -1208,11 +1190,10 @@ struct Scanner } } - // If chompint is Keep, we keep (commit) the last scanned line breaks + // If chomping is Keep, we keep (commit) the last scanned line breaks // (which are at the end of the scalar). Otherwise re remove them (end the // transaction). - if(chomping == Chomping.keep) { breaksTransaction.commit(); } - else { breaksTransaction.end(); } + if(chomping == Chomping.keep) { slice ~= newBreakSlice; } if(chomping != Chomping.strip && lineBreak != int.max) { // If chomping is Keep, we keep the line break but the first line break @@ -1220,21 +1201,18 @@ struct Scanner // be inserted _before_ the other line breaks. if(chomping == Chomping.keep) { - reader_.sliceBuilder.insert(lineBreak, startLen); + slice.insert(lineBreak, startLen); } - // If chomping is not Keep, breaksTransaction was cancelled so we can - // directly write the first line break (as it isn't stripped - chomping - // is not Strip) + // If chomping is not Keep, discard the line break else { if (lineBreak != '\0') { - reader_.sliceBuilder.write(lineBreak); + slice ~= lineBreak; } } } - char[] slice = reader_.sliceBuilder.finish(); return scalarToken(startMark, endMark, slice, style); } @@ -1257,8 +1235,8 @@ struct Scanner } enforce(c.among!(' ', '\0', '\n', '\r', '\u0085', '\u2028', '\u2029'), - new ScannerException("While scanning a block scalar", startMark, - expected("chomping or indentation indicator", c), reader_.mark)); + new ScannerException(expected("While scanning a block scalar, expected a chomping or indentation indicator", c), + reader_.mark, "scalar started here", startMark)); return tuple(chomping, increment); } @@ -1299,8 +1277,8 @@ struct Scanner assert(increment < 10 && increment >= 0, "Digit has invalid value"); enforce(increment > 0, - new ScannerException("While scanning a block scalar", startMark, - expected("indentation indicator in range 1-9", "0"), reader_.mark)); + new ScannerException(expected("While scanning a block scalar, expected an indentation indicator in range 1-9", "0"), + reader_.mark, "scalar started here", startMark)); reader_.forward(); c = reader_.peek(); @@ -1314,8 +1292,8 @@ struct Scanner if(reader_.peekByte()== '#') { scanToNextBreak(); } enforce(reader_.peek().isBreak, - new ScannerException("While scanning a block scalar", startMark, - expected("comment or line break", reader_.peek()), reader_.mark)); + new ScannerException(expected("While scanning a block scalar, expected a comment or line break", reader_.peek()), + reader_.mark, "scalar started here", startMark)); scanLineBreak(); } @@ -1324,7 +1302,7 @@ struct Scanner /// /// Assumes that the caller is building a slice in Reader, and puts the scanned /// characters into that slice. - Tuple!(uint, Mark) scanBlockScalarIndentationToSlice() @safe + Tuple!(uint, Mark) scanBlockScalarIndentationToSlice(ref char[] slice) @safe { uint maxIndent; Mark endMark = reader_.mark; @@ -1333,7 +1311,7 @@ struct Scanner { if(reader_.peekByte() != ' ') { - reader_.sliceBuilder.write(scanLineBreak()); + slice ~= scanLineBreak(); endMark = reader_.mark; continue; } @@ -1348,7 +1326,7 @@ struct Scanner /// /// Assumes that the caller is building a slice in Reader, and puts the scanned /// characters into that slice. - Mark scanBlockScalarBreaksToSlice(const uint indent) @safe + Mark scanBlockScalarBreaksToSlice(ref char[] slice, const uint indent) @safe { Mark endMark = reader_.mark; @@ -1356,7 +1334,7 @@ struct Scanner { while(reader_.column < indent && reader_.peekByte() == ' ') { reader_.forward(); } if(!reader_.peek().among!('\n', '\r', '\u0085', '\u2028', '\u2029')) { break; } - reader_.sliceBuilder.write(scanLineBreak()); + slice ~= scanLineBreak(); endMark = reader_.mark; } @@ -1369,18 +1347,17 @@ struct Scanner const startMark = reader_.mark; const quote = reader_.get(); - reader_.sliceBuilder.begin(); + char[] slice; - scanFlowScalarNonSpacesToSlice(quotes, startMark); + scanFlowScalarNonSpacesToSlice(slice, quotes, startMark); while(reader_.peek() != quote) { - scanFlowScalarSpacesToSlice(startMark); - scanFlowScalarNonSpacesToSlice(quotes, startMark); + scanFlowScalarSpacesToSlice(slice, startMark); + scanFlowScalarNonSpacesToSlice(slice, quotes, startMark); } reader_.forward(); - auto slice = reader_.sliceBuilder.finish(); return scalarToken(startMark, reader_.mark, slice, quotes); } @@ -1388,7 +1365,7 @@ struct Scanner /// /// Assumes that the caller is building a slice in Reader, and puts the scanned /// characters into that slice. - void scanFlowScalarNonSpacesToSlice(const ScalarStyle quotes, const Mark startMark) + void scanFlowScalarNonSpacesToSlice(ref char[] slice, const ScalarStyle quotes, const Mark startMark) @safe { for(;;) @@ -1398,19 +1375,19 @@ struct Scanner size_t numCodePoints; while(!reader_.peek(numCodePoints).isFlowScalarBreakSpace) { ++numCodePoints; } - if (numCodePoints > 0) { reader_.sliceBuilder.write(reader_.get(numCodePoints)); } + if (numCodePoints > 0) { slice ~= reader_.get(numCodePoints); } c = reader_.peek(); if(quotes == ScalarStyle.singleQuoted && c == '\'' && reader_.peek(1) == '\'') { reader_.forward(2); - reader_.sliceBuilder.write('\''); + slice ~= '\''; } else if((quotes == ScalarStyle.doubleQuoted && c == '\'') || (quotes == ScalarStyle.singleQuoted && c.among!('"', '\\'))) { reader_.forward(); - reader_.sliceBuilder.write(c); + slice ~= c; } else if(quotes == ScalarStyle.doubleQuoted && c == '\\') { @@ -1423,7 +1400,7 @@ struct Scanner // place (in a slice) in case of '\P' and '\L' (very uncommon, // but we don't want to break the spec) char[2] escapeSequence = ['\\', cast(char)c]; - reader_.sliceBuilder.write(escapeSequence); + slice ~= escapeSequence; } else if(c.among!(escapeHexCodeList)) { @@ -1432,32 +1409,27 @@ struct Scanner foreach(i; 0 .. hexLength) { enforce(reader_.peek(i).isHexDigit, - new ScannerException("While scanning a double quoted scalar", startMark, - expected("escape sequence of hexadecimal numbers", - reader_.peek(i)), reader_.mark)); + new ScannerException(expected("While scanning a double quoted scalar, expected an escape sequence of hexadecimal numbers", reader_.peek(i)), + reader_.mark, "scalar started here", startMark)); } char[] hex = reader_.get(hexLength); - enforce((hex.length > 0) && (hex.length <= 8), - new ScannerException("While scanning a double quoted scalar", startMark, - "overflow when parsing an escape sequence of " ~ - "hexadecimal numbers.", reader_.mark)); + assert((hex.length > 0) && (hex.length <= 8), "Hex escape overflow"); char[2] escapeStart = ['\\', cast(char) c]; - reader_.sliceBuilder.write(escapeStart); - reader_.sliceBuilder.write(hex); + slice ~= escapeStart; + slice ~= hex; } else if(c.among!('\n', '\r', '\u0085', '\u2028', '\u2029')) { scanLineBreak(); - scanFlowScalarBreaksToSlice(startMark); + scanFlowScalarBreaksToSlice(slice, startMark); } else { - throw new ScannerException("While scanning a double quoted scalar", startMark, - text("found unsupported escape character ", c), - reader_.mark); + throw new ScannerException(text("While scanning a double quoted scalar, found unsupported escape character ", c), + reader_.mark, "scalar started here", startMark); } } else { return; } @@ -1468,7 +1440,7 @@ struct Scanner /// /// Assumes that the caller is building a slice in Reader, and puts the scanned /// spaces into that slice. - void scanFlowScalarSpacesToSlice(const Mark startMark) @safe + void scanFlowScalarSpacesToSlice(ref char[] slice, const Mark startMark) @safe { // Increase length as long as we see whitespace. size_t length; @@ -1478,14 +1450,14 @@ struct Scanner // Can check the last byte without striding because '\0' is ASCII const c = reader_.peek(length); enforce(c != '\0', - new ScannerException("While scanning a quoted scalar", startMark, - "found unexpected end of buffer", reader_.mark)); + new ScannerException("While scanning a quoted scalar, found unexpected end of buffer", + reader_.mark, "scalar started here", startMark)); // Spaces not followed by a line break. if(!c.among!('\n', '\r', '\u0085', '\u2028', '\u2029')) { reader_.forward(length); - reader_.sliceBuilder.write(whitespaces); + slice ~= whitespaces; return; } @@ -1493,21 +1465,21 @@ struct Scanner reader_.forward(length); const lineBreak = scanLineBreak(); - if(lineBreak != '\n') { reader_.sliceBuilder.write(lineBreak); } + if(lineBreak != '\n') { slice ~= lineBreak; } // If we have extra line breaks after the first, scan them into the // slice. - const bool extraBreaks = scanFlowScalarBreaksToSlice(startMark); + const bool extraBreaks = scanFlowScalarBreaksToSlice(slice, startMark); // No extra breaks, one normal line break. Replace it with a space. - if(lineBreak == '\n' && !extraBreaks) { reader_.sliceBuilder.write(' '); } + if(lineBreak == '\n' && !extraBreaks) { slice ~= ' '; } } /// Scan line breaks in a flow scalar. /// /// Assumes that the caller is building a slice in Reader, and puts the scanned /// line breaks into that slice. - bool scanFlowScalarBreaksToSlice(const Mark startMark) @safe + bool scanFlowScalarBreaksToSlice(ref char[] slice, const Mark startMark) @safe { // True if at least one line break was found. bool anyBreaks; @@ -1517,8 +1489,8 @@ struct Scanner const prefix = reader_.prefix(3); enforce(!(prefix == "---" || prefix == "...") || !reader_.peek(3).isWhiteSpace, - new ScannerException("While scanning a quoted scalar", startMark, - "found unexpected document separator", reader_.mark)); + new ScannerException("While scanning a quoted scalar, found unexpected document separator", + reader_.mark, "scalar started here", startMark)); // Skip any whitespaces. while(reader_.peekByte().among!(' ', '\t')) { reader_.forward(); } @@ -1528,7 +1500,7 @@ struct Scanner const lineBreak = scanLineBreak(); anyBreaks = true; - reader_.sliceBuilder.write(lineBreak); + slice ~= lineBreak; } return anyBreaks; } @@ -1546,10 +1518,9 @@ struct Scanner // document separators at the beginning of the line. // if(indent == 0) { indent = 1; } - reader_.sliceBuilder.begin(); + char[] slice; - alias Transaction = SliceBuilder.Transaction; - Transaction spacesTransaction; + char[] newSpacesSlice; // Stop at a comment. while(reader_.peekByte() != '#') { @@ -1561,7 +1532,8 @@ struct Scanner const cNext = reader_.peek(length + 1); if(c.isWhiteSpace || (flowLevel_ == 0 && c == ':' && cNext.isWhiteSpace) || - (flowLevel_ > 0 && c.among!(',', ':', '?', '[', ']', '{', '}'))) + (flowLevel_ > 0 && c == ':' && (cNext.isWhiteSpace || cNext.among!(',', '[', ']', '{', '}'))) || + (flowLevel_ > 0 && c.among!(',', '[', ']', '{', '}'))) { break; } @@ -1569,38 +1541,26 @@ struct Scanner c = cNext; } - // It's not clear what we should do with ':' in the flow context. - enforce(flowLevel_ == 0 || c != ':' || - reader_.peek(length + 1).isWhiteSpace || - reader_.peek(length + 1).among!(',', '[', ']', '{', '}'), - new ScannerException("While scanning a plain scalar", startMark, - "found unexpected ':' . Please check " ~ - "http://pyyaml.org/wiki/YAMLColonInFlowContext for details.", - reader_.mark)); - if(length == 0) { break; } allowSimpleKey_ = false; - reader_.sliceBuilder.write(reader_.get(length)); + newSpacesSlice ~= reader_.get(length); endMark = reader_.mark; - spacesTransaction.commit(); - spacesTransaction = Transaction(&reader_.sliceBuilder); + slice ~= newSpacesSlice; + newSpacesSlice = []; - const startLength = reader_.sliceBuilder.length; - scanPlainSpacesToSlice(); - if(startLength == reader_.sliceBuilder.length || + const startLength = slice.length; + scanPlainSpacesToSlice(newSpacesSlice); + if(startLength == slice.length + newSpacesSlice.length || (flowLevel_ == 0 && reader_.column < indent)) { break; } } - spacesTransaction.end(); - char[] slice = reader_.sliceBuilder.finish(); - return scalarToken(startMark, endMark, slice, ScalarStyle.plain); } @@ -1608,7 +1568,7 @@ struct Scanner /// /// Assumes that the caller is building a slice in Reader, and puts the spaces /// into that slice. - void scanPlainSpacesToSlice() @safe + void scanPlainSpacesToSlice(ref char[] slice) @trusted { // The specification is really confusing about tabs in plain scalars. // We just forbid them completely. Do not use tabs in YAML! @@ -1623,7 +1583,7 @@ struct Scanner if(!c.isNSChar) { // We have spaces, but no newline. - if(whitespaces.length > 0) { reader_.sliceBuilder.write(whitespaces); } + if(whitespaces.length > 0) { slice ~= whitespaces; } return; } @@ -1642,9 +1602,8 @@ struct Scanner bool extraBreaks; - alias Transaction = SliceBuilder.Transaction; - auto transaction = Transaction(&reader_.sliceBuilder); - if(lineBreak != '\n') { reader_.sliceBuilder.write(lineBreak); } + char[] newSlice; + if(lineBreak != '\n') { newSlice ~= lineBreak; } while(reader_.peek().isNSChar) { if(reader_.peekByte() == ' ') { reader_.forward(); } @@ -1652,27 +1611,28 @@ struct Scanner { const lBreak = scanLineBreak(); extraBreaks = true; - reader_.sliceBuilder.write(lBreak); + newSlice ~= lBreak; if(end(reader_)) { return; } } } - transaction.commit(); + slice ~= newSlice; // No line breaks, only a space. - if(lineBreak == '\n' && !extraBreaks) { reader_.sliceBuilder.write(' '); } + if(lineBreak == '\n' && !extraBreaks) { slice ~= ' '; } } /// Scan handle of a tag token. /// /// Assumes that the caller is building a slice in Reader, and puts the scanned /// characters into that slice. - void scanTagHandleToSlice(string name)(const Mark startMark) + void scanTagHandleToSlice(string name)(ref char[] slice, const Mark startMark) { dchar c = reader_.peek(); - enum contextMsg = "While scanning a " ~ name; + enum contextMsg = "While scanning a " ~ name ~ ", expected a !"; + // should this be an assert? enforce(c == '!', - new ScannerException(contextMsg, startMark, expected("'!'", c), reader_.mark)); + new ScannerException(expected(contextMsg, c), reader_.mark, "tag started here", startMark)); uint length = 1; c = reader_.peek(length); @@ -1684,22 +1644,22 @@ struct Scanner c = reader_.peek(length); } enforce(c == '!', - new ScannerException(contextMsg, startMark, expected("'!'", c), reader_.mark)); + new ScannerException(expected(contextMsg, c), reader_.mark(length), "tag started here", startMark)); ++length; } - reader_.sliceBuilder.write(reader_.get(length)); + slice ~= reader_.get(length); } /// Scan URI in a tag token. /// /// Assumes that the caller is building a slice in Reader, and puts the scanned /// characters into that slice. - void scanTagURIToSlice(string name)(const Mark startMark) + void scanTagURIToSlice(string name)(ref char[] slice, const Mark startMark) { // Note: we do not check if URI is well-formed. dchar c = reader_.peek(); - const startLen = reader_.sliceBuilder.length; + const startLen = slice.length; { uint length; while(c.isAlphaNum || c.isURIChar) @@ -1707,9 +1667,9 @@ struct Scanner if(c == '%') { auto chars = reader_.get(length); - reader_.sliceBuilder.write(chars); + slice ~= chars; length = 0; - scanURIEscapesToSlice!name(startMark); + scanURIEscapesToSlice!name(slice, startMark); } else { ++length; } c = reader_.peek(length); @@ -1717,14 +1677,14 @@ struct Scanner if(length > 0) { auto chars = reader_.get(length); - reader_.sliceBuilder.write(chars); + slice ~= chars; length = 0; } } // OK if we scanned something, error otherwise. - enum contextMsg = "While parsing a " ~ name; - enforce(reader_.sliceBuilder.length > startLen, - new ScannerException(contextMsg, startMark, expected("URI", c), reader_.mark)); + enum contextMsg = "While parsing a " ~ name ~ ", expected a URI"; + enforce(slice.length > startLen, + new ScannerException(expected(contextMsg, c), reader_.mark, "tag started here", startMark)); } // Not @nogc yet because std.utf.decode is not @nogc @@ -1732,7 +1692,7 @@ struct Scanner /// /// Assumes that the caller is building a slice in Reader, and puts the scanned /// characters into that slice. - void scanURIEscapesToSlice(string name)(const Mark startMark) + void scanURIEscapesToSlice(string name)(ref char[] slice, const Mark startMark) { import core.exception : UnicodeException; // URI escapes encode a UTF-8 string. We store UTF-8 code units here for @@ -1747,9 +1707,8 @@ struct Scanner char[2] nextByte = [reader_.peekByte(), reader_.peekByte(1)]; enforce(nextByte[0].isHexDigit && nextByte[1].isHexDigit, - new ScannerException(contextMsg, startMark, - expected("URI escape sequence of 2 hexadecimal " ~ - "numbers", nextByte), reader_.mark)); + new ScannerException(expected(contextMsg ~ ", expected a URI escape sequence of 2 hexadecimal numbers", nextByte), + reader_.mark, "tag started here", startMark)); buffer ~= nextByte[].to!ubyte(16); @@ -1759,14 +1718,13 @@ struct Scanner { foreach (dchar chr; buffer.data) { - reader_.sliceBuilder.write(chr); + slice ~= chr; } } catch (UnicodeException) { - throw new ScannerException(contextMsg, startMark, - "Invalid UTF-8 data encoded in URI escape sequence", - reader_.mark); + throw new ScannerException(contextMsg ~ ", found invalid UTF-8 data encoded in URI escape sequence", + reader_.mark, "tag started here", startMark); } } @@ -1811,16 +1769,22 @@ struct Scanner } } -// Issue 309 - https://github.com/dlang-community/D-YAML/issues/309 -@safe unittest +private void insert(ref char[] slice, const dchar c, const size_t position) @safe pure +in(position <= slice.length, text("Trying to insert after the end of the slice (", position, " > ", slice.length, ")")) { - enum str = q"EOS -exp: | - foobar -EOS".chomp; - - auto r = new Reader(cast(ubyte[])str.dup); - auto s = Scanner(r); - auto elems = s.map!"a.value".filter!"a.length > 0".array; - assert(elems[1] == "foobar"); + const point = position; + const movedLength = slice.length - point; + + // Encode c into UTF-8 + char[4] encodeBuf; + if(c < 0x80) { encodeBuf[0] = cast(char)c; } + const size_t bytes = c < 0x80 ? 1 : encode(encodeBuf, c); + + slice.length += bytes; + if(movedLength > 0) + { + copy(slice[point..point + movedLength * char.sizeof], + slice[point + bytes .. point + bytes + movedLength * char.sizeof]); + } + slice[point .. point + bytes] = encodeBuf[0 .. bytes]; } diff --git a/src/ext_depends/D-YAML/source/dyaml/test/common.d b/src/ext_depends/D-YAML/source/dyaml/test/common.d deleted file mode 100644 index a6bafa9..0000000 --- a/src/ext_depends/D-YAML/source/dyaml/test/common.d +++ /dev/null @@ -1,223 +0,0 @@ - -// Copyright Ferdinand Majerech 2011. -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -module dyaml.test.common; - -version(unittest) -{ - -import dyaml.node; -import dyaml.event; - -import core.exception; -import std.algorithm; -import std.array; -import std.conv; -import std.file; -import std.range; -import std.path; -import std.traits; -import std.typecons; - -package: - -/** -Run a test. - -Params: - testFunction = Unittest function. - unittestExt = Extensions of data files needed for the unittest. - skipExt = Extensions that must not be used for the unittest. - */ -void run(D)(D testFunction, string[] unittestExt, string[] skipExt = []) -{ - immutable string dataDir = __FILE_FULL_PATH__.dirName ~ "/../../../test/data"; - auto testFilenames = findTestFilenames(dataDir); - - if (unittestExt.length > 0) - { - outer: foreach (base, extensions; testFilenames) - { - string[] filenames; - foreach (ext; unittestExt) - { - if (!extensions.canFind(ext)) - { - continue outer; - } - filenames ~= base ~ '.' ~ ext; - } - foreach (ext; skipExt) - { - if (extensions.canFind(ext)) - { - continue outer; - } - } - - execute(testFunction, filenames); - } - } - else - { - execute(testFunction, string[].init); - } -} - -// TODO: remove when a @safe ubyte[] file read can be done. -/** -Reads a file as an array of bytes. - -Params: - filename = Full path to file to read. - -Returns: The file's data. -*/ -ubyte[] readData(string filename) @trusted -{ - import std.file : read; - return cast(ubyte[])read(filename); -} -void assertNodesEqual(const scope Node gotNode, const scope Node expectedNode) @safe -{ - import std.format : format; - assert(gotNode == expectedNode, format!"got %s, expected %s"(gotNode.debugString, expectedNode.debugString)); -} - -/** -Determine if events in events1 are equivalent to events in events2. - -Params: - events1 = A range of events to compare with. - events2 = A second range of events to compare. - -Returns: true if the events are equivalent, false otherwise. -*/ -bool compareEvents(T, U)(T events1, U events2) -if (isInputRange!T && isInputRange!U && is(ElementType!T == Event) && is(ElementType!U == Event)) -{ - foreach (e1, e2; zip(events1, events2)) - { - //Different event types. - if (e1.id != e2.id) - { - return false; - } - //Different anchor (if applicable). - if (e1.id.among!(EventID.sequenceStart, EventID.mappingStart, EventID.alias_, EventID.scalar) - && e1.anchor != e2.anchor) - { - return false; - } - //Different collection tag (if applicable). - if (e1.id.among!(EventID.sequenceStart, EventID.mappingStart) && e1.tag != e2.tag) - { - return false; - } - if (e1.id == EventID.scalar) - { - //Different scalar tag (if applicable). - if (!(e1.implicit || e2.implicit) && e1.tag != e2.tag) - { - return false; - } - //Different scalar value. - if (e1.value != e2.value) - { - return false; - } - } - } - return true; -} -/** -Throw an Error if events in events1 aren't equivalent to events in events2. - -Params: - events1 = First event array to compare. - events2 = Second event array to compare. -*/ -void assertEventsEqual(T, U)(T events1, U events2) -if (isInputRange!T && isInputRange!U && is(ElementType!T == Event) && is(ElementType!U == Event)) -{ - auto events1Copy = events1.array; - auto events2Copy = events2.array; - assert(compareEvents(events1Copy, events2Copy), text("Got '", events1Copy, "', expected '", events2Copy, "'")); -} - -private: - -/** -Find unittest input filenames. - -Params: dir = Directory to look in. - -Returns: Test input base filenames and their extensions. -*/ - //@trusted due to dirEntries -string[][string] findTestFilenames(const string dir) @trusted -{ - //Groups of extensions indexed by base names. - string[][string] names; - foreach (string name; dirEntries(dir, SpanMode.shallow)) - { - if (isFile(name)) - { - string base = name.stripExtension(); - string ext = name.extension(); - if (ext is null) - { - ext = ""; - } - if (ext[0] == '.') - { - ext = ext[1 .. $]; - } - - //If the base name doesn't exist yet, add it; otherwise add new extension. - names[base] = ((base in names) is null) ? [ext] : names[base] ~ ext; - } - } - return names; -} - -/** -Recursively copy an array of strings to a tuple to use for unittest function input. - -Params: - index = Current index in the array/tuple. - tuple = Tuple to copy to. - strings = Strings to copy. -*/ -void stringsToTuple(uint index, F ...)(ref F tuple, const string[] strings) -in(F.length == strings.length) -do -{ - tuple[index] = strings[index]; - static if (index > 0) - { - stringsToTuple!(index - 1, F)(tuple, strings); - } -} - -/** -Execute an unittest on specified files. - -Params: - testName = Name of the unittest. - testFunction = Unittest function. - filenames = Names of input files to test with. - */ -void execute(D)(D testFunction, string[] filenames) -{ - //Convert filenames to parameters tuple and call the test function. - alias F = Parameters!D[0..$]; - F parameters; - stringsToTuple!(F.length - 1, F)(parameters, filenames); - testFunction(parameters); -} - -} // version(unittest) diff --git a/src/ext_depends/D-YAML/source/dyaml/test/compare.d b/src/ext_depends/D-YAML/source/dyaml/test/compare.d deleted file mode 100644 index 5a37fd0..0000000 --- a/src/ext_depends/D-YAML/source/dyaml/test/compare.d +++ /dev/null @@ -1,51 +0,0 @@ - -// Copyright Ferdinand Majerech 2011. -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -module dyaml.test.compare; - -@safe unittest -{ - import dyaml : Loader; - import dyaml.test.common : assertNodesEqual, compareEvents, run; - - /** - Test parser by comparing output from parsing two equivalent YAML files. - - Params: - dataFilename = YAML file to parse. - canonicalFilename = Another file to parse, in canonical YAML format. - */ - static void testParser(string dataFilename, string canonicalFilename) @safe - { - auto dataEvents = Loader.fromFile(dataFilename).parse(); - auto canonicalEvents = Loader.fromFile(canonicalFilename).parse(); - - //BUG: the return value isn't checked! This test currently fails... - compareEvents(dataEvents, canonicalEvents); - } - - /** - Test loader by comparing output from loading two equivalent YAML files. - - Params: - dataFilename = YAML file to load. - canonicalFilename = Another file to load, in canonical YAML format. - */ - static void testLoader(string dataFilename, string canonicalFilename) @safe - { - import std.array : array; - auto data = Loader.fromFile(dataFilename).array; - auto canonical = Loader.fromFile(canonicalFilename).array; - - assert(data.length == canonical.length, "Unequal node count"); - foreach (n; 0 .. data.length) - { - assertNodesEqual(data[n], canonical[n]); - } - } - run(&testParser, ["data", "canonical"]); - run(&testLoader, ["data", "canonical"], ["test_loader_skip"]); -} diff --git a/src/ext_depends/D-YAML/source/dyaml/test/constructor.d b/src/ext_depends/D-YAML/source/dyaml/test/constructor.d index aeb8653..ad9fb62 100644 --- a/src/ext_depends/D-YAML/source/dyaml/test/constructor.d +++ b/src/ext_depends/D-YAML/source/dyaml/test/constructor.d @@ -6,10 +6,9 @@ module dyaml.test.constructor; +package version(unittest): -version(unittest) -{ - +import std.algorithm; import std.conv; import std.datetime; import std.exception; @@ -920,38 +919,3 @@ struct TestStruct return Node(value.to!string, "!tag2"); } } - -} // version(unittest) - - -@safe unittest -{ - import dyaml.test.common : assertNodesEqual, run; - /** - Constructor unittest. - - Params: - dataFilename = File name to read from. - codeDummy = Dummy .code filename, used to determine that - .data file with the same name should be used in this test. - */ - static void testConstructor(string dataFilename, string codeDummy) @safe - { - string base = dataFilename.baseName.stripExtension; - assert((base in expected) !is null, "Unimplemented constructor test: " ~ base); - - auto loader = Loader.fromFile(dataFilename); - - Node[] exp = expected[base]; - - //Compare with expected results document by document. - size_t i; - foreach (node; loader) - { - assertNodesEqual(node, exp[i]); - ++i; - } - assert(i == exp.length); - } - run(&testConstructor, ["data", "code"]); -} diff --git a/src/ext_depends/D-YAML/source/dyaml/test/emitter.d b/src/ext_depends/D-YAML/source/dyaml/test/emitter.d deleted file mode 100644 index 293f236..0000000 --- a/src/ext_depends/D-YAML/source/dyaml/test/emitter.d +++ /dev/null @@ -1,132 +0,0 @@ - -// Copyright Ferdinand Majerech 2011-2014. -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -module dyaml.test.emitter; - -@safe unittest -{ - import std.array : Appender; - import std.range : ElementType, isInputRange; - - import dyaml : CollectionStyle, LineBreak, Loader, Mark, ScalarStyle; - import dyaml.emitter : Emitter; - import dyaml.event : Event, EventID, mappingStartEvent, scalarEvent, sequenceStartEvent; - import dyaml.test.common : assertEventsEqual, run; - - // Try to emit an event range. - static void emitTestCommon(T)(ref Appender!string emitStream, T events, bool canonical = false) @safe - if (isInputRange!T && is(ElementType!T == Event)) - { - auto emitter = Emitter!(typeof(emitStream), char)(emitStream, canonical, 2, 80, LineBreak.unix); - foreach (ref event; events) - { - emitter.emit(event); - } - } - /** - Test emitter by getting events from parsing a file, emitting them, parsing - the emitted result and comparing events from parsing the emitted result with - originally parsed events. - - Params: - dataFilename = YAML file to parse. - canonicalFilename = Canonical YAML file used as dummy to determine - which data files to load. - */ - static void testEmitterOnData(string dataFilename, string canonicalFilename) @safe - { - //Must exist due to Anchor, Tags reference counts. - auto loader = Loader.fromFile(dataFilename); - auto events = loader.parse(); - auto emitStream = Appender!string(); - emitTestCommon(emitStream, events); - - auto loader2 = Loader.fromString(emitStream.data); - loader2.name = "TEST"; - auto newEvents = loader2.parse(); - assertEventsEqual(events, newEvents); - } - /** - Test emitter by getting events from parsing a canonical YAML file, emitting - them both in canonical and normal format, parsing the emitted results and - comparing events from parsing the emitted result with originally parsed events. - - Params: canonicalFilename = Canonical YAML file to parse. - */ - static void testEmitterOnCanonical(string canonicalFilename) @safe - { - //Must exist due to Anchor, Tags reference counts. - auto loader = Loader.fromFile(canonicalFilename); - auto events = loader.parse(); - foreach (canonical; [false, true]) - { - auto emitStream = Appender!string(); - emitTestCommon(emitStream, events, canonical); - - auto loader2 = Loader.fromString(emitStream.data); - loader2.name = "TEST"; - auto newEvents = loader2.parse(); - assertEventsEqual(events, newEvents); - } - } - /** - Test emitter by getting events from parsing a file, emitting them with all - possible scalar and collection styles, parsing the emitted results and - comparing events from parsing the emitted result with originally parsed events. - - Params: - dataFilename = YAML file to parse. - canonicalFilename = Canonical YAML file used as dummy to determine - which data files to load. - */ - static void testEmitterStyles(string dataFilename, string canonicalFilename) @safe - { - foreach (filename; [dataFilename, canonicalFilename]) - { - //must exist due to Anchor, Tags reference counts - auto loader = Loader.fromFile(canonicalFilename); - auto events = loader.parse(); - foreach (flowStyle; [CollectionStyle.block, CollectionStyle.flow]) - { - foreach (style; [ScalarStyle.literal, ScalarStyle.folded, - ScalarStyle.doubleQuoted, ScalarStyle.singleQuoted, - ScalarStyle.plain]) - { - Event[] styledEvents; - foreach (event; events) - { - if (event.id == EventID.scalar) - { - event = scalarEvent(Mark(), Mark(), event.anchor, event.tag, - event.implicit, - event.value, style); - } - else if (event.id == EventID.sequenceStart) - { - event = sequenceStartEvent(Mark(), Mark(), event.anchor, - event.tag, event.implicit, flowStyle); - } - else if (event.id == EventID.mappingStart) - { - event = mappingStartEvent(Mark(), Mark(), event.anchor, - event.tag, event.implicit, flowStyle); - } - styledEvents ~= event; - } - auto emitStream = Appender!string(); - emitTestCommon(emitStream, styledEvents); - auto loader2 = Loader.fromString(emitStream.data); - loader2.name = "TEST"; - auto newEvents = loader2.parse(); - assertEventsEqual(events, newEvents); - } - } - } - } - run(&testEmitterOnData, ["data", "canonical"]); - run(&testEmitterOnCanonical, ["canonical"]); - run(&testEmitterStyles, ["data", "canonical"]); -} diff --git a/src/ext_depends/D-YAML/source/dyaml/test/errors.d b/src/ext_depends/D-YAML/source/dyaml/test/errors.d deleted file mode 100644 index 43b019c..0000000 --- a/src/ext_depends/D-YAML/source/dyaml/test/errors.d +++ /dev/null @@ -1,64 +0,0 @@ - -// Copyright Ferdinand Majerech 2011-2014 -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -module dyaml.test.errors; - -@safe unittest -{ - import std.array : array; - import std.exception : assertThrown; - - import dyaml : Loader; - import dyaml.test.common : run; - - /** - Loader error unittest from file stream. - - Params: errorFilename = File name to read from. - */ - static void testLoaderError(string errorFilename) @safe - { - assertThrown(Loader.fromFile(errorFilename).array, - __FUNCTION__ ~ "(" ~ errorFilename ~ ") Expected an exception"); - } - - /** - Loader error unittest from string. - - Params: errorFilename = File name to read from. - */ - static void testLoaderErrorString(string errorFilename) @safe - { - assertThrown(Loader.fromFile(errorFilename).array, - __FUNCTION__ ~ "(" ~ errorFilename ~ ") Expected an exception"); - } - - /** - Loader error unittest from filename. - - Params: errorFilename = File name to read from. - */ - static void testLoaderErrorFilename(string errorFilename) @safe - { - assertThrown(Loader.fromFile(errorFilename).array, - __FUNCTION__ ~ "(" ~ errorFilename ~ ") Expected an exception"); - } - - /** - Loader error unittest loading a single document from a file. - - Params: errorFilename = File name to read from. - */ - static void testLoaderErrorSingle(string errorFilename) @safe - { - assertThrown(Loader.fromFile(errorFilename).load(), - __FUNCTION__ ~ "(" ~ errorFilename ~ ") Expected an exception"); - } - run(&testLoaderError, ["loader-error"]); - run(&testLoaderErrorString, ["loader-error"]); - run(&testLoaderErrorFilename, ["loader-error"]); - run(&testLoaderErrorSingle, ["single-loader-error"]); -} diff --git a/src/ext_depends/D-YAML/source/dyaml/test/inputoutput.d b/src/ext_depends/D-YAML/source/dyaml/test/inputoutput.d deleted file mode 100644 index 758def8..0000000 --- a/src/ext_depends/D-YAML/source/dyaml/test/inputoutput.d +++ /dev/null @@ -1,92 +0,0 @@ - -// Copyright Ferdinand Majerech 2011-2014. -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -module dyaml.test.inputoutput; - -@safe unittest -{ - import std.array : join, split; - import std.conv : to; - import std.exception : assertThrown; - import std.file : readText; - import std.system : endian, Endian; - - import dyaml : Loader, Node, YAMLException; - import dyaml.test.common : run; - - /** - Get an UTF-16 byte order mark. - - Params: wrong = Get the incorrect BOM for this system. - - Returns: UTF-16 byte order mark. - */ - static wchar bom16(bool wrong = false) pure @safe - { - wchar little = '\uFEFF'; - wchar big = '\uFFFE'; - if (!wrong) - { - return endian == Endian.littleEndian ? little : big; - } - return endian == Endian.littleEndian ? big : little; - } - /** - Get an UTF-32 byte order mark. - - Params: wrong = Get the incorrect BOM for this system. - - Returns: UTF-32 byte order mark. - */ - static dchar bom32(bool wrong = false) pure @safe - { - dchar little = '\uFEFF'; - dchar big = '\uFFFE'; - if (!wrong) - { - return endian == Endian.littleEndian ? little : big; - } - return endian == Endian.littleEndian ? big : little; - } - /** - Unicode input unittest. Tests various encodings. - - Params: unicodeFilename = File name to read from. - */ - static void testUnicodeInput(string unicodeFilename) @safe - { - string data = readText(unicodeFilename); - string expected = data.split().join(" "); - - Node output = Loader.fromString(data).load(); - assert(output.as!string == expected); - - foreach (buffer; [cast(ubyte[]) (bom16() ~ data.to!(wchar[])), - cast(ubyte[]) (bom32() ~ data.to!(dchar[]))]) - { - output = Loader.fromBuffer(buffer).load(); - assert(output.as!string == expected); - } - } - /** - Unicode input error unittest. Tests various encodings with incorrect BOMs. - - Params: unicodeFilename = File name to read from. - */ - static void testUnicodeInputErrors(string unicodeFilename) @safe - { - string data = readText(unicodeFilename); - foreach (buffer; [cast(ubyte[]) (data.to!(wchar[])), - cast(ubyte[]) (data.to!(dchar[])), - cast(ubyte[]) (bom16(true) ~ data.to!(wchar[])), - cast(ubyte[]) (bom32(true) ~ data.to!(dchar[]))]) - { - assertThrown(Loader.fromBuffer(buffer).load()); - } - } - run(&testUnicodeInput, ["unicode"]); - run(&testUnicodeInputErrors, ["unicode"]); -} diff --git a/src/ext_depends/D-YAML/source/dyaml/test/reader.d b/src/ext_depends/D-YAML/source/dyaml/test/reader.d deleted file mode 100644 index c20df6f..0000000 --- a/src/ext_depends/D-YAML/source/dyaml/test/reader.d +++ /dev/null @@ -1,37 +0,0 @@ - -// Copyright Ferdinand Majerech 2011. -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -module dyaml.test.reader; - -@safe unittest -{ - import std.exception :assertThrown; - - import dyaml.test.common : readData, run; - import dyaml.reader : Reader, ReaderException; - - /** - Try reading entire file through Reader, expecting an error (the file is invalid). - - Params: data = Stream to read. - */ - static void runReader(ubyte[] fileData) @safe - { - auto reader = new Reader(fileData); - while(reader.peek() != '\0') { reader.forward(); } - } - - /** - Stream error unittest. Tries to read invalid input files, expecting errors. - - Params: errorFilename = File name to read from. - */ - static void testStreamError(string errorFilename) @safe - { - assertThrown!ReaderException(runReader(readData(errorFilename))); - } - run(&testStreamError, ["stream-error"]); -} diff --git a/src/ext_depends/D-YAML/source/dyaml/test/representer.d b/src/ext_depends/D-YAML/source/dyaml/test/representer.d index 4a1ae67..eeac157 100644 --- a/src/ext_depends/D-YAML/source/dyaml/test/representer.d +++ b/src/ext_depends/D-YAML/source/dyaml/test/representer.d @@ -9,12 +9,12 @@ module dyaml.test.representer; @safe unittest { import std.array : Appender, array; + import std.conv : text; import std.meta : AliasSeq; import std.path : baseName, stripExtension; import std.utf : toUTF8; import dyaml : dumper, Loader, Node; - import dyaml.test.common : assertNodesEqual, run; import dyaml.test.constructor : expected; /** @@ -38,13 +38,9 @@ module dyaml.test.representer; auto loader = Loader.fromString(emitStream.data.toUTF8); loader.name = "TEST"; - const readNodes = loader.array; + auto readNodes = loader.array; - assert(expectedNodes.length == readNodes.length); - foreach (n; 0 .. expectedNodes.length) - { - assertNodesEqual(expectedNodes[n], readNodes[n]); - } + assert(expectedNodes == readNodes, text("Got '", readNodes, "', expected '", expectedNodes, "'")); } } foreach (key, _; expected) diff --git a/src/ext_depends/D-YAML/source/dyaml/test/resolver.d b/src/ext_depends/D-YAML/source/dyaml/test/resolver.d deleted file mode 100644 index ea93720..0000000 --- a/src/ext_depends/D-YAML/source/dyaml/test/resolver.d +++ /dev/null @@ -1,39 +0,0 @@ - -// Copyright Ferdinand Majerech 2011. -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -module dyaml.test.resolver; - -@safe unittest -{ - import std.conv : text; - import std.file : readText; - import std.string : strip; - - import dyaml : Loader, Node, NodeID; - import dyaml.test.common : run; - - - /** - Implicit tag resolution unittest. - - Params: - dataFilename = File with unittest data. - detectFilename = Dummy filename used to specify which data filenames to use. - */ - static void testImplicitResolver(string dataFilename, string detectFilename) @safe - { - const correctTag = readText(detectFilename).strip(); - - auto node = Loader.fromFile(dataFilename).load(); - assert(node.nodeID == NodeID.sequence, text("Expected sequence when reading '", dataFilename, "', got ", node.nodeID)); - foreach (Node scalar; node) - { - assert(scalar.nodeID == NodeID.scalar, text("Expected sequence of scalars when reading '", dataFilename, "', got sequence of ", scalar.nodeID)); - assert(scalar.tag == correctTag, text("Expected tag '", correctTag, "' when reading '", dataFilename, "', got '", scalar.tag, "'")); - } - } - run(&testImplicitResolver, ["data", "detect"]); -} diff --git a/src/ext_depends/D-YAML/source/dyaml/test/suite.d b/src/ext_depends/D-YAML/source/dyaml/test/suite.d new file mode 100644 index 0000000..2146c37 --- /dev/null +++ b/src/ext_depends/D-YAML/source/dyaml/test/suite.d @@ -0,0 +1,384 @@ +module dyaml.test.suite; + +import std.algorithm; +import std.conv; +import std.datetime.stopwatch; +import std.exception; +import std.file; +import std.format; +import std.meta; +import std.path; +import std.range; +import std.stdio; +import std.string; +import std.typecons; +import dyaml; +import dyaml.event; +import dyaml.parser; +import dyaml.reader; +import dyaml.scanner; +import dyaml.test.suitehelpers; + +private version(unittest): + +debug(verbose) +{ + enum alwaysPrintTestResults = true; +} +else +{ + enum alwaysPrintTestResults = false; +} + +struct TestResult { + string name; + Nullable!bool emitter; + Nullable!bool constructor; + Nullable!bool loaderError; + Nullable!bool mark1Error; + Nullable!bool mark2Error; + Nullable!bool implicitResolver; + Nullable!bool events; + Nullable!bool specificLoaderError; + Nullable!Mark mark1; + Nullable!Mark mark2; + Event[] parsedData; + Event[][2 * 2 * 5] parsedDataResult; + Node[] loadedData; + Exception nonDYAMLException; + MarkedYAMLException exception; + string eventsExpected; + string eventsGenerated; + string generatedLoadErrorMessage; + string expectedLoadErrorMessage; + string expectedTags; + string generatedTags; +} + +/// Pretty-print the differences between two arrays +auto prettyDifferencePrinter(alias eqPred = (a,b) => a == b, T)(string title, T[] expected, T[] got, bool trimWhitespace = false) @safe +{ + struct Result + { + void foo() { + toString(nullSink); + } + void toString(W)(ref W writer) const + { + import std.format : formattedWrite; + import std.range : put; + import std.string : lineSplitter; + size_t minWidth = 10; + foreach (line; chain(expected, got)) + { + if (line.text.length + 1 > minWidth) + { + minWidth = line.text.length + 1; + } + } + void writeSideBySide(ubyte colour, string a, string b) + { + if (trimWhitespace) + { + a = strip(a); + b = strip(b); + } + writer.formattedWrite!"%s%-(%s%)%s"(colourPrinter(colour, a), " ".repeat(minWidth - a.length), colourPrinter(colour, b)); + } + writefln!"%-(%s%)%s%-(%s%)"("=".repeat(max(0, minWidth * 2 - title.length) / 2), title, "=".repeat(max(0, minWidth * 2 - title.length) / 2)); + writeSideBySide(0, "Expected", "Got"); + put(writer, "\n"); + foreach (line1, line2; zip(StoppingPolicy.longest, expected, got)) + { + static if (is(T : const char[])) + { + if (trimWhitespace) + { + line1 = strip(line1); + line2 = strip(line2); + } + } + ubyte colour = (eqPred(line1, line2)) ? 32 : 31; + writeSideBySide(colour, line1.text, line2.text); + put(writer, "\n"); + } + } + } + return Result(); +} + +/** +Run a single test from the test suite. +Params: + name = The filename of the document to load, containing the test data +*/ +TestResult runTest(string name, Node doc) @safe +{ + TestResult result; + string[string] testData; + void tryLoadTestData(string what) + { + if (what in doc) + { + testData[what] = doc[what].as!string; + doc.removeAt(what); + } + } + string yamlPath(string testName, string section) + { + return format!"%s:%s"(testName, section); + } + tryLoadTestData("name"); + result.name = name~"#"~testData.get("name", "UNNAMED"); + Nullable!Mark getMark(string key) + { + if (auto node = key in doc) + { + Mark mark; + if ("name" in *node) + { + mark.name = (*node)["name"].as!string; + } + else // default to the test name + { + // if we ever have multiple yaml blocks to parse, be sure to change this + mark.name = yamlPath(result.name, "yaml"); + } + if ("line" in *node) + { + mark.line = cast(ushort)((*node)["line"].as!ushort - 1); + } + if ("column" in *node) + { + mark.column = cast(ushort)((*node)["column"].as!ushort - 1); + } + return Nullable!Mark(mark); + } + return Nullable!Mark.init; + } + tryLoadTestData("tags"); + tryLoadTestData("from"); + tryLoadTestData("yaml"); + tryLoadTestData("fail"); + tryLoadTestData("json"); //not yet implemented + tryLoadTestData("dump"); //not yet implemented + tryLoadTestData("detect"); + tryLoadTestData("tree"); + tryLoadTestData("error"); + tryLoadTestData("code"); + assert("yaml" in testData); + { + result.expectedLoadErrorMessage = testData.get("error", ""); + result.mark1 = getMark("mark"); + result.mark2 = getMark("mark2"); + try + { + result.parsedData = parseData(testData["yaml"], yamlPath(result.name, "yaml")).array; + result.loadedData = Loader.fromString(testData["yaml"], yamlPath(result.name, "yaml")).array; + result.emitter = testEmitterStyles(yamlPath(result.name, "canonical"), result.parsedData, result.parsedDataResult); + result.mark1Error = result.mark1.isNull; + result.mark2Error = result.mark2.isNull; + } + catch (MarkedYAMLException e) + { + result.exception = e; + result.generatedLoadErrorMessage = e.msg; + result.mark1Error = !result.mark1.isNull && (result.mark1.get() == e.mark); + result.mark2Error = result.mark2 == e.mark2; + if (testData.get("fail", "false") == "false") + { + result.loaderError = false; + } + else + { + result.loaderError = true; + } + } + catch (Exception e) + { + // all non-DYAML exceptions are failures. + result.nonDYAMLException = e; + result.generatedLoadErrorMessage = e.msg; + result.loaderError = false; + } + result.specificLoaderError = strip(result.generatedLoadErrorMessage) == strip(result.expectedLoadErrorMessage); + } + if (result.loaderError.get(false)) + { + // skip other tests if loading failure was expected, because we don't + // have a way to run them yet + return result; + } + if ("tree" in testData) + { + result.eventsGenerated = result.parsedData.map!(x => strip(x.text)).join("\n"); + result.eventsExpected = testData["tree"].lineSplitter.map!(x => strip(x)).join("\n"); + result.events = result.eventsGenerated == result.eventsExpected; + } + if ("code" in testData) + { + result.constructor = testConstructor(testData["yaml"], testData["code"]); + } + if ("detect" in testData) + { + result.implicitResolver = testImplicitResolver(yamlPath(result.name, "yaml"), testData["yaml"], testData["detect"], result.generatedTags, result.expectedTags); + } + foreach (string remaining, Node _; doc) + { + writeln("Warning: Unhandled section '", remaining, "' in ", result.name); + } + return result; +} + +enum goodColour = 32; +enum badColour = 31; +/** +Print something to the console in colour. +Params: + colour = The id of the colour to print, using the 256-colour palette + data = Something to print +*/ +private auto colourPrinter(T)(ubyte colour, T data) @safe pure +{ + struct Printer + { + void toString(S)(ref S sink) + { + sink.formattedWrite!"\033[%s;1m%s\033[0m"(colour, data); + } + } + return Printer(); +} + +/** +Run all tests in the test suite and print relevant results. The test docs are +all found in the ./test/data dir. +*/ +bool runTests() +{ + auto stopWatch = StopWatch(AutoStart.yes); + bool failed; + uint testsRun, testSetsRun, testsFailed; + foreach (string name; dirEntries(buildNormalizedPath("test"), "*.yaml", SpanMode.depth)/*.chain(dirEntries(buildNormalizedPath("yaml-test-suite/src"), "*.yaml", SpanMode.depth))*/) + { + Node doc; + try + { + doc = Loader.fromFile(name).load(); + } + catch (Exception e) + { + writefln!"[%s] %s"(colourPrinter(badColour, "FAIL"), name); + writeln(colourPrinter(badColour, e)); + assert(0, "Could not load test doc '"~name~"', bailing"); + } + assert (doc.nodeID == NodeID.sequence, name~"'s root node is not a sequence!"); + foreach (Node test; doc) + { + testSetsRun++; + bool resultPrinted; + // make sure the paths are normalized on windows by replacing backslashes with slashes + TestResult result = runTest(name.replace("\\", "/"), test); + void printResult(string label, Nullable!bool value) + { + if (!value.isNull) + { + if (!value.get) + { + testsFailed++; + } + testsRun++; + } + if (alwaysPrintTestResults && value.get(false)) + { + resultPrinted = true; + writef!"[%s]"(colourPrinter(goodColour, label)); + } + else if (!value.get(true)) + { + resultPrinted = true; + failed = true; + writef!"[%s]"(colourPrinter(badColour, label)); + } + } + printResult("Emitter", result.emitter); + printResult("Constructor", result.constructor); + printResult("Mark", result.mark1Error); + printResult("Context mark", result.mark2Error); + printResult("LoaderError", result.loaderError); + printResult("Resolver", result.implicitResolver); + printResult("Events", result.events); + printResult("SpecificLoaderError", result.specificLoaderError); + if (resultPrinted) + { + writeln(" ", result.name); + } + if (!result.loaderError.get(true)) + { + if (result.exception is null && result.nonDYAMLException is null) + { + writeln("\tNo Exception thrown"); + } + else if (result.nonDYAMLException !is null) + { + writeln(result.nonDYAMLException); + } + else if (result.exception !is null) + { + writeln(result.exception); + } + } + else + { + if (!result.mark1Error.get(true)) + { + writeln(prettyDifferencePrinter("Mark mismatch", [result.mark1.text], [result.exception.mark.text])); + } + if (!result.mark2Error.get(true)) + { + writeln(prettyDifferencePrinter("Context mark mismatch", [result.mark2.text], [result.exception.mark2.text])); + } + } + if (!result.emitter.get(true)) + { + enum titles = [ "Normal", "Canonical" ]; + enum styleTitles = + [ + "Block literal", "Block folded", "Block double-quoted", "Block single-quoted", "Block plain", + "Flow literal", "Flow folded", "Flow double-quoted", "Flow single-quoted", "Flow plain", + "Block literal", "Block folded", "Block double-quoted", "Block single-quoted", "Block plain", + "Flow literal", "Flow folded", "Flow double-quoted", "Flow single-quoted", "Flow plain", + ]; + foreach (idx, parsed; result.parsedDataResult) + { + writeln(prettyDifferencePrinter!eventCompare(styleTitles[idx], result.parsedData, parsed)); + } + } + if (!result.events.get(true)) + { + writeln(prettyDifferencePrinter("Events", result.eventsExpected.splitLines, result.eventsGenerated.splitLines, true)); + } + if (!result.specificLoaderError.get(true)) + { + writeln(prettyDifferencePrinter("Expected error", result.expectedLoadErrorMessage.splitLines, result.generatedLoadErrorMessage.splitLines)); + } + if (!result.implicitResolver.get(true)) + { + writeln(prettyDifferencePrinter("Expected error", result.expectedTags.splitLines, result.generatedTags.splitLines)); + } + } + } + if (alwaysPrintTestResults || failed) + { + if (testsFailed > 0) + { + writeln(colourPrinter(badColour, "tests failed: "), testsFailed); + } + writeln(testSetsRun, " test sets (", testsRun, " tests total) completed successfully in ", stopWatch.peek()); + } + return failed; +} + +unittest { + assert(!runTests()); +} diff --git a/src/ext_depends/D-YAML/source/dyaml/test/suitehelpers.d b/src/ext_depends/D-YAML/source/dyaml/test/suitehelpers.d new file mode 100644 index 0000000..3016843 --- /dev/null +++ b/src/ext_depends/D-YAML/source/dyaml/test/suitehelpers.d @@ -0,0 +1,224 @@ + +// Copyright Ferdinand Majerech 2011. +// Distributed under the Boost Software License, Version 1.0. +// (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +module dyaml.test.suitehelpers; + +import dyaml; +import dyaml.emitter; +import dyaml.event; +import dyaml.parser; +import dyaml.reader; +import dyaml.scanner; +import dyaml.token; +import dyaml.test.constructor; + +import std.algorithm; +import std.array; +import std.conv; +import std.exception; +import std.file; +import std.range; +import std.string; + +package version(unittest): + +// Like other types, wchar and dchar use the system's endianness, so \uFEFF +// will always be the 'correct' BOM and '\uFFFE' will always be the 'wrong' one +enum wchar[] bom16 = ['\uFEFF', '\uFFFE']; +enum dchar[] bom32 = ['\uFEFF', '\uFFFE']; + +Parser parseData(string data, string name = "TEST") @safe +{ + auto reader = Reader(cast(ubyte[])data.dup, name); + auto scanner = Scanner(reader); + return new Parser(scanner); +} + +/** +Test scanner by scanning a document, expecting no errors. + +Params: + name = Name of the document being scanned + data = Data to scan. +*/ +void testScanner(string name, string data) @safe +{ + ubyte[] yamlData = cast(ubyte[])data.dup; + string[] tokens; + foreach (token; Scanner(Reader(yamlData, name))) + { + tokens ~= token.id.text; + } +} + +/** +Implicit tag resolution unittest. + +Params: + name = Name of the document being tested + data = Document to compare + detectData = The tag that each scalar should resolve to +*/ +bool testImplicitResolver(string name, string data, string detectData, out string generatedTags, out string expectedTags) @safe +{ + const correctTag = detectData.strip(); + + const node = Loader.fromString(data, name).load(); + if (node.nodeID != NodeID.sequence) + { + return false; + } + bool success = true; + foreach (const Node scalar; node) + { + generatedTags ~= scalar.tag ~ "\n"; + expectedTags ~= correctTag ~ "\n"; + if ((scalar.nodeID != NodeID.scalar) || (scalar.tag != correctTag)) + { + success = false; + } + } + return success; +} + +// Try to emit an event range. +Event[] emitTestCommon(string name, Event[] events, bool canonical) @safe +{ + auto emitStream = new Appender!string(); + auto emitter = Emitter!(typeof(emitStream), char)(emitStream, canonical, 2, 80, LineBreak.unix); + foreach (event; events) + { + emitter.emit(event); + } + return parseData(emitStream.data, name).array; +} +/** +Test emitter by checking if events remain equal after round-tripping, with and +without canonical output enabled. + +Params: + name = Name of the document being tested + events = Events to test + results = Events that were produced by round-tripping +*/ +bool testEmitter(string name, Event[] events, out Event[][2] results) @safe +{ + bool matching = true; + foreach (idx, canonicalOutput; [false, true]) + { + results[idx] = emitTestCommon(name, events, canonicalOutput); + + if (!equal!eventCompare(events, results[idx])) + { + matching = false; + } + } + return matching; +} +/** +Test emitter by checking if events remain equal after round-tripping, with all +combinations of styles. + +Params: + name = Name of the document being tested + events = Events to test + results = Events that were produced by round-tripping +*/ +bool testEmitterStyles(string name, Event[] events, out Event[][2 * 2 * 5] results) @safe +{ + size_t idx; + foreach (styles; cartesianProduct( + [CollectionStyle.block, CollectionStyle.flow], + [ScalarStyle.literal, ScalarStyle.folded, + ScalarStyle.doubleQuoted, ScalarStyle.singleQuoted, + ScalarStyle.plain], + [false, true])) + { + const collectionStyle = styles[0]; + const scalarStyle = styles[1]; + const canonical = styles[2]; + Event[] styledEvents; + foreach (event; events) + { + if (event.id == EventID.scalar) + { + event = scalarEvent(Mark(), Mark(), event.anchor, event.tag, + event.implicit, + event.value, scalarStyle); + } + else if (event.id == EventID.sequenceStart) + { + event = sequenceStartEvent(Mark(), Mark(), event.anchor, + event.tag, event.implicit, collectionStyle); + } + else if (event.id == EventID.mappingStart) + { + event = mappingStartEvent(Mark(), Mark(), event.anchor, + event.tag, event.implicit, collectionStyle); + } + styledEvents ~= event; + } + auto newEvents = emitTestCommon(name, styledEvents, canonical); + results[idx++] = newEvents; + if (!equal!eventCompare(events, newEvents)) + { + return false; + } + } + return true; +} + +/** +Constructor unittest. + +Params: + data = The document being tested + base = A unique id corresponding to one of the premade sequences in dyaml.test.constructor +*/ +bool testConstructor(string data, string base) @safe +{ + assert((base in expected) !is null, "Unimplemented constructor test: " ~ base); + auto loader = Loader.fromString(data); + + Node[] exp = expected[base]; + + //Compare with expected results document by document. + return equal(loader, exp); +} + +bool eventCompare(const Event a, const Event b) @safe pure +{ + //Different event types. + if (a.id != b.id) + { + return false; + } + //Different anchor (if applicable). + if (a.id.among!(EventID.sequenceStart, EventID.mappingStart, EventID.alias_, EventID.scalar) + && a.anchor != b.anchor) + { + return false; + } + //Different collection tag (if applicable). + if (a.id.among!(EventID.sequenceStart, EventID.mappingStart) && a.tag != b.tag) + { + return false; + } + if (a.id == EventID.scalar) + { + //Different scalar tag (if applicable). + if (!(a.implicit || b.implicit) && a.tag != b.tag) + { + return false; + } + //Different scalar value. + if (a.value != b.value) + { + return false; + } + } + return true; +} diff --git a/src/ext_depends/D-YAML/source/dyaml/test/tokens.d b/src/ext_depends/D-YAML/source/dyaml/test/tokens.d deleted file mode 100644 index d3dce6e..0000000 --- a/src/ext_depends/D-YAML/source/dyaml/test/tokens.d +++ /dev/null @@ -1,93 +0,0 @@ - -// Copyright Ferdinand Majerech 2011. -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -module dyaml.test.tokens; - -@safe unittest -{ - import std.array : split; - import std.conv : text; - import std.file : readText; - - import dyaml.test.common : run; - import dyaml.reader : Reader; - import dyaml.scanner : Scanner; - import dyaml.token : TokenID; - - // Read and scan a YAML doc, returning a range of tokens. - static auto scanTestCommon(string filename) @safe - { - ubyte[] yamlData = cast(ubyte[])readText(filename).dup; - return Scanner(new Reader(yamlData, filename)); - } - - /** - Test tokens output by scanner. - - Params: - dataFilename = File to scan. - tokensFilename = File containing expected tokens. - */ - static void testTokens(string dataFilename, string tokensFilename) @safe - { - //representations of YAML tokens in tokens file. - auto replace = [ - TokenID.directive: "%", - TokenID.documentStart: "---", - TokenID.documentEnd: "...", - TokenID.alias_: "*", - TokenID.anchor: "&", - TokenID.tag: "!", - TokenID.scalar: "_", - TokenID.blockSequenceStart: "[[", - TokenID.blockMappingStart: "{{", - TokenID.blockEnd: "]}", - TokenID.flowSequenceStart: "[", - TokenID.flowSequenceEnd: "]", - TokenID.flowMappingStart: "{", - TokenID.flowMappingEnd: "}", - TokenID.blockEntry: ",", - TokenID.flowEntry: ",", - TokenID.key: "?", - TokenID.value: ":" - ]; - - string[] tokens; - string[] expectedTokens = readText(tokensFilename).split(); - - foreach (token; scanTestCommon(dataFilename)) - { - if (token.id != TokenID.streamStart && token.id != TokenID.streamEnd) - { - tokens ~= replace[token.id]; - } - } - - assert(tokens == expectedTokens, - text("In token test for '", tokensFilename, "', expected '", expectedTokens, "', got '", tokens, "'")); - } - - /** - Test scanner by scanning a file, expecting no errors. - - Params: - dataFilename = File to scan. - canonicalFilename = Another file to scan, in canonical YAML format. - */ - static void testScanner(string dataFilename, string canonicalFilename) @safe - { - foreach (filename; [dataFilename, canonicalFilename]) - { - string[] tokens; - foreach (token; scanTestCommon(filename)) - { - tokens ~= token.id.text; - } - } - } - run(&testTokens, ["data", "tokens"]); - run(&testScanner, ["data", "canonical"]); -} diff --git a/src/ext_depends/D-YAML/source/dyaml/token.d b/src/ext_depends/D-YAML/source/dyaml/token.d index 5400a3f..b67400f 100644 --- a/src/ext_depends/D-YAML/source/dyaml/token.d +++ b/src/ext_depends/D-YAML/source/dyaml/token.d @@ -62,8 +62,6 @@ enum DirectiveType : ubyte /// 32 bytes on 64-bit. struct Token { - @disable int opCmp(ref Token); - // 16B /// Value of the token, if any. /// diff --git a/src/ext_depends/D-YAML/contrib/tinyendian.wrap b/src/ext_depends/D-YAML/subprojects/tinyendian.wrap index 550553b..550553b 100644 --- a/src/ext_depends/D-YAML/contrib/tinyendian.wrap +++ b/src/ext_depends/D-YAML/subprojects/tinyendian.wrap diff --git a/src/ext_depends/D-YAML/test/a-nasty-libyaml-bug.yaml b/src/ext_depends/D-YAML/test/a-nasty-libyaml-bug.yaml new file mode 100644 index 0000000..bd19e88 --- /dev/null +++ b/src/ext_depends/D-YAML/test/a-nasty-libyaml-bug.yaml @@ -0,0 +1,9 @@ +%YAML 1.1 +--- +- name: a-nasty-libyaml-bug + fail: true + mark: { line: 1, column: 4 } + mark2: { line: 1, column: 4 } + error: "While parsing a flow node, expected node content, but found: streamEnd" + yaml: |- + [ [ diff --git a/src/ext_depends/D-YAML/test/bmpchars.yaml b/src/ext_depends/D-YAML/test/bmpchars.yaml new file mode 100644 index 0000000..ab0a755 --- /dev/null +++ b/src/ext_depends/D-YAML/test/bmpchars.yaml @@ -0,0 +1,30 @@ +%YAML 1.1 +--- +- name: bmpchars + yaml: "a: \U00012157" + tree: | + +STR + +DOC + +MAP + =VAL :a + =VAL :ð’…— + -MAP + -DOC + -STR +- name: bmpchars-canonical + yaml: | + %YAML 1.1 + --- + !!map { + ? !!str "a" + : !!str "\U00012157" + } + tree: | + +STR + +DOC --- + +MAP {} <tag:yaml.org,2002:map> + =VAL <tag:yaml.org,2002:str> "a + =VAL <tag:yaml.org,2002:str> "ð’…— + -MAP + -DOC + -STR diff --git a/src/ext_depends/D-YAML/test/colon-in-flow-context.yaml b/src/ext_depends/D-YAML/test/colon-in-flow-context.yaml new file mode 100644 index 0000000..78318b5 --- /dev/null +++ b/src/ext_depends/D-YAML/test/colon-in-flow-context.yaml @@ -0,0 +1,14 @@ +%YAML 1.1 +--- +- name: colon-in-flow-context + yaml: | + { foo:bar } + tree: | + +STR + +DOC + +MAP {} + =VAL :foo:bar + =VAL : + -MAP + -DOC + -STR diff --git a/src/ext_depends/D-YAML/test/composer.yaml b/src/ext_depends/D-YAML/test/composer.yaml new file mode 100644 index 0000000..c7cd1d7 --- /dev/null +++ b/src/ext_depends/D-YAML/test/composer.yaml @@ -0,0 +1,171 @@ +%YAML 1.1 +--- +- name: bool + tags: dyaml composer + detect: | + tag:yaml.org,2002:bool + tree: | + +STR + +DOC + +SEQ + =VAL :yes + =VAL :NO + =VAL :True + =VAL :on + -SEQ + -DOC + -STR + yaml: | + - yes + - NO + - True + - on +- name: float + tags: dyaml composer + detect: | + tag:yaml.org,2002:float + tree: | + +STR + +DOC + +SEQ + =VAL :6.8523015e+5 + =VAL :685.230_15e+03 + =VAL :685_230.15 + =VAL :190:20:30.15 + =VAL :-.inf + =VAL :.NaN + -SEQ + -DOC + -STR + yaml: | + - 6.8523015e+5 + - 685.230_15e+03 + - 685_230.15 + - 190:20:30.15 + - -.inf + - .NaN +- name: int + tags: dyaml composer + detect: | + tag:yaml.org,2002:int + tree: | + +STR + +DOC + +SEQ + =VAL :685230 + =VAL :+685_230 + =VAL :02472256 + =VAL :0x_0A_74_AE + =VAL :0b1010_0111_0100_1010_1110 + =VAL :190:20:30 + -SEQ + -DOC + -STR + yaml: | + - 685230 + - +685_230 + - 02472256 + - 0x_0A_74_AE + - 0b1010_0111_0100_1010_1110 + - 190:20:30 +- name: merge + tags: dyaml composer + detect: | + tag:yaml.org,2002:merge + tree: | + +STR + +DOC + +SEQ + =VAL :<< + -SEQ + -DOC + -STR + yaml: | + - << +- name: "null" + tags: dyaml composer + detect: | + tag:yaml.org,2002:null + tree: | + +STR + +DOC + +SEQ + =VAL : + =VAL :~ + =VAL :null + -SEQ + -DOC + -STR + yaml: | + - + - ~ + - null +- name: str + tags: dyaml composer + detect: | + tag:yaml.org,2002:str + tree: | + +STR + +DOC + +SEQ + =VAL :abcd + =VAL :9a8b + =VAL :9.1adsf + -SEQ + -DOC + -STR + yaml: | + - abcd + - 9a8b + - 9.1adsf +- name: timestamp + tags: dyaml composer + detect: | + tag:yaml.org,2002:timestamp + tree: | + +STR + +DOC + +SEQ + =VAL :2001-12-15T02:59:43.1Z + =VAL :2001-12-14t21:59:43.10-05:00 + =VAL :2001-12-14 21:59:43.10 -5 + =VAL :2001-12-15 2:59:43.10 + =VAL :2002-12-14 + -SEQ + -DOC + -STR + yaml: | + - 2001-12-15T02:59:43.1Z + - 2001-12-14t21:59:43.10-05:00 + - 2001-12-14 21:59:43.10 -5 + - 2001-12-15 2:59:43.10 + - 2002-12-14 +- name: uri + tags: dyaml composer + detect: "tag:example.com,2000:app/tag\U0001F914\n" + tree: | + +STR + +DOC --- + +SEQ + =VAL <tag:example.com,2000:app/tag🤔> :baz + -SEQ + -DOC + -STR + yaml: | + %TAG !e! tag:example.com,2000:app/ + --- + - !e!tag%F0%9F%A4%94 baz +- name: value + tags: dyaml composer + detect: | + tag:yaml.org,2002:value + tree: | + +STR + +DOC + +SEQ + =VAL := + -SEQ + -DOC + -STR + yaml: | + - = diff --git a/src/ext_depends/D-YAML/test/construct.yaml b/src/ext_depends/D-YAML/test/construct.yaml new file mode 100644 index 0000000..21afd42 --- /dev/null +++ b/src/ext_depends/D-YAML/test/construct.yaml @@ -0,0 +1,775 @@ +%YAML 1.1 +--- +- name: construct-binary + tags: dyaml construct + code: construct-binary + tree: | + +STR + +DOC + +MAP + =VAL :canonical + =VAL <tag:yaml.org,2002:binary> "R0lGODlhDAAMAIQAAP//9/X17unp5WZmZgAAAOfn515eXvPz7Y6OjuDg4J+fn5OTk6enp56enmlpaWNjY6Ojo4SEhP/++f/++f/++f/++f/++f/++f/++f/++f/++f/++f/++f/++f/++f/++SH+Dk1hZGUgd2l0aCBHSU1QACwAAAAADAAMAAAFLCAgjoEwnuNAFOhpEMTRiggcz4BNJHrv/zCFcLiwMWYNG84BwwEeECcgggoBADs= + =VAL :generic + =VAL <tag:yaml.org,2002:binary> |R0lGODlhDAAMAIQAAP//9/X17unp5WZmZgAAAOfn515eXvPz7Y6OjuDg4J+fn5\nOTk6enp56enmlpaWNjY6Ojo4SEhP/++f/++f/++f/++f/++f/++f/++f/++f/+\n+f/++f/++f/++f/++f/++SH+Dk1hZGUgd2l0aCBHSU1QACwAAAAADAAMAAAFLC\nAgjoEwnuNAFOhpEMTRiggcz4BNJHrv/zCFcLiwMWYNG84BwwEeECcgggoBADs=\n + =VAL :description + =VAL :The binary value above is a tiny arrow encoded as a gif image. + -MAP + -DOC + -STR + yaml: | + canonical: !!binary "\ + R0lGODlhDAAMAIQAAP//9/X17unp5WZmZgAAAOfn515eXvPz7Y6OjuDg4J+fn5\ + OTk6enp56enmlpaWNjY6Ojo4SEhP/++f/++f/++f/++f/++f/++f/++f/++f/+\ + +f/++f/++f/++f/++f/++SH+Dk1hZGUgd2l0aCBHSU1QACwAAAAADAAMAAAFLC\ + AgjoEwnuNAFOhpEMTRiggcz4BNJHrv/zCFcLiwMWYNG84BwwEeECcgggoBADs=" + generic: !!binary | + R0lGODlhDAAMAIQAAP//9/X17unp5WZmZgAAAOfn515eXvPz7Y6OjuDg4J+fn5 + OTk6enp56enmlpaWNjY6Ojo4SEhP/++f/++f/++f/++f/++f/++f/++f/++f/+ + +f/++f/++f/++f/++f/++SH+Dk1hZGUgd2l0aCBHSU1QACwAAAAADAAMAAAFLC + AgjoEwnuNAFOhpEMTRiggcz4BNJHrv/zCFcLiwMWYNG84BwwEeECcgggoBADs= + description: + The binary value above is a tiny arrow encoded as a gif image. +- name: construct-bool + tags: dyaml construct + code: construct-bool + tree: | + +STR + +DOC + +MAP + =VAL :canonical + =VAL :yes + =VAL :answer + =VAL :NO + =VAL :logical + =VAL :True + =VAL :option + =VAL :on + =VAL :constbool + =VAL :on + =VAL :imutbool + =VAL :on + =VAL :const_bool + =VAL :on + =VAL :imut_bool + =VAL :on + =VAL :but + +MAP + =VAL :y + =VAL :is a string + =VAL :n + =VAL :is a string + -MAP + -MAP + -DOC + -STR + yaml: | + canonical: yes + answer: NO + logical: True + option: on + constbool: on + imutbool: on + const_bool: on + imut_bool: on + + + but: + y: is a string + n: is a string +- name: construct-custom + tags: dyaml construct + code: construct-custom + tree: | + +STR + +DOC --- + +SEQ + +MAP <!tag1> + =VAL :x + =VAL :1 + =VAL 'y + =VAL :2 + =VAL :z + =VAL :3 + -MAP + =VAL <!tag2> :10 + -SEQ + -DOC + -STR + yaml: | + --- + - !tag1 + x: 1 + 'y': 2 + z: 3 + - !tag2 + 10 +- name: construct-float + tags: dyaml construct + code: construct-float + tree: | + +STR + +DOC + +MAP + =VAL :canonical + =VAL :6.8523015e+5 + =VAL :exponential + =VAL :685.230_15e+03 + =VAL :fixed + =VAL :685_230.15 + =VAL :sexagesimal + =VAL :190:20:30.15 + =VAL :negative infinity + =VAL :-.inf + =VAL :not a number + =VAL :.NaN + -MAP + -DOC + -STR + yaml: | + canonical: 6.8523015e+5 + exponential: 685.230_15e+03 + fixed: 685_230.15 + sexagesimal: 190:20:30.15 + negative infinity: -.inf + not a number: .NaN +- name: construct-int + tags: dyaml construct + code: construct-int + tree: | + +STR + +DOC + +MAP + =VAL :canonical + =VAL :685230 + =VAL :decimal + =VAL :+685_230 + =VAL :octal + =VAL :02472256 + =VAL :hexadecimal + =VAL :0x_0A_74_AE + =VAL :binary + =VAL :0b1010_0111_0100_1010_1110 + =VAL :sexagesimal + =VAL :190:20:30 + -MAP + -DOC + -STR + yaml: | + canonical: 685230 + decimal: +685_230 + octal: 02472256 + hexadecimal: 0x_0A_74_AE + binary: 0b1010_0111_0100_1010_1110 + sexagesimal: 190:20:30 +- name: construct-map + tags: dyaml construct + code: construct-map + tree: | + +STR + +DOC + +MAP + =VAL :Block style + +MAP <tag:yaml.org,2002:map> + =VAL :Clark + =VAL :Evans + =VAL :Brian + =VAL :Ingerson + =VAL :Oren + =VAL :Ben-Kiki + -MAP + =VAL :Flow style + +MAP {} <tag:yaml.org,2002:map> + =VAL :Clark + =VAL :Evans + =VAL :Brian + =VAL :Ingerson + =VAL :Oren + =VAL :Ben-Kiki + -MAP + -MAP + -DOC + -STR + yaml: | + # Unordered set of key: value pairs. + Block style: !!map + Clark : Evans + Brian : Ingerson + Oren : Ben-Kiki + Flow style: !!map { Clark: Evans, Brian: Ingerson, Oren: Ben-Kiki } +- name: construct-merge + tags: dyaml construct + code: construct-merge + tree: | + +STR + +DOC --- + +SEQ + +MAP {} &CENTER + =VAL :x + =VAL :1 + =VAL 'y + =VAL :2 + -MAP + +MAP {} &LEFT + =VAL :x + =VAL :0 + =VAL 'y + =VAL :2 + -MAP + +MAP {} &BIG + =VAL :r + =VAL :10 + -MAP + +MAP {} &SMALL + =VAL :r + =VAL :1 + -MAP + +MAP + =VAL :x + =VAL :1 + =VAL 'y + =VAL :2 + =VAL :r + =VAL :10 + =VAL :label + =VAL :center/big + -MAP + +MAP + =VAL :<< + =ALI *CENTER + =VAL :r + =VAL :10 + =VAL :label + =VAL :center/big + -MAP + +MAP + =VAL :<< + +SEQ [] + =ALI *CENTER + =ALI *BIG + -SEQ + =VAL :label + =VAL :center/big + -MAP + +MAP + =VAL :<< + +SEQ [] + =ALI *BIG + =ALI *LEFT + =ALI *SMALL + -SEQ + =VAL :x + =VAL :1 + =VAL :label + =VAL :center/big + -MAP + -SEQ + -DOC + -STR + yaml: | + --- + - &CENTER { x: 1, 'y': 2 } + - &LEFT { x: 0, 'y': 2 } + - &BIG { r: 10 } + - &SMALL { r: 1 } + + # All the following maps are equal: + + - # Explicit keys + x: 1 + 'y': 2 + r: 10 + label: center/big + + - # Merge one map + << : *CENTER + r: 10 + label: center/big + + - # Merge multiple maps + << : [ *CENTER, *BIG ] + label: center/big + + - # Override + << : [ *BIG, *LEFT, *SMALL ] + x: 1 + label: center/big +- name: construct-null + tags: dyaml construct + code: construct-null + tree: | + +STR + +DOC --- + =VAL : + -DOC + +DOC --- + +MAP + =VAL :empty + =VAL : + =VAL :canonical + =VAL :~ + =VAL :english + =VAL :null + =VAL :~ + =VAL :null key + -MAP + -DOC + +DOC --- + +MAP + =VAL :sparse + +SEQ + =VAL :~ + =VAL :2nd entry + =VAL : + =VAL :4th entry + =VAL :Null + -SEQ + -MAP + -DOC + -STR + yaml: | + # A document may be null. + --- + --- + # This mapping has four keys, + # one has a value. + empty: + canonical: ~ + english: null + ~: null key + --- + # This sequence has five + # entries, two have values. + sparse: + - ~ + - 2nd entry + - + - 4th entry + - Null +- name: construct-omap + tags: dyaml construct + code: construct-omap + tree: | + +STR + +DOC + +MAP + =VAL :Bestiary + +SEQ <tag:yaml.org,2002:omap> + +MAP + =VAL :aardvark + =VAL :African pig-like ant eater. Ugly. + -MAP + +MAP + =VAL :anteater + =VAL :South-American ant eater. Two species. + -MAP + +MAP + =VAL :anaconda + =VAL :South-American constrictor snake. Scaly. + -MAP + -SEQ + =VAL :Numbers + +SEQ [] <tag:yaml.org,2002:omap> + +MAP {} + =VAL :one + =VAL :1 + -MAP + +MAP {} + =VAL :two + =VAL :2 + -MAP + +MAP {} + =VAL :three + =VAL :3 + -MAP + -SEQ + -MAP + -DOC + -STR + yaml: | + # Explicitly typed ordered map (dictionary). + Bestiary: !!omap + - aardvark: African pig-like ant eater. Ugly. + - anteater: South-American ant eater. Two species. + - anaconda: South-American constrictor snake. Scaly. + # Etc. + # Flow style + Numbers: !!omap [ one: 1, two: 2, three : 3 ] +- name: construct-pairs + tags: dyaml construct + code: construct-pairs + tree: | + +STR + +DOC + +MAP + =VAL :Block tasks + +SEQ <tag:yaml.org,2002:pairs> + +MAP + =VAL :meeting + =VAL :with team. + -MAP + +MAP + =VAL :meeting + =VAL :with boss. + -MAP + +MAP + =VAL :break + =VAL :lunch. + -MAP + +MAP + =VAL :meeting + =VAL :with client. + -MAP + -SEQ + =VAL :Flow tasks + +SEQ [] <tag:yaml.org,2002:pairs> + +MAP {} + =VAL :meeting + =VAL :with team + -MAP + +MAP {} + =VAL :meeting + =VAL :with boss + -MAP + -SEQ + -MAP + -DOC + -STR + yaml: | + # Explicitly typed pairs. + Block tasks: !!pairs + - meeting: with team. + - meeting: with boss. + - break: lunch. + - meeting: with client. + Flow tasks: !!pairs [ meeting: with team, meeting: with boss ] +- name: construct-seq + tags: dyaml construct + code: construct-seq + tree: | + +STR + +DOC + +MAP + =VAL :Block style + +SEQ <tag:yaml.org,2002:seq> + =VAL :Mercury + =VAL :Venus + =VAL :Earth + =VAL :Mars + =VAL :Jupiter + =VAL :Saturn + =VAL :Uranus + =VAL :Neptune + =VAL :Pluto + -SEQ + =VAL :Flow style + +SEQ [] <tag:yaml.org,2002:seq> + =VAL :Mercury + =VAL :Venus + =VAL :Earth + =VAL :Mars + =VAL :Jupiter + =VAL :Saturn + =VAL :Uranus + =VAL :Neptune + =VAL :Pluto + -SEQ + -MAP + -DOC + -STR + yaml: |+ + # Ordered sequence of nodes + Block style: !!seq + - Mercury # Rotates - no light/dark sides. + - Venus # Deadliest. Aptly named. + - Earth # Mostly dirt. + - Mars # Seems empty. + - Jupiter # The king. + - Saturn # Pretty. + - Uranus # Where the sun hardly shines. + - Neptune # Boring. No rings. + - Pluto # You call this a planet? + Flow style: !!seq [ Mercury, Venus, Earth, Mars, # Rocks + Jupiter, Saturn, Uranus, Neptune, # Gas + Pluto ] # Overrated + +- name: construct-set + tags: dyaml construct + code: construct-set + tree: | + +STR + +DOC + +MAP + =VAL :baseball players + +MAP <tag:yaml.org,2002:set> + =VAL :Mark McGwire + =VAL : + =VAL :Sammy Sosa + =VAL : + =VAL :Ken Griffey + =VAL : + -MAP + =VAL :baseball teams + +MAP {} <tag:yaml.org,2002:set> + =VAL :Boston Red Sox + =VAL : + =VAL :Detroit Tigers + =VAL : + =VAL :New York Yankees + =VAL : + -MAP + -MAP + -DOC + -STR + yaml: | + # Explicitly typed set. + baseball players: !!set + ? Mark McGwire + ? Sammy Sosa + ? Ken Griffey + # Flow style + baseball teams: !!set { Boston Red Sox, Detroit Tigers, New York Yankees } +- name: construct-str-ascii + tags: dyaml construct + code: construct-str-ascii + tree: | + +STR + +DOC --- + =VAL <tag:yaml.org,2002:str> "ascii string + -DOC + -STR + yaml: | + --- !!str "ascii string" +- name: construct-str-utf8 + tags: dyaml construct + code: construct-str-utf8 + tree: | + +STR + +DOC --- + =VAL <tag:yaml.org,2002:str> "Ðто ÑƒÐ½Ð¸ÐºÐ¾Ð´Ð½Ð°Ñ Ñтрока + -DOC + -STR + yaml: | + --- !!str "Ðто ÑƒÐ½Ð¸ÐºÐ¾Ð´Ð½Ð°Ñ Ñтрока" +- name: construct-str + tags: dyaml construct + code: construct-str + tree: | + +STR + +DOC + +MAP + =VAL :string + =VAL :abcd + -MAP + -DOC + -STR + yaml: | + string: abcd +- name: construct-timestamp + tags: dyaml construct + code: construct-timestamp + tree: | + +STR + +DOC + +MAP + =VAL :canonical + =VAL :2001-12-15T02:59:43.1Z + =VAL :valid iso8601 + =VAL :2001-12-14t21:59:43.1-05:00 + =VAL :space separated + =VAL :2001-12-14 21:59:43.1 -5 + =VAL :no time zone (Z) + =VAL :2001-12-15 2:59:43.1 + =VAL :date (00:00:00Z) + =VAL :2002-12-14 + -MAP + -DOC + -STR + yaml: | + canonical: 2001-12-15T02:59:43.1Z + valid iso8601: 2001-12-14t21:59:43.1-05:00 + space separated: 2001-12-14 21:59:43.1 -5 + no time zone (Z): 2001-12-15 2:59:43.1 + date (00:00:00Z): 2002-12-14 +- name: construct-value + tags: dyaml construct + code: construct-value + tree: | + +STR + +DOC --- + +MAP + =VAL :link with + +SEQ + =VAL :library1.dll + =VAL :library2.dll + -SEQ + -MAP + -DOC + +DOC --- + +MAP + =VAL :link with + +SEQ + +MAP + =VAL := + =VAL :library1.dll + =VAL :version + =VAL :1.2 + -MAP + +MAP + =VAL := + =VAL :library2.dll + =VAL :version + =VAL :2.3 + -MAP + -SEQ + -MAP + -DOC + -STR + yaml: | + --- # Old schema + link with: + - library1.dll + - library2.dll + --- # New schema + link with: + - = : library1.dll + version: 1.2 + - = : library2.dll + version: 2.3 +- name: more-floats + code: more-floats + tree: | + +STR + +DOC + +SEQ [] + =VAL :0.0 + =VAL :+1.0 + =VAL :-1.0 + =VAL :+.inf + =VAL :-.inf + =VAL :.nan + =VAL :.nan + -SEQ + -DOC + -STR + yaml: | + [0.0, +1.0, -1.0, +.inf, -.inf, .nan, .nan] +- name: invalid-single-quote-bug + code: invalid-single-quote-bug + yaml: | + - "foo 'bar'" + - "foo\n'bar'" +- name: duplicate-merge-key + code: duplicate-merge-key + tree: | + +STR + +DOC --- + +MAP + =VAL :<< + +MAP {} + =VAL :x + =VAL :1 + =VAL :y + =VAL :2 + -MAP + =VAL :foo + =VAL :bar + =VAL :<< + +MAP {} + =VAL :z + =VAL :3 + =VAL :t + =VAL :4 + -MAP + -MAP + -DOC + -STR + yaml: | + --- + <<: {x: 1, y: 2} + foo: bar + <<: {z: 3, t: 4} +- name: float-representer-2.3-bug + code: float-representer-2.3-bug + tree: | + +STR + +DOC + +MAP + =VAL :1.0 + =VAL :1 + =VAL :+.inf + =VAL :10 + =VAL :-.inf + =VAL :-10 + =VAL :.nan + =VAL :100 + -MAP + -DOC + -STR + yaml: | + #0.0: # hash(0) == hash(nan) and 0 == nan in Python 2.3 + 1.0: 1 + +.inf: 10 + -.inf: -10 + .nan: 100 +- name: single-dot-is-not-float-bug + code: single-dot-is-not-float-bug + tree: | + +STR + +DOC + =VAL :. + -DOC + -STR + yaml: | + . +- name: negative-float-bug + code: negative-float-bug + tree: | + +STR + +DOC + =VAL :-1.0 + -DOC + -STR + yaml: | + -1.0 +- name: timestamp-bugs + code: timestamp-bugs + tree: | + +STR + +DOC + +SEQ + =VAL :2001-12-14 21:59:43.1 -5:30 + =VAL :2001-12-14 21:59:43.1 +5:30 + =VAL :2001-12-14 21:59:43.00101 + =VAL :2001-12-14 21:59:43+1 + =VAL :2001-12-14 21:59:43-1:30 + =VAL :2005-07-08 17:35:04.517600 + -SEQ + -DOC + -STR + yaml: | + - 2001-12-14 21:59:43.1 -5:30 + - 2001-12-14 21:59:43.1 +5:30 + - 2001-12-14 21:59:43.00101 + - 2001-12-14 21:59:43+1 + - 2001-12-14 21:59:43-1:30 + - 2005-07-08 17:35:04.517600 +- name: utf8-implicit + code: utf8-implicit + tree: | + +STR + +DOC --- + =VAL :implicit UTF-8 + -DOC + -STR + yaml: | + --- implicit UTF-8 +- name: utf8 + code: utf8 + tree: | + +STR + +DOC --- + =VAL :UTF-8 + -DOC + -STR + yaml: | + --- UTF-8 diff --git a/src/ext_depends/D-YAML/test/data/a-nasty-libyaml-bug.loader-error b/src/ext_depends/D-YAML/test/data/a-nasty-libyaml-bug.loader-error deleted file mode 100644 index f97d49f..0000000 --- a/src/ext_depends/D-YAML/test/data/a-nasty-libyaml-bug.loader-error +++ /dev/null @@ -1 +0,0 @@ -[ [
\ No newline at end of file diff --git a/src/ext_depends/D-YAML/test/data/aliases-cdumper-bug.code b/src/ext_depends/D-YAML/test/data/aliases-cdumper-bug.code deleted file mode 100644 index 97e0aca..0000000 --- a/src/ext_depends/D-YAML/test/data/aliases-cdumper-bug.code +++ /dev/null @@ -1 +0,0 @@ -#dummy used in constructor test diff --git a/src/ext_depends/D-YAML/test/data/aliases.events b/src/ext_depends/D-YAML/test/data/aliases.events deleted file mode 100644 index 9139b51..0000000 --- a/src/ext_depends/D-YAML/test/data/aliases.events +++ /dev/null @@ -1,8 +0,0 @@ -- !StreamStart -- !DocumentStart -- !SequenceStart -- !Scalar { anchor: 'myanchor', tag: '!mytag', value: 'data' } -- !Alias { anchor: 'myanchor' } -- !SequenceEnd -- !DocumentEnd -- !StreamEnd diff --git a/src/ext_depends/D-YAML/test/data/bmpchars.canonical b/src/ext_depends/D-YAML/test/data/bmpchars.canonical deleted file mode 100644 index 9b77b57..0000000 --- a/src/ext_depends/D-YAML/test/data/bmpchars.canonical +++ /dev/null @@ -1,6 +0,0 @@ -%YAML 1.1 ---- -!!map { - ? !!str "a" - : !!str "ð’…—" -} diff --git a/src/ext_depends/D-YAML/test/data/bmpchars.data b/src/ext_depends/D-YAML/test/data/bmpchars.data deleted file mode 100644 index 28e948e..0000000 --- a/src/ext_depends/D-YAML/test/data/bmpchars.data +++ /dev/null @@ -1 +0,0 @@ -a: ð’…—
\ No newline at end of file diff --git a/src/ext_depends/D-YAML/test/data/bool.data b/src/ext_depends/D-YAML/test/data/bool.data deleted file mode 100644 index 0988b63..0000000 --- a/src/ext_depends/D-YAML/test/data/bool.data +++ /dev/null @@ -1,4 +0,0 @@ -- yes -- NO -- True -- on diff --git a/src/ext_depends/D-YAML/test/data/bool.detect b/src/ext_depends/D-YAML/test/data/bool.detect deleted file mode 100644 index 947ebbb..0000000 --- a/src/ext_depends/D-YAML/test/data/bool.detect +++ /dev/null @@ -1 +0,0 @@ -tag:yaml.org,2002:bool diff --git a/src/ext_depends/D-YAML/test/data/colon-in-flow-context.loader-error b/src/ext_depends/D-YAML/test/data/colon-in-flow-context.loader-error deleted file mode 100644 index 13d5087..0000000 --- a/src/ext_depends/D-YAML/test/data/colon-in-flow-context.loader-error +++ /dev/null @@ -1 +0,0 @@ -{ foo:bar } diff --git a/src/ext_depends/D-YAML/test/data/construct-binary.code b/src/ext_depends/D-YAML/test/data/construct-binary.code deleted file mode 100644 index 97e0aca..0000000 --- a/src/ext_depends/D-YAML/test/data/construct-binary.code +++ /dev/null @@ -1 +0,0 @@ -#dummy used in constructor test diff --git a/src/ext_depends/D-YAML/test/data/construct-binary.data b/src/ext_depends/D-YAML/test/data/construct-binary.data deleted file mode 100644 index dcdb16f..0000000 --- a/src/ext_depends/D-YAML/test/data/construct-binary.data +++ /dev/null @@ -1,12 +0,0 @@ -canonical: !!binary "\ - R0lGODlhDAAMAIQAAP//9/X17unp5WZmZgAAAOfn515eXvPz7Y6OjuDg4J+fn5\ - OTk6enp56enmlpaWNjY6Ojo4SEhP/++f/++f/++f/++f/++f/++f/++f/++f/+\ - +f/++f/++f/++f/++f/++SH+Dk1hZGUgd2l0aCBHSU1QACwAAAAADAAMAAAFLC\ - AgjoEwnuNAFOhpEMTRiggcz4BNJHrv/zCFcLiwMWYNG84BwwEeECcgggoBADs=" -generic: !!binary | - R0lGODlhDAAMAIQAAP//9/X17unp5WZmZgAAAOfn515eXvPz7Y6OjuDg4J+fn5 - OTk6enp56enmlpaWNjY6Ojo4SEhP/++f/++f/++f/++f/++f/++f/++f/++f/+ - +f/++f/++f/++f/++f/++SH+Dk1hZGUgd2l0aCBHSU1QACwAAAAADAAMAAAFLC - AgjoEwnuNAFOhpEMTRiggcz4BNJHrv/zCFcLiwMWYNG84BwwEeECcgggoBADs= -description: - The binary value above is a tiny arrow encoded as a gif image. diff --git a/src/ext_depends/D-YAML/test/data/construct-bool.code b/src/ext_depends/D-YAML/test/data/construct-bool.code deleted file mode 100644 index 97e0aca..0000000 --- a/src/ext_depends/D-YAML/test/data/construct-bool.code +++ /dev/null @@ -1 +0,0 @@ -#dummy used in constructor test diff --git a/src/ext_depends/D-YAML/test/data/construct-bool.data b/src/ext_depends/D-YAML/test/data/construct-bool.data deleted file mode 100644 index 4c0b757..0000000 --- a/src/ext_depends/D-YAML/test/data/construct-bool.data +++ /dev/null @@ -1,13 +0,0 @@ -canonical: yes -answer: NO -logical: True -option: on -constbool: on -imutbool: on -const_bool: on -imut_bool: on - - -but: - y: is a string - n: is a string diff --git a/src/ext_depends/D-YAML/test/data/construct-custom.code b/src/ext_depends/D-YAML/test/data/construct-custom.code deleted file mode 100644 index 97e0aca..0000000 --- a/src/ext_depends/D-YAML/test/data/construct-custom.code +++ /dev/null @@ -1 +0,0 @@ -#dummy used in constructor test diff --git a/src/ext_depends/D-YAML/test/data/construct-custom.data b/src/ext_depends/D-YAML/test/data/construct-custom.data deleted file mode 100644 index f17e4ed..0000000 --- a/src/ext_depends/D-YAML/test/data/construct-custom.data +++ /dev/null @@ -1,7 +0,0 @@ ---- -- !tag1 - x: 1 - 'y': 2 - z: 3 -- !tag2 - 10 diff --git a/src/ext_depends/D-YAML/test/data/construct-float.code b/src/ext_depends/D-YAML/test/data/construct-float.code deleted file mode 100644 index 97e0aca..0000000 --- a/src/ext_depends/D-YAML/test/data/construct-float.code +++ /dev/null @@ -1 +0,0 @@ -#dummy used in constructor test diff --git a/src/ext_depends/D-YAML/test/data/construct-float.data b/src/ext_depends/D-YAML/test/data/construct-float.data deleted file mode 100644 index b662c62..0000000 --- a/src/ext_depends/D-YAML/test/data/construct-float.data +++ /dev/null @@ -1,6 +0,0 @@ -canonical: 6.8523015e+5 -exponential: 685.230_15e+03 -fixed: 685_230.15 -sexagesimal: 190:20:30.15 -negative infinity: -.inf -not a number: .NaN diff --git a/src/ext_depends/D-YAML/test/data/construct-int.code b/src/ext_depends/D-YAML/test/data/construct-int.code deleted file mode 100644 index 97e0aca..0000000 --- a/src/ext_depends/D-YAML/test/data/construct-int.code +++ /dev/null @@ -1 +0,0 @@ -#dummy used in constructor test diff --git a/src/ext_depends/D-YAML/test/data/construct-int.data b/src/ext_depends/D-YAML/test/data/construct-int.data deleted file mode 100644 index 852c314..0000000 --- a/src/ext_depends/D-YAML/test/data/construct-int.data +++ /dev/null @@ -1,6 +0,0 @@ -canonical: 685230 -decimal: +685_230 -octal: 02472256 -hexadecimal: 0x_0A_74_AE -binary: 0b1010_0111_0100_1010_1110 -sexagesimal: 190:20:30 diff --git a/src/ext_depends/D-YAML/test/data/construct-map.code b/src/ext_depends/D-YAML/test/data/construct-map.code deleted file mode 100644 index 97e0aca..0000000 --- a/src/ext_depends/D-YAML/test/data/construct-map.code +++ /dev/null @@ -1 +0,0 @@ -#dummy used in constructor test diff --git a/src/ext_depends/D-YAML/test/data/construct-map.data b/src/ext_depends/D-YAML/test/data/construct-map.data deleted file mode 100644 index 022446d..0000000 --- a/src/ext_depends/D-YAML/test/data/construct-map.data +++ /dev/null @@ -1,6 +0,0 @@ -# Unordered set of key: value pairs. -Block style: !!map - Clark : Evans - Brian : Ingerson - Oren : Ben-Kiki -Flow style: !!map { Clark: Evans, Brian: Ingerson, Oren: Ben-Kiki } diff --git a/src/ext_depends/D-YAML/test/data/construct-merge.code b/src/ext_depends/D-YAML/test/data/construct-merge.code deleted file mode 100644 index 97e0aca..0000000 --- a/src/ext_depends/D-YAML/test/data/construct-merge.code +++ /dev/null @@ -1 +0,0 @@ -#dummy used in constructor test diff --git a/src/ext_depends/D-YAML/test/data/construct-merge.data b/src/ext_depends/D-YAML/test/data/construct-merge.data deleted file mode 100644 index 3fdb2e2..0000000 --- a/src/ext_depends/D-YAML/test/data/construct-merge.data +++ /dev/null @@ -1,27 +0,0 @@ ---- -- &CENTER { x: 1, 'y': 2 } -- &LEFT { x: 0, 'y': 2 } -- &BIG { r: 10 } -- &SMALL { r: 1 } - -# All the following maps are equal: - -- # Explicit keys - x: 1 - 'y': 2 - r: 10 - label: center/big - -- # Merge one map - << : *CENTER - r: 10 - label: center/big - -- # Merge multiple maps - << : [ *CENTER, *BIG ] - label: center/big - -- # Override - << : [ *BIG, *LEFT, *SMALL ] - x: 1 - label: center/big diff --git a/src/ext_depends/D-YAML/test/data/construct-null.code b/src/ext_depends/D-YAML/test/data/construct-null.code deleted file mode 100644 index 97e0aca..0000000 --- a/src/ext_depends/D-YAML/test/data/construct-null.code +++ /dev/null @@ -1 +0,0 @@ -#dummy used in constructor test diff --git a/src/ext_depends/D-YAML/test/data/construct-null.data b/src/ext_depends/D-YAML/test/data/construct-null.data deleted file mode 100644 index 9ad0344..0000000 --- a/src/ext_depends/D-YAML/test/data/construct-null.data +++ /dev/null @@ -1,18 +0,0 @@ -# A document may be null. ---- ---- -# This mapping has four keys, -# one has a value. -empty: -canonical: ~ -english: null -~: null key ---- -# This sequence has five -# entries, two have values. -sparse: - - ~ - - 2nd entry - - - - 4th entry - - Null diff --git a/src/ext_depends/D-YAML/test/data/construct-omap.code b/src/ext_depends/D-YAML/test/data/construct-omap.code deleted file mode 100644 index 97e0aca..0000000 --- a/src/ext_depends/D-YAML/test/data/construct-omap.code +++ /dev/null @@ -1 +0,0 @@ -#dummy used in constructor test diff --git a/src/ext_depends/D-YAML/test/data/construct-omap.data b/src/ext_depends/D-YAML/test/data/construct-omap.data deleted file mode 100644 index 4fa0f45..0000000 --- a/src/ext_depends/D-YAML/test/data/construct-omap.data +++ /dev/null @@ -1,8 +0,0 @@ -# Explicitly typed ordered map (dictionary). -Bestiary: !!omap - - aardvark: African pig-like ant eater. Ugly. - - anteater: South-American ant eater. Two species. - - anaconda: South-American constrictor snake. Scaly. - # Etc. -# Flow style -Numbers: !!omap [ one: 1, two: 2, three : 3 ] diff --git a/src/ext_depends/D-YAML/test/data/construct-pairs.code b/src/ext_depends/D-YAML/test/data/construct-pairs.code deleted file mode 100644 index 97e0aca..0000000 --- a/src/ext_depends/D-YAML/test/data/construct-pairs.code +++ /dev/null @@ -1 +0,0 @@ -#dummy used in constructor test diff --git a/src/ext_depends/D-YAML/test/data/construct-pairs.data b/src/ext_depends/D-YAML/test/data/construct-pairs.data deleted file mode 100644 index 05f55b9..0000000 --- a/src/ext_depends/D-YAML/test/data/construct-pairs.data +++ /dev/null @@ -1,7 +0,0 @@ -# Explicitly typed pairs. -Block tasks: !!pairs - - meeting: with team. - - meeting: with boss. - - break: lunch. - - meeting: with client. -Flow tasks: !!pairs [ meeting: with team, meeting: with boss ] diff --git a/src/ext_depends/D-YAML/test/data/construct-seq.code b/src/ext_depends/D-YAML/test/data/construct-seq.code deleted file mode 100644 index 97e0aca..0000000 --- a/src/ext_depends/D-YAML/test/data/construct-seq.code +++ /dev/null @@ -1 +0,0 @@ -#dummy used in constructor test diff --git a/src/ext_depends/D-YAML/test/data/construct-seq.data b/src/ext_depends/D-YAML/test/data/construct-seq.data deleted file mode 100644 index bb92fd1..0000000 --- a/src/ext_depends/D-YAML/test/data/construct-seq.data +++ /dev/null @@ -1,15 +0,0 @@ -# Ordered sequence of nodes -Block style: !!seq -- Mercury # Rotates - no light/dark sides. -- Venus # Deadliest. Aptly named. -- Earth # Mostly dirt. -- Mars # Seems empty. -- Jupiter # The king. -- Saturn # Pretty. -- Uranus # Where the sun hardly shines. -- Neptune # Boring. No rings. -- Pluto # You call this a planet? -Flow style: !!seq [ Mercury, Venus, Earth, Mars, # Rocks - Jupiter, Saturn, Uranus, Neptune, # Gas - Pluto ] # Overrated - diff --git a/src/ext_depends/D-YAML/test/data/construct-set.code b/src/ext_depends/D-YAML/test/data/construct-set.code deleted file mode 100644 index 97e0aca..0000000 --- a/src/ext_depends/D-YAML/test/data/construct-set.code +++ /dev/null @@ -1 +0,0 @@ -#dummy used in constructor test diff --git a/src/ext_depends/D-YAML/test/data/construct-set.data b/src/ext_depends/D-YAML/test/data/construct-set.data deleted file mode 100644 index e05dc88..0000000 --- a/src/ext_depends/D-YAML/test/data/construct-set.data +++ /dev/null @@ -1,7 +0,0 @@ -# Explicitly typed set. -baseball players: !!set - ? Mark McGwire - ? Sammy Sosa - ? Ken Griffey -# Flow style -baseball teams: !!set { Boston Red Sox, Detroit Tigers, New York Yankees } diff --git a/src/ext_depends/D-YAML/test/data/construct-str-ascii.code b/src/ext_depends/D-YAML/test/data/construct-str-ascii.code deleted file mode 100644 index 97e0aca..0000000 --- a/src/ext_depends/D-YAML/test/data/construct-str-ascii.code +++ /dev/null @@ -1 +0,0 @@ -#dummy used in constructor test diff --git a/src/ext_depends/D-YAML/test/data/construct-str-ascii.data b/src/ext_depends/D-YAML/test/data/construct-str-ascii.data deleted file mode 100644 index 0d93013..0000000 --- a/src/ext_depends/D-YAML/test/data/construct-str-ascii.data +++ /dev/null @@ -1 +0,0 @@ ---- !!str "ascii string" diff --git a/src/ext_depends/D-YAML/test/data/construct-str-utf8.code b/src/ext_depends/D-YAML/test/data/construct-str-utf8.code deleted file mode 100644 index 97e0aca..0000000 --- a/src/ext_depends/D-YAML/test/data/construct-str-utf8.code +++ /dev/null @@ -1 +0,0 @@ -#dummy used in constructor test diff --git a/src/ext_depends/D-YAML/test/data/construct-str-utf8.data b/src/ext_depends/D-YAML/test/data/construct-str-utf8.data deleted file mode 100644 index e355f18..0000000 --- a/src/ext_depends/D-YAML/test/data/construct-str-utf8.data +++ /dev/null @@ -1 +0,0 @@ ---- !!str "Ðто ÑƒÐ½Ð¸ÐºÐ¾Ð´Ð½Ð°Ñ Ñтрока" diff --git a/src/ext_depends/D-YAML/test/data/construct-str.code b/src/ext_depends/D-YAML/test/data/construct-str.code deleted file mode 100644 index 97e0aca..0000000 --- a/src/ext_depends/D-YAML/test/data/construct-str.code +++ /dev/null @@ -1 +0,0 @@ -#dummy used in constructor test diff --git a/src/ext_depends/D-YAML/test/data/construct-str.data b/src/ext_depends/D-YAML/test/data/construct-str.data deleted file mode 100644 index 606ac6b..0000000 --- a/src/ext_depends/D-YAML/test/data/construct-str.data +++ /dev/null @@ -1 +0,0 @@ -string: abcd diff --git a/src/ext_depends/D-YAML/test/data/construct-timestamp.code b/src/ext_depends/D-YAML/test/data/construct-timestamp.code deleted file mode 100644 index 97e0aca..0000000 --- a/src/ext_depends/D-YAML/test/data/construct-timestamp.code +++ /dev/null @@ -1 +0,0 @@ -#dummy used in constructor test diff --git a/src/ext_depends/D-YAML/test/data/construct-timestamp.data b/src/ext_depends/D-YAML/test/data/construct-timestamp.data deleted file mode 100644 index 840273b..0000000 --- a/src/ext_depends/D-YAML/test/data/construct-timestamp.data +++ /dev/null @@ -1,5 +0,0 @@ -canonical: 2001-12-15T02:59:43.1Z -valid iso8601: 2001-12-14t21:59:43.1-05:00 -space separated: 2001-12-14 21:59:43.1 -5 -no time zone (Z): 2001-12-15 2:59:43.1 -date (00:00:00Z): 2002-12-14 diff --git a/src/ext_depends/D-YAML/test/data/construct-value.code b/src/ext_depends/D-YAML/test/data/construct-value.code deleted file mode 100644 index 97e0aca..0000000 --- a/src/ext_depends/D-YAML/test/data/construct-value.code +++ /dev/null @@ -1 +0,0 @@ -#dummy used in constructor test diff --git a/src/ext_depends/D-YAML/test/data/construct-value.data b/src/ext_depends/D-YAML/test/data/construct-value.data deleted file mode 100644 index 3eb7919..0000000 --- a/src/ext_depends/D-YAML/test/data/construct-value.data +++ /dev/null @@ -1,10 +0,0 @@ ---- # Old schema -link with: - - library1.dll - - library2.dll ---- # New schema -link with: - - = : library1.dll - version: 1.2 - - = : library2.dll - version: 2.3 diff --git a/src/ext_depends/D-YAML/test/data/document-separator-in-quoted-scalar.loader-error b/src/ext_depends/D-YAML/test/data/document-separator-in-quoted-scalar.loader-error deleted file mode 100644 index 9eeb0d6..0000000 --- a/src/ext_depends/D-YAML/test/data/document-separator-in-quoted-scalar.loader-error +++ /dev/null @@ -1,11 +0,0 @@ ---- -"this --- is correct" ---- -"this -...is also -correct" ---- -"a quoted scalar -cannot contain ---- -document separators" diff --git a/src/ext_depends/D-YAML/test/data/documents.events b/src/ext_depends/D-YAML/test/data/documents.events deleted file mode 100644 index 775a51a..0000000 --- a/src/ext_depends/D-YAML/test/data/documents.events +++ /dev/null @@ -1,11 +0,0 @@ -- !StreamStart -- !DocumentStart { explicit: false } -- !Scalar { implicit: [true,false], value: 'data' } -- !DocumentEnd -- !DocumentStart -- !Scalar { implicit: [true,false] } -- !DocumentEnd -- !DocumentStart { version: [1,1], tags: { '!': '!foo', '!yaml!': 'tag:yaml.org,2002:', '!ugly!': '!!!!!!!' } } -- !Scalar { implicit: [true,false] } -- !DocumentEnd -- !StreamEnd diff --git a/src/ext_depends/D-YAML/test/data/duplicate-anchor-1.loader-error b/src/ext_depends/D-YAML/test/data/duplicate-anchor-1.loader-error deleted file mode 100644 index 906cf29..0000000 --- a/src/ext_depends/D-YAML/test/data/duplicate-anchor-1.loader-error +++ /dev/null @@ -1,3 +0,0 @@ -- &foo bar -- &bar bar -- &foo bar diff --git a/src/ext_depends/D-YAML/test/data/duplicate-anchor-2.loader-error b/src/ext_depends/D-YAML/test/data/duplicate-anchor-2.loader-error deleted file mode 100644 index 62b4389..0000000 --- a/src/ext_depends/D-YAML/test/data/duplicate-anchor-2.loader-error +++ /dev/null @@ -1 +0,0 @@ -&foo [1, 2, 3, &foo 4] diff --git a/src/ext_depends/D-YAML/test/data/duplicate-mapping-key.loader-error b/src/ext_depends/D-YAML/test/data/duplicate-mapping-key.loader-error deleted file mode 100644 index 55bce77..0000000 --- a/src/ext_depends/D-YAML/test/data/duplicate-mapping-key.loader-error +++ /dev/null @@ -1,2 +0,0 @@ -a: 1 -a: 2
\ No newline at end of file diff --git a/src/ext_depends/D-YAML/test/data/duplicate-merge-key.code b/src/ext_depends/D-YAML/test/data/duplicate-merge-key.code deleted file mode 100644 index 97e0aca..0000000 --- a/src/ext_depends/D-YAML/test/data/duplicate-merge-key.code +++ /dev/null @@ -1 +0,0 @@ -#dummy used in constructor test diff --git a/src/ext_depends/D-YAML/test/data/duplicate-merge-key.data b/src/ext_depends/D-YAML/test/data/duplicate-merge-key.data deleted file mode 100644 index cebc3a1..0000000 --- a/src/ext_depends/D-YAML/test/data/duplicate-merge-key.data +++ /dev/null @@ -1,4 +0,0 @@ ---- -<<: {x: 1, y: 2} -foo: bar -<<: {z: 3, t: 4} diff --git a/src/ext_depends/D-YAML/test/data/duplicate-tag-directive.loader-error b/src/ext_depends/D-YAML/test/data/duplicate-tag-directive.loader-error deleted file mode 100644 index 50c81a0..0000000 --- a/src/ext_depends/D-YAML/test/data/duplicate-tag-directive.loader-error +++ /dev/null @@ -1,3 +0,0 @@ -%TAG !foo! bar -%TAG !foo! baz ---- foo diff --git a/src/ext_depends/D-YAML/test/data/duplicate-yaml-directive.loader-error b/src/ext_depends/D-YAML/test/data/duplicate-yaml-directive.loader-error deleted file mode 100644 index 9b72390..0000000 --- a/src/ext_depends/D-YAML/test/data/duplicate-yaml-directive.loader-error +++ /dev/null @@ -1,3 +0,0 @@ -%YAML 1.1 -%YAML 1.1 ---- foo diff --git a/src/ext_depends/D-YAML/test/data/emit-block-scalar-in-simple-key-context-bug.canonical b/src/ext_depends/D-YAML/test/data/emit-block-scalar-in-simple-key-context-bug.canonical deleted file mode 100644 index 473bed5..0000000 --- a/src/ext_depends/D-YAML/test/data/emit-block-scalar-in-simple-key-context-bug.canonical +++ /dev/null @@ -1,6 +0,0 @@ -%YAML 1.1 ---- !!map -{ - ? !!str "foo" - : !!str "bar" -} diff --git a/src/ext_depends/D-YAML/test/data/emit-block-scalar-in-simple-key-context-bug.data b/src/ext_depends/D-YAML/test/data/emit-block-scalar-in-simple-key-context-bug.data deleted file mode 100644 index b6b42ba..0000000 --- a/src/ext_depends/D-YAML/test/data/emit-block-scalar-in-simple-key-context-bug.data +++ /dev/null @@ -1,4 +0,0 @@ -? |- - foo -: |- - bar diff --git a/src/ext_depends/D-YAML/test/data/emojianchor.canonical b/src/ext_depends/D-YAML/test/data/emojianchor.canonical deleted file mode 100644 index 8a71040..0000000 --- a/src/ext_depends/D-YAML/test/data/emojianchor.canonical +++ /dev/null @@ -1,5 +0,0 @@ -%YAML 1.1 ---- -!!seq [ - !!str "unicode anchor" -] diff --git a/src/ext_depends/D-YAML/test/data/emojianchor.data b/src/ext_depends/D-YAML/test/data/emojianchor.data deleted file mode 100644 index 72c1c37..0000000 --- a/src/ext_depends/D-YAML/test/data/emojianchor.data +++ /dev/null @@ -1,2 +0,0 @@ ---- -- &😠unicode anchor diff --git a/src/ext_depends/D-YAML/test/data/empty-anchor.emitter-error b/src/ext_depends/D-YAML/test/data/empty-anchor.emitter-error deleted file mode 100644 index ce663b6..0000000 --- a/src/ext_depends/D-YAML/test/data/empty-anchor.emitter-error +++ /dev/null @@ -1,5 +0,0 @@ -- !StreamStart -- !DocumentStart -- !Scalar { anchor: '', value: 'foo' } -- !DocumentEnd -- !StreamEnd diff --git a/src/ext_depends/D-YAML/test/data/empty-document-bug.canonical b/src/ext_depends/D-YAML/test/data/empty-document-bug.canonical deleted file mode 100644 index 28a6cf1..0000000 --- a/src/ext_depends/D-YAML/test/data/empty-document-bug.canonical +++ /dev/null @@ -1 +0,0 @@ -# This YAML stream contains no YAML documents. diff --git a/src/ext_depends/D-YAML/test/data/empty-document-bug.data b/src/ext_depends/D-YAML/test/data/empty-document-bug.data deleted file mode 100644 index e69de29..0000000 --- a/src/ext_depends/D-YAML/test/data/empty-document-bug.data +++ /dev/null diff --git a/src/ext_depends/D-YAML/test/data/empty-document-bug.empty b/src/ext_depends/D-YAML/test/data/empty-document-bug.empty deleted file mode 100644 index e69de29..0000000 --- a/src/ext_depends/D-YAML/test/data/empty-document-bug.empty +++ /dev/null diff --git a/src/ext_depends/D-YAML/test/data/empty-documents.single-loader-error b/src/ext_depends/D-YAML/test/data/empty-documents.single-loader-error deleted file mode 100644 index f8dba8d..0000000 --- a/src/ext_depends/D-YAML/test/data/empty-documents.single-loader-error +++ /dev/null @@ -1,2 +0,0 @@ ---- # first document ---- # second document diff --git a/src/ext_depends/D-YAML/test/data/empty-tag-handle.emitter-error b/src/ext_depends/D-YAML/test/data/empty-tag-handle.emitter-error deleted file mode 100644 index 235c899..0000000 --- a/src/ext_depends/D-YAML/test/data/empty-tag-handle.emitter-error +++ /dev/null @@ -1,5 +0,0 @@ -- !StreamStart -- !DocumentStart { tags: { '': 'bar' } } -- !Scalar { value: 'foo' } -- !DocumentEnd -- !StreamEnd diff --git a/src/ext_depends/D-YAML/test/data/empty-tag-prefix.emitter-error b/src/ext_depends/D-YAML/test/data/empty-tag-prefix.emitter-error deleted file mode 100644 index c6c0e95..0000000 --- a/src/ext_depends/D-YAML/test/data/empty-tag-prefix.emitter-error +++ /dev/null @@ -1,5 +0,0 @@ -- !StreamStart -- !DocumentStart { tags: { '!': '' } } -- !Scalar { value: 'foo' } -- !DocumentEnd -- !StreamEnd diff --git a/src/ext_depends/D-YAML/test/data/empty-tag.emitter-error b/src/ext_depends/D-YAML/test/data/empty-tag.emitter-error deleted file mode 100644 index b7ca593..0000000 --- a/src/ext_depends/D-YAML/test/data/empty-tag.emitter-error +++ /dev/null @@ -1,5 +0,0 @@ -- !StreamStart -- !DocumentStart -- !Scalar { tag: '', value: 'key', implicit: [false,false] } -- !DocumentEnd -- !StreamEnd diff --git a/src/ext_depends/D-YAML/test/data/expected-document-end.emitter-error b/src/ext_depends/D-YAML/test/data/expected-document-end.emitter-error deleted file mode 100644 index 0cbab89..0000000 --- a/src/ext_depends/D-YAML/test/data/expected-document-end.emitter-error +++ /dev/null @@ -1,6 +0,0 @@ -- !StreamStart -- !DocumentStart -- !Scalar { value: 'data 1' } -- !Scalar { value: 'data 2' } -- !DocumentEnd -- !StreamEnd diff --git a/src/ext_depends/D-YAML/test/data/expected-document-start.emitter-error b/src/ext_depends/D-YAML/test/data/expected-document-start.emitter-error deleted file mode 100644 index 8ce575e..0000000 --- a/src/ext_depends/D-YAML/test/data/expected-document-start.emitter-error +++ /dev/null @@ -1,4 +0,0 @@ -- !StreamStart -- !MappingStart -- !MappingEnd -- !StreamEnd diff --git a/src/ext_depends/D-YAML/test/data/expected-mapping.loader-error b/src/ext_depends/D-YAML/test/data/expected-mapping.loader-error deleted file mode 100644 index 82aed98..0000000 --- a/src/ext_depends/D-YAML/test/data/expected-mapping.loader-error +++ /dev/null @@ -1 +0,0 @@ ---- !!map [not, a, map] diff --git a/src/ext_depends/D-YAML/test/data/expected-node-1.emitter-error b/src/ext_depends/D-YAML/test/data/expected-node-1.emitter-error deleted file mode 100644 index 36ceca3..0000000 --- a/src/ext_depends/D-YAML/test/data/expected-node-1.emitter-error +++ /dev/null @@ -1,4 +0,0 @@ -- !StreamStart -- !DocumentStart -- !DocumentEnd -- !StreamEnd diff --git a/src/ext_depends/D-YAML/test/data/expected-node-2.emitter-error b/src/ext_depends/D-YAML/test/data/expected-node-2.emitter-error deleted file mode 100644 index 891ee37..0000000 --- a/src/ext_depends/D-YAML/test/data/expected-node-2.emitter-error +++ /dev/null @@ -1,7 +0,0 @@ -- !StreamStart -- !DocumentStart -- !MappingStart -- !Scalar { value: 'key' } -- !MappingEnd -- !DocumentEnd -- !StreamEnd diff --git a/src/ext_depends/D-YAML/test/data/expected-nothing.emitter-error b/src/ext_depends/D-YAML/test/data/expected-nothing.emitter-error deleted file mode 100644 index 62c54d3..0000000 --- a/src/ext_depends/D-YAML/test/data/expected-nothing.emitter-error +++ /dev/null @@ -1,4 +0,0 @@ -- !StreamStart -- !StreamEnd -- !StreamStart -- !StreamEnd diff --git a/src/ext_depends/D-YAML/test/data/expected-scalar.loader-error b/src/ext_depends/D-YAML/test/data/expected-scalar.loader-error deleted file mode 100644 index 7b3171e..0000000 --- a/src/ext_depends/D-YAML/test/data/expected-scalar.loader-error +++ /dev/null @@ -1 +0,0 @@ ---- !!str [not a scalar] diff --git a/src/ext_depends/D-YAML/test/data/expected-sequence.loader-error b/src/ext_depends/D-YAML/test/data/expected-sequence.loader-error deleted file mode 100644 index 08074ea..0000000 --- a/src/ext_depends/D-YAML/test/data/expected-sequence.loader-error +++ /dev/null @@ -1 +0,0 @@ ---- !!seq {foo, bar, baz} diff --git a/src/ext_depends/D-YAML/test/data/expected-stream-start.emitter-error b/src/ext_depends/D-YAML/test/data/expected-stream-start.emitter-error deleted file mode 100644 index 480dc2e..0000000 --- a/src/ext_depends/D-YAML/test/data/expected-stream-start.emitter-error +++ /dev/null @@ -1,2 +0,0 @@ -- !DocumentStart -- !DocumentEnd diff --git a/src/ext_depends/D-YAML/test/data/explicit-document.single-loader-error b/src/ext_depends/D-YAML/test/data/explicit-document.single-loader-error deleted file mode 100644 index 46c6f8b..0000000 --- a/src/ext_depends/D-YAML/test/data/explicit-document.single-loader-error +++ /dev/null @@ -1,4 +0,0 @@ ---- -foo: bar ---- -foo: bar diff --git a/src/ext_depends/D-YAML/test/data/fetch-complex-value-bug.loader-error b/src/ext_depends/D-YAML/test/data/fetch-complex-value-bug.loader-error deleted file mode 100644 index 25fac24..0000000 --- a/src/ext_depends/D-YAML/test/data/fetch-complex-value-bug.loader-error +++ /dev/null @@ -1,2 +0,0 @@ -? "foo" - : "bar" diff --git a/src/ext_depends/D-YAML/test/data/float-representer-2.3-bug.code b/src/ext_depends/D-YAML/test/data/float-representer-2.3-bug.code deleted file mode 100644 index 97e0aca..0000000 --- a/src/ext_depends/D-YAML/test/data/float-representer-2.3-bug.code +++ /dev/null @@ -1 +0,0 @@ -#dummy used in constructor test diff --git a/src/ext_depends/D-YAML/test/data/float-representer-2.3-bug.data b/src/ext_depends/D-YAML/test/data/float-representer-2.3-bug.data deleted file mode 100644 index efd1716..0000000 --- a/src/ext_depends/D-YAML/test/data/float-representer-2.3-bug.data +++ /dev/null @@ -1,5 +0,0 @@ -#0.0: # hash(0) == hash(nan) and 0 == nan in Python 2.3 -1.0: 1 -+.inf: 10 --.inf: -10 -.nan: 100 diff --git a/src/ext_depends/D-YAML/test/data/float.data b/src/ext_depends/D-YAML/test/data/float.data deleted file mode 100644 index 524d5db..0000000 --- a/src/ext_depends/D-YAML/test/data/float.data +++ /dev/null @@ -1,6 +0,0 @@ -- 6.8523015e+5 -- 685.230_15e+03 -- 685_230.15 -- 190:20:30.15 -- -.inf -- .NaN diff --git a/src/ext_depends/D-YAML/test/data/float.detect b/src/ext_depends/D-YAML/test/data/float.detect deleted file mode 100644 index 1e12343..0000000 --- a/src/ext_depends/D-YAML/test/data/float.detect +++ /dev/null @@ -1 +0,0 @@ -tag:yaml.org,2002:float diff --git a/src/ext_depends/D-YAML/test/data/forbidden-entry.loader-error b/src/ext_depends/D-YAML/test/data/forbidden-entry.loader-error deleted file mode 100644 index f2e3079..0000000 --- a/src/ext_depends/D-YAML/test/data/forbidden-entry.loader-error +++ /dev/null @@ -1,2 +0,0 @@ -test: - foo - - bar diff --git a/src/ext_depends/D-YAML/test/data/forbidden-key.loader-error b/src/ext_depends/D-YAML/test/data/forbidden-key.loader-error deleted file mode 100644 index da9b471..0000000 --- a/src/ext_depends/D-YAML/test/data/forbidden-key.loader-error +++ /dev/null @@ -1,2 +0,0 @@ -test: ? foo - : bar diff --git a/src/ext_depends/D-YAML/test/data/forbidden-value.loader-error b/src/ext_depends/D-YAML/test/data/forbidden-value.loader-error deleted file mode 100644 index efd7ce5..0000000 --- a/src/ext_depends/D-YAML/test/data/forbidden-value.loader-error +++ /dev/null @@ -1 +0,0 @@ -test: key: value diff --git a/src/ext_depends/D-YAML/test/data/implicit-document.single-loader-error b/src/ext_depends/D-YAML/test/data/implicit-document.single-loader-error deleted file mode 100644 index f8c9a5c..0000000 --- a/src/ext_depends/D-YAML/test/data/implicit-document.single-loader-error +++ /dev/null @@ -1,3 +0,0 @@ -foo: bar ---- -foo: bar diff --git a/src/ext_depends/D-YAML/test/data/int.data b/src/ext_depends/D-YAML/test/data/int.data deleted file mode 100644 index d44d376..0000000 --- a/src/ext_depends/D-YAML/test/data/int.data +++ /dev/null @@ -1,6 +0,0 @@ -- 685230 -- +685_230 -- 02472256 -- 0x_0A_74_AE -- 0b1010_0111_0100_1010_1110 -- 190:20:30 diff --git a/src/ext_depends/D-YAML/test/data/int.detect b/src/ext_depends/D-YAML/test/data/int.detect deleted file mode 100644 index 575c9eb..0000000 --- a/src/ext_depends/D-YAML/test/data/int.detect +++ /dev/null @@ -1 +0,0 @@ -tag:yaml.org,2002:int diff --git a/src/ext_depends/D-YAML/test/data/invalid-anchor.emitter-error b/src/ext_depends/D-YAML/test/data/invalid-anchor.emitter-error deleted file mode 100644 index 3d2a814..0000000 --- a/src/ext_depends/D-YAML/test/data/invalid-anchor.emitter-error +++ /dev/null @@ -1,5 +0,0 @@ -- !StreamStart -- !DocumentStart -- !Scalar { anchor: '5*5=25', value: 'foo' } -- !DocumentEnd -- !StreamEnd diff --git a/src/ext_depends/D-YAML/test/data/invalid-anchor.loader-error b/src/ext_depends/D-YAML/test/data/invalid-anchor.loader-error deleted file mode 100644 index bfc4ff0..0000000 --- a/src/ext_depends/D-YAML/test/data/invalid-anchor.loader-error +++ /dev/null @@ -1,8 +0,0 @@ ---- -- [ - &correct foo, - *correct, - *correct] # still correct -- *correct: still correct -- &correct-or-not[foo, bar] - diff --git a/src/ext_depends/D-YAML/test/data/invalid-base64-data-2.loader-error b/src/ext_depends/D-YAML/test/data/invalid-base64-data-2.loader-error deleted file mode 100644 index 2553a4f..0000000 --- a/src/ext_depends/D-YAML/test/data/invalid-base64-data-2.loader-error +++ /dev/null @@ -1,2 +0,0 @@ ---- !!binary - двоичные данные в base64 diff --git a/src/ext_depends/D-YAML/test/data/invalid-base64-data.loader-error b/src/ext_depends/D-YAML/test/data/invalid-base64-data.loader-error deleted file mode 100644 index 798abba..0000000 --- a/src/ext_depends/D-YAML/test/data/invalid-base64-data.loader-error +++ /dev/null @@ -1,2 +0,0 @@ ---- !!binary - binary data encoded in base64 should be here. diff --git a/src/ext_depends/D-YAML/test/data/invalid-block-scalar-indicator.loader-error b/src/ext_depends/D-YAML/test/data/invalid-block-scalar-indicator.loader-error deleted file mode 100644 index 16a6db1..0000000 --- a/src/ext_depends/D-YAML/test/data/invalid-block-scalar-indicator.loader-error +++ /dev/null @@ -1,2 +0,0 @@ ---- > what is this? # a comment -data diff --git a/src/ext_depends/D-YAML/test/data/invalid-character.loader-error b/src/ext_depends/D-YAML/test/data/invalid-character.loader-error Binary files differdeleted file mode 100644 index 03687b0..0000000 --- a/src/ext_depends/D-YAML/test/data/invalid-character.loader-error +++ /dev/null diff --git a/src/ext_depends/D-YAML/test/data/invalid-character.stream-error b/src/ext_depends/D-YAML/test/data/invalid-character.stream-error Binary files differdeleted file mode 100644 index 171face..0000000 --- a/src/ext_depends/D-YAML/test/data/invalid-character.stream-error +++ /dev/null diff --git a/src/ext_depends/D-YAML/test/data/invalid-directive-line.loader-error b/src/ext_depends/D-YAML/test/data/invalid-directive-line.loader-error deleted file mode 100644 index 0892eb6..0000000 --- a/src/ext_depends/D-YAML/test/data/invalid-directive-line.loader-error +++ /dev/null @@ -1,2 +0,0 @@ -%YAML 1.1 ? # extra symbol ---- diff --git a/src/ext_depends/D-YAML/test/data/invalid-directive-name-1.loader-error b/src/ext_depends/D-YAML/test/data/invalid-directive-name-1.loader-error deleted file mode 100644 index 153fd88..0000000 --- a/src/ext_depends/D-YAML/test/data/invalid-directive-name-1.loader-error +++ /dev/null @@ -1,2 +0,0 @@ -% # no name at all ---- diff --git a/src/ext_depends/D-YAML/test/data/invalid-directive-name-2.loader-error b/src/ext_depends/D-YAML/test/data/invalid-directive-name-2.loader-error deleted file mode 100644 index 3732a06..0000000 --- a/src/ext_depends/D-YAML/test/data/invalid-directive-name-2.loader-error +++ /dev/null @@ -1,2 +0,0 @@ -%invalid-characters:in-directive name ---- diff --git a/src/ext_depends/D-YAML/test/data/invalid-escape-character.loader-error b/src/ext_depends/D-YAML/test/data/invalid-escape-character.loader-error deleted file mode 100644 index a95ab76..0000000 --- a/src/ext_depends/D-YAML/test/data/invalid-escape-character.loader-error +++ /dev/null @@ -1 +0,0 @@ -"some escape characters are \ncorrect, but this one \?\nis not\n" diff --git a/src/ext_depends/D-YAML/test/data/invalid-escape-numbers.loader-error b/src/ext_depends/D-YAML/test/data/invalid-escape-numbers.loader-error deleted file mode 100644 index 614ec9f..0000000 --- a/src/ext_depends/D-YAML/test/data/invalid-escape-numbers.loader-error +++ /dev/null @@ -1 +0,0 @@ -"hm.... \u123?" diff --git a/src/ext_depends/D-YAML/test/data/invalid-indentation-indicator-1.loader-error b/src/ext_depends/D-YAML/test/data/invalid-indentation-indicator-1.loader-error deleted file mode 100644 index a3cd12f..0000000 --- a/src/ext_depends/D-YAML/test/data/invalid-indentation-indicator-1.loader-error +++ /dev/null @@ -1,2 +0,0 @@ ---- >0 # not valid -data diff --git a/src/ext_depends/D-YAML/test/data/invalid-indentation-indicator-2.loader-error b/src/ext_depends/D-YAML/test/data/invalid-indentation-indicator-2.loader-error deleted file mode 100644 index eefb6ec..0000000 --- a/src/ext_depends/D-YAML/test/data/invalid-indentation-indicator-2.loader-error +++ /dev/null @@ -1,2 +0,0 @@ ---- >-0 -data diff --git a/src/ext_depends/D-YAML/test/data/invalid-item-without-trailing-break.loader-error b/src/ext_depends/D-YAML/test/data/invalid-item-without-trailing-break.loader-error deleted file mode 100644 index fdcf6c6..0000000 --- a/src/ext_depends/D-YAML/test/data/invalid-item-without-trailing-break.loader-error +++ /dev/null @@ -1,2 +0,0 @@ -- --0
\ No newline at end of file diff --git a/src/ext_depends/D-YAML/test/data/invalid-merge-1.loader-error b/src/ext_depends/D-YAML/test/data/invalid-merge-1.loader-error deleted file mode 100644 index fc3c284..0000000 --- a/src/ext_depends/D-YAML/test/data/invalid-merge-1.loader-error +++ /dev/null @@ -1,2 +0,0 @@ -foo: bar -<<: baz diff --git a/src/ext_depends/D-YAML/test/data/invalid-merge-2.loader-error b/src/ext_depends/D-YAML/test/data/invalid-merge-2.loader-error deleted file mode 100644 index 8e88615..0000000 --- a/src/ext_depends/D-YAML/test/data/invalid-merge-2.loader-error +++ /dev/null @@ -1,2 +0,0 @@ -foo: bar -<<: [x: 1, y: 2, z, t: 4] diff --git a/src/ext_depends/D-YAML/test/data/invalid-omap-1.loader-error b/src/ext_depends/D-YAML/test/data/invalid-omap-1.loader-error deleted file mode 100644 index 2863392..0000000 --- a/src/ext_depends/D-YAML/test/data/invalid-omap-1.loader-error +++ /dev/null @@ -1,3 +0,0 @@ ---- !!omap -foo: bar -baz: bat diff --git a/src/ext_depends/D-YAML/test/data/invalid-omap-2.loader-error b/src/ext_depends/D-YAML/test/data/invalid-omap-2.loader-error deleted file mode 100644 index c377dfb..0000000 --- a/src/ext_depends/D-YAML/test/data/invalid-omap-2.loader-error +++ /dev/null @@ -1,3 +0,0 @@ ---- !!omap -- foo: bar -- baz diff --git a/src/ext_depends/D-YAML/test/data/invalid-omap-3.loader-error b/src/ext_depends/D-YAML/test/data/invalid-omap-3.loader-error deleted file mode 100644 index 2a4f50d..0000000 --- a/src/ext_depends/D-YAML/test/data/invalid-omap-3.loader-error +++ /dev/null @@ -1,4 +0,0 @@ ---- !!omap -- foo: bar -- baz: bar - bar: bar diff --git a/src/ext_depends/D-YAML/test/data/invalid-pairs-1.loader-error b/src/ext_depends/D-YAML/test/data/invalid-pairs-1.loader-error deleted file mode 100644 index 42d19ae..0000000 --- a/src/ext_depends/D-YAML/test/data/invalid-pairs-1.loader-error +++ /dev/null @@ -1,3 +0,0 @@ ---- !!pairs -foo: bar -baz: bat diff --git a/src/ext_depends/D-YAML/test/data/invalid-pairs-2.loader-error b/src/ext_depends/D-YAML/test/data/invalid-pairs-2.loader-error deleted file mode 100644 index 31389ea..0000000 --- a/src/ext_depends/D-YAML/test/data/invalid-pairs-2.loader-error +++ /dev/null @@ -1,3 +0,0 @@ ---- !!pairs -- foo: bar -- baz diff --git a/src/ext_depends/D-YAML/test/data/invalid-pairs-3.loader-error b/src/ext_depends/D-YAML/test/data/invalid-pairs-3.loader-error deleted file mode 100644 index f8d7704..0000000 --- a/src/ext_depends/D-YAML/test/data/invalid-pairs-3.loader-error +++ /dev/null @@ -1,4 +0,0 @@ ---- !!pairs -- foo: bar -- baz: bar - bar: bar diff --git a/src/ext_depends/D-YAML/test/data/invalid-simple-key.loader-error b/src/ext_depends/D-YAML/test/data/invalid-simple-key.loader-error deleted file mode 100644 index a58deec..0000000 --- a/src/ext_depends/D-YAML/test/data/invalid-simple-key.loader-error +++ /dev/null @@ -1,3 +0,0 @@ -key: value -invalid simple key -next key: next value diff --git a/src/ext_depends/D-YAML/test/data/invalid-single-quote-bug.code b/src/ext_depends/D-YAML/test/data/invalid-single-quote-bug.code deleted file mode 100644 index 97e0aca..0000000 --- a/src/ext_depends/D-YAML/test/data/invalid-single-quote-bug.code +++ /dev/null @@ -1 +0,0 @@ -#dummy used in constructor test diff --git a/src/ext_depends/D-YAML/test/data/invalid-single-quote-bug.data b/src/ext_depends/D-YAML/test/data/invalid-single-quote-bug.data deleted file mode 100644 index 76ef7ae..0000000 --- a/src/ext_depends/D-YAML/test/data/invalid-single-quote-bug.data +++ /dev/null @@ -1,2 +0,0 @@ -- "foo 'bar'" -- "foo\n'bar'" diff --git a/src/ext_depends/D-YAML/test/data/invalid-starting-character.loader-error b/src/ext_depends/D-YAML/test/data/invalid-starting-character.loader-error deleted file mode 100644 index bb81c60..0000000 --- a/src/ext_depends/D-YAML/test/data/invalid-starting-character.loader-error +++ /dev/null @@ -1 +0,0 @@ -@@@@@@@@@@@@@@@@@@@ diff --git a/src/ext_depends/D-YAML/test/data/invalid-tag-1.loader-error b/src/ext_depends/D-YAML/test/data/invalid-tag-1.loader-error deleted file mode 100644 index a68cd38..0000000 --- a/src/ext_depends/D-YAML/test/data/invalid-tag-1.loader-error +++ /dev/null @@ -1 +0,0 @@ -- !<foo#bar> baz diff --git a/src/ext_depends/D-YAML/test/data/invalid-tag-2.loader-error b/src/ext_depends/D-YAML/test/data/invalid-tag-2.loader-error deleted file mode 100644 index 3a36700..0000000 --- a/src/ext_depends/D-YAML/test/data/invalid-tag-2.loader-error +++ /dev/null @@ -1 +0,0 @@ -- !prefix!foo#bar baz diff --git a/src/ext_depends/D-YAML/test/data/invalid-tag-directive-handle.loader-error b/src/ext_depends/D-YAML/test/data/invalid-tag-directive-handle.loader-error deleted file mode 100644 index 42b5d7e..0000000 --- a/src/ext_depends/D-YAML/test/data/invalid-tag-directive-handle.loader-error +++ /dev/null @@ -1,2 +0,0 @@ -%TAG !!! !!! ---- diff --git a/src/ext_depends/D-YAML/test/data/invalid-tag-directive-prefix.loader-error b/src/ext_depends/D-YAML/test/data/invalid-tag-directive-prefix.loader-error deleted file mode 100644 index 0cb482c..0000000 --- a/src/ext_depends/D-YAML/test/data/invalid-tag-directive-prefix.loader-error +++ /dev/null @@ -1,2 +0,0 @@ -%TAG ! tag:zz.com/foo#bar # '#' is not allowed in URLs ---- diff --git a/src/ext_depends/D-YAML/test/data/invalid-tag-handle-1.emitter-error b/src/ext_depends/D-YAML/test/data/invalid-tag-handle-1.emitter-error deleted file mode 100644 index d5df9a2..0000000 --- a/src/ext_depends/D-YAML/test/data/invalid-tag-handle-1.emitter-error +++ /dev/null @@ -1,5 +0,0 @@ -- !StreamStart -- !DocumentStart { tags: { '!foo': 'bar' } } -- !Scalar { value: 'foo' } -- !DocumentEnd -- !StreamEnd diff --git a/src/ext_depends/D-YAML/test/data/invalid-tag-handle-1.loader-error b/src/ext_depends/D-YAML/test/data/invalid-tag-handle-1.loader-error deleted file mode 100644 index ef0d143..0000000 --- a/src/ext_depends/D-YAML/test/data/invalid-tag-handle-1.loader-error +++ /dev/null @@ -1,2 +0,0 @@ -%TAG foo bar ---- diff --git a/src/ext_depends/D-YAML/test/data/invalid-tag-handle-2.emitter-error b/src/ext_depends/D-YAML/test/data/invalid-tag-handle-2.emitter-error deleted file mode 100644 index d1831d5..0000000 --- a/src/ext_depends/D-YAML/test/data/invalid-tag-handle-2.emitter-error +++ /dev/null @@ -1,5 +0,0 @@ -- !StreamStart -- !DocumentStart { tags: { '!!!': 'bar' } } -- !Scalar { value: 'foo' } -- !DocumentEnd -- !StreamEnd diff --git a/src/ext_depends/D-YAML/test/data/invalid-tag-handle-2.loader-error b/src/ext_depends/D-YAML/test/data/invalid-tag-handle-2.loader-error deleted file mode 100644 index 06c7f0e..0000000 --- a/src/ext_depends/D-YAML/test/data/invalid-tag-handle-2.loader-error +++ /dev/null @@ -1,2 +0,0 @@ -%TAG !foo bar ---- diff --git a/src/ext_depends/D-YAML/test/data/invalid-uri-escapes-1.loader-error b/src/ext_depends/D-YAML/test/data/invalid-uri-escapes-1.loader-error deleted file mode 100644 index a6ecb36..0000000 --- a/src/ext_depends/D-YAML/test/data/invalid-uri-escapes-1.loader-error +++ /dev/null @@ -1 +0,0 @@ ---- !<tag:%x?y> foo diff --git a/src/ext_depends/D-YAML/test/data/invalid-uri-escapes-2.loader-error b/src/ext_depends/D-YAML/test/data/invalid-uri-escapes-2.loader-error deleted file mode 100644 index b89e8f6..0000000 --- a/src/ext_depends/D-YAML/test/data/invalid-uri-escapes-2.loader-error +++ /dev/null @@ -1 +0,0 @@ ---- !<%FF> foo diff --git a/src/ext_depends/D-YAML/test/data/invalid-uri-escapes-3.loader-error b/src/ext_depends/D-YAML/test/data/invalid-uri-escapes-3.loader-error deleted file mode 100644 index f2e4cb8..0000000 --- a/src/ext_depends/D-YAML/test/data/invalid-uri-escapes-3.loader-error +++ /dev/null @@ -1 +0,0 @@ ---- !<foo%d0%af%d0%af%d0bar> baz diff --git a/src/ext_depends/D-YAML/test/data/invalid-uri.loader-error b/src/ext_depends/D-YAML/test/data/invalid-uri.loader-error deleted file mode 100644 index 06307e0..0000000 --- a/src/ext_depends/D-YAML/test/data/invalid-uri.loader-error +++ /dev/null @@ -1 +0,0 @@ ---- !foo! bar diff --git a/src/ext_depends/D-YAML/test/data/invalid-utf8-byte.loader-error b/src/ext_depends/D-YAML/test/data/invalid-utf8-byte.loader-error deleted file mode 100644 index 0a58c70..0000000 --- a/src/ext_depends/D-YAML/test/data/invalid-utf8-byte.loader-error +++ /dev/null @@ -1,66 +0,0 @@ -############################################################### -############################################################### -############################################################### -############################################################### -############################################################### -############################################################### -############################################################### -############################################################### -############################################################### -############################################################### -############################################################### -############################################################### -############################################################### -############################################################### -############################################################### -############################################################### -############################################################### -############################################################### -############################################################### -############################################################### -############################################################### -############################################################### -############################################################### -############################################################### -############################################################### -############################################################### -############################################################### -############################################################### -############################################################### -############################################################### -############################################################### -############################################################### -############################################################### -############################################################### -############################################################### -############################################################### -############################################################### -############################################################### -############################################################### -############################################################### -############################################################### -############################################################### -############################################################### -############################################################### -############################################################### -############################################################### -############################################################### -############################################################### -############################################################### -############################################################### -############################################################### -############################################################### -############################################################### -############################################################### -############################################################### -############################################################### -############################################################### -############################################################### -############################################################### -############################################################### -############################################################### -############################################################### -############################################################### -############################################################### -Invalid byte ('\xFF'): ÿ <-- -############################################################### diff --git a/src/ext_depends/D-YAML/test/data/invalid-utf8-byte.stream-error b/src/ext_depends/D-YAML/test/data/invalid-utf8-byte.stream-error deleted file mode 100644 index 0a58c70..0000000 --- a/src/ext_depends/D-YAML/test/data/invalid-utf8-byte.stream-error +++ /dev/null @@ -1,66 +0,0 @@ -############################################################### -############################################################### -############################################################### -############################################################### -############################################################### -############################################################### -############################################################### -############################################################### -############################################################### -############################################################### -############################################################### -############################################################### -############################################################### -############################################################### -############################################################### -############################################################### -############################################################### -############################################################### -############################################################### -############################################################### -############################################################### -############################################################### -############################################################### -############################################################### -############################################################### -############################################################### -############################################################### -############################################################### -############################################################### -############################################################### -############################################################### -############################################################### -############################################################### -############################################################### -############################################################### -############################################################### -############################################################### -############################################################### -############################################################### -############################################################### -############################################################### -############################################################### -############################################################### -############################################################### -############################################################### -############################################################### -############################################################### -############################################################### -############################################################### -############################################################### -############################################################### -############################################################### -############################################################### -############################################################### -############################################################### -############################################################### -############################################################### -############################################################### -############################################################### -############################################################### -############################################################### -############################################################### -############################################################### -############################################################### -Invalid byte ('\xFF'): ÿ <-- -############################################################### diff --git a/src/ext_depends/D-YAML/test/data/invalid-yaml-directive-version-1.loader-error b/src/ext_depends/D-YAML/test/data/invalid-yaml-directive-version-1.loader-error deleted file mode 100644 index e9b4e3a..0000000 --- a/src/ext_depends/D-YAML/test/data/invalid-yaml-directive-version-1.loader-error +++ /dev/null @@ -1,3 +0,0 @@ -# No version at all. -%YAML ---- diff --git a/src/ext_depends/D-YAML/test/data/invalid-yaml-directive-version-2.loader-error b/src/ext_depends/D-YAML/test/data/invalid-yaml-directive-version-2.loader-error deleted file mode 100644 index 6aa7740..0000000 --- a/src/ext_depends/D-YAML/test/data/invalid-yaml-directive-version-2.loader-error +++ /dev/null @@ -1,2 +0,0 @@ -%YAML 1e-5 ---- diff --git a/src/ext_depends/D-YAML/test/data/invalid-yaml-directive-version-3.loader-error b/src/ext_depends/D-YAML/test/data/invalid-yaml-directive-version-3.loader-error deleted file mode 100644 index 345e784..0000000 --- a/src/ext_depends/D-YAML/test/data/invalid-yaml-directive-version-3.loader-error +++ /dev/null @@ -1,2 +0,0 @@ -%YAML 1. ---- diff --git a/src/ext_depends/D-YAML/test/data/invalid-yaml-directive-version-4.loader-error b/src/ext_depends/D-YAML/test/data/invalid-yaml-directive-version-4.loader-error deleted file mode 100644 index b35ca82..0000000 --- a/src/ext_depends/D-YAML/test/data/invalid-yaml-directive-version-4.loader-error +++ /dev/null @@ -1,2 +0,0 @@ -%YAML 1.132.435 ---- diff --git a/src/ext_depends/D-YAML/test/data/invalid-yaml-directive-version-5.loader-error b/src/ext_depends/D-YAML/test/data/invalid-yaml-directive-version-5.loader-error deleted file mode 100644 index 7c2b49f..0000000 --- a/src/ext_depends/D-YAML/test/data/invalid-yaml-directive-version-5.loader-error +++ /dev/null @@ -1,2 +0,0 @@ -%YAML A.0 ---- diff --git a/src/ext_depends/D-YAML/test/data/invalid-yaml-directive-version-6.loader-error b/src/ext_depends/D-YAML/test/data/invalid-yaml-directive-version-6.loader-error deleted file mode 100644 index bae714f..0000000 --- a/src/ext_depends/D-YAML/test/data/invalid-yaml-directive-version-6.loader-error +++ /dev/null @@ -1,2 +0,0 @@ -%YAML 123.C ---- diff --git a/src/ext_depends/D-YAML/test/data/invalid-yaml-version.loader-error b/src/ext_depends/D-YAML/test/data/invalid-yaml-version.loader-error deleted file mode 100644 index dd01948..0000000 --- a/src/ext_depends/D-YAML/test/data/invalid-yaml-version.loader-error +++ /dev/null @@ -1,2 +0,0 @@ -%YAML 2.0 ---- foo diff --git a/src/ext_depends/D-YAML/test/data/latin.unicode b/src/ext_depends/D-YAML/test/data/latin.unicode deleted file mode 100644 index 4fb799c..0000000 --- a/src/ext_depends/D-YAML/test/data/latin.unicode +++ /dev/null @@ -1,384 +0,0 @@ -ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzªµºÀÃÂÃÄÅÆÇÈÉÊ -ËÌÃÃŽÃÃÑÒÓÔÕÖØÙÚÛÜÃÞßà áâãäåæçèéêëìÃîïðñòóôõöøùúûüýþÿĀÄĂ㥹ĆćĈĉĊċČÄÄŽ -ÄÄđĒēĔĕĖėĘęĚěĜÄÄžÄŸÄ Ä¡Ä¢Ä£Ä¤Ä¥Ä¦Ä§Ä¨Ä©ÄªÄ«Ä¬ÄĮįİıIJijĴĵĶķĸĹĺĻļĽľĿŀÅłŃńŅņŇňʼnŊŋŌÅÅŽÅÅ -őŒœŔŕŖŗŘřŚśŜÅŞşŠšŢţŤťŦŧŨũŪūŬÅÅ®Å¯Å°Å±Å²Å³Å´ÅµÅ¶Å·Å¸Å¹ÅºÅ»Å¼Å½Å¾Å¿Æ€ÆÆ‚ÆƒÆ„Æ…Æ†Æ‡ÆˆÆ‰ÆŠÆ‹ÆŒÆÆŽÆÆÆ‘Æ’ -Æ“Æ”Æ•Æ–Æ—Æ˜Æ™ÆšÆ›ÆœÆÆžÆŸÆ Æ¡Æ¢Æ£Æ¤Æ¥Æ¦Æ§Æ¨Æ©ÆªÆ«Æ¬ÆÆ®Æ¯Æ°Æ±Æ²Æ³Æ´ÆµÆ¶Æ·Æ¸Æ¹ÆºÆ¼Æ½Æ¾Æ¿Ç„džLJljNJnjÇÇŽÇÇǑǒǓǔǕǖǗǘǙǚǛǜ -ÇÇžÇŸÇ Ç¡Ç¢Ç£Ç¤Ç¥Ç¦Ç§Ç¨Ç©ÇªÇ«Ç¬ÇǮǯǰDZdzǴǵǶǷǸǹǺǻǼǽǾǿȀÈȂȃȄȅȆȇȈȉȊȋȌÈÈŽÈÈȑȒȓȔȕȖȗȘșȚțȜÈȞȟ -È È¡È¢È£È¤È¥È¦È§È¨È©ÈªÈ«È¬ÈȮȯȰȱȲȳȴȵȶȷȸȹȺȻȼȽȾȿɀÉÉɑɒɓɔɕɖɗɘəɚɛɜÉÉžÉŸÉ É¡É¢É£É¤É¥É¦É§É¨É©ÉªÉ«É¬Éɮɯ -ɰɱɲɳɴɵɶɷɸɹɺɻɼɽɾɿʀÊʂʃʄʅʆʇʈʉʊʋʌÊÊŽÊÊʑʒʓʔʕʖʗʘʙʚʛʜÊÊžÊŸÊ Ê¡Ê¢Ê£Ê¤Ê¥Ê¦Ê§Ê¨Ê©ÊªÊ«Ê¬ÊʮʯΆΈ -ΉΊΌΎÎÎΑΒΓΔΕΖΗΘΙΚΛΜÎΞΟΠΡΣΤΥΦΧΨΩΪΫάÎήίΰαβγδεζηθικλμνξοπÏÏ‚ÏƒÏ„Ï…Ï†Ï‡ÏˆÏ‰ÏŠÏ‹ÏŒÏ -ÏŽÏϑϒϓϔϕϖϗϘϙϚϛϜÏÏžÏŸÏ Ï¡Ï¢Ï£Ï¤Ï¥Ï¦Ï§Ï¨Ï©ÏªÏ«Ï¬ÏϮϯϰϱϲϳϴϵϷϸϹϺϻϼϽϾϿЀÐЂЃЄЅІЇЈЉЊЋЌÐÐŽÐÐБ -ВГДЕЖЗИЙКЛМÐОПРСТУФХЦЧШЩЪЫЬÐЮЯабвгдежзийклмнопрÑтуфхцчшщъыьÑÑŽÑÑёђѓ -єѕіїјљњћќÑÑžÑŸÑ Ñ¡Ñ¢Ñ£Ñ¤Ñ¥Ñ¦Ñ§Ñ¨Ñ©ÑªÑ«Ñ¬ÑѮѯѰѱѲѳѴѵѶѷѸѹѺѻѼѽѾѿҀÒÒŠÒ‹ÒŒÒÒŽÒÒÒ‘Ò’Ò“Ò”Ò•Ò–Ò—Ò˜Ò™ÒšÒ›ÒœÒ -ÒžÒŸÒ Ò¡Ò¢Ò£Ò¤Ò¥Ò¦Ò§Ò¨Ò©ÒªÒ«Ò¬ÒÒ®Ò¯Ò°Ò±Ò²Ò³Ò´ÒµÒ¶Ò·Ò¸Ò¹ÒºÒ»Ò¼Ò½Ò¾Ò¿Ó€ÓÓ‚ÓƒÓ„Ó…Ó†Ó‡ÓˆÓ‰ÓŠÓ‹ÓŒÓÓŽÓÓ‘Ó’Ó“Ó”Ó•Ó–Ó—Ó˜Ó™ÓšÓ›ÓœÓÓžÓŸÓ -Ó¡Ó¢Ó£Ó¤Ó¥Ó¦Ó§Ó¨Ó©ÓªÓ«Ó¬ÓÓ®Ó¯Ó°Ó±Ó²Ó³Ó´ÓµÓ¶Ó·Ó¸Ó¹Ô€ÔÔ‚ÔƒÔ„Ô…Ô†Ô‡ÔˆÔ‰ÔŠÔ‹ÔŒÔÔŽÔÔ±Ô²Ô³Ô´ÔµÔ¶Ô·Ô¸Ô¹ÔºÔ»Ô¼Ô½Ô¾Ô¿Õ€ÕÕ‚ÕƒÕ„Õ…Õ†Õ‡ÕˆÕ‰ -ÕŠÕ‹ÕŒÕÕŽÕÕÕ‘Õ’Õ“Õ”Õ•Õ–Õ¡Õ¢Õ£Õ¤Õ¥Õ¦Õ§Õ¨Õ©ÕªÕ«Õ¬ÕÕ®Õ¯Õ°Õ±Õ²Õ³Õ´ÕµÕ¶Õ·Õ¸Õ¹ÕºÕ»Õ¼Õ½Õ¾Õ¿Ö€ÖւփքօֆևႠႡႢႣႤႥႦႧႨႩႪႫႬႠ-ႮႯႰႱႲႳႴႵႶႷႸႹႺႻႼႽႾႿჀáƒáƒ‚ჃჄჅᴀá´á´‚ᴃᴄᴅᴆᴇᴈᴉᴊᴋᴌá´á´Žá´á´á´‘ᴒᴓᴔᴕᴖᴗᴘᴙᴚᴛᴜá´á´žá´Ÿá´ ᴡᴢᴣᴤᴥᴦᴧᴨᴩ -ᴪᴫᵢᵣᵤᵥᵦᵧᵨᵩᵪᵫᵬáµáµ®áµ¯áµ°áµ±áµ²áµ³áµ´áµµáµ¶áµ·áµ¹áµºáµ»áµ¼áµ½áµ¾áµ¿á¶€á¶á¶‚ᶃᶄᶅᶆᶇᶈᶉᶊᶋᶌá¶á¶Žá¶á¶á¶‘ᶒᶓᶔᶕᶖᶗᶘᶙᶚḀá¸á¸‚ḃḄḅḆḇ -ḈḉḊḋḌá¸á¸Žá¸á¸á¸‘ḒḓḔḕḖḗḘḙḚḛḜá¸á¸žá¸Ÿá¸ ḡḢḣḤḥḦḧḨḩḪḫḬá¸á¸®á¸¯á¸°á¸±á¸²á¸³á¸´á¸µá¸¶á¸·á¸¸á¸¹á¸ºá¸»á¸¼á¸½á¸¾á¸¿á¹€á¹á¹‚ṃṄṅṆṇṈṉ -ṊṋṌá¹á¹Žá¹á¹á¹‘ṒṓṔṕṖṗṘṙṚṛṜá¹á¹žá¹Ÿá¹ ṡṢṣṤṥṦṧṨṩṪṫṬá¹á¹®á¹¯á¹°á¹±á¹²á¹³á¹´á¹µá¹¶á¹·á¹¸á¹¹á¹ºá¹»á¹¼á¹½á¹¾á¹¿áº€áºáº‚ẃẄẅẆẇẈẉẊẋ -ẌáºáºŽáºáºáº‘ẒẓẔẕẖẗẘẙẚẛẠạẢảẤấẦầẨẩẪẫẬáºáº®áº¯áº°áº±áº²áº³áº´áºµáº¶áº·áº¸áº¹áººáº»áº¼áº½áº¾áº¿á»€á»á»‚ểỄễỆệỈỉỊịỌá»á»Žá»á»á»‘ -ỒồỔổỖỗỘộỚớỜá»á»žá»Ÿá» ỡỢợỤụỦủỨứỪừỬá»á»®á»¯á»°á»±á»²á»³á»´á»µá»¶á»·á»¸á»¹á¼€á¼á¼‚ἃἄἅἆἇἈἉἊἋἌá¼á¼Žá¼á¼á¼‘ἒἓἔἕἘἙἚἛ -Ἔá¼á¼ ἡἢἣἤἥἦἧἨἩἪἫἬá¼á¼®á¼¯á¼°á¼±á¼²á¼³á¼´á¼µá¼¶á¼·á¼¸á¼¹á¼ºá¼»á¼¼á¼½á¼¾á¼¿á½€á½á½‚ὃὄὅὈὉὊὋὌá½á½á½‘ὒὓὔὕὖὗὙὛá½á½Ÿá½ ὡὢὣὤὥὦὧ -ὨὩὪὫὬá½á½®á½¯á½°á½±á½²á½³á½´á½µá½¶á½·á½¸á½¹á½ºá½»á½¼á½½á¾€á¾á¾‚ᾃᾄᾅᾆᾇá¾á¾‘ᾒᾓᾔᾕᾖᾗᾠᾡᾢᾣᾤᾥᾦᾧᾰᾱᾲᾳᾴᾶᾷᾸᾹᾺΆιῂῃῄῆῇῈΈῊ -á¿‹á¿á¿‘ῒΐῖῗῘῙῚΊῠῡῢΰῤῥῦῧῨῩῪΎῬῲῳῴῶῷῸΌῺΏâ±â¿â„‚ℇℊℋℌâ„ℎâ„â„ℑℒℓℕℙℚℛℜâ„ℤΩℨKÅℬâ„ℯℰℱℳℴℹ -ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzªµºÀÃÂÃÄÅÆÇÈÉÊ -ËÌÃÃŽÃÃÑÒÓÔÕÖØÙÚÛÜÃÞßà áâãäåæçèéêëìÃîïðñòóôõöøùúûüýþÿĀÄĂ㥹ĆćĈĉĊċČÄÄŽ -ÄÄđĒēĔĕĖėĘęĚěĜÄÄžÄŸÄ Ä¡Ä¢Ä£Ä¤Ä¥Ä¦Ä§Ä¨Ä©ÄªÄ«Ä¬ÄĮįİıIJijĴĵĶķĸĹĺĻļĽľĿŀÅłŃńŅņŇňʼnŊŋŌÅÅŽÅÅ -őŒœŔŕŖŗŘřŚśŜÅŞşŠšŢţŤťŦŧŨũŪūŬÅÅ®Å¯Å°Å±Å²Å³Å´ÅµÅ¶Å·Å¸Å¹ÅºÅ»Å¼Å½Å¾Å¿Æ€ÆÆ‚ÆƒÆ„Æ…Æ†Æ‡ÆˆÆ‰ÆŠÆ‹ÆŒÆÆŽÆÆÆ‘Æ’ -Æ“Æ”Æ•Æ–Æ—Æ˜Æ™ÆšÆ›ÆœÆÆžÆŸÆ Æ¡Æ¢Æ£Æ¤Æ¥Æ¦Æ§Æ¨Æ©ÆªÆ«Æ¬ÆÆ®Æ¯Æ°Æ±Æ²Æ³Æ´ÆµÆ¶Æ·Æ¸Æ¹ÆºÆ¼Æ½Æ¾Æ¿Ç„džLJljNJnjÇÇŽÇÇǑǒǓǔǕǖǗǘǙǚǛǜ -ÇÇžÇŸÇ Ç¡Ç¢Ç£Ç¤Ç¥Ç¦Ç§Ç¨Ç©ÇªÇ«Ç¬ÇǮǯǰDZdzǴǵǶǷǸǹǺǻǼǽǾǿȀÈȂȃȄȅȆȇȈȉȊȋȌÈÈŽÈÈȑȒȓȔȕȖȗȘșȚțȜÈȞȟ -È È¡È¢È£È¤È¥È¦È§È¨È©ÈªÈ«È¬ÈȮȯȰȱȲȳȴȵȶȷȸȹȺȻȼȽȾȿɀÉÉɑɒɓɔɕɖɗɘəɚɛɜÉÉžÉŸÉ É¡É¢É£É¤É¥É¦É§É¨É©ÉªÉ«É¬Éɮɯ -ɰɱɲɳɴɵɶɷɸɹɺɻɼɽɾɿʀÊʂʃʄʅʆʇʈʉʊʋʌÊÊŽÊÊʑʒʓʔʕʖʗʘʙʚʛʜÊÊžÊŸÊ Ê¡Ê¢Ê£Ê¤Ê¥Ê¦Ê§Ê¨Ê©ÊªÊ«Ê¬ÊʮʯΆΈ -ΉΊΌΎÎÎΑΒΓΔΕΖΗΘΙΚΛΜÎΞΟΠΡΣΤΥΦΧΨΩΪΫάÎήίΰαβγδεζηθικλμνξοπÏÏ‚ÏƒÏ„Ï…Ï†Ï‡ÏˆÏ‰ÏŠÏ‹ÏŒÏ -ÏŽÏϑϒϓϔϕϖϗϘϙϚϛϜÏÏžÏŸÏ Ï¡Ï¢Ï£Ï¤Ï¥Ï¦Ï§Ï¨Ï©ÏªÏ«Ï¬ÏϮϯϰϱϲϳϴϵϷϸϹϺϻϼϽϾϿЀÐЂЃЄЅІЇЈЉЊЋЌÐÐŽÐÐБ -ВГДЕЖЗИЙКЛМÐОПРСТУФХЦЧШЩЪЫЬÐЮЯабвгдежзийклмнопрÑтуфхцчшщъыьÑÑŽÑÑёђѓ -єѕіїјљњћќÑÑžÑŸÑ Ñ¡Ñ¢Ñ£Ñ¤Ñ¥Ñ¦Ñ§Ñ¨Ñ©ÑªÑ«Ñ¬ÑѮѯѰѱѲѳѴѵѶѷѸѹѺѻѼѽѾѿҀÒÒŠÒ‹ÒŒÒÒŽÒÒÒ‘Ò’Ò“Ò”Ò•Ò–Ò—Ò˜Ò™ÒšÒ›ÒœÒ -ÒžÒŸÒ Ò¡Ò¢Ò£Ò¤Ò¥Ò¦Ò§Ò¨Ò©ÒªÒ«Ò¬ÒÒ®Ò¯Ò°Ò±Ò²Ò³Ò´ÒµÒ¶Ò·Ò¸Ò¹ÒºÒ»Ò¼Ò½Ò¾Ò¿Ó€ÓÓ‚ÓƒÓ„Ó…Ó†Ó‡ÓˆÓ‰ÓŠÓ‹ÓŒÓÓŽÓÓ‘Ó’Ó“Ó”Ó•Ó–Ó—Ó˜Ó™ÓšÓ›ÓœÓÓžÓŸÓ -Ó¡Ó¢Ó£Ó¤Ó¥Ó¦Ó§Ó¨Ó©ÓªÓ«Ó¬ÓÓ®Ó¯Ó°Ó±Ó²Ó³Ó´ÓµÓ¶Ó·Ó¸Ó¹Ô€ÔÔ‚ÔƒÔ„Ô…Ô†Ô‡ÔˆÔ‰ÔŠÔ‹ÔŒÔÔŽÔÔ±Ô²Ô³Ô´ÔµÔ¶Ô·Ô¸Ô¹ÔºÔ»Ô¼Ô½Ô¾Ô¿Õ€ÕÕ‚ÕƒÕ„Õ…Õ†Õ‡ÕˆÕ‰ -ÕŠÕ‹ÕŒÕÕŽÕÕÕ‘Õ’Õ“Õ”Õ•Õ–Õ¡Õ¢Õ£Õ¤Õ¥Õ¦Õ§Õ¨Õ©ÕªÕ«Õ¬ÕÕ®Õ¯Õ°Õ±Õ²Õ³Õ´ÕµÕ¶Õ·Õ¸Õ¹ÕºÕ»Õ¼Õ½Õ¾Õ¿Ö€ÖւփքօֆևႠႡႢႣႤႥႦႧႨႩႪႫႬႠ-ႮႯႰႱႲႳႴႵႶႷႸႹႺႻႼႽႾႿჀáƒáƒ‚ჃჄჅᴀá´á´‚ᴃᴄᴅᴆᴇᴈᴉᴊᴋᴌá´á´Žá´á´á´‘ᴒᴓᴔᴕᴖᴗᴘᴙᴚᴛᴜá´á´žá´Ÿá´ ᴡᴢᴣᴤᴥᴦᴧᴨᴩ -ᴪᴫᵢᵣᵤᵥᵦᵧᵨᵩᵪᵫᵬáµáµ®áµ¯áµ°áµ±áµ²áµ³áµ´áµµáµ¶áµ·áµ¹áµºáµ»áµ¼áµ½áµ¾áµ¿á¶€á¶á¶‚ᶃᶄᶅᶆᶇᶈᶉᶊᶋᶌá¶á¶Žá¶á¶á¶‘ᶒᶓᶔᶕᶖᶗᶘᶙᶚḀá¸á¸‚ḃḄḅḆḇ -ḈḉḊḋḌá¸á¸Žá¸á¸á¸‘ḒḓḔḕḖḗḘḙḚḛḜá¸á¸žá¸Ÿá¸ ḡḢḣḤḥḦḧḨḩḪḫḬá¸á¸®á¸¯á¸°á¸±á¸²á¸³á¸´á¸µá¸¶á¸·á¸¸á¸¹á¸ºá¸»á¸¼á¸½á¸¾á¸¿á¹€á¹á¹‚ṃṄṅṆṇṈṉ -ṊṋṌá¹á¹Žá¹á¹á¹‘ṒṓṔṕṖṗṘṙṚṛṜá¹á¹žá¹Ÿá¹ ṡṢṣṤṥṦṧṨṩṪṫṬá¹á¹®á¹¯á¹°á¹±á¹²á¹³á¹´á¹µá¹¶á¹·á¹¸á¹¹á¹ºá¹»á¹¼á¹½á¹¾á¹¿áº€áºáº‚ẃẄẅẆẇẈẉẊẋ -ẌáºáºŽáºáºáº‘ẒẓẔẕẖẗẘẙẚẛẠạẢảẤấẦầẨẩẪẫẬáºáº®áº¯áº°áº±áº²áº³áº´áºµáº¶áº·áº¸áº¹áººáº»áº¼áº½áº¾áº¿á»€á»á»‚ểỄễỆệỈỉỊịỌá»á»Žá»á»á»‘ -ỒồỔổỖỗỘộỚớỜá»á»žá»Ÿá» ỡỢợỤụỦủỨứỪừỬá»á»®á»¯á»°á»±á»²á»³á»´á»µá»¶á»·á»¸á»¹á¼€á¼á¼‚ἃἄἅἆἇἈἉἊἋἌá¼á¼Žá¼á¼á¼‘ἒἓἔἕἘἙἚἛ -Ἔá¼á¼ ἡἢἣἤἥἦἧἨἩἪἫἬá¼á¼®á¼¯á¼°á¼±á¼²á¼³á¼´á¼µá¼¶á¼·á¼¸á¼¹á¼ºá¼»á¼¼á¼½á¼¾á¼¿á½€á½á½‚ὃὄὅὈὉὊὋὌá½á½á½‘ὒὓὔὕὖὗὙὛá½á½Ÿá½ ὡὢὣὤὥὦὧ -ὨὩὪὫὬá½á½®á½¯á½°á½±á½²á½³á½´á½µá½¶á½·á½¸á½¹á½ºá½»á½¼á½½á¾€á¾á¾‚ᾃᾄᾅᾆᾇá¾á¾‘ᾒᾓᾔᾕᾖᾗᾠᾡᾢᾣᾤᾥᾦᾧᾰᾱᾲᾳᾴᾶᾷᾸᾹᾺΆιῂῃῄῆῇῈΈῊ -á¿‹á¿á¿‘ῒΐῖῗῘῙῚΊῠῡῢΰῤῥῦῧῨῩῪΎῬῲῳῴῶῷῸΌῺΏâ±â¿â„‚ℇℊℋℌâ„ℎâ„â„ℑℒℓℕℙℚℛℜâ„ℤΩℨKÅℬâ„ℯℰℱℳℴℹ -ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzªµºÀÃÂÃÄÅÆÇÈÉÊ -ËÌÃÃŽÃÃÑÒÓÔÕÖØÙÚÛÜÃÞßà áâãäåæçèéêëìÃîïðñòóôõöøùúûüýþÿĀÄĂ㥹ĆćĈĉĊċČÄÄŽ -ÄÄđĒēĔĕĖėĘęĚěĜÄÄžÄŸÄ Ä¡Ä¢Ä£Ä¤Ä¥Ä¦Ä§Ä¨Ä©ÄªÄ«Ä¬ÄĮįİıIJijĴĵĶķĸĹĺĻļĽľĿŀÅłŃńŅņŇňʼnŊŋŌÅÅŽÅÅ -őŒœŔŕŖŗŘřŚśŜÅŞşŠšŢţŤťŦŧŨũŪūŬÅÅ®Å¯Å°Å±Å²Å³Å´ÅµÅ¶Å·Å¸Å¹ÅºÅ»Å¼Å½Å¾Å¿Æ€ÆÆ‚ÆƒÆ„Æ…Æ†Æ‡ÆˆÆ‰ÆŠÆ‹ÆŒÆÆŽÆÆÆ‘Æ’ -Æ“Æ”Æ•Æ–Æ—Æ˜Æ™ÆšÆ›ÆœÆÆžÆŸÆ Æ¡Æ¢Æ£Æ¤Æ¥Æ¦Æ§Æ¨Æ©ÆªÆ«Æ¬ÆÆ®Æ¯Æ°Æ±Æ²Æ³Æ´ÆµÆ¶Æ·Æ¸Æ¹ÆºÆ¼Æ½Æ¾Æ¿Ç„džLJljNJnjÇÇŽÇÇǑǒǓǔǕǖǗǘǙǚǛǜ -ÇÇžÇŸÇ Ç¡Ç¢Ç£Ç¤Ç¥Ç¦Ç§Ç¨Ç©ÇªÇ«Ç¬ÇǮǯǰDZdzǴǵǶǷǸǹǺǻǼǽǾǿȀÈȂȃȄȅȆȇȈȉȊȋȌÈÈŽÈÈȑȒȓȔȕȖȗȘșȚțȜÈȞȟ -È È¡È¢È£È¤È¥È¦È§È¨È©ÈªÈ«È¬ÈȮȯȰȱȲȳȴȵȶȷȸȹȺȻȼȽȾȿɀÉÉɑɒɓɔɕɖɗɘəɚɛɜÉÉžÉŸÉ É¡É¢É£É¤É¥É¦É§É¨É©ÉªÉ«É¬Éɮɯ -ɰɱɲɳɴɵɶɷɸɹɺɻɼɽɾɿʀÊʂʃʄʅʆʇʈʉʊʋʌÊÊŽÊÊʑʒʓʔʕʖʗʘʙʚʛʜÊÊžÊŸÊ Ê¡Ê¢Ê£Ê¤Ê¥Ê¦Ê§Ê¨Ê©ÊªÊ«Ê¬ÊʮʯΆΈ -ΉΊΌΎÎÎΑΒΓΔΕΖΗΘΙΚΛΜÎΞΟΠΡΣΤΥΦΧΨΩΪΫάÎήίΰαβγδεζηθικλμνξοπÏÏ‚ÏƒÏ„Ï…Ï†Ï‡ÏˆÏ‰ÏŠÏ‹ÏŒÏ -ÏŽÏϑϒϓϔϕϖϗϘϙϚϛϜÏÏžÏŸÏ Ï¡Ï¢Ï£Ï¤Ï¥Ï¦Ï§Ï¨Ï©ÏªÏ«Ï¬ÏϮϯϰϱϲϳϴϵϷϸϹϺϻϼϽϾϿЀÐЂЃЄЅІЇЈЉЊЋЌÐÐŽÐÐБ -ВГДЕЖЗИЙКЛМÐОПРСТУФХЦЧШЩЪЫЬÐЮЯабвгдежзийклмнопрÑтуфхцчшщъыьÑÑŽÑÑёђѓ -єѕіїјљњћќÑÑžÑŸÑ Ñ¡Ñ¢Ñ£Ñ¤Ñ¥Ñ¦Ñ§Ñ¨Ñ©ÑªÑ«Ñ¬ÑѮѯѰѱѲѳѴѵѶѷѸѹѺѻѼѽѾѿҀÒÒŠÒ‹ÒŒÒÒŽÒÒÒ‘Ò’Ò“Ò”Ò•Ò–Ò—Ò˜Ò™ÒšÒ›ÒœÒ -ÒžÒŸÒ Ò¡Ò¢Ò£Ò¤Ò¥Ò¦Ò§Ò¨Ò©ÒªÒ«Ò¬ÒÒ®Ò¯Ò°Ò±Ò²Ò³Ò´ÒµÒ¶Ò·Ò¸Ò¹ÒºÒ»Ò¼Ò½Ò¾Ò¿Ó€ÓÓ‚ÓƒÓ„Ó…Ó†Ó‡ÓˆÓ‰ÓŠÓ‹ÓŒÓÓŽÓÓ‘Ó’Ó“Ó”Ó•Ó–Ó—Ó˜Ó™ÓšÓ›ÓœÓÓžÓŸÓ -Ó¡Ó¢Ó£Ó¤Ó¥Ó¦Ó§Ó¨Ó©ÓªÓ«Ó¬ÓÓ®Ó¯Ó°Ó±Ó²Ó³Ó´ÓµÓ¶Ó·Ó¸Ó¹Ô€ÔÔ‚ÔƒÔ„Ô…Ô†Ô‡ÔˆÔ‰ÔŠÔ‹ÔŒÔÔŽÔÔ±Ô²Ô³Ô´ÔµÔ¶Ô·Ô¸Ô¹ÔºÔ»Ô¼Ô½Ô¾Ô¿Õ€ÕÕ‚ÕƒÕ„Õ…Õ†Õ‡ÕˆÕ‰ -ÕŠÕ‹ÕŒÕÕŽÕÕÕ‘Õ’Õ“Õ”Õ•Õ–Õ¡Õ¢Õ£Õ¤Õ¥Õ¦Õ§Õ¨Õ©ÕªÕ«Õ¬ÕÕ®Õ¯Õ°Õ±Õ²Õ³Õ´ÕµÕ¶Õ·Õ¸Õ¹ÕºÕ»Õ¼Õ½Õ¾Õ¿Ö€ÖւփքօֆևႠႡႢႣႤႥႦႧႨႩႪႫႬႠ-ႮႯႰႱႲႳႴႵႶႷႸႹႺႻႼႽႾႿჀáƒáƒ‚ჃჄჅᴀá´á´‚ᴃᴄᴅᴆᴇᴈᴉᴊᴋᴌá´á´Žá´á´á´‘ᴒᴓᴔᴕᴖᴗᴘᴙᴚᴛᴜá´á´žá´Ÿá´ ᴡᴢᴣᴤᴥᴦᴧᴨᴩ -ᴪᴫᵢᵣᵤᵥᵦᵧᵨᵩᵪᵫᵬáµáµ®áµ¯áµ°áµ±áµ²áµ³áµ´áµµáµ¶áµ·áµ¹áµºáµ»áµ¼áµ½áµ¾áµ¿á¶€á¶á¶‚ᶃᶄᶅᶆᶇᶈᶉᶊᶋᶌá¶á¶Žá¶á¶á¶‘ᶒᶓᶔᶕᶖᶗᶘᶙᶚḀá¸á¸‚ḃḄḅḆḇ -ḈḉḊḋḌá¸á¸Žá¸á¸á¸‘ḒḓḔḕḖḗḘḙḚḛḜá¸á¸žá¸Ÿá¸ ḡḢḣḤḥḦḧḨḩḪḫḬá¸á¸®á¸¯á¸°á¸±á¸²á¸³á¸´á¸µá¸¶á¸·á¸¸á¸¹á¸ºá¸»á¸¼á¸½á¸¾á¸¿á¹€á¹á¹‚ṃṄṅṆṇṈṉ -ṊṋṌá¹á¹Žá¹á¹á¹‘ṒṓṔṕṖṗṘṙṚṛṜá¹á¹žá¹Ÿá¹ ṡṢṣṤṥṦṧṨṩṪṫṬá¹á¹®á¹¯á¹°á¹±á¹²á¹³á¹´á¹µá¹¶á¹·á¹¸á¹¹á¹ºá¹»á¹¼á¹½á¹¾á¹¿áº€áºáº‚ẃẄẅẆẇẈẉẊẋ -ẌáºáºŽáºáºáº‘ẒẓẔẕẖẗẘẙẚẛẠạẢảẤấẦầẨẩẪẫẬáºáº®áº¯áº°áº±áº²áº³áº´áºµáº¶áº·áº¸áº¹áººáº»áº¼áº½áº¾áº¿á»€á»á»‚ểỄễỆệỈỉỊịỌá»á»Žá»á»á»‘ -ỒồỔổỖỗỘộỚớỜá»á»žá»Ÿá» ỡỢợỤụỦủỨứỪừỬá»á»®á»¯á»°á»±á»²á»³á»´á»µá»¶á»·á»¸á»¹á¼€á¼á¼‚ἃἄἅἆἇἈἉἊἋἌá¼á¼Žá¼á¼á¼‘ἒἓἔἕἘἙἚἛ -Ἔá¼á¼ ἡἢἣἤἥἦἧἨἩἪἫἬá¼á¼®á¼¯á¼°á¼±á¼²á¼³á¼´á¼µá¼¶á¼·á¼¸á¼¹á¼ºá¼»á¼¼á¼½á¼¾á¼¿á½€á½á½‚ὃὄὅὈὉὊὋὌá½á½á½‘ὒὓὔὕὖὗὙὛá½á½Ÿá½ ὡὢὣὤὥὦὧ -ὨὩὪὫὬá½á½®á½¯á½°á½±á½²á½³á½´á½µá½¶á½·á½¸á½¹á½ºá½»á½¼á½½á¾€á¾á¾‚ᾃᾄᾅᾆᾇá¾á¾‘ᾒᾓᾔᾕᾖᾗᾠᾡᾢᾣᾤᾥᾦᾧᾰᾱᾲᾳᾴᾶᾷᾸᾹᾺΆιῂῃῄῆῇῈΈῊ -á¿‹á¿á¿‘ῒΐῖῗῘῙῚΊῠῡῢΰῤῥῦῧῨῩῪΎῬῲῳῴῶῷῸΌῺΏâ±â¿â„‚ℇℊℋℌâ„ℎâ„â„ℑℒℓℕℙℚℛℜâ„ℤΩℨKÅℬâ„ℯℰℱℳℴℹ -ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzªµºÀÃÂÃÄÅÆÇÈÉÊ -ËÌÃÃŽÃÃÑÒÓÔÕÖØÙÚÛÜÃÞßà áâãäåæçèéêëìÃîïðñòóôõöøùúûüýþÿĀÄĂ㥹ĆćĈĉĊċČÄÄŽ -ÄÄđĒēĔĕĖėĘęĚěĜÄÄžÄŸÄ Ä¡Ä¢Ä£Ä¤Ä¥Ä¦Ä§Ä¨Ä©ÄªÄ«Ä¬ÄĮįİıIJijĴĵĶķĸĹĺĻļĽľĿŀÅłŃńŅņŇňʼnŊŋŌÅÅŽÅÅ -őŒœŔŕŖŗŘřŚśŜÅŞşŠšŢţŤťŦŧŨũŪūŬÅÅ®Å¯Å°Å±Å²Å³Å´ÅµÅ¶Å·Å¸Å¹ÅºÅ»Å¼Å½Å¾Å¿Æ€ÆÆ‚ÆƒÆ„Æ…Æ†Æ‡ÆˆÆ‰ÆŠÆ‹ÆŒÆÆŽÆÆÆ‘Æ’ -Æ“Æ”Æ•Æ–Æ—Æ˜Æ™ÆšÆ›ÆœÆÆžÆŸÆ Æ¡Æ¢Æ£Æ¤Æ¥Æ¦Æ§Æ¨Æ©ÆªÆ«Æ¬ÆÆ®Æ¯Æ°Æ±Æ²Æ³Æ´ÆµÆ¶Æ·Æ¸Æ¹ÆºÆ¼Æ½Æ¾Æ¿Ç„džLJljNJnjÇÇŽÇÇǑǒǓǔǕǖǗǘǙǚǛǜ -ÇÇžÇŸÇ Ç¡Ç¢Ç£Ç¤Ç¥Ç¦Ç§Ç¨Ç©ÇªÇ«Ç¬ÇǮǯǰDZdzǴǵǶǷǸǹǺǻǼǽǾǿȀÈȂȃȄȅȆȇȈȉȊȋȌÈÈŽÈÈȑȒȓȔȕȖȗȘșȚțȜÈȞȟ -È È¡È¢È£È¤È¥È¦È§È¨È©ÈªÈ«È¬ÈȮȯȰȱȲȳȴȵȶȷȸȹȺȻȼȽȾȿɀÉÉɑɒɓɔɕɖɗɘəɚɛɜÉÉžÉŸÉ É¡É¢É£É¤É¥É¦É§É¨É©ÉªÉ«É¬Éɮɯ -ɰɱɲɳɴɵɶɷɸɹɺɻɼɽɾɿʀÊʂʃʄʅʆʇʈʉʊʋʌÊÊŽÊÊʑʒʓʔʕʖʗʘʙʚʛʜÊÊžÊŸÊ Ê¡Ê¢Ê£Ê¤Ê¥Ê¦Ê§Ê¨Ê©ÊªÊ«Ê¬ÊʮʯΆΈ -ΉΊΌΎÎÎΑΒΓΔΕΖΗΘΙΚΛΜÎΞΟΠΡΣΤΥΦΧΨΩΪΫάÎήίΰαβγδεζηθικλμνξοπÏÏ‚ÏƒÏ„Ï…Ï†Ï‡ÏˆÏ‰ÏŠÏ‹ÏŒÏ -ÏŽÏϑϒϓϔϕϖϗϘϙϚϛϜÏÏžÏŸÏ Ï¡Ï¢Ï£Ï¤Ï¥Ï¦Ï§Ï¨Ï©ÏªÏ«Ï¬ÏϮϯϰϱϲϳϴϵϷϸϹϺϻϼϽϾϿЀÐЂЃЄЅІЇЈЉЊЋЌÐÐŽÐÐБ -ВГДЕЖЗИЙКЛМÐОПРСТУФХЦЧШЩЪЫЬÐЮЯабвгдежзийклмнопрÑтуфхцчшщъыьÑÑŽÑÑёђѓ -єѕіїјљњћќÑÑžÑŸÑ Ñ¡Ñ¢Ñ£Ñ¤Ñ¥Ñ¦Ñ§Ñ¨Ñ©ÑªÑ«Ñ¬ÑѮѯѰѱѲѳѴѵѶѷѸѹѺѻѼѽѾѿҀÒÒŠÒ‹ÒŒÒÒŽÒÒÒ‘Ò’Ò“Ò”Ò•Ò–Ò—Ò˜Ò™ÒšÒ›ÒœÒ -ÒžÒŸÒ Ò¡Ò¢Ò£Ò¤Ò¥Ò¦Ò§Ò¨Ò©ÒªÒ«Ò¬ÒÒ®Ò¯Ò°Ò±Ò²Ò³Ò´ÒµÒ¶Ò·Ò¸Ò¹ÒºÒ»Ò¼Ò½Ò¾Ò¿Ó€ÓÓ‚ÓƒÓ„Ó…Ó†Ó‡ÓˆÓ‰ÓŠÓ‹ÓŒÓÓŽÓÓ‘Ó’Ó“Ó”Ó•Ó–Ó—Ó˜Ó™ÓšÓ›ÓœÓÓžÓŸÓ -Ó¡Ó¢Ó£Ó¤Ó¥Ó¦Ó§Ó¨Ó©ÓªÓ«Ó¬ÓÓ®Ó¯Ó°Ó±Ó²Ó³Ó´ÓµÓ¶Ó·Ó¸Ó¹Ô€ÔÔ‚ÔƒÔ„Ô…Ô†Ô‡ÔˆÔ‰ÔŠÔ‹ÔŒÔÔŽÔÔ±Ô²Ô³Ô´ÔµÔ¶Ô·Ô¸Ô¹ÔºÔ»Ô¼Ô½Ô¾Ô¿Õ€ÕÕ‚ÕƒÕ„Õ…Õ†Õ‡ÕˆÕ‰ -ÕŠÕ‹ÕŒÕÕŽÕÕÕ‘Õ’Õ“Õ”Õ•Õ–Õ¡Õ¢Õ£Õ¤Õ¥Õ¦Õ§Õ¨Õ©ÕªÕ«Õ¬ÕÕ®Õ¯Õ°Õ±Õ²Õ³Õ´ÕµÕ¶Õ·Õ¸Õ¹ÕºÕ»Õ¼Õ½Õ¾Õ¿Ö€ÖւփքօֆևႠႡႢႣႤႥႦႧႨႩႪႫႬႠ-ႮႯႰႱႲႳႴႵႶႷႸႹႺႻႼႽႾႿჀáƒáƒ‚ჃჄჅᴀá´á´‚ᴃᴄᴅᴆᴇᴈᴉᴊᴋᴌá´á´Žá´á´á´‘ᴒᴓᴔᴕᴖᴗᴘᴙᴚᴛᴜá´á´žá´Ÿá´ ᴡᴢᴣᴤᴥᴦᴧᴨᴩ -ᴪᴫᵢᵣᵤᵥᵦᵧᵨᵩᵪᵫᵬáµáµ®áµ¯áµ°áµ±áµ²áµ³áµ´áµµáµ¶áµ·áµ¹áµºáµ»áµ¼áµ½áµ¾áµ¿á¶€á¶á¶‚ᶃᶄᶅᶆᶇᶈᶉᶊᶋᶌá¶á¶Žá¶á¶á¶‘ᶒᶓᶔᶕᶖᶗᶘᶙᶚḀá¸á¸‚ḃḄḅḆḇ -ḈḉḊḋḌá¸á¸Žá¸á¸á¸‘ḒḓḔḕḖḗḘḙḚḛḜá¸á¸žá¸Ÿá¸ ḡḢḣḤḥḦḧḨḩḪḫḬá¸á¸®á¸¯á¸°á¸±á¸²á¸³á¸´á¸µá¸¶á¸·á¸¸á¸¹á¸ºá¸»á¸¼á¸½á¸¾á¸¿á¹€á¹á¹‚ṃṄṅṆṇṈṉ -ṊṋṌá¹á¹Žá¹á¹á¹‘ṒṓṔṕṖṗṘṙṚṛṜá¹á¹žá¹Ÿá¹ ṡṢṣṤṥṦṧṨṩṪṫṬá¹á¹®á¹¯á¹°á¹±á¹²á¹³á¹´á¹µá¹¶á¹·á¹¸á¹¹á¹ºá¹»á¹¼á¹½á¹¾á¹¿áº€áºáº‚ẃẄẅẆẇẈẉẊẋ -ẌáºáºŽáºáºáº‘ẒẓẔẕẖẗẘẙẚẛẠạẢảẤấẦầẨẩẪẫẬáºáº®áº¯áº°áº±áº²áº³áº´áºµáº¶áº·áº¸áº¹áººáº»áº¼áº½áº¾áº¿á»€á»á»‚ểỄễỆệỈỉỊịỌá»á»Žá»á»á»‘ -ỒồỔổỖỗỘộỚớỜá»á»žá»Ÿá» ỡỢợỤụỦủỨứỪừỬá»á»®á»¯á»°á»±á»²á»³á»´á»µá»¶á»·á»¸á»¹á¼€á¼á¼‚ἃἄἅἆἇἈἉἊἋἌá¼á¼Žá¼á¼á¼‘ἒἓἔἕἘἙἚἛ -Ἔá¼á¼ ἡἢἣἤἥἦἧἨἩἪἫἬá¼á¼®á¼¯á¼°á¼±á¼²á¼³á¼´á¼µá¼¶á¼·á¼¸á¼¹á¼ºá¼»á¼¼á¼½á¼¾á¼¿á½€á½á½‚ὃὄὅὈὉὊὋὌá½á½á½‘ὒὓὔὕὖὗὙὛá½á½Ÿá½ ὡὢὣὤὥὦὧ -ὨὩὪὫὬá½á½®á½¯á½°á½±á½²á½³á½´á½µá½¶á½·á½¸á½¹á½ºá½»á½¼á½½á¾€á¾á¾‚ᾃᾄᾅᾆᾇá¾á¾‘ᾒᾓᾔᾕᾖᾗᾠᾡᾢᾣᾤᾥᾦᾧᾰᾱᾲᾳᾴᾶᾷᾸᾹᾺΆιῂῃῄῆῇῈΈῊ -á¿‹á¿á¿‘ῒΐῖῗῘῙῚΊῠῡῢΰῤῥῦῧῨῩῪΎῬῲῳῴῶῷῸΌῺΏâ±â¿â„‚ℇℊℋℌâ„ℎâ„â„ℑℒℓℕℙℚℛℜâ„ℤΩℨKÅℬâ„ℯℰℱℳℴℹ -ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzªµºÀÃÂÃÄÅÆÇÈÉÊ -ËÌÃÃŽÃÃÑÒÓÔÕÖØÙÚÛÜÃÞßà áâãäåæçèéêëìÃîïðñòóôõöøùúûüýþÿĀÄĂ㥹ĆćĈĉĊċČÄÄŽ -ÄÄđĒēĔĕĖėĘęĚěĜÄÄžÄŸÄ Ä¡Ä¢Ä£Ä¤Ä¥Ä¦Ä§Ä¨Ä©ÄªÄ«Ä¬ÄĮįİıIJijĴĵĶķĸĹĺĻļĽľĿŀÅłŃńŅņŇňʼnŊŋŌÅÅŽÅÅ -őŒœŔŕŖŗŘřŚśŜÅŞşŠšŢţŤťŦŧŨũŪūŬÅÅ®Å¯Å°Å±Å²Å³Å´ÅµÅ¶Å·Å¸Å¹ÅºÅ»Å¼Å½Å¾Å¿Æ€ÆÆ‚ÆƒÆ„Æ…Æ†Æ‡ÆˆÆ‰ÆŠÆ‹ÆŒÆÆŽÆÆÆ‘Æ’ -Æ“Æ”Æ•Æ–Æ—Æ˜Æ™ÆšÆ›ÆœÆÆžÆŸÆ Æ¡Æ¢Æ£Æ¤Æ¥Æ¦Æ§Æ¨Æ©ÆªÆ«Æ¬ÆÆ®Æ¯Æ°Æ±Æ²Æ³Æ´ÆµÆ¶Æ·Æ¸Æ¹ÆºÆ¼Æ½Æ¾Æ¿Ç„džLJljNJnjÇÇŽÇÇǑǒǓǔǕǖǗǘǙǚǛǜ -ÇÇžÇŸÇ Ç¡Ç¢Ç£Ç¤Ç¥Ç¦Ç§Ç¨Ç©ÇªÇ«Ç¬ÇǮǯǰDZdzǴǵǶǷǸǹǺǻǼǽǾǿȀÈȂȃȄȅȆȇȈȉȊȋȌÈÈŽÈÈȑȒȓȔȕȖȗȘșȚțȜÈȞȟ -È È¡È¢È£È¤È¥È¦È§È¨È©ÈªÈ«È¬ÈȮȯȰȱȲȳȴȵȶȷȸȹȺȻȼȽȾȿɀÉÉɑɒɓɔɕɖɗɘəɚɛɜÉÉžÉŸÉ É¡É¢É£É¤É¥É¦É§É¨É©ÉªÉ«É¬Éɮɯ -ɰɱɲɳɴɵɶɷɸɹɺɻɼɽɾɿʀÊʂʃʄʅʆʇʈʉʊʋʌÊÊŽÊÊʑʒʓʔʕʖʗʘʙʚʛʜÊÊžÊŸÊ Ê¡Ê¢Ê£Ê¤Ê¥Ê¦Ê§Ê¨Ê©ÊªÊ«Ê¬ÊʮʯΆΈ -ΉΊΌΎÎÎΑΒΓΔΕΖΗΘΙΚΛΜÎΞΟΠΡΣΤΥΦΧΨΩΪΫάÎήίΰαβγδεζηθικλμνξοπÏÏ‚ÏƒÏ„Ï…Ï†Ï‡ÏˆÏ‰ÏŠÏ‹ÏŒÏ -ÏŽÏϑϒϓϔϕϖϗϘϙϚϛϜÏÏžÏŸÏ Ï¡Ï¢Ï£Ï¤Ï¥Ï¦Ï§Ï¨Ï©ÏªÏ«Ï¬ÏϮϯϰϱϲϳϴϵϷϸϹϺϻϼϽϾϿЀÐЂЃЄЅІЇЈЉЊЋЌÐÐŽÐÐБ -ВГДЕЖЗИЙКЛМÐОПРСТУФХЦЧШЩЪЫЬÐЮЯабвгдежзийклмнопрÑтуфхцчшщъыьÑÑŽÑÑёђѓ -єѕіїјљњћќÑÑžÑŸÑ Ñ¡Ñ¢Ñ£Ñ¤Ñ¥Ñ¦Ñ§Ñ¨Ñ©ÑªÑ«Ñ¬ÑѮѯѰѱѲѳѴѵѶѷѸѹѺѻѼѽѾѿҀÒÒŠÒ‹ÒŒÒÒŽÒÒÒ‘Ò’Ò“Ò”Ò•Ò–Ò—Ò˜Ò™ÒšÒ›ÒœÒ -ÒžÒŸÒ Ò¡Ò¢Ò£Ò¤Ò¥Ò¦Ò§Ò¨Ò©ÒªÒ«Ò¬ÒÒ®Ò¯Ò°Ò±Ò²Ò³Ò´ÒµÒ¶Ò·Ò¸Ò¹ÒºÒ»Ò¼Ò½Ò¾Ò¿Ó€ÓÓ‚ÓƒÓ„Ó…Ó†Ó‡ÓˆÓ‰ÓŠÓ‹ÓŒÓÓŽÓÓ‘Ó’Ó“Ó”Ó•Ó–Ó—Ó˜Ó™ÓšÓ›ÓœÓÓžÓŸÓ -Ó¡Ó¢Ó£Ó¤Ó¥Ó¦Ó§Ó¨Ó©ÓªÓ«Ó¬ÓÓ®Ó¯Ó°Ó±Ó²Ó³Ó´ÓµÓ¶Ó·Ó¸Ó¹Ô€ÔÔ‚ÔƒÔ„Ô…Ô†Ô‡ÔˆÔ‰ÔŠÔ‹ÔŒÔÔŽÔÔ±Ô²Ô³Ô´ÔµÔ¶Ô·Ô¸Ô¹ÔºÔ»Ô¼Ô½Ô¾Ô¿Õ€ÕÕ‚ÕƒÕ„Õ…Õ†Õ‡ÕˆÕ‰ -ÕŠÕ‹ÕŒÕÕŽÕÕÕ‘Õ’Õ“Õ”Õ•Õ–Õ¡Õ¢Õ£Õ¤Õ¥Õ¦Õ§Õ¨Õ©ÕªÕ«Õ¬ÕÕ®Õ¯Õ°Õ±Õ²Õ³Õ´ÕµÕ¶Õ·Õ¸Õ¹ÕºÕ»Õ¼Õ½Õ¾Õ¿Ö€ÖւփքօֆևႠႡႢႣႤႥႦႧႨႩႪႫႬႠ-ႮႯႰႱႲႳႴႵႶႷႸႹႺႻႼႽႾႿჀáƒáƒ‚ჃჄჅᴀá´á´‚ᴃᴄᴅᴆᴇᴈᴉᴊᴋᴌá´á´Žá´á´á´‘ᴒᴓᴔᴕᴖᴗᴘᴙᴚᴛᴜá´á´žá´Ÿá´ ᴡᴢᴣᴤᴥᴦᴧᴨᴩ -ᴪᴫᵢᵣᵤᵥᵦᵧᵨᵩᵪᵫᵬáµáµ®áµ¯áµ°áµ±áµ²áµ³áµ´áµµáµ¶áµ·áµ¹áµºáµ»áµ¼áµ½áµ¾áµ¿á¶€á¶á¶‚ᶃᶄᶅᶆᶇᶈᶉᶊᶋᶌá¶á¶Žá¶á¶á¶‘ᶒᶓᶔᶕᶖᶗᶘᶙᶚḀá¸á¸‚ḃḄḅḆḇ -ḈḉḊḋḌá¸á¸Žá¸á¸á¸‘ḒḓḔḕḖḗḘḙḚḛḜá¸á¸žá¸Ÿá¸ ḡḢḣḤḥḦḧḨḩḪḫḬá¸á¸®á¸¯á¸°á¸±á¸²á¸³á¸´á¸µá¸¶á¸·á¸¸á¸¹á¸ºá¸»á¸¼á¸½á¸¾á¸¿á¹€á¹á¹‚ṃṄṅṆṇṈṉ -ṊṋṌá¹á¹Žá¹á¹á¹‘ṒṓṔṕṖṗṘṙṚṛṜá¹á¹žá¹Ÿá¹ ṡṢṣṤṥṦṧṨṩṪṫṬá¹á¹®á¹¯á¹°á¹±á¹²á¹³á¹´á¹µá¹¶á¹·á¹¸á¹¹á¹ºá¹»á¹¼á¹½á¹¾á¹¿áº€áºáº‚ẃẄẅẆẇẈẉẊẋ -ẌáºáºŽáºáºáº‘ẒẓẔẕẖẗẘẙẚẛẠạẢảẤấẦầẨẩẪẫẬáºáº®áº¯áº°áº±áº²áº³áº´áºµáº¶áº·áº¸áº¹áººáº»áº¼áº½áº¾áº¿á»€á»á»‚ểỄễỆệỈỉỊịỌá»á»Žá»á»á»‘ -ỒồỔổỖỗỘộỚớỜá»á»žá»Ÿá» ỡỢợỤụỦủỨứỪừỬá»á»®á»¯á»°á»±á»²á»³á»´á»µá»¶á»·á»¸á»¹á¼€á¼á¼‚ἃἄἅἆἇἈἉἊἋἌá¼á¼Žá¼á¼á¼‘ἒἓἔἕἘἙἚἛ -Ἔá¼á¼ ἡἢἣἤἥἦἧἨἩἪἫἬá¼á¼®á¼¯á¼°á¼±á¼²á¼³á¼´á¼µá¼¶á¼·á¼¸á¼¹á¼ºá¼»á¼¼á¼½á¼¾á¼¿á½€á½á½‚ὃὄὅὈὉὊὋὌá½á½á½‘ὒὓὔὕὖὗὙὛá½á½Ÿá½ ὡὢὣὤὥὦὧ -ὨὩὪὫὬá½á½®á½¯á½°á½±á½²á½³á½´á½µá½¶á½·á½¸á½¹á½ºá½»á½¼á½½á¾€á¾á¾‚ᾃᾄᾅᾆᾇá¾á¾‘ᾒᾓᾔᾕᾖᾗᾠᾡᾢᾣᾤᾥᾦᾧᾰᾱᾲᾳᾴᾶᾷᾸᾹᾺΆιῂῃῄῆῇῈΈῊ -á¿‹á¿á¿‘ῒΐῖῗῘῙῚΊῠῡῢΰῤῥῦῧῨῩῪΎῬῲῳῴῶῷῸΌῺΏâ±â¿â„‚ℇℊℋℌâ„ℎâ„â„ℑℒℓℕℙℚℛℜâ„ℤΩℨKÅℬâ„ℯℰℱℳℴℹ -ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzªµºÀÃÂÃÄÅÆÇÈÉÊ -ËÌÃÃŽÃÃÑÒÓÔÕÖØÙÚÛÜÃÞßà áâãäåæçèéêëìÃîïðñòóôõöøùúûüýþÿĀÄĂ㥹ĆćĈĉĊċČÄÄŽ -ÄÄđĒēĔĕĖėĘęĚěĜÄÄžÄŸÄ Ä¡Ä¢Ä£Ä¤Ä¥Ä¦Ä§Ä¨Ä©ÄªÄ«Ä¬ÄĮįİıIJijĴĵĶķĸĹĺĻļĽľĿŀÅłŃńŅņŇňʼnŊŋŌÅÅŽÅÅ -őŒœŔŕŖŗŘřŚśŜÅŞşŠšŢţŤťŦŧŨũŪūŬÅÅ®Å¯Å°Å±Å²Å³Å´ÅµÅ¶Å·Å¸Å¹ÅºÅ»Å¼Å½Å¾Å¿Æ€ÆÆ‚ÆƒÆ„Æ…Æ†Æ‡ÆˆÆ‰ÆŠÆ‹ÆŒÆÆŽÆÆÆ‘Æ’ -Æ“Æ”Æ•Æ–Æ—Æ˜Æ™ÆšÆ›ÆœÆÆžÆŸÆ Æ¡Æ¢Æ£Æ¤Æ¥Æ¦Æ§Æ¨Æ©ÆªÆ«Æ¬ÆÆ®Æ¯Æ°Æ±Æ²Æ³Æ´ÆµÆ¶Æ·Æ¸Æ¹ÆºÆ¼Æ½Æ¾Æ¿Ç„džLJljNJnjÇÇŽÇÇǑǒǓǔǕǖǗǘǙǚǛǜ -ÇÇžÇŸÇ Ç¡Ç¢Ç£Ç¤Ç¥Ç¦Ç§Ç¨Ç©ÇªÇ«Ç¬ÇǮǯǰDZdzǴǵǶǷǸǹǺǻǼǽǾǿȀÈȂȃȄȅȆȇȈȉȊȋȌÈÈŽÈÈȑȒȓȔȕȖȗȘșȚțȜÈȞȟ -È È¡È¢È£È¤È¥È¦È§È¨È©ÈªÈ«È¬ÈȮȯȰȱȲȳȴȵȶȷȸȹȺȻȼȽȾȿɀÉÉɑɒɓɔɕɖɗɘəɚɛɜÉÉžÉŸÉ É¡É¢É£É¤É¥É¦É§É¨É©ÉªÉ«É¬Éɮɯ -ɰɱɲɳɴɵɶɷɸɹɺɻɼɽɾɿʀÊʂʃʄʅʆʇʈʉʊʋʌÊÊŽÊÊʑʒʓʔʕʖʗʘʙʚʛʜÊÊžÊŸÊ Ê¡Ê¢Ê£Ê¤Ê¥Ê¦Ê§Ê¨Ê©ÊªÊ«Ê¬ÊʮʯΆΈ -ΉΊΌΎÎÎΑΒΓΔΕΖΗΘΙΚΛΜÎΞΟΠΡΣΤΥΦΧΨΩΪΫάÎήίΰαβγδεζηθικλμνξοπÏÏ‚ÏƒÏ„Ï…Ï†Ï‡ÏˆÏ‰ÏŠÏ‹ÏŒÏ -ÏŽÏϑϒϓϔϕϖϗϘϙϚϛϜÏÏžÏŸÏ Ï¡Ï¢Ï£Ï¤Ï¥Ï¦Ï§Ï¨Ï©ÏªÏ«Ï¬ÏϮϯϰϱϲϳϴϵϷϸϹϺϻϼϽϾϿЀÐЂЃЄЅІЇЈЉЊЋЌÐÐŽÐÐБ -ВГДЕЖЗИЙКЛМÐОПРСТУФХЦЧШЩЪЫЬÐЮЯабвгдежзийклмнопрÑтуфхцчшщъыьÑÑŽÑÑёђѓ -єѕіїјљњћќÑÑžÑŸÑ Ñ¡Ñ¢Ñ£Ñ¤Ñ¥Ñ¦Ñ§Ñ¨Ñ©ÑªÑ«Ñ¬ÑѮѯѰѱѲѳѴѵѶѷѸѹѺѻѼѽѾѿҀÒÒŠÒ‹ÒŒÒÒŽÒÒÒ‘Ò’Ò“Ò”Ò•Ò–Ò—Ò˜Ò™ÒšÒ›ÒœÒ -ÒžÒŸÒ Ò¡Ò¢Ò£Ò¤Ò¥Ò¦Ò§Ò¨Ò©ÒªÒ«Ò¬ÒÒ®Ò¯Ò°Ò±Ò²Ò³Ò´ÒµÒ¶Ò·Ò¸Ò¹ÒºÒ»Ò¼Ò½Ò¾Ò¿Ó€ÓÓ‚ÓƒÓ„Ó…Ó†Ó‡ÓˆÓ‰ÓŠÓ‹ÓŒÓÓŽÓÓ‘Ó’Ó“Ó”Ó•Ó–Ó—Ó˜Ó™ÓšÓ›ÓœÓÓžÓŸÓ -Ó¡Ó¢Ó£Ó¤Ó¥Ó¦Ó§Ó¨Ó©ÓªÓ«Ó¬ÓÓ®Ó¯Ó°Ó±Ó²Ó³Ó´ÓµÓ¶Ó·Ó¸Ó¹Ô€ÔÔ‚ÔƒÔ„Ô…Ô†Ô‡ÔˆÔ‰ÔŠÔ‹ÔŒÔÔŽÔÔ±Ô²Ô³Ô´ÔµÔ¶Ô·Ô¸Ô¹ÔºÔ»Ô¼Ô½Ô¾Ô¿Õ€ÕÕ‚ÕƒÕ„Õ…Õ†Õ‡ÕˆÕ‰ -ÕŠÕ‹ÕŒÕÕŽÕÕÕ‘Õ’Õ“Õ”Õ•Õ–Õ¡Õ¢Õ£Õ¤Õ¥Õ¦Õ§Õ¨Õ©ÕªÕ«Õ¬ÕÕ®Õ¯Õ°Õ±Õ²Õ³Õ´ÕµÕ¶Õ·Õ¸Õ¹ÕºÕ»Õ¼Õ½Õ¾Õ¿Ö€ÖւփքօֆևႠႡႢႣႤႥႦႧႨႩႪႫႬႠ-ႮႯႰႱႲႳႴႵႶႷႸႹႺႻႼႽႾႿჀáƒáƒ‚ჃჄჅᴀá´á´‚ᴃᴄᴅᴆᴇᴈᴉᴊᴋᴌá´á´Žá´á´á´‘ᴒᴓᴔᴕᴖᴗᴘᴙᴚᴛᴜá´á´žá´Ÿá´ ᴡᴢᴣᴤᴥᴦᴧᴨᴩ -ᴪᴫᵢᵣᵤᵥᵦᵧᵨᵩᵪᵫᵬáµáµ®áµ¯áµ°áµ±áµ²áµ³áµ´áµµáµ¶áµ·áµ¹áµºáµ»áµ¼áµ½áµ¾áµ¿á¶€á¶á¶‚ᶃᶄᶅᶆᶇᶈᶉᶊᶋᶌá¶á¶Žá¶á¶á¶‘ᶒᶓᶔᶕᶖᶗᶘᶙᶚḀá¸á¸‚ḃḄḅḆḇ -ḈḉḊḋḌá¸á¸Žá¸á¸á¸‘ḒḓḔḕḖḗḘḙḚḛḜá¸á¸žá¸Ÿá¸ ḡḢḣḤḥḦḧḨḩḪḫḬá¸á¸®á¸¯á¸°á¸±á¸²á¸³á¸´á¸µá¸¶á¸·á¸¸á¸¹á¸ºá¸»á¸¼á¸½á¸¾á¸¿á¹€á¹á¹‚ṃṄṅṆṇṈṉ -ṊṋṌá¹á¹Žá¹á¹á¹‘ṒṓṔṕṖṗṘṙṚṛṜá¹á¹žá¹Ÿá¹ ṡṢṣṤṥṦṧṨṩṪṫṬá¹á¹®á¹¯á¹°á¹±á¹²á¹³á¹´á¹µá¹¶á¹·á¹¸á¹¹á¹ºá¹»á¹¼á¹½á¹¾á¹¿áº€áºáº‚ẃẄẅẆẇẈẉẊẋ -ẌáºáºŽáºáºáº‘ẒẓẔẕẖẗẘẙẚẛẠạẢảẤấẦầẨẩẪẫẬáºáº®áº¯áº°áº±áº²áº³áº´áºµáº¶áº·áº¸áº¹áººáº»áº¼áº½áº¾áº¿á»€á»á»‚ểỄễỆệỈỉỊịỌá»á»Žá»á»á»‘ -ỒồỔổỖỗỘộỚớỜá»á»žá»Ÿá» ỡỢợỤụỦủỨứỪừỬá»á»®á»¯á»°á»±á»²á»³á»´á»µá»¶á»·á»¸á»¹á¼€á¼á¼‚ἃἄἅἆἇἈἉἊἋἌá¼á¼Žá¼á¼á¼‘ἒἓἔἕἘἙἚἛ -Ἔá¼á¼ ἡἢἣἤἥἦἧἨἩἪἫἬá¼á¼®á¼¯á¼°á¼±á¼²á¼³á¼´á¼µá¼¶á¼·á¼¸á¼¹á¼ºá¼»á¼¼á¼½á¼¾á¼¿á½€á½á½‚ὃὄὅὈὉὊὋὌá½á½á½‘ὒὓὔὕὖὗὙὛá½á½Ÿá½ ὡὢὣὤὥὦὧ -ὨὩὪὫὬá½á½®á½¯á½°á½±á½²á½³á½´á½µá½¶á½·á½¸á½¹á½ºá½»á½¼á½½á¾€á¾á¾‚ᾃᾄᾅᾆᾇá¾á¾‘ᾒᾓᾔᾕᾖᾗᾠᾡᾢᾣᾤᾥᾦᾧᾰᾱᾲᾳᾴᾶᾷᾸᾹᾺΆιῂῃῄῆῇῈΈῊ -á¿‹á¿á¿‘ῒΐῖῗῘῙῚΊῠῡῢΰῤῥῦῧῨῩῪΎῬῲῳῴῶῷῸΌῺΏâ±â¿â„‚ℇℊℋℌâ„ℎâ„â„ℑℒℓℕℙℚℛℜâ„ℤΩℨKÅℬâ„ℯℰℱℳℴℹ -ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzªµºÀÃÂÃÄÅÆÇÈÉÊ -ËÌÃÃŽÃÃÑÒÓÔÕÖØÙÚÛÜÃÞßà áâãäåæçèéêëìÃîïðñòóôõöøùúûüýþÿĀÄĂ㥹ĆćĈĉĊċČÄÄŽ -ÄÄđĒēĔĕĖėĘęĚěĜÄÄžÄŸÄ Ä¡Ä¢Ä£Ä¤Ä¥Ä¦Ä§Ä¨Ä©ÄªÄ«Ä¬ÄĮįİıIJijĴĵĶķĸĹĺĻļĽľĿŀÅłŃńŅņŇňʼnŊŋŌÅÅŽÅÅ -őŒœŔŕŖŗŘřŚśŜÅŞşŠšŢţŤťŦŧŨũŪūŬÅÅ®Å¯Å°Å±Å²Å³Å´ÅµÅ¶Å·Å¸Å¹ÅºÅ»Å¼Å½Å¾Å¿Æ€ÆÆ‚ÆƒÆ„Æ…Æ†Æ‡ÆˆÆ‰ÆŠÆ‹ÆŒÆÆŽÆÆÆ‘Æ’ -Æ“Æ”Æ•Æ–Æ—Æ˜Æ™ÆšÆ›ÆœÆÆžÆŸÆ Æ¡Æ¢Æ£Æ¤Æ¥Æ¦Æ§Æ¨Æ©ÆªÆ«Æ¬ÆÆ®Æ¯Æ°Æ±Æ²Æ³Æ´ÆµÆ¶Æ·Æ¸Æ¹ÆºÆ¼Æ½Æ¾Æ¿Ç„džLJljNJnjÇÇŽÇÇǑǒǓǔǕǖǗǘǙǚǛǜ -ÇÇžÇŸÇ Ç¡Ç¢Ç£Ç¤Ç¥Ç¦Ç§Ç¨Ç©ÇªÇ«Ç¬ÇǮǯǰDZdzǴǵǶǷǸǹǺǻǼǽǾǿȀÈȂȃȄȅȆȇȈȉȊȋȌÈÈŽÈÈȑȒȓȔȕȖȗȘșȚțȜÈȞȟ -È È¡È¢È£È¤È¥È¦È§È¨È©ÈªÈ«È¬ÈȮȯȰȱȲȳȴȵȶȷȸȹȺȻȼȽȾȿɀÉÉɑɒɓɔɕɖɗɘəɚɛɜÉÉžÉŸÉ É¡É¢É£É¤É¥É¦É§É¨É©ÉªÉ«É¬Éɮɯ -ɰɱɲɳɴɵɶɷɸɹɺɻɼɽɾɿʀÊʂʃʄʅʆʇʈʉʊʋʌÊÊŽÊÊʑʒʓʔʕʖʗʘʙʚʛʜÊÊžÊŸÊ Ê¡Ê¢Ê£Ê¤Ê¥Ê¦Ê§Ê¨Ê©ÊªÊ«Ê¬ÊʮʯΆΈ -ΉΊΌΎÎÎΑΒΓΔΕΖΗΘΙΚΛΜÎΞΟΠΡΣΤΥΦΧΨΩΪΫάÎήίΰαβγδεζηθικλμνξοπÏÏ‚ÏƒÏ„Ï…Ï†Ï‡ÏˆÏ‰ÏŠÏ‹ÏŒÏ -ÏŽÏϑϒϓϔϕϖϗϘϙϚϛϜÏÏžÏŸÏ Ï¡Ï¢Ï£Ï¤Ï¥Ï¦Ï§Ï¨Ï©ÏªÏ«Ï¬ÏϮϯϰϱϲϳϴϵϷϸϹϺϻϼϽϾϿЀÐЂЃЄЅІЇЈЉЊЋЌÐÐŽÐÐБ -ВГДЕЖЗИЙКЛМÐОПРСТУФХЦЧШЩЪЫЬÐЮЯабвгдежзийклмнопрÑтуфхцчшщъыьÑÑŽÑÑёђѓ -єѕіїјљњћќÑÑžÑŸÑ Ñ¡Ñ¢Ñ£Ñ¤Ñ¥Ñ¦Ñ§Ñ¨Ñ©ÑªÑ«Ñ¬ÑѮѯѰѱѲѳѴѵѶѷѸѹѺѻѼѽѾѿҀÒÒŠÒ‹ÒŒÒÒŽÒÒÒ‘Ò’Ò“Ò”Ò•Ò–Ò—Ò˜Ò™ÒšÒ›ÒœÒ -ÒžÒŸÒ Ò¡Ò¢Ò£Ò¤Ò¥Ò¦Ò§Ò¨Ò©ÒªÒ«Ò¬ÒÒ®Ò¯Ò°Ò±Ò²Ò³Ò´ÒµÒ¶Ò·Ò¸Ò¹ÒºÒ»Ò¼Ò½Ò¾Ò¿Ó€ÓÓ‚ÓƒÓ„Ó…Ó†Ó‡ÓˆÓ‰ÓŠÓ‹ÓŒÓÓŽÓÓ‘Ó’Ó“Ó”Ó•Ó–Ó—Ó˜Ó™ÓšÓ›ÓœÓÓžÓŸÓ -Ó¡Ó¢Ó£Ó¤Ó¥Ó¦Ó§Ó¨Ó©ÓªÓ«Ó¬ÓÓ®Ó¯Ó°Ó±Ó²Ó³Ó´ÓµÓ¶Ó·Ó¸Ó¹Ô€ÔÔ‚ÔƒÔ„Ô…Ô†Ô‡ÔˆÔ‰ÔŠÔ‹ÔŒÔÔŽÔÔ±Ô²Ô³Ô´ÔµÔ¶Ô·Ô¸Ô¹ÔºÔ»Ô¼Ô½Ô¾Ô¿Õ€ÕÕ‚ÕƒÕ„Õ…Õ†Õ‡ÕˆÕ‰ -ÕŠÕ‹ÕŒÕÕŽÕÕÕ‘Õ’Õ“Õ”Õ•Õ–Õ¡Õ¢Õ£Õ¤Õ¥Õ¦Õ§Õ¨Õ©ÕªÕ«Õ¬ÕÕ®Õ¯Õ°Õ±Õ²Õ³Õ´ÕµÕ¶Õ·Õ¸Õ¹ÕºÕ»Õ¼Õ½Õ¾Õ¿Ö€ÖւփքօֆևႠႡႢႣႤႥႦႧႨႩႪႫႬႠ-ႮႯႰႱႲႳႴႵႶႷႸႹႺႻႼႽႾႿჀáƒáƒ‚ჃჄჅᴀá´á´‚ᴃᴄᴅᴆᴇᴈᴉᴊᴋᴌá´á´Žá´á´á´‘ᴒᴓᴔᴕᴖᴗᴘᴙᴚᴛᴜá´á´žá´Ÿá´ ᴡᴢᴣᴤᴥᴦᴧᴨᴩ -ᴪᴫᵢᵣᵤᵥᵦᵧᵨᵩᵪᵫᵬáµáµ®áµ¯áµ°áµ±áµ²áµ³áµ´áµµáµ¶áµ·áµ¹áµºáµ»áµ¼áµ½áµ¾áµ¿á¶€á¶á¶‚ᶃᶄᶅᶆᶇᶈᶉᶊᶋᶌá¶á¶Žá¶á¶á¶‘ᶒᶓᶔᶕᶖᶗᶘᶙᶚḀá¸á¸‚ḃḄḅḆḇ -ḈḉḊḋḌá¸á¸Žá¸á¸á¸‘ḒḓḔḕḖḗḘḙḚḛḜá¸á¸žá¸Ÿá¸ ḡḢḣḤḥḦḧḨḩḪḫḬá¸á¸®á¸¯á¸°á¸±á¸²á¸³á¸´á¸µá¸¶á¸·á¸¸á¸¹á¸ºá¸»á¸¼á¸½á¸¾á¸¿á¹€á¹á¹‚ṃṄṅṆṇṈṉ -ṊṋṌá¹á¹Žá¹á¹á¹‘ṒṓṔṕṖṗṘṙṚṛṜá¹á¹žá¹Ÿá¹ ṡṢṣṤṥṦṧṨṩṪṫṬá¹á¹®á¹¯á¹°á¹±á¹²á¹³á¹´á¹µá¹¶á¹·á¹¸á¹¹á¹ºá¹»á¹¼á¹½á¹¾á¹¿áº€áºáº‚ẃẄẅẆẇẈẉẊẋ -ẌáºáºŽáºáºáº‘ẒẓẔẕẖẗẘẙẚẛẠạẢảẤấẦầẨẩẪẫẬáºáº®áº¯áº°áº±áº²áº³áº´áºµáº¶áº·áº¸áº¹áººáº»áº¼áº½áº¾áº¿á»€á»á»‚ểỄễỆệỈỉỊịỌá»á»Žá»á»á»‘ -ỒồỔổỖỗỘộỚớỜá»á»žá»Ÿá» ỡỢợỤụỦủỨứỪừỬá»á»®á»¯á»°á»±á»²á»³á»´á»µá»¶á»·á»¸á»¹á¼€á¼á¼‚ἃἄἅἆἇἈἉἊἋἌá¼á¼Žá¼á¼á¼‘ἒἓἔἕἘἙἚἛ -Ἔá¼á¼ ἡἢἣἤἥἦἧἨἩἪἫἬá¼á¼®á¼¯á¼°á¼±á¼²á¼³á¼´á¼µá¼¶á¼·á¼¸á¼¹á¼ºá¼»á¼¼á¼½á¼¾á¼¿á½€á½á½‚ὃὄὅὈὉὊὋὌá½á½á½‘ὒὓὔὕὖὗὙὛá½á½Ÿá½ ὡὢὣὤὥὦὧ -ὨὩὪὫὬá½á½®á½¯á½°á½±á½²á½³á½´á½µá½¶á½·á½¸á½¹á½ºá½»á½¼á½½á¾€á¾á¾‚ᾃᾄᾅᾆᾇá¾á¾‘ᾒᾓᾔᾕᾖᾗᾠᾡᾢᾣᾤᾥᾦᾧᾰᾱᾲᾳᾴᾶᾷᾸᾹᾺΆιῂῃῄῆῇῈΈῊ -á¿‹á¿á¿‘ῒΐῖῗῘῙῚΊῠῡῢΰῤῥῦῧῨῩῪΎῬῲῳῴῶῷῸΌῺΏâ±â¿â„‚ℇℊℋℌâ„ℎâ„â„ℑℒℓℕℙℚℛℜâ„ℤΩℨKÅℬâ„ℯℰℱℳℴℹ -ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzªµºÀÃÂÃÄÅÆÇÈÉÊ -ËÌÃÃŽÃÃÑÒÓÔÕÖØÙÚÛÜÃÞßà áâãäåæçèéêëìÃîïðñòóôõöøùúûüýþÿĀÄĂ㥹ĆćĈĉĊċČÄÄŽ -ÄÄđĒēĔĕĖėĘęĚěĜÄÄžÄŸÄ Ä¡Ä¢Ä£Ä¤Ä¥Ä¦Ä§Ä¨Ä©ÄªÄ«Ä¬ÄĮįİıIJijĴĵĶķĸĹĺĻļĽľĿŀÅłŃńŅņŇňʼnŊŋŌÅÅŽÅÅ -őŒœŔŕŖŗŘřŚśŜÅŞşŠšŢţŤťŦŧŨũŪūŬÅÅ®Å¯Å°Å±Å²Å³Å´ÅµÅ¶Å·Å¸Å¹ÅºÅ»Å¼Å½Å¾Å¿Æ€ÆÆ‚ÆƒÆ„Æ…Æ†Æ‡ÆˆÆ‰ÆŠÆ‹ÆŒÆÆŽÆÆÆ‘Æ’ -Æ“Æ”Æ•Æ–Æ—Æ˜Æ™ÆšÆ›ÆœÆÆžÆŸÆ Æ¡Æ¢Æ£Æ¤Æ¥Æ¦Æ§Æ¨Æ©ÆªÆ«Æ¬ÆÆ®Æ¯Æ°Æ±Æ²Æ³Æ´ÆµÆ¶Æ·Æ¸Æ¹ÆºÆ¼Æ½Æ¾Æ¿Ç„džLJljNJnjÇÇŽÇÇǑǒǓǔǕǖǗǘǙǚǛǜ -ÇÇžÇŸÇ Ç¡Ç¢Ç£Ç¤Ç¥Ç¦Ç§Ç¨Ç©ÇªÇ«Ç¬ÇǮǯǰDZdzǴǵǶǷǸǹǺǻǼǽǾǿȀÈȂȃȄȅȆȇȈȉȊȋȌÈÈŽÈÈȑȒȓȔȕȖȗȘșȚțȜÈȞȟ -È È¡È¢È£È¤È¥È¦È§È¨È©ÈªÈ«È¬ÈȮȯȰȱȲȳȴȵȶȷȸȹȺȻȼȽȾȿɀÉÉɑɒɓɔɕɖɗɘəɚɛɜÉÉžÉŸÉ É¡É¢É£É¤É¥É¦É§É¨É©ÉªÉ«É¬Éɮɯ -ɰɱɲɳɴɵɶɷɸɹɺɻɼɽɾɿʀÊʂʃʄʅʆʇʈʉʊʋʌÊÊŽÊÊʑʒʓʔʕʖʗʘʙʚʛʜÊÊžÊŸÊ Ê¡Ê¢Ê£Ê¤Ê¥Ê¦Ê§Ê¨Ê©ÊªÊ«Ê¬ÊʮʯΆΈ -ΉΊΌΎÎÎΑΒΓΔΕΖΗΘΙΚΛΜÎΞΟΠΡΣΤΥΦΧΨΩΪΫάÎήίΰαβγδεζηθικλμνξοπÏÏ‚ÏƒÏ„Ï…Ï†Ï‡ÏˆÏ‰ÏŠÏ‹ÏŒÏ -ÏŽÏϑϒϓϔϕϖϗϘϙϚϛϜÏÏžÏŸÏ Ï¡Ï¢Ï£Ï¤Ï¥Ï¦Ï§Ï¨Ï©ÏªÏ«Ï¬ÏϮϯϰϱϲϳϴϵϷϸϹϺϻϼϽϾϿЀÐЂЃЄЅІЇЈЉЊЋЌÐÐŽÐÐБ -ВГДЕЖЗИЙКЛМÐОПРСТУФХЦЧШЩЪЫЬÐЮЯабвгдежзийклмнопрÑтуфхцчшщъыьÑÑŽÑÑёђѓ -єѕіїјљњћќÑÑžÑŸÑ Ñ¡Ñ¢Ñ£Ñ¤Ñ¥Ñ¦Ñ§Ñ¨Ñ©ÑªÑ«Ñ¬ÑѮѯѰѱѲѳѴѵѶѷѸѹѺѻѼѽѾѿҀÒÒŠÒ‹ÒŒÒÒŽÒÒÒ‘Ò’Ò“Ò”Ò•Ò–Ò—Ò˜Ò™ÒšÒ›ÒœÒ -ÒžÒŸÒ Ò¡Ò¢Ò£Ò¤Ò¥Ò¦Ò§Ò¨Ò©ÒªÒ«Ò¬ÒÒ®Ò¯Ò°Ò±Ò²Ò³Ò´ÒµÒ¶Ò·Ò¸Ò¹ÒºÒ»Ò¼Ò½Ò¾Ò¿Ó€ÓÓ‚ÓƒÓ„Ó…Ó†Ó‡ÓˆÓ‰ÓŠÓ‹ÓŒÓÓŽÓÓ‘Ó’Ó“Ó”Ó•Ó–Ó—Ó˜Ó™ÓšÓ›ÓœÓÓžÓŸÓ -Ó¡Ó¢Ó£Ó¤Ó¥Ó¦Ó§Ó¨Ó©ÓªÓ«Ó¬ÓÓ®Ó¯Ó°Ó±Ó²Ó³Ó´ÓµÓ¶Ó·Ó¸Ó¹Ô€ÔÔ‚ÔƒÔ„Ô…Ô†Ô‡ÔˆÔ‰ÔŠÔ‹ÔŒÔÔŽÔÔ±Ô²Ô³Ô´ÔµÔ¶Ô·Ô¸Ô¹ÔºÔ»Ô¼Ô½Ô¾Ô¿Õ€ÕÕ‚ÕƒÕ„Õ…Õ†Õ‡ÕˆÕ‰ -ÕŠÕ‹ÕŒÕÕŽÕÕÕ‘Õ’Õ“Õ”Õ•Õ–Õ¡Õ¢Õ£Õ¤Õ¥Õ¦Õ§Õ¨Õ©ÕªÕ«Õ¬ÕÕ®Õ¯Õ°Õ±Õ²Õ³Õ´ÕµÕ¶Õ·Õ¸Õ¹ÕºÕ»Õ¼Õ½Õ¾Õ¿Ö€ÖւփքօֆևႠႡႢႣႤႥႦႧႨႩႪႫႬႠ-ႮႯႰႱႲႳႴႵႶႷႸႹႺႻႼႽႾႿჀáƒáƒ‚ჃჄჅᴀá´á´‚ᴃᴄᴅᴆᴇᴈᴉᴊᴋᴌá´á´Žá´á´á´‘ᴒᴓᴔᴕᴖᴗᴘᴙᴚᴛᴜá´á´žá´Ÿá´ ᴡᴢᴣᴤᴥᴦᴧᴨᴩ -ᴪᴫᵢᵣᵤᵥᵦᵧᵨᵩᵪᵫᵬáµáµ®áµ¯áµ°áµ±áµ²áµ³áµ´áµµáµ¶áµ·áµ¹áµºáµ»áµ¼áµ½áµ¾áµ¿á¶€á¶á¶‚ᶃᶄᶅᶆᶇᶈᶉᶊᶋᶌá¶á¶Žá¶á¶á¶‘ᶒᶓᶔᶕᶖᶗᶘᶙᶚḀá¸á¸‚ḃḄḅḆḇ -ḈḉḊḋḌá¸á¸Žá¸á¸á¸‘ḒḓḔḕḖḗḘḙḚḛḜá¸á¸žá¸Ÿá¸ ḡḢḣḤḥḦḧḨḩḪḫḬá¸á¸®á¸¯á¸°á¸±á¸²á¸³á¸´á¸µá¸¶á¸·á¸¸á¸¹á¸ºá¸»á¸¼á¸½á¸¾á¸¿á¹€á¹á¹‚ṃṄṅṆṇṈṉ -ṊṋṌá¹á¹Žá¹á¹á¹‘ṒṓṔṕṖṗṘṙṚṛṜá¹á¹žá¹Ÿá¹ ṡṢṣṤṥṦṧṨṩṪṫṬá¹á¹®á¹¯á¹°á¹±á¹²á¹³á¹´á¹µá¹¶á¹·á¹¸á¹¹á¹ºá¹»á¹¼á¹½á¹¾á¹¿áº€áºáº‚ẃẄẅẆẇẈẉẊẋ -ẌáºáºŽáºáºáº‘ẒẓẔẕẖẗẘẙẚẛẠạẢảẤấẦầẨẩẪẫẬáºáº®áº¯áº°áº±áº²áº³áº´áºµáº¶áº·áº¸áº¹áººáº»áº¼áº½áº¾áº¿á»€á»á»‚ểỄễỆệỈỉỊịỌá»á»Žá»á»á»‘ -ỒồỔổỖỗỘộỚớỜá»á»žá»Ÿá» ỡỢợỤụỦủỨứỪừỬá»á»®á»¯á»°á»±á»²á»³á»´á»µá»¶á»·á»¸á»¹á¼€á¼á¼‚ἃἄἅἆἇἈἉἊἋἌá¼á¼Žá¼á¼á¼‘ἒἓἔἕἘἙἚἛ -Ἔá¼á¼ ἡἢἣἤἥἦἧἨἩἪἫἬá¼á¼®á¼¯á¼°á¼±á¼²á¼³á¼´á¼µá¼¶á¼·á¼¸á¼¹á¼ºá¼»á¼¼á¼½á¼¾á¼¿á½€á½á½‚ὃὄὅὈὉὊὋὌá½á½á½‘ὒὓὔὕὖὗὙὛá½á½Ÿá½ ὡὢὣὤὥὦὧ -ὨὩὪὫὬá½á½®á½¯á½°á½±á½²á½³á½´á½µá½¶á½·á½¸á½¹á½ºá½»á½¼á½½á¾€á¾á¾‚ᾃᾄᾅᾆᾇá¾á¾‘ᾒᾓᾔᾕᾖᾗᾠᾡᾢᾣᾤᾥᾦᾧᾰᾱᾲᾳᾴᾶᾷᾸᾹᾺΆιῂῃῄῆῇῈΈῊ -á¿‹á¿á¿‘ῒΐῖῗῘῙῚΊῠῡῢΰῤῥῦῧῨῩῪΎῬῲῳῴῶῷῸΌῺΏâ±â¿â„‚ℇℊℋℌâ„ℎâ„â„ℑℒℓℕℙℚℛℜâ„ℤΩℨKÅℬâ„ℯℰℱℳℴℹ -ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzªµºÀÃÂÃÄÅÆÇÈÉÊ -ËÌÃÃŽÃÃÑÒÓÔÕÖØÙÚÛÜÃÞßà áâãäåæçèéêëìÃîïðñòóôõöøùúûüýþÿĀÄĂ㥹ĆćĈĉĊċČÄÄŽ -ÄÄđĒēĔĕĖėĘęĚěĜÄÄžÄŸÄ Ä¡Ä¢Ä£Ä¤Ä¥Ä¦Ä§Ä¨Ä©ÄªÄ«Ä¬ÄĮįİıIJijĴĵĶķĸĹĺĻļĽľĿŀÅłŃńŅņŇňʼnŊŋŌÅÅŽÅÅ -őŒœŔŕŖŗŘřŚśŜÅŞşŠšŢţŤťŦŧŨũŪūŬÅÅ®Å¯Å°Å±Å²Å³Å´ÅµÅ¶Å·Å¸Å¹ÅºÅ»Å¼Å½Å¾Å¿Æ€ÆÆ‚ÆƒÆ„Æ…Æ†Æ‡ÆˆÆ‰ÆŠÆ‹ÆŒÆÆŽÆÆÆ‘Æ’ -Æ“Æ”Æ•Æ–Æ—Æ˜Æ™ÆšÆ›ÆœÆÆžÆŸÆ Æ¡Æ¢Æ£Æ¤Æ¥Æ¦Æ§Æ¨Æ©ÆªÆ«Æ¬ÆÆ®Æ¯Æ°Æ±Æ²Æ³Æ´ÆµÆ¶Æ·Æ¸Æ¹ÆºÆ¼Æ½Æ¾Æ¿Ç„džLJljNJnjÇÇŽÇÇǑǒǓǔǕǖǗǘǙǚǛǜ -ÇÇžÇŸÇ Ç¡Ç¢Ç£Ç¤Ç¥Ç¦Ç§Ç¨Ç©ÇªÇ«Ç¬ÇǮǯǰDZdzǴǵǶǷǸǹǺǻǼǽǾǿȀÈȂȃȄȅȆȇȈȉȊȋȌÈÈŽÈÈȑȒȓȔȕȖȗȘșȚțȜÈȞȟ -È È¡È¢È£È¤È¥È¦È§È¨È©ÈªÈ«È¬ÈȮȯȰȱȲȳȴȵȶȷȸȹȺȻȼȽȾȿɀÉÉɑɒɓɔɕɖɗɘəɚɛɜÉÉžÉŸÉ É¡É¢É£É¤É¥É¦É§É¨É©ÉªÉ«É¬Éɮɯ -ɰɱɲɳɴɵɶɷɸɹɺɻɼɽɾɿʀÊʂʃʄʅʆʇʈʉʊʋʌÊÊŽÊÊʑʒʓʔʕʖʗʘʙʚʛʜÊÊžÊŸÊ Ê¡Ê¢Ê£Ê¤Ê¥Ê¦Ê§Ê¨Ê©ÊªÊ«Ê¬ÊʮʯΆΈ -ΉΊΌΎÎÎΑΒΓΔΕΖΗΘΙΚΛΜÎΞΟΠΡΣΤΥΦΧΨΩΪΫάÎήίΰαβγδεζηθικλμνξοπÏÏ‚ÏƒÏ„Ï…Ï†Ï‡ÏˆÏ‰ÏŠÏ‹ÏŒÏ -ÏŽÏϑϒϓϔϕϖϗϘϙϚϛϜÏÏžÏŸÏ Ï¡Ï¢Ï£Ï¤Ï¥Ï¦Ï§Ï¨Ï©ÏªÏ«Ï¬ÏϮϯϰϱϲϳϴϵϷϸϹϺϻϼϽϾϿЀÐЂЃЄЅІЇЈЉЊЋЌÐÐŽÐÐБ -ВГДЕЖЗИЙКЛМÐОПРСТУФХЦЧШЩЪЫЬÐЮЯабвгдежзийклмнопрÑтуфхцчшщъыьÑÑŽÑÑёђѓ -єѕіїјљњћќÑÑžÑŸÑ Ñ¡Ñ¢Ñ£Ñ¤Ñ¥Ñ¦Ñ§Ñ¨Ñ©ÑªÑ«Ñ¬ÑѮѯѰѱѲѳѴѵѶѷѸѹѺѻѼѽѾѿҀÒÒŠÒ‹ÒŒÒÒŽÒÒÒ‘Ò’Ò“Ò”Ò•Ò–Ò—Ò˜Ò™ÒšÒ›ÒœÒ -ÒžÒŸÒ Ò¡Ò¢Ò£Ò¤Ò¥Ò¦Ò§Ò¨Ò©ÒªÒ«Ò¬ÒÒ®Ò¯Ò°Ò±Ò²Ò³Ò´ÒµÒ¶Ò·Ò¸Ò¹ÒºÒ»Ò¼Ò½Ò¾Ò¿Ó€ÓÓ‚ÓƒÓ„Ó…Ó†Ó‡ÓˆÓ‰ÓŠÓ‹ÓŒÓÓŽÓÓ‘Ó’Ó“Ó”Ó•Ó–Ó—Ó˜Ó™ÓšÓ›ÓœÓÓžÓŸÓ -Ó¡Ó¢Ó£Ó¤Ó¥Ó¦Ó§Ó¨Ó©ÓªÓ«Ó¬ÓÓ®Ó¯Ó°Ó±Ó²Ó³Ó´ÓµÓ¶Ó·Ó¸Ó¹Ô€ÔÔ‚ÔƒÔ„Ô…Ô†Ô‡ÔˆÔ‰ÔŠÔ‹ÔŒÔÔŽÔÔ±Ô²Ô³Ô´ÔµÔ¶Ô·Ô¸Ô¹ÔºÔ»Ô¼Ô½Ô¾Ô¿Õ€ÕÕ‚ÕƒÕ„Õ…Õ†Õ‡ÕˆÕ‰ -ÕŠÕ‹ÕŒÕÕŽÕÕÕ‘Õ’Õ“Õ”Õ•Õ–Õ¡Õ¢Õ£Õ¤Õ¥Õ¦Õ§Õ¨Õ©ÕªÕ«Õ¬ÕÕ®Õ¯Õ°Õ±Õ²Õ³Õ´ÕµÕ¶Õ·Õ¸Õ¹ÕºÕ»Õ¼Õ½Õ¾Õ¿Ö€ÖւփքօֆևႠႡႢႣႤႥႦႧႨႩႪႫႬႠ-ႮႯႰႱႲႳႴႵႶႷႸႹႺႻႼႽႾႿჀáƒáƒ‚ჃჄჅᴀá´á´‚ᴃᴄᴅᴆᴇᴈᴉᴊᴋᴌá´á´Žá´á´á´‘ᴒᴓᴔᴕᴖᴗᴘᴙᴚᴛᴜá´á´žá´Ÿá´ ᴡᴢᴣᴤᴥᴦᴧᴨᴩ -ᴪᴫᵢᵣᵤᵥᵦᵧᵨᵩᵪᵫᵬáµáµ®áµ¯áµ°áµ±áµ²áµ³áµ´áµµáµ¶áµ·áµ¹áµºáµ»áµ¼áµ½áµ¾áµ¿á¶€á¶á¶‚ᶃᶄᶅᶆᶇᶈᶉᶊᶋᶌá¶á¶Žá¶á¶á¶‘ᶒᶓᶔᶕᶖᶗᶘᶙᶚḀá¸á¸‚ḃḄḅḆḇ -ḈḉḊḋḌá¸á¸Žá¸á¸á¸‘ḒḓḔḕḖḗḘḙḚḛḜá¸á¸žá¸Ÿá¸ ḡḢḣḤḥḦḧḨḩḪḫḬá¸á¸®á¸¯á¸°á¸±á¸²á¸³á¸´á¸µá¸¶á¸·á¸¸á¸¹á¸ºá¸»á¸¼á¸½á¸¾á¸¿á¹€á¹á¹‚ṃṄṅṆṇṈṉ -ṊṋṌá¹á¹Žá¹á¹á¹‘ṒṓṔṕṖṗṘṙṚṛṜá¹á¹žá¹Ÿá¹ ṡṢṣṤṥṦṧṨṩṪṫṬá¹á¹®á¹¯á¹°á¹±á¹²á¹³á¹´á¹µá¹¶á¹·á¹¸á¹¹á¹ºá¹»á¹¼á¹½á¹¾á¹¿áº€áºáº‚ẃẄẅẆẇẈẉẊẋ -ẌáºáºŽáºáºáº‘ẒẓẔẕẖẗẘẙẚẛẠạẢảẤấẦầẨẩẪẫẬáºáº®áº¯áº°áº±áº²áº³áº´áºµáº¶áº·áº¸áº¹áººáº»áº¼áº½áº¾áº¿á»€á»á»‚ểỄễỆệỈỉỊịỌá»á»Žá»á»á»‘ -ỒồỔổỖỗỘộỚớỜá»á»žá»Ÿá» ỡỢợỤụỦủỨứỪừỬá»á»®á»¯á»°á»±á»²á»³á»´á»µá»¶á»·á»¸á»¹á¼€á¼á¼‚ἃἄἅἆἇἈἉἊἋἌá¼á¼Žá¼á¼á¼‘ἒἓἔἕἘἙἚἛ -Ἔá¼á¼ ἡἢἣἤἥἦἧἨἩἪἫἬá¼á¼®á¼¯á¼°á¼±á¼²á¼³á¼´á¼µá¼¶á¼·á¼¸á¼¹á¼ºá¼»á¼¼á¼½á¼¾á¼¿á½€á½á½‚ὃὄὅὈὉὊὋὌá½á½á½‘ὒὓὔὕὖὗὙὛá½á½Ÿá½ ὡὢὣὤὥὦὧ -ὨὩὪὫὬá½á½®á½¯á½°á½±á½²á½³á½´á½µá½¶á½·á½¸á½¹á½ºá½»á½¼á½½á¾€á¾á¾‚ᾃᾄᾅᾆᾇá¾á¾‘ᾒᾓᾔᾕᾖᾗᾠᾡᾢᾣᾤᾥᾦᾧᾰᾱᾲᾳᾴᾶᾷᾸᾹᾺΆιῂῃῄῆῇῈΈῊ -á¿‹á¿á¿‘ῒΐῖῗῘῙῚΊῠῡῢΰῤῥῦῧῨῩῪΎῬῲῳῴῶῷῸΌῺΏâ±â¿â„‚ℇℊℋℌâ„ℎâ„â„ℑℒℓℕℙℚℛℜâ„ℤΩℨKÅℬâ„ℯℰℱℳℴℹ -ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzªµºÀÃÂÃÄÅÆÇÈÉÊ -ËÌÃÃŽÃÃÑÒÓÔÕÖØÙÚÛÜÃÞßà áâãäåæçèéêëìÃîïðñòóôõöøùúûüýþÿĀÄĂ㥹ĆćĈĉĊċČÄÄŽ -ÄÄđĒēĔĕĖėĘęĚěĜÄÄžÄŸÄ Ä¡Ä¢Ä£Ä¤Ä¥Ä¦Ä§Ä¨Ä©ÄªÄ«Ä¬ÄĮįİıIJijĴĵĶķĸĹĺĻļĽľĿŀÅłŃńŅņŇňʼnŊŋŌÅÅŽÅÅ -őŒœŔŕŖŗŘřŚśŜÅŞşŠšŢţŤťŦŧŨũŪūŬÅÅ®Å¯Å°Å±Å²Å³Å´ÅµÅ¶Å·Å¸Å¹ÅºÅ»Å¼Å½Å¾Å¿Æ€ÆÆ‚ÆƒÆ„Æ…Æ†Æ‡ÆˆÆ‰ÆŠÆ‹ÆŒÆÆŽÆÆÆ‘Æ’ -Æ“Æ”Æ•Æ–Æ—Æ˜Æ™ÆšÆ›ÆœÆÆžÆŸÆ Æ¡Æ¢Æ£Æ¤Æ¥Æ¦Æ§Æ¨Æ©ÆªÆ«Æ¬ÆÆ®Æ¯Æ°Æ±Æ²Æ³Æ´ÆµÆ¶Æ·Æ¸Æ¹ÆºÆ¼Æ½Æ¾Æ¿Ç„džLJljNJnjÇÇŽÇÇǑǒǓǔǕǖǗǘǙǚǛǜ -ÇÇžÇŸÇ Ç¡Ç¢Ç£Ç¤Ç¥Ç¦Ç§Ç¨Ç©ÇªÇ«Ç¬ÇǮǯǰDZdzǴǵǶǷǸǹǺǻǼǽǾǿȀÈȂȃȄȅȆȇȈȉȊȋȌÈÈŽÈÈȑȒȓȔȕȖȗȘșȚțȜÈȞȟ -È È¡È¢È£È¤È¥È¦È§È¨È©ÈªÈ«È¬ÈȮȯȰȱȲȳȴȵȶȷȸȹȺȻȼȽȾȿɀÉÉɑɒɓɔɕɖɗɘəɚɛɜÉÉžÉŸÉ É¡É¢É£É¤É¥É¦É§É¨É©ÉªÉ«É¬Éɮɯ -ɰɱɲɳɴɵɶɷɸɹɺɻɼɽɾɿʀÊʂʃʄʅʆʇʈʉʊʋʌÊÊŽÊÊʑʒʓʔʕʖʗʘʙʚʛʜÊÊžÊŸÊ Ê¡Ê¢Ê£Ê¤Ê¥Ê¦Ê§Ê¨Ê©ÊªÊ«Ê¬ÊʮʯΆΈ -ΉΊΌΎÎÎΑΒΓΔΕΖΗΘΙΚΛΜÎΞΟΠΡΣΤΥΦΧΨΩΪΫάÎήίΰαβγδεζηθικλμνξοπÏÏ‚ÏƒÏ„Ï…Ï†Ï‡ÏˆÏ‰ÏŠÏ‹ÏŒÏ -ÏŽÏϑϒϓϔϕϖϗϘϙϚϛϜÏÏžÏŸÏ Ï¡Ï¢Ï£Ï¤Ï¥Ï¦Ï§Ï¨Ï©ÏªÏ«Ï¬ÏϮϯϰϱϲϳϴϵϷϸϹϺϻϼϽϾϿЀÐЂЃЄЅІЇЈЉЊЋЌÐÐŽÐÐБ -ВГДЕЖЗИЙКЛМÐОПРСТУФХЦЧШЩЪЫЬÐЮЯабвгдежзийклмнопрÑтуфхцчшщъыьÑÑŽÑÑёђѓ -єѕіїјљњћќÑÑžÑŸÑ Ñ¡Ñ¢Ñ£Ñ¤Ñ¥Ñ¦Ñ§Ñ¨Ñ©ÑªÑ«Ñ¬ÑѮѯѰѱѲѳѴѵѶѷѸѹѺѻѼѽѾѿҀÒÒŠÒ‹ÒŒÒÒŽÒÒÒ‘Ò’Ò“Ò”Ò•Ò–Ò—Ò˜Ò™ÒšÒ›ÒœÒ -ÒžÒŸÒ Ò¡Ò¢Ò£Ò¤Ò¥Ò¦Ò§Ò¨Ò©ÒªÒ«Ò¬ÒÒ®Ò¯Ò°Ò±Ò²Ò³Ò´ÒµÒ¶Ò·Ò¸Ò¹ÒºÒ»Ò¼Ò½Ò¾Ò¿Ó€ÓÓ‚ÓƒÓ„Ó…Ó†Ó‡ÓˆÓ‰ÓŠÓ‹ÓŒÓÓŽÓÓ‘Ó’Ó“Ó”Ó•Ó–Ó—Ó˜Ó™ÓšÓ›ÓœÓÓžÓŸÓ -Ó¡Ó¢Ó£Ó¤Ó¥Ó¦Ó§Ó¨Ó©ÓªÓ«Ó¬ÓÓ®Ó¯Ó°Ó±Ó²Ó³Ó´ÓµÓ¶Ó·Ó¸Ó¹Ô€ÔÔ‚ÔƒÔ„Ô…Ô†Ô‡ÔˆÔ‰ÔŠÔ‹ÔŒÔÔŽÔÔ±Ô²Ô³Ô´ÔµÔ¶Ô·Ô¸Ô¹ÔºÔ»Ô¼Ô½Ô¾Ô¿Õ€ÕÕ‚ÕƒÕ„Õ…Õ†Õ‡ÕˆÕ‰ -ÕŠÕ‹ÕŒÕÕŽÕÕÕ‘Õ’Õ“Õ”Õ•Õ–Õ¡Õ¢Õ£Õ¤Õ¥Õ¦Õ§Õ¨Õ©ÕªÕ«Õ¬ÕÕ®Õ¯Õ°Õ±Õ²Õ³Õ´ÕµÕ¶Õ·Õ¸Õ¹ÕºÕ»Õ¼Õ½Õ¾Õ¿Ö€ÖւփքօֆևႠႡႢႣႤႥႦႧႨႩႪႫႬႠ-ႮႯႰႱႲႳႴႵႶႷႸႹႺႻႼႽႾႿჀáƒáƒ‚ჃჄჅᴀá´á´‚ᴃᴄᴅᴆᴇᴈᴉᴊᴋᴌá´á´Žá´á´á´‘ᴒᴓᴔᴕᴖᴗᴘᴙᴚᴛᴜá´á´žá´Ÿá´ ᴡᴢᴣᴤᴥᴦᴧᴨᴩ -ᴪᴫᵢᵣᵤᵥᵦᵧᵨᵩᵪᵫᵬáµáµ®áµ¯áµ°áµ±áµ²áµ³áµ´áµµáµ¶áµ·áµ¹áµºáµ»áµ¼áµ½áµ¾áµ¿á¶€á¶á¶‚ᶃᶄᶅᶆᶇᶈᶉᶊᶋᶌá¶á¶Žá¶á¶á¶‘ᶒᶓᶔᶕᶖᶗᶘᶙᶚḀá¸á¸‚ḃḄḅḆḇ -ḈḉḊḋḌá¸á¸Žá¸á¸á¸‘ḒḓḔḕḖḗḘḙḚḛḜá¸á¸žá¸Ÿá¸ ḡḢḣḤḥḦḧḨḩḪḫḬá¸á¸®á¸¯á¸°á¸±á¸²á¸³á¸´á¸µá¸¶á¸·á¸¸á¸¹á¸ºá¸»á¸¼á¸½á¸¾á¸¿á¹€á¹á¹‚ṃṄṅṆṇṈṉ -ṊṋṌá¹á¹Žá¹á¹á¹‘ṒṓṔṕṖṗṘṙṚṛṜá¹á¹žá¹Ÿá¹ ṡṢṣṤṥṦṧṨṩṪṫṬá¹á¹®á¹¯á¹°á¹±á¹²á¹³á¹´á¹µá¹¶á¹·á¹¸á¹¹á¹ºá¹»á¹¼á¹½á¹¾á¹¿áº€áºáº‚ẃẄẅẆẇẈẉẊẋ -ẌáºáºŽáºáºáº‘ẒẓẔẕẖẗẘẙẚẛẠạẢảẤấẦầẨẩẪẫẬáºáº®áº¯áº°áº±áº²áº³áº´áºµáº¶áº·áº¸áº¹áººáº»áº¼áº½áº¾áº¿á»€á»á»‚ểỄễỆệỈỉỊịỌá»á»Žá»á»á»‘ -ỒồỔổỖỗỘộỚớỜá»á»žá»Ÿá» ỡỢợỤụỦủỨứỪừỬá»á»®á»¯á»°á»±á»²á»³á»´á»µá»¶á»·á»¸á»¹á¼€á¼á¼‚ἃἄἅἆἇἈἉἊἋἌá¼á¼Žá¼á¼á¼‘ἒἓἔἕἘἙἚἛ -Ἔá¼á¼ ἡἢἣἤἥἦἧἨἩἪἫἬá¼á¼®á¼¯á¼°á¼±á¼²á¼³á¼´á¼µá¼¶á¼·á¼¸á¼¹á¼ºá¼»á¼¼á¼½á¼¾á¼¿á½€á½á½‚ὃὄὅὈὉὊὋὌá½á½á½‘ὒὓὔὕὖὗὙὛá½á½Ÿá½ ὡὢὣὤὥὦὧ -ὨὩὪὫὬá½á½®á½¯á½°á½±á½²á½³á½´á½µá½¶á½·á½¸á½¹á½ºá½»á½¼á½½á¾€á¾á¾‚ᾃᾄᾅᾆᾇá¾á¾‘ᾒᾓᾔᾕᾖᾗᾠᾡᾢᾣᾤᾥᾦᾧᾰᾱᾲᾳᾴᾶᾷᾸᾹᾺΆιῂῃῄῆῇῈΈῊ -á¿‹á¿á¿‘ῒΐῖῗῘῙῚΊῠῡῢΰῤῥῦῧῨῩῪΎῬῲῳῴῶῷῸΌῺΏâ±â¿â„‚ℇℊℋℌâ„ℎâ„â„ℑℒℓℕℙℚℛℜâ„ℤΩℨKÅℬâ„ℯℰℱℳℴℹ -ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzªµºÀÃÂÃÄÅÆÇÈÉÊ -ËÌÃÃŽÃÃÑÒÓÔÕÖØÙÚÛÜÃÞßà áâãäåæçèéêëìÃîïðñòóôõöøùúûüýþÿĀÄĂ㥹ĆćĈĉĊċČÄÄŽ -ÄÄđĒēĔĕĖėĘęĚěĜÄÄžÄŸÄ Ä¡Ä¢Ä£Ä¤Ä¥Ä¦Ä§Ä¨Ä©ÄªÄ«Ä¬ÄĮįİıIJijĴĵĶķĸĹĺĻļĽľĿŀÅłŃńŅņŇňʼnŊŋŌÅÅŽÅÅ -őŒœŔŕŖŗŘřŚśŜÅŞşŠšŢţŤťŦŧŨũŪūŬÅÅ®Å¯Å°Å±Å²Å³Å´ÅµÅ¶Å·Å¸Å¹ÅºÅ»Å¼Å½Å¾Å¿Æ€ÆÆ‚ÆƒÆ„Æ…Æ†Æ‡ÆˆÆ‰ÆŠÆ‹ÆŒÆÆŽÆÆÆ‘Æ’ -Æ“Æ”Æ•Æ–Æ—Æ˜Æ™ÆšÆ›ÆœÆÆžÆŸÆ Æ¡Æ¢Æ£Æ¤Æ¥Æ¦Æ§Æ¨Æ©ÆªÆ«Æ¬ÆÆ®Æ¯Æ°Æ±Æ²Æ³Æ´ÆµÆ¶Æ·Æ¸Æ¹ÆºÆ¼Æ½Æ¾Æ¿Ç„džLJljNJnjÇÇŽÇÇǑǒǓǔǕǖǗǘǙǚǛǜ -ÇÇžÇŸÇ Ç¡Ç¢Ç£Ç¤Ç¥Ç¦Ç§Ç¨Ç©ÇªÇ«Ç¬ÇǮǯǰDZdzǴǵǶǷǸǹǺǻǼǽǾǿȀÈȂȃȄȅȆȇȈȉȊȋȌÈÈŽÈÈȑȒȓȔȕȖȗȘșȚțȜÈȞȟ -È È¡È¢È£È¤È¥È¦È§È¨È©ÈªÈ«È¬ÈȮȯȰȱȲȳȴȵȶȷȸȹȺȻȼȽȾȿɀÉÉɑɒɓɔɕɖɗɘəɚɛɜÉÉžÉŸÉ É¡É¢É£É¤É¥É¦É§É¨É©ÉªÉ«É¬Éɮɯ -ɰɱɲɳɴɵɶɷɸɹɺɻɼɽɾɿʀÊʂʃʄʅʆʇʈʉʊʋʌÊÊŽÊÊʑʒʓʔʕʖʗʘʙʚʛʜÊÊžÊŸÊ Ê¡Ê¢Ê£Ê¤Ê¥Ê¦Ê§Ê¨Ê©ÊªÊ«Ê¬ÊʮʯΆΈ -ΉΊΌΎÎÎΑΒΓΔΕΖΗΘΙΚΛΜÎΞΟΠΡΣΤΥΦΧΨΩΪΫάÎήίΰαβγδεζηθικλμνξοπÏÏ‚ÏƒÏ„Ï…Ï†Ï‡ÏˆÏ‰ÏŠÏ‹ÏŒÏ -ÏŽÏϑϒϓϔϕϖϗϘϙϚϛϜÏÏžÏŸÏ Ï¡Ï¢Ï£Ï¤Ï¥Ï¦Ï§Ï¨Ï©ÏªÏ«Ï¬ÏϮϯϰϱϲϳϴϵϷϸϹϺϻϼϽϾϿЀÐЂЃЄЅІЇЈЉЊЋЌÐÐŽÐÐБ -ВГДЕЖЗИЙКЛМÐОПРСТУФХЦЧШЩЪЫЬÐЮЯабвгдежзийклмнопрÑтуфхцчшщъыьÑÑŽÑÑёђѓ -єѕіїјљњћќÑÑžÑŸÑ Ñ¡Ñ¢Ñ£Ñ¤Ñ¥Ñ¦Ñ§Ñ¨Ñ©ÑªÑ«Ñ¬ÑѮѯѰѱѲѳѴѵѶѷѸѹѺѻѼѽѾѿҀÒÒŠÒ‹ÒŒÒÒŽÒÒÒ‘Ò’Ò“Ò”Ò•Ò–Ò—Ò˜Ò™ÒšÒ›ÒœÒ -ÒžÒŸÒ Ò¡Ò¢Ò£Ò¤Ò¥Ò¦Ò§Ò¨Ò©ÒªÒ«Ò¬ÒÒ®Ò¯Ò°Ò±Ò²Ò³Ò´ÒµÒ¶Ò·Ò¸Ò¹ÒºÒ»Ò¼Ò½Ò¾Ò¿Ó€ÓÓ‚ÓƒÓ„Ó…Ó†Ó‡ÓˆÓ‰ÓŠÓ‹ÓŒÓÓŽÓÓ‘Ó’Ó“Ó”Ó•Ó–Ó—Ó˜Ó™ÓšÓ›ÓœÓÓžÓŸÓ -Ó¡Ó¢Ó£Ó¤Ó¥Ó¦Ó§Ó¨Ó©ÓªÓ«Ó¬ÓÓ®Ó¯Ó°Ó±Ó²Ó³Ó´ÓµÓ¶Ó·Ó¸Ó¹Ô€ÔÔ‚ÔƒÔ„Ô…Ô†Ô‡ÔˆÔ‰ÔŠÔ‹ÔŒÔÔŽÔÔ±Ô²Ô³Ô´ÔµÔ¶Ô·Ô¸Ô¹ÔºÔ»Ô¼Ô½Ô¾Ô¿Õ€ÕÕ‚ÕƒÕ„Õ…Õ†Õ‡ÕˆÕ‰ -ÕŠÕ‹ÕŒÕÕŽÕÕÕ‘Õ’Õ“Õ”Õ•Õ–Õ¡Õ¢Õ£Õ¤Õ¥Õ¦Õ§Õ¨Õ©ÕªÕ«Õ¬ÕÕ®Õ¯Õ°Õ±Õ²Õ³Õ´ÕµÕ¶Õ·Õ¸Õ¹ÕºÕ»Õ¼Õ½Õ¾Õ¿Ö€ÖւփքօֆևႠႡႢႣႤႥႦႧႨႩႪႫႬႠ-ႮႯႰႱႲႳႴႵႶႷႸႹႺႻႼႽႾႿჀáƒáƒ‚ჃჄჅᴀá´á´‚ᴃᴄᴅᴆᴇᴈᴉᴊᴋᴌá´á´Žá´á´á´‘ᴒᴓᴔᴕᴖᴗᴘᴙᴚᴛᴜá´á´žá´Ÿá´ ᴡᴢᴣᴤᴥᴦᴧᴨᴩ -ᴪᴫᵢᵣᵤᵥᵦᵧᵨᵩᵪᵫᵬáµáµ®áµ¯áµ°áµ±áµ²áµ³áµ´áµµáµ¶áµ·áµ¹áµºáµ»áµ¼áµ½áµ¾áµ¿á¶€á¶á¶‚ᶃᶄᶅᶆᶇᶈᶉᶊᶋᶌá¶á¶Žá¶á¶á¶‘ᶒᶓᶔᶕᶖᶗᶘᶙᶚḀá¸á¸‚ḃḄḅḆḇ -ḈḉḊḋḌá¸á¸Žá¸á¸á¸‘ḒḓḔḕḖḗḘḙḚḛḜá¸á¸žá¸Ÿá¸ ḡḢḣḤḥḦḧḨḩḪḫḬá¸á¸®á¸¯á¸°á¸±á¸²á¸³á¸´á¸µá¸¶á¸·á¸¸á¸¹á¸ºá¸»á¸¼á¸½á¸¾á¸¿á¹€á¹á¹‚ṃṄṅṆṇṈṉ -ṊṋṌá¹á¹Žá¹á¹á¹‘ṒṓṔṕṖṗṘṙṚṛṜá¹á¹žá¹Ÿá¹ ṡṢṣṤṥṦṧṨṩṪṫṬá¹á¹®á¹¯á¹°á¹±á¹²á¹³á¹´á¹µá¹¶á¹·á¹¸á¹¹á¹ºá¹»á¹¼á¹½á¹¾á¹¿áº€áºáº‚ẃẄẅẆẇẈẉẊẋ -ẌáºáºŽáºáºáº‘ẒẓẔẕẖẗẘẙẚẛẠạẢảẤấẦầẨẩẪẫẬáºáº®áº¯áº°áº±áº²áº³áº´áºµáº¶áº·áº¸áº¹áººáº»áº¼áº½áº¾áº¿á»€á»á»‚ểỄễỆệỈỉỊịỌá»á»Žá»á»á»‘ -ỒồỔổỖỗỘộỚớỜá»á»žá»Ÿá» ỡỢợỤụỦủỨứỪừỬá»á»®á»¯á»°á»±á»²á»³á»´á»µá»¶á»·á»¸á»¹á¼€á¼á¼‚ἃἄἅἆἇἈἉἊἋἌá¼á¼Žá¼á¼á¼‘ἒἓἔἕἘἙἚἛ -Ἔá¼á¼ ἡἢἣἤἥἦἧἨἩἪἫἬá¼á¼®á¼¯á¼°á¼±á¼²á¼³á¼´á¼µá¼¶á¼·á¼¸á¼¹á¼ºá¼»á¼¼á¼½á¼¾á¼¿á½€á½á½‚ὃὄὅὈὉὊὋὌá½á½á½‘ὒὓὔὕὖὗὙὛá½á½Ÿá½ ὡὢὣὤὥὦὧ -ὨὩὪὫὬá½á½®á½¯á½°á½±á½²á½³á½´á½µá½¶á½·á½¸á½¹á½ºá½»á½¼á½½á¾€á¾á¾‚ᾃᾄᾅᾆᾇá¾á¾‘ᾒᾓᾔᾕᾖᾗᾠᾡᾢᾣᾤᾥᾦᾧᾰᾱᾲᾳᾴᾶᾷᾸᾹᾺΆιῂῃῄῆῇῈΈῊ -á¿‹á¿á¿‘ῒΐῖῗῘῙῚΊῠῡῢΰῤῥῦῧῨῩῪΎῬῲῳῴῶῷῸΌῺΏâ±â¿â„‚ℇℊℋℌâ„ℎâ„â„ℑℒℓℕℙℚℛℜâ„ℤΩℨKÅℬâ„ℯℰℱℳℴℹ -ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzªµºÀÃÂÃÄÅÆÇÈÉÊ -ËÌÃÃŽÃÃÑÒÓÔÕÖØÙÚÛÜÃÞßà áâãäåæçèéêëìÃîïðñòóôõöøùúûüýþÿĀÄĂ㥹ĆćĈĉĊċČÄÄŽ -ÄÄđĒēĔĕĖėĘęĚěĜÄÄžÄŸÄ Ä¡Ä¢Ä£Ä¤Ä¥Ä¦Ä§Ä¨Ä©ÄªÄ«Ä¬ÄĮįİıIJijĴĵĶķĸĹĺĻļĽľĿŀÅłŃńŅņŇňʼnŊŋŌÅÅŽÅÅ -őŒœŔŕŖŗŘřŚśŜÅŞşŠšŢţŤťŦŧŨũŪūŬÅÅ®Å¯Å°Å±Å²Å³Å´ÅµÅ¶Å·Å¸Å¹ÅºÅ»Å¼Å½Å¾Å¿Æ€ÆÆ‚ÆƒÆ„Æ…Æ†Æ‡ÆˆÆ‰ÆŠÆ‹ÆŒÆÆŽÆÆÆ‘Æ’ -Æ“Æ”Æ•Æ–Æ—Æ˜Æ™ÆšÆ›ÆœÆÆžÆŸÆ Æ¡Æ¢Æ£Æ¤Æ¥Æ¦Æ§Æ¨Æ©ÆªÆ«Æ¬ÆÆ®Æ¯Æ°Æ±Æ²Æ³Æ´ÆµÆ¶Æ·Æ¸Æ¹ÆºÆ¼Æ½Æ¾Æ¿Ç„džLJljNJnjÇÇŽÇÇǑǒǓǔǕǖǗǘǙǚǛǜ -ÇÇžÇŸÇ Ç¡Ç¢Ç£Ç¤Ç¥Ç¦Ç§Ç¨Ç©ÇªÇ«Ç¬ÇǮǯǰDZdzǴǵǶǷǸǹǺǻǼǽǾǿȀÈȂȃȄȅȆȇȈȉȊȋȌÈÈŽÈÈȑȒȓȔȕȖȗȘșȚțȜÈȞȟ -È È¡È¢È£È¤È¥È¦È§È¨È©ÈªÈ«È¬ÈȮȯȰȱȲȳȴȵȶȷȸȹȺȻȼȽȾȿɀÉÉɑɒɓɔɕɖɗɘəɚɛɜÉÉžÉŸÉ É¡É¢É£É¤É¥É¦É§É¨É©ÉªÉ«É¬Éɮɯ -ɰɱɲɳɴɵɶɷɸɹɺɻɼɽɾɿʀÊʂʃʄʅʆʇʈʉʊʋʌÊÊŽÊÊʑʒʓʔʕʖʗʘʙʚʛʜÊÊžÊŸÊ Ê¡Ê¢Ê£Ê¤Ê¥Ê¦Ê§Ê¨Ê©ÊªÊ«Ê¬ÊʮʯΆΈ -ΉΊΌΎÎÎΑΒΓΔΕΖΗΘΙΚΛΜÎΞΟΠΡΣΤΥΦΧΨΩΪΫάÎήίΰαβγδεζηθικλμνξοπÏÏ‚ÏƒÏ„Ï…Ï†Ï‡ÏˆÏ‰ÏŠÏ‹ÏŒÏ -ÏŽÏϑϒϓϔϕϖϗϘϙϚϛϜÏÏžÏŸÏ Ï¡Ï¢Ï£Ï¤Ï¥Ï¦Ï§Ï¨Ï©ÏªÏ«Ï¬ÏϮϯϰϱϲϳϴϵϷϸϹϺϻϼϽϾϿЀÐЂЃЄЅІЇЈЉЊЋЌÐÐŽÐÐБ -ВГДЕЖЗИЙКЛМÐОПРСТУФХЦЧШЩЪЫЬÐЮЯабвгдежзийклмнопрÑтуфхцчшщъыьÑÑŽÑÑёђѓ -єѕіїјљњћќÑÑžÑŸÑ Ñ¡Ñ¢Ñ£Ñ¤Ñ¥Ñ¦Ñ§Ñ¨Ñ©ÑªÑ«Ñ¬ÑѮѯѰѱѲѳѴѵѶѷѸѹѺѻѼѽѾѿҀÒÒŠÒ‹ÒŒÒÒŽÒÒÒ‘Ò’Ò“Ò”Ò•Ò–Ò—Ò˜Ò™ÒšÒ›ÒœÒ -ÒžÒŸÒ Ò¡Ò¢Ò£Ò¤Ò¥Ò¦Ò§Ò¨Ò©ÒªÒ«Ò¬ÒÒ®Ò¯Ò°Ò±Ò²Ò³Ò´ÒµÒ¶Ò·Ò¸Ò¹ÒºÒ»Ò¼Ò½Ò¾Ò¿Ó€ÓÓ‚ÓƒÓ„Ó…Ó†Ó‡ÓˆÓ‰ÓŠÓ‹ÓŒÓÓŽÓÓ‘Ó’Ó“Ó”Ó•Ó–Ó—Ó˜Ó™ÓšÓ›ÓœÓÓžÓŸÓ -Ó¡Ó¢Ó£Ó¤Ó¥Ó¦Ó§Ó¨Ó©ÓªÓ«Ó¬ÓÓ®Ó¯Ó°Ó±Ó²Ó³Ó´ÓµÓ¶Ó·Ó¸Ó¹Ô€ÔÔ‚ÔƒÔ„Ô…Ô†Ô‡ÔˆÔ‰ÔŠÔ‹ÔŒÔÔŽÔÔ±Ô²Ô³Ô´ÔµÔ¶Ô·Ô¸Ô¹ÔºÔ»Ô¼Ô½Ô¾Ô¿Õ€ÕÕ‚ÕƒÕ„Õ…Õ†Õ‡ÕˆÕ‰ -ÕŠÕ‹ÕŒÕÕŽÕÕÕ‘Õ’Õ“Õ”Õ•Õ–Õ¡Õ¢Õ£Õ¤Õ¥Õ¦Õ§Õ¨Õ©ÕªÕ«Õ¬ÕÕ®Õ¯Õ°Õ±Õ²Õ³Õ´ÕµÕ¶Õ·Õ¸Õ¹ÕºÕ»Õ¼Õ½Õ¾Õ¿Ö€ÖւփքօֆևႠႡႢႣႤႥႦႧႨႩႪႫႬႠ-ႮႯႰႱႲႳႴႵႶႷႸႹႺႻႼႽႾႿჀáƒáƒ‚ჃჄჅᴀá´á´‚ᴃᴄᴅᴆᴇᴈᴉᴊᴋᴌá´á´Žá´á´á´‘ᴒᴓᴔᴕᴖᴗᴘᴙᴚᴛᴜá´á´žá´Ÿá´ ᴡᴢᴣᴤᴥᴦᴧᴨᴩ -ᴪᴫᵢᵣᵤᵥᵦᵧᵨᵩᵪᵫᵬáµáµ®áµ¯áµ°áµ±áµ²áµ³áµ´áµµáµ¶áµ·áµ¹áµºáµ»áµ¼áµ½áµ¾áµ¿á¶€á¶á¶‚ᶃᶄᶅᶆᶇᶈᶉᶊᶋᶌá¶á¶Žá¶á¶á¶‘ᶒᶓᶔᶕᶖᶗᶘᶙᶚḀá¸á¸‚ḃḄḅḆḇ -ḈḉḊḋḌá¸á¸Žá¸á¸á¸‘ḒḓḔḕḖḗḘḙḚḛḜá¸á¸žá¸Ÿá¸ ḡḢḣḤḥḦḧḨḩḪḫḬá¸á¸®á¸¯á¸°á¸±á¸²á¸³á¸´á¸µá¸¶á¸·á¸¸á¸¹á¸ºá¸»á¸¼á¸½á¸¾á¸¿á¹€á¹á¹‚ṃṄṅṆṇṈṉ -ṊṋṌá¹á¹Žá¹á¹á¹‘ṒṓṔṕṖṗṘṙṚṛṜá¹á¹žá¹Ÿá¹ ṡṢṣṤṥṦṧṨṩṪṫṬá¹á¹®á¹¯á¹°á¹±á¹²á¹³á¹´á¹µá¹¶á¹·á¹¸á¹¹á¹ºá¹»á¹¼á¹½á¹¾á¹¿áº€áºáº‚ẃẄẅẆẇẈẉẊẋ -ẌáºáºŽáºáºáº‘ẒẓẔẕẖẗẘẙẚẛẠạẢảẤấẦầẨẩẪẫẬáºáº®áº¯áº°áº±áº²áº³áº´áºµáº¶áº·áº¸áº¹áººáº»áº¼áº½áº¾áº¿á»€á»á»‚ểỄễỆệỈỉỊịỌá»á»Žá»á»á»‘ -ỒồỔổỖỗỘộỚớỜá»á»žá»Ÿá» ỡỢợỤụỦủỨứỪừỬá»á»®á»¯á»°á»±á»²á»³á»´á»µá»¶á»·á»¸á»¹á¼€á¼á¼‚ἃἄἅἆἇἈἉἊἋἌá¼á¼Žá¼á¼á¼‘ἒἓἔἕἘἙἚἛ -Ἔá¼á¼ ἡἢἣἤἥἦἧἨἩἪἫἬá¼á¼®á¼¯á¼°á¼±á¼²á¼³á¼´á¼µá¼¶á¼·á¼¸á¼¹á¼ºá¼»á¼¼á¼½á¼¾á¼¿á½€á½á½‚ὃὄὅὈὉὊὋὌá½á½á½‘ὒὓὔὕὖὗὙὛá½á½Ÿá½ ὡὢὣὤὥὦὧ -ὨὩὪὫὬá½á½®á½¯á½°á½±á½²á½³á½´á½µá½¶á½·á½¸á½¹á½ºá½»á½¼á½½á¾€á¾á¾‚ᾃᾄᾅᾆᾇá¾á¾‘ᾒᾓᾔᾕᾖᾗᾠᾡᾢᾣᾤᾥᾦᾧᾰᾱᾲᾳᾴᾶᾷᾸᾹᾺΆιῂῃῄῆῇῈΈῊ -á¿‹á¿á¿‘ῒΐῖῗῘῙῚΊῠῡῢΰῤῥῦῧῨῩῪΎῬῲῳῴῶῷῸΌῺΏâ±â¿â„‚ℇℊℋℌâ„ℎâ„â„ℑℒℓℕℙℚℛℜâ„ℤΩℨKÅℬâ„ℯℰℱℳℴℹ -ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzªµºÀÃÂÃÄÅÆÇÈÉÊ -ËÌÃÃŽÃÃÑÒÓÔÕÖØÙÚÛÜÃÞßà áâãäåæçèéêëìÃîïðñòóôõöøùúûüýþÿĀÄĂ㥹ĆćĈĉĊċČÄÄŽ -ÄÄđĒēĔĕĖėĘęĚěĜÄÄžÄŸÄ Ä¡Ä¢Ä£Ä¤Ä¥Ä¦Ä§Ä¨Ä©ÄªÄ«Ä¬ÄĮįİıIJijĴĵĶķĸĹĺĻļĽľĿŀÅłŃńŅņŇňʼnŊŋŌÅÅŽÅÅ -őŒœŔŕŖŗŘřŚśŜÅŞşŠšŢţŤťŦŧŨũŪūŬÅÅ®Å¯Å°Å±Å²Å³Å´ÅµÅ¶Å·Å¸Å¹ÅºÅ»Å¼Å½Å¾Å¿Æ€ÆÆ‚ÆƒÆ„Æ…Æ†Æ‡ÆˆÆ‰ÆŠÆ‹ÆŒÆÆŽÆÆÆ‘Æ’ -Æ“Æ”Æ•Æ–Æ—Æ˜Æ™ÆšÆ›ÆœÆÆžÆŸÆ Æ¡Æ¢Æ£Æ¤Æ¥Æ¦Æ§Æ¨Æ©ÆªÆ«Æ¬ÆÆ®Æ¯Æ°Æ±Æ²Æ³Æ´ÆµÆ¶Æ·Æ¸Æ¹ÆºÆ¼Æ½Æ¾Æ¿Ç„džLJljNJnjÇÇŽÇÇǑǒǓǔǕǖǗǘǙǚǛǜ -ÇÇžÇŸÇ Ç¡Ç¢Ç£Ç¤Ç¥Ç¦Ç§Ç¨Ç©ÇªÇ«Ç¬ÇǮǯǰDZdzǴǵǶǷǸǹǺǻǼǽǾǿȀÈȂȃȄȅȆȇȈȉȊȋȌÈÈŽÈÈȑȒȓȔȕȖȗȘșȚțȜÈȞȟ -È È¡È¢È£È¤È¥È¦È§È¨È©ÈªÈ«È¬ÈȮȯȰȱȲȳȴȵȶȷȸȹȺȻȼȽȾȿɀÉÉɑɒɓɔɕɖɗɘəɚɛɜÉÉžÉŸÉ É¡É¢É£É¤É¥É¦É§É¨É©ÉªÉ«É¬Éɮɯ -ɰɱɲɳɴɵɶɷɸɹɺɻɼɽɾɿʀÊʂʃʄʅʆʇʈʉʊʋʌÊÊŽÊÊʑʒʓʔʕʖʗʘʙʚʛʜÊÊžÊŸÊ Ê¡Ê¢Ê£Ê¤Ê¥Ê¦Ê§Ê¨Ê©ÊªÊ«Ê¬ÊʮʯΆΈ -ΉΊΌΎÎÎΑΒΓΔΕΖΗΘΙΚΛΜÎΞΟΠΡΣΤΥΦΧΨΩΪΫάÎήίΰαβγδεζηθικλμνξοπÏÏ‚ÏƒÏ„Ï…Ï†Ï‡ÏˆÏ‰ÏŠÏ‹ÏŒÏ -ÏŽÏϑϒϓϔϕϖϗϘϙϚϛϜÏÏžÏŸÏ Ï¡Ï¢Ï£Ï¤Ï¥Ï¦Ï§Ï¨Ï©ÏªÏ«Ï¬ÏϮϯϰϱϲϳϴϵϷϸϹϺϻϼϽϾϿЀÐЂЃЄЅІЇЈЉЊЋЌÐÐŽÐÐБ -ВГДЕЖЗИЙКЛМÐОПРСТУФХЦЧШЩЪЫЬÐЮЯабвгдежзийклмнопрÑтуфхцчшщъыьÑÑŽÑÑёђѓ -єѕіїјљњћќÑÑžÑŸÑ Ñ¡Ñ¢Ñ£Ñ¤Ñ¥Ñ¦Ñ§Ñ¨Ñ©ÑªÑ«Ñ¬ÑѮѯѰѱѲѳѴѵѶѷѸѹѺѻѼѽѾѿҀÒÒŠÒ‹ÒŒÒÒŽÒÒÒ‘Ò’Ò“Ò”Ò•Ò–Ò—Ò˜Ò™ÒšÒ›ÒœÒ -ÒžÒŸÒ Ò¡Ò¢Ò£Ò¤Ò¥Ò¦Ò§Ò¨Ò©ÒªÒ«Ò¬ÒÒ®Ò¯Ò°Ò±Ò²Ò³Ò´ÒµÒ¶Ò·Ò¸Ò¹ÒºÒ»Ò¼Ò½Ò¾Ò¿Ó€ÓÓ‚ÓƒÓ„Ó…Ó†Ó‡ÓˆÓ‰ÓŠÓ‹ÓŒÓÓŽÓÓ‘Ó’Ó“Ó”Ó•Ó–Ó—Ó˜Ó™ÓšÓ›ÓœÓÓžÓŸÓ -Ó¡Ó¢Ó£Ó¤Ó¥Ó¦Ó§Ó¨Ó©ÓªÓ«Ó¬ÓÓ®Ó¯Ó°Ó±Ó²Ó³Ó´ÓµÓ¶Ó·Ó¸Ó¹Ô€ÔÔ‚ÔƒÔ„Ô…Ô†Ô‡ÔˆÔ‰ÔŠÔ‹ÔŒÔÔŽÔÔ±Ô²Ô³Ô´ÔµÔ¶Ô·Ô¸Ô¹ÔºÔ»Ô¼Ô½Ô¾Ô¿Õ€ÕÕ‚ÕƒÕ„Õ…Õ†Õ‡ÕˆÕ‰ -ÕŠÕ‹ÕŒÕÕŽÕÕÕ‘Õ’Õ“Õ”Õ•Õ–Õ¡Õ¢Õ£Õ¤Õ¥Õ¦Õ§Õ¨Õ©ÕªÕ«Õ¬ÕÕ®Õ¯Õ°Õ±Õ²Õ³Õ´ÕµÕ¶Õ·Õ¸Õ¹ÕºÕ»Õ¼Õ½Õ¾Õ¿Ö€ÖւփքօֆևႠႡႢႣႤႥႦႧႨႩႪႫႬႠ-ႮႯႰႱႲႳႴႵႶႷႸႹႺႻႼႽႾႿჀáƒáƒ‚ჃჄჅᴀá´á´‚ᴃᴄᴅᴆᴇᴈᴉᴊᴋᴌá´á´Žá´á´á´‘ᴒᴓᴔᴕᴖᴗᴘᴙᴚᴛᴜá´á´žá´Ÿá´ ᴡᴢᴣᴤᴥᴦᴧᴨᴩ -ᴪᴫᵢᵣᵤᵥᵦᵧᵨᵩᵪᵫᵬáµáµ®áµ¯áµ°áµ±áµ²áµ³áµ´áµµáµ¶áµ·áµ¹áµºáµ»áµ¼áµ½áµ¾áµ¿á¶€á¶á¶‚ᶃᶄᶅᶆᶇᶈᶉᶊᶋᶌá¶á¶Žá¶á¶á¶‘ᶒᶓᶔᶕᶖᶗᶘᶙᶚḀá¸á¸‚ḃḄḅḆḇ -ḈḉḊḋḌá¸á¸Žá¸á¸á¸‘ḒḓḔḕḖḗḘḙḚḛḜá¸á¸žá¸Ÿá¸ ḡḢḣḤḥḦḧḨḩḪḫḬá¸á¸®á¸¯á¸°á¸±á¸²á¸³á¸´á¸µá¸¶á¸·á¸¸á¸¹á¸ºá¸»á¸¼á¸½á¸¾á¸¿á¹€á¹á¹‚ṃṄṅṆṇṈṉ -ṊṋṌá¹á¹Žá¹á¹á¹‘ṒṓṔṕṖṗṘṙṚṛṜá¹á¹žá¹Ÿá¹ ṡṢṣṤṥṦṧṨṩṪṫṬá¹á¹®á¹¯á¹°á¹±á¹²á¹³á¹´á¹µá¹¶á¹·á¹¸á¹¹á¹ºá¹»á¹¼á¹½á¹¾á¹¿áº€áºáº‚ẃẄẅẆẇẈẉẊẋ -ẌáºáºŽáºáºáº‘ẒẓẔẕẖẗẘẙẚẛẠạẢảẤấẦầẨẩẪẫẬáºáº®áº¯áº°áº±áº²áº³áº´áºµáº¶áº·áº¸áº¹áººáº»áº¼áº½áº¾áº¿á»€á»á»‚ểỄễỆệỈỉỊịỌá»á»Žá»á»á»‘ -ỒồỔổỖỗỘộỚớỜá»á»žá»Ÿá» ỡỢợỤụỦủỨứỪừỬá»á»®á»¯á»°á»±á»²á»³á»´á»µá»¶á»·á»¸á»¹á¼€á¼á¼‚ἃἄἅἆἇἈἉἊἋἌá¼á¼Žá¼á¼á¼‘ἒἓἔἕἘἙἚἛ -Ἔá¼á¼ ἡἢἣἤἥἦἧἨἩἪἫἬá¼á¼®á¼¯á¼°á¼±á¼²á¼³á¼´á¼µá¼¶á¼·á¼¸á¼¹á¼ºá¼»á¼¼á¼½á¼¾á¼¿á½€á½á½‚ὃὄὅὈὉὊὋὌá½á½á½‘ὒὓὔὕὖὗὙὛá½á½Ÿá½ ὡὢὣὤὥὦὧ -ὨὩὪὫὬá½á½®á½¯á½°á½±á½²á½³á½´á½µá½¶á½·á½¸á½¹á½ºá½»á½¼á½½á¾€á¾á¾‚ᾃᾄᾅᾆᾇá¾á¾‘ᾒᾓᾔᾕᾖᾗᾠᾡᾢᾣᾤᾥᾦᾧᾰᾱᾲᾳᾴᾶᾷᾸᾹᾺΆιῂῃῄῆῇῈΈῊ -á¿‹á¿á¿‘ῒΐῖῗῘῙῚΊῠῡῢΰῤῥῦῧῨῩῪΎῬῲῳῴῶῷῸΌῺΏâ±â¿â„‚ℇℊℋℌâ„ℎâ„â„ℑℒℓℕℙℚℛℜâ„ℤΩℨKÅℬâ„ℯℰℱℳℴℹ -ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzªµºÀÃÂÃÄÅÆÇÈÉÊ -ËÌÃÃŽÃÃÑÒÓÔÕÖØÙÚÛÜÃÞßà áâãäåæçèéêëìÃîïðñòóôõöøùúûüýþÿĀÄĂ㥹ĆćĈĉĊċČÄÄŽ -ÄÄđĒēĔĕĖėĘęĚěĜÄÄžÄŸÄ Ä¡Ä¢Ä£Ä¤Ä¥Ä¦Ä§Ä¨Ä©ÄªÄ«Ä¬ÄĮįİıIJijĴĵĶķĸĹĺĻļĽľĿŀÅłŃńŅņŇňʼnŊŋŌÅÅŽÅÅ -őŒœŔŕŖŗŘřŚśŜÅŞşŠšŢţŤťŦŧŨũŪūŬÅÅ®Å¯Å°Å±Å²Å³Å´ÅµÅ¶Å·Å¸Å¹ÅºÅ»Å¼Å½Å¾Å¿Æ€ÆÆ‚ÆƒÆ„Æ…Æ†Æ‡ÆˆÆ‰ÆŠÆ‹ÆŒÆÆŽÆÆÆ‘Æ’ -Æ“Æ”Æ•Æ–Æ—Æ˜Æ™ÆšÆ›ÆœÆÆžÆŸÆ Æ¡Æ¢Æ£Æ¤Æ¥Æ¦Æ§Æ¨Æ©ÆªÆ«Æ¬ÆÆ®Æ¯Æ°Æ±Æ²Æ³Æ´ÆµÆ¶Æ·Æ¸Æ¹ÆºÆ¼Æ½Æ¾Æ¿Ç„džLJljNJnjÇÇŽÇÇǑǒǓǔǕǖǗǘǙǚǛǜ -ÇÇžÇŸÇ Ç¡Ç¢Ç£Ç¤Ç¥Ç¦Ç§Ç¨Ç©ÇªÇ«Ç¬ÇǮǯǰDZdzǴǵǶǷǸǹǺǻǼǽǾǿȀÈȂȃȄȅȆȇȈȉȊȋȌÈÈŽÈÈȑȒȓȔȕȖȗȘșȚțȜÈȞȟ -È È¡È¢È£È¤È¥È¦È§È¨È©ÈªÈ«È¬ÈȮȯȰȱȲȳȴȵȶȷȸȹȺȻȼȽȾȿɀÉÉɑɒɓɔɕɖɗɘəɚɛɜÉÉžÉŸÉ É¡É¢É£É¤É¥É¦É§É¨É©ÉªÉ«É¬Éɮɯ -ɰɱɲɳɴɵɶɷɸɹɺɻɼɽɾɿʀÊʂʃʄʅʆʇʈʉʊʋʌÊÊŽÊÊʑʒʓʔʕʖʗʘʙʚʛʜÊÊžÊŸÊ Ê¡Ê¢Ê£Ê¤Ê¥Ê¦Ê§Ê¨Ê©ÊªÊ«Ê¬ÊʮʯΆΈ -ΉΊΌΎÎÎΑΒΓΔΕΖΗΘΙΚΛΜÎΞΟΠΡΣΤΥΦΧΨΩΪΫάÎήίΰαβγδεζηθικλμνξοπÏÏ‚ÏƒÏ„Ï…Ï†Ï‡ÏˆÏ‰ÏŠÏ‹ÏŒÏ -ÏŽÏϑϒϓϔϕϖϗϘϙϚϛϜÏÏžÏŸÏ Ï¡Ï¢Ï£Ï¤Ï¥Ï¦Ï§Ï¨Ï©ÏªÏ«Ï¬ÏϮϯϰϱϲϳϴϵϷϸϹϺϻϼϽϾϿЀÐЂЃЄЅІЇЈЉЊЋЌÐÐŽÐÐБ -ВГДЕЖЗИЙКЛМÐОПРСТУФХЦЧШЩЪЫЬÐЮЯабвгдежзийклмнопрÑтуфхцчшщъыьÑÑŽÑÑёђѓ -єѕіїјљњћќÑÑžÑŸÑ Ñ¡Ñ¢Ñ£Ñ¤Ñ¥Ñ¦Ñ§Ñ¨Ñ©ÑªÑ«Ñ¬ÑѮѯѰѱѲѳѴѵѶѷѸѹѺѻѼѽѾѿҀÒÒŠÒ‹ÒŒÒÒŽÒÒÒ‘Ò’Ò“Ò”Ò•Ò–Ò—Ò˜Ò™ÒšÒ›ÒœÒ -ÒžÒŸÒ Ò¡Ò¢Ò£Ò¤Ò¥Ò¦Ò§Ò¨Ò©ÒªÒ«Ò¬ÒÒ®Ò¯Ò°Ò±Ò²Ò³Ò´ÒµÒ¶Ò·Ò¸Ò¹ÒºÒ»Ò¼Ò½Ò¾Ò¿Ó€ÓÓ‚ÓƒÓ„Ó…Ó†Ó‡ÓˆÓ‰ÓŠÓ‹ÓŒÓÓŽÓÓ‘Ó’Ó“Ó”Ó•Ó–Ó—Ó˜Ó™ÓšÓ›ÓœÓÓžÓŸÓ -Ó¡Ó¢Ó£Ó¤Ó¥Ó¦Ó§Ó¨Ó©ÓªÓ«Ó¬ÓÓ®Ó¯Ó°Ó±Ó²Ó³Ó´ÓµÓ¶Ó·Ó¸Ó¹Ô€ÔÔ‚ÔƒÔ„Ô…Ô†Ô‡ÔˆÔ‰ÔŠÔ‹ÔŒÔÔŽÔÔ±Ô²Ô³Ô´ÔµÔ¶Ô·Ô¸Ô¹ÔºÔ»Ô¼Ô½Ô¾Ô¿Õ€ÕÕ‚ÕƒÕ„Õ…Õ†Õ‡ÕˆÕ‰ -ÕŠÕ‹ÕŒÕÕŽÕÕÕ‘Õ’Õ“Õ”Õ•Õ–Õ¡Õ¢Õ£Õ¤Õ¥Õ¦Õ§Õ¨Õ©ÕªÕ«Õ¬ÕÕ®Õ¯Õ°Õ±Õ²Õ³Õ´ÕµÕ¶Õ·Õ¸Õ¹ÕºÕ»Õ¼Õ½Õ¾Õ¿Ö€ÖւփքօֆևႠႡႢႣႤႥႦႧႨႩႪႫႬႠ-ႮႯႰႱႲႳႴႵႶႷႸႹႺႻႼႽႾႿჀáƒáƒ‚ჃჄჅᴀá´á´‚ᴃᴄᴅᴆᴇᴈᴉᴊᴋᴌá´á´Žá´á´á´‘ᴒᴓᴔᴕᴖᴗᴘᴙᴚᴛᴜá´á´žá´Ÿá´ ᴡᴢᴣᴤᴥᴦᴧᴨᴩ -ᴪᴫᵢᵣᵤᵥᵦᵧᵨᵩᵪᵫᵬáµáµ®áµ¯áµ°áµ±áµ²áµ³áµ´áµµáµ¶áµ·áµ¹áµºáµ»áµ¼áµ½áµ¾áµ¿á¶€á¶á¶‚ᶃᶄᶅᶆᶇᶈᶉᶊᶋᶌá¶á¶Žá¶á¶á¶‘ᶒᶓᶔᶕᶖᶗᶘᶙᶚḀá¸á¸‚ḃḄḅḆḇ -ḈḉḊḋḌá¸á¸Žá¸á¸á¸‘ḒḓḔḕḖḗḘḙḚḛḜá¸á¸žá¸Ÿá¸ ḡḢḣḤḥḦḧḨḩḪḫḬá¸á¸®á¸¯á¸°á¸±á¸²á¸³á¸´á¸µá¸¶á¸·á¸¸á¸¹á¸ºá¸»á¸¼á¸½á¸¾á¸¿á¹€á¹á¹‚ṃṄṅṆṇṈṉ -ṊṋṌá¹á¹Žá¹á¹á¹‘ṒṓṔṕṖṗṘṙṚṛṜá¹á¹žá¹Ÿá¹ ṡṢṣṤṥṦṧṨṩṪṫṬá¹á¹®á¹¯á¹°á¹±á¹²á¹³á¹´á¹µá¹¶á¹·á¹¸á¹¹á¹ºá¹»á¹¼á¹½á¹¾á¹¿áº€áºáº‚ẃẄẅẆẇẈẉẊẋ -ẌáºáºŽáºáºáº‘ẒẓẔẕẖẗẘẙẚẛẠạẢảẤấẦầẨẩẪẫẬáºáº®áº¯áº°áº±áº²áº³áº´áºµáº¶áº·áº¸áº¹áººáº»áº¼áº½áº¾áº¿á»€á»á»‚ểỄễỆệỈỉỊịỌá»á»Žá»á»á»‘ -ỒồỔổỖỗỘộỚớỜá»á»žá»Ÿá» ỡỢợỤụỦủỨứỪừỬá»á»®á»¯á»°á»±á»²á»³á»´á»µá»¶á»·á»¸á»¹á¼€á¼á¼‚ἃἄἅἆἇἈἉἊἋἌá¼á¼Žá¼á¼á¼‘ἒἓἔἕἘἙἚἛ -Ἔá¼á¼ ἡἢἣἤἥἦἧἨἩἪἫἬá¼á¼®á¼¯á¼°á¼±á¼²á¼³á¼´á¼µá¼¶á¼·á¼¸á¼¹á¼ºá¼»á¼¼á¼½á¼¾á¼¿á½€á½á½‚ὃὄὅὈὉὊὋὌá½á½á½‘ὒὓὔὕὖὗὙὛá½á½Ÿá½ ὡὢὣὤὥὦὧ -ὨὩὪὫὬá½á½®á½¯á½°á½±á½²á½³á½´á½µá½¶á½·á½¸á½¹á½ºá½»á½¼á½½á¾€á¾á¾‚ᾃᾄᾅᾆᾇá¾á¾‘ᾒᾓᾔᾕᾖᾗᾠᾡᾢᾣᾤᾥᾦᾧᾰᾱᾲᾳᾴᾶᾷᾸᾹᾺΆιῂῃῄῆῇῈΈῊ -á¿‹á¿á¿‘ῒΐῖῗῘῙῚΊῠῡῢΰῤῥῦῧῨῩῪΎῬῲῳῴῶῷῸΌῺΏâ±â¿â„‚ℇℊℋℌâ„ℎâ„â„ℑℒℓℕℙℚℛℜâ„ℤΩℨKÅℬâ„ℯℰℱℳℴℹ -ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzªµºÀÃÂÃÄÅÆÇÈÉÊ -ËÌÃÃŽÃÃÑÒÓÔÕÖØÙÚÛÜÃÞßà áâãäåæçèéêëìÃîïðñòóôõöøùúûüýþÿĀÄĂ㥹ĆćĈĉĊċČÄÄŽ -ÄÄđĒēĔĕĖėĘęĚěĜÄÄžÄŸÄ Ä¡Ä¢Ä£Ä¤Ä¥Ä¦Ä§Ä¨Ä©ÄªÄ«Ä¬ÄĮįİıIJijĴĵĶķĸĹĺĻļĽľĿŀÅłŃńŅņŇňʼnŊŋŌÅÅŽÅÅ -őŒœŔŕŖŗŘřŚśŜÅŞşŠšŢţŤťŦŧŨũŪūŬÅÅ®Å¯Å°Å±Å²Å³Å´ÅµÅ¶Å·Å¸Å¹ÅºÅ»Å¼Å½Å¾Å¿Æ€ÆÆ‚ÆƒÆ„Æ…Æ†Æ‡ÆˆÆ‰ÆŠÆ‹ÆŒÆÆŽÆÆÆ‘Æ’ -Æ“Æ”Æ•Æ–Æ—Æ˜Æ™ÆšÆ›ÆœÆÆžÆŸÆ Æ¡Æ¢Æ£Æ¤Æ¥Æ¦Æ§Æ¨Æ©ÆªÆ«Æ¬ÆÆ®Æ¯Æ°Æ±Æ²Æ³Æ´ÆµÆ¶Æ·Æ¸Æ¹ÆºÆ¼Æ½Æ¾Æ¿Ç„džLJljNJnjÇÇŽÇÇǑǒǓǔǕǖǗǘǙǚǛǜ -ÇÇžÇŸÇ Ç¡Ç¢Ç£Ç¤Ç¥Ç¦Ç§Ç¨Ç©ÇªÇ«Ç¬ÇǮǯǰDZdzǴǵǶǷǸǹǺǻǼǽǾǿȀÈȂȃȄȅȆȇȈȉȊȋȌÈÈŽÈÈȑȒȓȔȕȖȗȘșȚțȜÈȞȟ -È È¡È¢È£È¤È¥È¦È§È¨È©ÈªÈ«È¬ÈȮȯȰȱȲȳȴȵȶȷȸȹȺȻȼȽȾȿɀÉÉɑɒɓɔɕɖɗɘəɚɛɜÉÉžÉŸÉ É¡É¢É£É¤É¥É¦É§É¨É©ÉªÉ«É¬Éɮɯ -ɰɱɲɳɴɵɶɷɸɹɺɻɼɽɾɿʀÊʂʃʄʅʆʇʈʉʊʋʌÊÊŽÊÊʑʒʓʔʕʖʗʘʙʚʛʜÊÊžÊŸÊ Ê¡Ê¢Ê£Ê¤Ê¥Ê¦Ê§Ê¨Ê©ÊªÊ«Ê¬ÊʮʯΆΈ -ΉΊΌΎÎÎΑΒΓΔΕΖΗΘΙΚΛΜÎΞΟΠΡΣΤΥΦΧΨΩΪΫάÎήίΰαβγδεζηθικλμνξοπÏÏ‚ÏƒÏ„Ï…Ï†Ï‡ÏˆÏ‰ÏŠÏ‹ÏŒÏ -ÏŽÏϑϒϓϔϕϖϗϘϙϚϛϜÏÏžÏŸÏ Ï¡Ï¢Ï£Ï¤Ï¥Ï¦Ï§Ï¨Ï©ÏªÏ«Ï¬ÏϮϯϰϱϲϳϴϵϷϸϹϺϻϼϽϾϿЀÐЂЃЄЅІЇЈЉЊЋЌÐÐŽÐÐБ -ВГДЕЖЗИЙКЛМÐОПРСТУФХЦЧШЩЪЫЬÐЮЯабвгдежзийклмнопрÑтуфхцчшщъыьÑÑŽÑÑёђѓ -єѕіїјљњћќÑÑžÑŸÑ Ñ¡Ñ¢Ñ£Ñ¤Ñ¥Ñ¦Ñ§Ñ¨Ñ©ÑªÑ«Ñ¬ÑѮѯѰѱѲѳѴѵѶѷѸѹѺѻѼѽѾѿҀÒÒŠÒ‹ÒŒÒÒŽÒÒÒ‘Ò’Ò“Ò”Ò•Ò–Ò—Ò˜Ò™ÒšÒ›ÒœÒ -ÒžÒŸÒ Ò¡Ò¢Ò£Ò¤Ò¥Ò¦Ò§Ò¨Ò©ÒªÒ«Ò¬ÒÒ®Ò¯Ò°Ò±Ò²Ò³Ò´ÒµÒ¶Ò·Ò¸Ò¹ÒºÒ»Ò¼Ò½Ò¾Ò¿Ó€ÓÓ‚ÓƒÓ„Ó…Ó†Ó‡ÓˆÓ‰ÓŠÓ‹ÓŒÓÓŽÓÓ‘Ó’Ó“Ó”Ó•Ó–Ó—Ó˜Ó™ÓšÓ›ÓœÓÓžÓŸÓ -Ó¡Ó¢Ó£Ó¤Ó¥Ó¦Ó§Ó¨Ó©ÓªÓ«Ó¬ÓÓ®Ó¯Ó°Ó±Ó²Ó³Ó´ÓµÓ¶Ó·Ó¸Ó¹Ô€ÔÔ‚ÔƒÔ„Ô…Ô†Ô‡ÔˆÔ‰ÔŠÔ‹ÔŒÔÔŽÔÔ±Ô²Ô³Ô´ÔµÔ¶Ô·Ô¸Ô¹ÔºÔ»Ô¼Ô½Ô¾Ô¿Õ€ÕÕ‚ÕƒÕ„Õ…Õ†Õ‡ÕˆÕ‰ -ÕŠÕ‹ÕŒÕÕŽÕÕÕ‘Õ’Õ“Õ”Õ•Õ–Õ¡Õ¢Õ£Õ¤Õ¥Õ¦Õ§Õ¨Õ©ÕªÕ«Õ¬ÕÕ®Õ¯Õ°Õ±Õ²Õ³Õ´ÕµÕ¶Õ·Õ¸Õ¹ÕºÕ»Õ¼Õ½Õ¾Õ¿Ö€ÖւփքօֆևႠႡႢႣႤႥႦႧႨႩႪႫႬႠ-ႮႯႰႱႲႳႴႵႶႷႸႹႺႻႼႽႾႿჀáƒáƒ‚ჃჄჅᴀá´á´‚ᴃᴄᴅᴆᴇᴈᴉᴊᴋᴌá´á´Žá´á´á´‘ᴒᴓᴔᴕᴖᴗᴘᴙᴚᴛᴜá´á´žá´Ÿá´ ᴡᴢᴣᴤᴥᴦᴧᴨᴩ -ᴪᴫᵢᵣᵤᵥᵦᵧᵨᵩᵪᵫᵬáµáµ®áµ¯áµ°áµ±áµ²áµ³áµ´áµµáµ¶áµ·áµ¹áµºáµ»áµ¼áµ½áµ¾áµ¿á¶€á¶á¶‚ᶃᶄᶅᶆᶇᶈᶉᶊᶋᶌá¶á¶Žá¶á¶á¶‘ᶒᶓᶔᶕᶖᶗᶘᶙᶚḀá¸á¸‚ḃḄḅḆḇ -ḈḉḊḋḌá¸á¸Žá¸á¸á¸‘ḒḓḔḕḖḗḘḙḚḛḜá¸á¸žá¸Ÿá¸ ḡḢḣḤḥḦḧḨḩḪḫḬá¸á¸®á¸¯á¸°á¸±á¸²á¸³á¸´á¸µá¸¶á¸·á¸¸á¸¹á¸ºá¸»á¸¼á¸½á¸¾á¸¿á¹€á¹á¹‚ṃṄṅṆṇṈṉ -ṊṋṌá¹á¹Žá¹á¹á¹‘ṒṓṔṕṖṗṘṙṚṛṜá¹á¹žá¹Ÿá¹ ṡṢṣṤṥṦṧṨṩṪṫṬá¹á¹®á¹¯á¹°á¹±á¹²á¹³á¹´á¹µá¹¶á¹·á¹¸á¹¹á¹ºá¹»á¹¼á¹½á¹¾á¹¿áº€áºáº‚ẃẄẅẆẇẈẉẊẋ -ẌáºáºŽáºáºáº‘ẒẓẔẕẖẗẘẙẚẛẠạẢảẤấẦầẨẩẪẫẬáºáº®áº¯áº°áº±áº²áº³áº´áºµáº¶áº·áº¸áº¹áººáº»áº¼áº½áº¾áº¿á»€á»á»‚ểỄễỆệỈỉỊịỌá»á»Žá»á»á»‘ -ỒồỔổỖỗỘộỚớỜá»á»žá»Ÿá» ỡỢợỤụỦủỨứỪừỬá»á»®á»¯á»°á»±á»²á»³á»´á»µá»¶á»·á»¸á»¹á¼€á¼á¼‚ἃἄἅἆἇἈἉἊἋἌá¼á¼Žá¼á¼á¼‘ἒἓἔἕἘἙἚἛ -Ἔá¼á¼ ἡἢἣἤἥἦἧἨἩἪἫἬá¼á¼®á¼¯á¼°á¼±á¼²á¼³á¼´á¼µá¼¶á¼·á¼¸á¼¹á¼ºá¼»á¼¼á¼½á¼¾á¼¿á½€á½á½‚ὃὄὅὈὉὊὋὌá½á½á½‘ὒὓὔὕὖὗὙὛá½á½Ÿá½ ὡὢὣὤὥὦὧ -ὨὩὪὫὬá½á½®á½¯á½°á½±á½²á½³á½´á½µá½¶á½·á½¸á½¹á½ºá½»á½¼á½½á¾€á¾á¾‚ᾃᾄᾅᾆᾇá¾á¾‘ᾒᾓᾔᾕᾖᾗᾠᾡᾢᾣᾤᾥᾦᾧᾰᾱᾲᾳᾴᾶᾷᾸᾹᾺΆιῂῃῄῆῇῈΈῊ -á¿‹á¿á¿‘ῒΐῖῗῘῙῚΊῠῡῢΰῤῥῦῧῨῩῪΎῬῲῳῴῶῷῸΌῺΏâ±â¿â„‚ℇℊℋℌâ„ℎâ„â„ℑℒℓℕℙℚℛℜâ„ℤΩℨKÅℬâ„ℯℰℱℳℴℹ -ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzªµºÀÃÂÃÄÅÆÇÈÉÊ -ËÌÃÃŽÃÃÑÒÓÔÕÖØÙÚÛÜÃÞßà áâãäåæçèéêëìÃîïðñòóôõöøùúûüýþÿĀÄĂ㥹ĆćĈĉĊċČÄÄŽ -ÄÄđĒēĔĕĖėĘęĚěĜÄÄžÄŸÄ Ä¡Ä¢Ä£Ä¤Ä¥Ä¦Ä§Ä¨Ä©ÄªÄ«Ä¬ÄĮįİıIJijĴĵĶķĸĹĺĻļĽľĿŀÅłŃńŅņŇňʼnŊŋŌÅÅŽÅÅ -őŒœŔŕŖŗŘřŚśŜÅŞşŠšŢţŤťŦŧŨũŪūŬÅÅ®Å¯Å°Å±Å²Å³Å´ÅµÅ¶Å·Å¸Å¹ÅºÅ»Å¼Å½Å¾Å¿Æ€ÆÆ‚ÆƒÆ„Æ…Æ†Æ‡ÆˆÆ‰ÆŠÆ‹ÆŒÆÆŽÆÆÆ‘Æ’ -Æ“Æ”Æ•Æ–Æ—Æ˜Æ™ÆšÆ›ÆœÆÆžÆŸÆ Æ¡Æ¢Æ£Æ¤Æ¥Æ¦Æ§Æ¨Æ©ÆªÆ«Æ¬ÆÆ®Æ¯Æ°Æ±Æ²Æ³Æ´ÆµÆ¶Æ·Æ¸Æ¹ÆºÆ¼Æ½Æ¾Æ¿Ç„džLJljNJnjÇÇŽÇÇǑǒǓǔǕǖǗǘǙǚǛǜ -ÇÇžÇŸÇ Ç¡Ç¢Ç£Ç¤Ç¥Ç¦Ç§Ç¨Ç©ÇªÇ«Ç¬ÇǮǯǰDZdzǴǵǶǷǸǹǺǻǼǽǾǿȀÈȂȃȄȅȆȇȈȉȊȋȌÈÈŽÈÈȑȒȓȔȕȖȗȘșȚțȜÈȞȟ -È È¡È¢È£È¤È¥È¦È§È¨È©ÈªÈ«È¬ÈȮȯȰȱȲȳȴȵȶȷȸȹȺȻȼȽȾȿɀÉÉɑɒɓɔɕɖɗɘəɚɛɜÉÉžÉŸÉ É¡É¢É£É¤É¥É¦É§É¨É©ÉªÉ«É¬Éɮɯ -ɰɱɲɳɴɵɶɷɸɹɺɻɼɽɾɿʀÊʂʃʄʅʆʇʈʉʊʋʌÊÊŽÊÊʑʒʓʔʕʖʗʘʙʚʛʜÊÊžÊŸÊ Ê¡Ê¢Ê£Ê¤Ê¥Ê¦Ê§Ê¨Ê©ÊªÊ«Ê¬ÊʮʯΆΈ -ΉΊΌΎÎÎΑΒΓΔΕΖΗΘΙΚΛΜÎΞΟΠΡΣΤΥΦΧΨΩΪΫάÎήίΰαβγδεζηθικλμνξοπÏÏ‚ÏƒÏ„Ï…Ï†Ï‡ÏˆÏ‰ÏŠÏ‹ÏŒÏ -ÏŽÏϑϒϓϔϕϖϗϘϙϚϛϜÏÏžÏŸÏ Ï¡Ï¢Ï£Ï¤Ï¥Ï¦Ï§Ï¨Ï©ÏªÏ«Ï¬ÏϮϯϰϱϲϳϴϵϷϸϹϺϻϼϽϾϿЀÐЂЃЄЅІЇЈЉЊЋЌÐÐŽÐÐБ -ВГДЕЖЗИЙКЛМÐОПРСТУФХЦЧШЩЪЫЬÐЮЯабвгдежзийклмнопрÑтуфхцчшщъыьÑÑŽÑÑёђѓ -єѕіїјљњћќÑÑžÑŸÑ Ñ¡Ñ¢Ñ£Ñ¤Ñ¥Ñ¦Ñ§Ñ¨Ñ©ÑªÑ«Ñ¬ÑѮѯѰѱѲѳѴѵѶѷѸѹѺѻѼѽѾѿҀÒÒŠÒ‹ÒŒÒÒŽÒÒÒ‘Ò’Ò“Ò”Ò•Ò–Ò—Ò˜Ò™ÒšÒ›ÒœÒ -ÒžÒŸÒ Ò¡Ò¢Ò£Ò¤Ò¥Ò¦Ò§Ò¨Ò©ÒªÒ«Ò¬ÒÒ®Ò¯Ò°Ò±Ò²Ò³Ò´ÒµÒ¶Ò·Ò¸Ò¹ÒºÒ»Ò¼Ò½Ò¾Ò¿Ó€ÓÓ‚ÓƒÓ„Ó…Ó†Ó‡ÓˆÓ‰ÓŠÓ‹ÓŒÓÓŽÓÓ‘Ó’Ó“Ó”Ó•Ó–Ó—Ó˜Ó™ÓšÓ›ÓœÓÓžÓŸÓ -Ó¡Ó¢Ó£Ó¤Ó¥Ó¦Ó§Ó¨Ó©ÓªÓ«Ó¬ÓÓ®Ó¯Ó°Ó±Ó²Ó³Ó´ÓµÓ¶Ó·Ó¸Ó¹Ô€ÔÔ‚ÔƒÔ„Ô…Ô†Ô‡ÔˆÔ‰ÔŠÔ‹ÔŒÔÔŽÔÔ±Ô²Ô³Ô´ÔµÔ¶Ô·Ô¸Ô¹ÔºÔ»Ô¼Ô½Ô¾Ô¿Õ€ÕÕ‚ÕƒÕ„Õ…Õ†Õ‡ÕˆÕ‰ -ÕŠÕ‹ÕŒÕÕŽÕÕÕ‘Õ’Õ“Õ”Õ•Õ–Õ¡Õ¢Õ£Õ¤Õ¥Õ¦Õ§Õ¨Õ©ÕªÕ«Õ¬ÕÕ®Õ¯Õ°Õ±Õ²Õ³Õ´ÕµÕ¶Õ·Õ¸Õ¹ÕºÕ»Õ¼Õ½Õ¾Õ¿Ö€ÖւփքօֆևႠႡႢႣႤႥႦႧႨႩႪႫႬႠ-ႮႯႰႱႲႳႴႵႶႷႸႹႺႻႼႽႾႿჀáƒáƒ‚ჃჄჅᴀá´á´‚ᴃᴄᴅᴆᴇᴈᴉᴊᴋᴌá´á´Žá´á´á´‘ᴒᴓᴔᴕᴖᴗᴘᴙᴚᴛᴜá´á´žá´Ÿá´ ᴡᴢᴣᴤᴥᴦᴧᴨᴩ -ᴪᴫᵢᵣᵤᵥᵦᵧᵨᵩᵪᵫᵬáµáµ®áµ¯áµ°áµ±áµ²áµ³áµ´áµµáµ¶áµ·áµ¹áµºáµ»áµ¼áµ½áµ¾áµ¿á¶€á¶á¶‚ᶃᶄᶅᶆᶇᶈᶉᶊᶋᶌá¶á¶Žá¶á¶á¶‘ᶒᶓᶔᶕᶖᶗᶘᶙᶚḀá¸á¸‚ḃḄḅḆḇ -ḈḉḊḋḌá¸á¸Žá¸á¸á¸‘ḒḓḔḕḖḗḘḙḚḛḜá¸á¸žá¸Ÿá¸ ḡḢḣḤḥḦḧḨḩḪḫḬá¸á¸®á¸¯á¸°á¸±á¸²á¸³á¸´á¸µá¸¶á¸·á¸¸á¸¹á¸ºá¸»á¸¼á¸½á¸¾á¸¿á¹€á¹á¹‚ṃṄṅṆṇṈṉ -ṊṋṌá¹á¹Žá¹á¹á¹‘ṒṓṔṕṖṗṘṙṚṛṜá¹á¹žá¹Ÿá¹ ṡṢṣṤṥṦṧṨṩṪṫṬá¹á¹®á¹¯á¹°á¹±á¹²á¹³á¹´á¹µá¹¶á¹·á¹¸á¹¹á¹ºá¹»á¹¼á¹½á¹¾á¹¿áº€áºáº‚ẃẄẅẆẇẈẉẊẋ -ẌáºáºŽáºáºáº‘ẒẓẔẕẖẗẘẙẚẛẠạẢảẤấẦầẨẩẪẫẬáºáº®áº¯áº°áº±áº²áº³áº´áºµáº¶áº·áº¸áº¹áººáº»áº¼áº½áº¾áº¿á»€á»á»‚ểỄễỆệỈỉỊịỌá»á»Žá»á»á»‘ -ỒồỔổỖỗỘộỚớỜá»á»žá»Ÿá» ỡỢợỤụỦủỨứỪừỬá»á»®á»¯á»°á»±á»²á»³á»´á»µá»¶á»·á»¸á»¹á¼€á¼á¼‚ἃἄἅἆἇἈἉἊἋἌá¼á¼Žá¼á¼á¼‘ἒἓἔἕἘἙἚἛ -Ἔá¼á¼ ἡἢἣἤἥἦἧἨἩἪἫἬá¼á¼®á¼¯á¼°á¼±á¼²á¼³á¼´á¼µá¼¶á¼·á¼¸á¼¹á¼ºá¼»á¼¼á¼½á¼¾á¼¿á½€á½á½‚ὃὄὅὈὉὊὋὌá½á½á½‘ὒὓὔὕὖὗὙὛá½á½Ÿá½ ὡὢὣὤὥὦὧ -ὨὩὪὫὬá½á½®á½¯á½°á½±á½²á½³á½´á½µá½¶á½·á½¸á½¹á½ºá½»á½¼á½½á¾€á¾á¾‚ᾃᾄᾅᾆᾇá¾á¾‘ᾒᾓᾔᾕᾖᾗᾠᾡᾢᾣᾤᾥᾦᾧᾰᾱᾲᾳᾴᾶᾷᾸᾹᾺΆιῂῃῄῆῇῈΈῊ -á¿‹á¿á¿‘ῒΐῖῗῘῙῚΊῠῡῢΰῤῥῦῧῨῩῪΎῬῲῳῴῶῷῸΌῺΏâ±â¿â„‚ℇℊℋℌâ„ℎâ„â„ℑℒℓℕℙℚℛℜâ„ℤΩℨKÅℬâ„ℯℰℱℳℴℹ diff --git a/src/ext_depends/D-YAML/test/data/mappings.events b/src/ext_depends/D-YAML/test/data/mappings.events deleted file mode 100644 index 3cb5579..0000000 --- a/src/ext_depends/D-YAML/test/data/mappings.events +++ /dev/null @@ -1,44 +0,0 @@ -- !StreamStart - -- !DocumentStart -- !MappingStart -- !Scalar { implicit: [true,true], value: 'key' } -- !Scalar { implicit: [true,true], value: 'value' } -- !Scalar { implicit: [true,true], value: 'empty mapping' } -- !MappingStart -- !MappingEnd -- !Scalar { implicit: [true,true], value: 'empty mapping with tag' } -- !MappingStart { tag: '!mytag', implicit: false } -- !MappingEnd -- !Scalar { implicit: [true,true], value: 'block mapping' } -- !MappingStart -- !MappingStart -- !Scalar { implicit: [true,true], value: 'complex' } -- !Scalar { implicit: [true,true], value: 'key' } -- !Scalar { implicit: [true,true], value: 'complex' } -- !Scalar { implicit: [true,true], value: 'key' } -- !MappingEnd -- !MappingStart -- !Scalar { implicit: [true,true], value: 'complex' } -- !Scalar { implicit: [true,true], value: 'key' } -- !MappingEnd -- !MappingEnd -- !Scalar { implicit: [true,true], value: 'flow mapping' } -- !MappingStart { flow_style: true } -- !Scalar { implicit: [true,true], value: 'key' } -- !Scalar { implicit: [true,true], value: 'value' } -- !MappingStart -- !Scalar { implicit: [true,true], value: 'complex' } -- !Scalar { implicit: [true,true], value: 'key' } -- !Scalar { implicit: [true,true], value: 'complex' } -- !Scalar { implicit: [true,true], value: 'key' } -- !MappingEnd -- !MappingStart -- !Scalar { implicit: [true,true], value: 'complex' } -- !Scalar { implicit: [true,true], value: 'key' } -- !MappingEnd -- !MappingEnd -- !MappingEnd -- !DocumentEnd - -- !StreamEnd diff --git a/src/ext_depends/D-YAML/test/data/merge.data b/src/ext_depends/D-YAML/test/data/merge.data deleted file mode 100644 index e455bbc..0000000 --- a/src/ext_depends/D-YAML/test/data/merge.data +++ /dev/null @@ -1 +0,0 @@ -- << diff --git a/src/ext_depends/D-YAML/test/data/merge.detect b/src/ext_depends/D-YAML/test/data/merge.detect deleted file mode 100644 index 1672d0d..0000000 --- a/src/ext_depends/D-YAML/test/data/merge.detect +++ /dev/null @@ -1 +0,0 @@ -tag:yaml.org,2002:merge diff --git a/src/ext_depends/D-YAML/test/data/more-floats.code b/src/ext_depends/D-YAML/test/data/more-floats.code deleted file mode 100644 index 97e0aca..0000000 --- a/src/ext_depends/D-YAML/test/data/more-floats.code +++ /dev/null @@ -1 +0,0 @@ -#dummy used in constructor test diff --git a/src/ext_depends/D-YAML/test/data/more-floats.data b/src/ext_depends/D-YAML/test/data/more-floats.data deleted file mode 100644 index 399eb17..0000000 --- a/src/ext_depends/D-YAML/test/data/more-floats.data +++ /dev/null @@ -1 +0,0 @@ -[0.0, +1.0, -1.0, +.inf, -.inf, .nan, .nan] diff --git a/src/ext_depends/D-YAML/test/data/negative-float-bug.code b/src/ext_depends/D-YAML/test/data/negative-float-bug.code deleted file mode 100644 index 97e0aca..0000000 --- a/src/ext_depends/D-YAML/test/data/negative-float-bug.code +++ /dev/null @@ -1 +0,0 @@ -#dummy used in constructor test diff --git a/src/ext_depends/D-YAML/test/data/negative-float-bug.data b/src/ext_depends/D-YAML/test/data/negative-float-bug.data deleted file mode 100644 index 18e16e3..0000000 --- a/src/ext_depends/D-YAML/test/data/negative-float-bug.data +++ /dev/null @@ -1 +0,0 @@ --1.0 diff --git a/src/ext_depends/D-YAML/test/data/no-alias-anchor.emitter-error b/src/ext_depends/D-YAML/test/data/no-alias-anchor.emitter-error deleted file mode 100644 index 5ff065c..0000000 --- a/src/ext_depends/D-YAML/test/data/no-alias-anchor.emitter-error +++ /dev/null @@ -1,8 +0,0 @@ -- !StreamStart -- !DocumentStart -- !SequenceStart -- !Scalar { anchor: A, value: data } -- !Alias { } -- !SequenceEnd -- !DocumentEnd -- !StreamEnd diff --git a/src/ext_depends/D-YAML/test/data/no-alias-anchor.skip-ext b/src/ext_depends/D-YAML/test/data/no-alias-anchor.skip-ext deleted file mode 100644 index e69de29..0000000 --- a/src/ext_depends/D-YAML/test/data/no-alias-anchor.skip-ext +++ /dev/null diff --git a/src/ext_depends/D-YAML/test/data/no-block-collection-end.loader-error b/src/ext_depends/D-YAML/test/data/no-block-collection-end.loader-error deleted file mode 100644 index 02d4d37..0000000 --- a/src/ext_depends/D-YAML/test/data/no-block-collection-end.loader-error +++ /dev/null @@ -1,3 +0,0 @@ -- foo -- bar -baz: bar diff --git a/src/ext_depends/D-YAML/test/data/no-block-mapping-end-2.loader-error b/src/ext_depends/D-YAML/test/data/no-block-mapping-end-2.loader-error deleted file mode 100644 index be63571..0000000 --- a/src/ext_depends/D-YAML/test/data/no-block-mapping-end-2.loader-error +++ /dev/null @@ -1,3 +0,0 @@ -? foo -: bar -: baz diff --git a/src/ext_depends/D-YAML/test/data/no-block-mapping-end.loader-error b/src/ext_depends/D-YAML/test/data/no-block-mapping-end.loader-error deleted file mode 100644 index 1ea921c..0000000 --- a/src/ext_depends/D-YAML/test/data/no-block-mapping-end.loader-error +++ /dev/null @@ -1 +0,0 @@ -foo: "bar" "baz" diff --git a/src/ext_depends/D-YAML/test/data/no-document-start.loader-error b/src/ext_depends/D-YAML/test/data/no-document-start.loader-error deleted file mode 100644 index c725ec8..0000000 --- a/src/ext_depends/D-YAML/test/data/no-document-start.loader-error +++ /dev/null @@ -1,3 +0,0 @@ -%YAML 1.1 -# no --- -foo: bar diff --git a/src/ext_depends/D-YAML/test/data/no-flow-mapping-end.loader-error b/src/ext_depends/D-YAML/test/data/no-flow-mapping-end.loader-error deleted file mode 100644 index 8bd1403..0000000 --- a/src/ext_depends/D-YAML/test/data/no-flow-mapping-end.loader-error +++ /dev/null @@ -1 +0,0 @@ -{ foo: bar ] diff --git a/src/ext_depends/D-YAML/test/data/no-flow-sequence-end.loader-error b/src/ext_depends/D-YAML/test/data/no-flow-sequence-end.loader-error deleted file mode 100644 index 750d973..0000000 --- a/src/ext_depends/D-YAML/test/data/no-flow-sequence-end.loader-error +++ /dev/null @@ -1 +0,0 @@ -[foo, bar} diff --git a/src/ext_depends/D-YAML/test/data/no-node-1.loader-error b/src/ext_depends/D-YAML/test/data/no-node-1.loader-error deleted file mode 100644 index 07b1500..0000000 --- a/src/ext_depends/D-YAML/test/data/no-node-1.loader-error +++ /dev/null @@ -1 +0,0 @@ -- !foo ] diff --git a/src/ext_depends/D-YAML/test/data/no-node-2.loader-error b/src/ext_depends/D-YAML/test/data/no-node-2.loader-error deleted file mode 100644 index 563e3b3..0000000 --- a/src/ext_depends/D-YAML/test/data/no-node-2.loader-error +++ /dev/null @@ -1 +0,0 @@ -- [ !foo } ] diff --git a/src/ext_depends/D-YAML/test/data/no-tag.emitter-error b/src/ext_depends/D-YAML/test/data/no-tag.emitter-error deleted file mode 100644 index 384c62f..0000000 --- a/src/ext_depends/D-YAML/test/data/no-tag.emitter-error +++ /dev/null @@ -1,5 +0,0 @@ -- !StreamStart -- !DocumentStart -- !Scalar { value: 'foo', implicit: [false,false] } -- !DocumentEnd -- !StreamEnd diff --git a/src/ext_depends/D-YAML/test/data/null.data b/src/ext_depends/D-YAML/test/data/null.data deleted file mode 100644 index ad12528..0000000 --- a/src/ext_depends/D-YAML/test/data/null.data +++ /dev/null @@ -1,3 +0,0 @@ -- -- ~ -- null diff --git a/src/ext_depends/D-YAML/test/data/null.detect b/src/ext_depends/D-YAML/test/data/null.detect deleted file mode 100644 index 19110c7..0000000 --- a/src/ext_depends/D-YAML/test/data/null.detect +++ /dev/null @@ -1 +0,0 @@ -tag:yaml.org,2002:null diff --git a/src/ext_depends/D-YAML/test/data/odd-utf16.stream-error b/src/ext_depends/D-YAML/test/data/odd-utf16.stream-error Binary files differdeleted file mode 100644 index b59e434..0000000 --- a/src/ext_depends/D-YAML/test/data/odd-utf16.stream-error +++ /dev/null diff --git a/src/ext_depends/D-YAML/test/data/recursive.former-dumper-error b/src/ext_depends/D-YAML/test/data/recursive.former-dumper-error deleted file mode 100644 index 3c7cc2f..0000000 --- a/src/ext_depends/D-YAML/test/data/recursive.former-dumper-error +++ /dev/null @@ -1,3 +0,0 @@ -data = [] -data.append(data) -dump(data) diff --git a/src/ext_depends/D-YAML/test/data/remove-possible-simple-key-bug.loader-error b/src/ext_depends/D-YAML/test/data/remove-possible-simple-key-bug.loader-error deleted file mode 100644 index fe1bc6c..0000000 --- a/src/ext_depends/D-YAML/test/data/remove-possible-simple-key-bug.loader-error +++ /dev/null @@ -1,3 +0,0 @@ -foo: &A bar -*A ] # The ']' indicator triggers remove_possible_simple_key, - # which should raise an error. diff --git a/src/ext_depends/D-YAML/test/data/resolver.data b/src/ext_depends/D-YAML/test/data/resolver.data deleted file mode 100644 index a296404..0000000 --- a/src/ext_depends/D-YAML/test/data/resolver.data +++ /dev/null @@ -1,30 +0,0 @@ ---- -"this scalar should be selected" ---- -key11: !foo - key12: - is: [selected] - key22: - key13: [not, selected] - key23: [not, selected] - key32: - key31: [not, selected] - key32: [not, selected] - key33: {not: selected} -key21: !bar - - not selected - - selected - - not selected -key31: !baz - key12: - key13: - key14: {selected} - key23: - key14: [not, selected] - key33: - key14: {selected} - key24: {not: selected} - key22: - - key14: {selected} - key24: {not: selected} - - key14: {selected} diff --git a/src/ext_depends/D-YAML/test/data/resolver.path b/src/ext_depends/D-YAML/test/data/resolver.path deleted file mode 100644 index ec677d2..0000000 --- a/src/ext_depends/D-YAML/test/data/resolver.path +++ /dev/null @@ -1,30 +0,0 @@ ---- !root/scalar -"this scalar should be selected" ---- !root -key11: !foo - key12: !root/key11/key12/* - is: [selected] - key22: - key13: [not, selected] - key23: [not, selected] - key32: - key31: [not, selected] - key32: [not, selected] - key33: {not: selected} -key21: !bar - - not selected - - !root/key21/1/* selected - - not selected -key31: !baz - key12: - key13: - key14: !root/key31/*/*/key14/map {selected} - key23: - key14: [not, selected] - key33: - key14: !root/key31/*/*/key14/map {selected} - key24: {not: selected} - key22: - - key14: !root/key31/*/*/key14/map {selected} - key24: {not: selected} - - key14: !root/key31/*/*/key14/map {selected} diff --git a/src/ext_depends/D-YAML/test/data/run-parser-crash-bug.data b/src/ext_depends/D-YAML/test/data/run-parser-crash-bug.data deleted file mode 100644 index fe01734..0000000 --- a/src/ext_depends/D-YAML/test/data/run-parser-crash-bug.data +++ /dev/null @@ -1,8 +0,0 @@ ---- -- Harry Potter and the Prisoner of Azkaban -- Harry Potter and the Goblet of Fire -- Harry Potter and the Order of the Phoenix ---- -- Memoirs Found in a Bathtub -- Snow Crash -- Ghost World diff --git a/src/ext_depends/D-YAML/test/data/scalars.events b/src/ext_depends/D-YAML/test/data/scalars.events deleted file mode 100644 index 32c40f4..0000000 --- a/src/ext_depends/D-YAML/test/data/scalars.events +++ /dev/null @@ -1,28 +0,0 @@ -- !StreamStart - -- !DocumentStart -- !MappingStart -- !Scalar { implicit: [true,true], value: 'empty scalar' } -- !Scalar { implicit: [true,false], value: '' } -- !Scalar { implicit: [true,true], value: 'implicit scalar' } -- !Scalar { implicit: [true,true], value: 'data' } -- !Scalar { implicit: [true,true], value: 'quoted scalar' } -- !Scalar { value: 'data', style: '"' } -- !Scalar { implicit: [true,true], value: 'block scalar' } -- !Scalar { value: 'data', style: '|' } -- !Scalar { implicit: [true,true], value: 'empty scalar with tag' } -- !Scalar { implicit: [false,false], tag: '!mytag', value: '' } -- !Scalar { implicit: [true,true], value: 'implicit scalar with tag' } -- !Scalar { implicit: [false,false], tag: '!mytag', value: 'data' } -- !Scalar { implicit: [true,true], value: 'quoted scalar with tag' } -- !Scalar { value: 'data', style: '"', tag: '!mytag', implicit: [false,false] } -- !Scalar { implicit: [true,true], value: 'block scalar with tag' } -- !Scalar { value: 'data', style: '|', tag: '!mytag', implicit: [false,false] } -- !Scalar { implicit: [true,true], value: 'single character' } -- !Scalar { value: 'a', implicit: [true,true] } -- !Scalar { implicit: [true,true], value: 'single digit' } -- !Scalar { value: '1', implicit: [true,false] } -- !MappingEnd -- !DocumentEnd - -- !StreamEnd diff --git a/src/ext_depends/D-YAML/test/data/scan-document-end-bug.canonical b/src/ext_depends/D-YAML/test/data/scan-document-end-bug.canonical deleted file mode 100644 index 4a0e8a8..0000000 --- a/src/ext_depends/D-YAML/test/data/scan-document-end-bug.canonical +++ /dev/null @@ -1,3 +0,0 @@ -%YAML 1.1 ---- -!!null "" diff --git a/src/ext_depends/D-YAML/test/data/scan-document-end-bug.data b/src/ext_depends/D-YAML/test/data/scan-document-end-bug.data deleted file mode 100644 index 3c70543..0000000 --- a/src/ext_depends/D-YAML/test/data/scan-document-end-bug.data +++ /dev/null @@ -1,3 +0,0 @@ -# Ticket #4 ---- -...
\ No newline at end of file diff --git a/src/ext_depends/D-YAML/test/data/scan-line-break-bug.canonical b/src/ext_depends/D-YAML/test/data/scan-line-break-bug.canonical deleted file mode 100644 index 79f08b7..0000000 --- a/src/ext_depends/D-YAML/test/data/scan-line-break-bug.canonical +++ /dev/null @@ -1,3 +0,0 @@ -%YAML 1.1 ---- -!!map { ? !!str "foo" : !!str "bar baz" } diff --git a/src/ext_depends/D-YAML/test/data/scan-line-break-bug.data b/src/ext_depends/D-YAML/test/data/scan-line-break-bug.data deleted file mode 100644 index c974fab..0000000 --- a/src/ext_depends/D-YAML/test/data/scan-line-break-bug.data +++ /dev/null @@ -1,3 +0,0 @@ -foo:
- bar
- baz
diff --git a/src/ext_depends/D-YAML/test/data/sequences.events b/src/ext_depends/D-YAML/test/data/sequences.events deleted file mode 100644 index 692a329..0000000 --- a/src/ext_depends/D-YAML/test/data/sequences.events +++ /dev/null @@ -1,81 +0,0 @@ -- !StreamStart - -- !DocumentStart -- !SequenceStart -- !SequenceEnd -- !DocumentEnd - -- !DocumentStart -- !SequenceStart { tag: '!mytag', implicit: false } -- !SequenceEnd -- !DocumentEnd - -- !DocumentStart -- !SequenceStart -- !SequenceStart -- !SequenceEnd -- !SequenceStart { tag: '!mytag', implicit: false } -- !SequenceEnd -- !SequenceStart -- !Scalar -- !Scalar { value: 'data' } -- !Scalar { tag: '!mytag', implicit: [false,false], value: 'data' } -- !SequenceEnd -- !SequenceStart -- !SequenceStart -- !SequenceStart -- !Scalar -- !SequenceEnd -- !SequenceEnd -- !SequenceEnd -- !SequenceStart -- !SequenceStart { tag: '!mytag', implicit: false } -- !SequenceStart -- !Scalar { value: 'data' } -- !SequenceEnd -- !SequenceEnd -- !SequenceEnd -- !SequenceEnd -- !DocumentEnd - -- !DocumentStart -- !SequenceStart -- !MappingStart -- !Scalar { value: 'key1' } -- !SequenceStart -- !Scalar { value: 'data1' } -- !Scalar { value: 'data2' } -- !SequenceEnd -- !Scalar { value: 'key2' } -- !SequenceStart { tag: '!mytag1', implicit: false } -- !Scalar { value: 'data3' } -- !SequenceStart -- !Scalar { value: 'data4' } -- !Scalar { value: 'data5' } -- !SequenceEnd -- !SequenceStart { tag: '!mytag2', implicit: false } -- !Scalar { value: 'data6' } -- !Scalar { value: 'data7' } -- !SequenceEnd -- !SequenceEnd -- !MappingEnd -- !SequenceEnd -- !DocumentEnd - -- !DocumentStart -- !SequenceStart -- !SequenceStart { flow_style: true } -- !SequenceStart -- !SequenceEnd -- !Scalar -- !Scalar { value: 'data' } -- !Scalar { tag: '!mytag', implicit: [false,false], value: 'data' } -- !SequenceStart { tag: '!mytag', implicit: false } -- !Scalar { value: 'data' } -- !Scalar { value: 'data' } -- !SequenceEnd -- !SequenceEnd -- !SequenceEnd -- !DocumentEnd - -- !StreamEnd diff --git a/src/ext_depends/D-YAML/test/data/single-dot-is-not-float-bug.code b/src/ext_depends/D-YAML/test/data/single-dot-is-not-float-bug.code deleted file mode 100644 index 97e0aca..0000000 --- a/src/ext_depends/D-YAML/test/data/single-dot-is-not-float-bug.code +++ /dev/null @@ -1 +0,0 @@ -#dummy used in constructor test diff --git a/src/ext_depends/D-YAML/test/data/single-dot-is-not-float-bug.data b/src/ext_depends/D-YAML/test/data/single-dot-is-not-float-bug.data deleted file mode 100644 index 9c558e3..0000000 --- a/src/ext_depends/D-YAML/test/data/single-dot-is-not-float-bug.data +++ /dev/null @@ -1 +0,0 @@ -. diff --git a/src/ext_depends/D-YAML/test/data/sloppy-indentation.canonical b/src/ext_depends/D-YAML/test/data/sloppy-indentation.canonical deleted file mode 100644 index 438bc04..0000000 --- a/src/ext_depends/D-YAML/test/data/sloppy-indentation.canonical +++ /dev/null @@ -1,18 +0,0 @@ -%YAML 1.1 ---- -!!map { - ? !!str "in the block context" - : !!map { - ? !!str "indentation should be kept" - : !!map { - ? !!str "but in the flow context" - : !!seq [ !!str "it may be violated" ] - } - } -} ---- !!str -"the parser does not require scalars to be indented with at least one space" ---- !!str -"the parser does not require scalars to be indented with at least one space" ---- !!map -{ ? !!str "foo": { ? !!str "bar" : !!str "quoted scalars may not adhere indentation" } } diff --git a/src/ext_depends/D-YAML/test/data/sloppy-indentation.data b/src/ext_depends/D-YAML/test/data/sloppy-indentation.data deleted file mode 100644 index 2eb4f5a..0000000 --- a/src/ext_depends/D-YAML/test/data/sloppy-indentation.data +++ /dev/null @@ -1,17 +0,0 @@ ---- -in the block context: - indentation should be kept: { - but in the flow context: [ -it may be violated] -} ---- -the parser does not require scalars -to be indented with at least one space -... ---- -"the parser does not require scalars -to be indented with at least one space" ---- -foo: - bar: 'quoted scalars -may not adhere indentation' diff --git a/src/ext_depends/D-YAML/test/data/spec-02-01.data b/src/ext_depends/D-YAML/test/data/spec-02-01.data deleted file mode 100644 index d12e671..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-02-01.data +++ /dev/null @@ -1,3 +0,0 @@ -- Mark McGwire -- Sammy Sosa -- Ken Griffey diff --git a/src/ext_depends/D-YAML/test/data/spec-02-01.structure b/src/ext_depends/D-YAML/test/data/spec-02-01.structure deleted file mode 100644 index f532f4a..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-02-01.structure +++ /dev/null @@ -1 +0,0 @@ -[True, True, True] diff --git a/src/ext_depends/D-YAML/test/data/spec-02-01.tokens b/src/ext_depends/D-YAML/test/data/spec-02-01.tokens deleted file mode 100644 index ce44cac..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-02-01.tokens +++ /dev/null @@ -1 +0,0 @@ -[[ , _ , _ , _ ]} diff --git a/src/ext_depends/D-YAML/test/data/spec-02-02.data b/src/ext_depends/D-YAML/test/data/spec-02-02.data deleted file mode 100644 index 7b7ec94..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-02-02.data +++ /dev/null @@ -1,3 +0,0 @@ -hr: 65 # Home runs -avg: 0.278 # Batting average -rbi: 147 # Runs Batted In diff --git a/src/ext_depends/D-YAML/test/data/spec-02-02.structure b/src/ext_depends/D-YAML/test/data/spec-02-02.structure deleted file mode 100644 index aba1ced..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-02-02.structure +++ /dev/null @@ -1 +0,0 @@ -[(True, True), (True, True), (True, True)] diff --git a/src/ext_depends/D-YAML/test/data/spec-02-02.tokens b/src/ext_depends/D-YAML/test/data/spec-02-02.tokens deleted file mode 100644 index e4e381b..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-02-02.tokens +++ /dev/null @@ -1,5 +0,0 @@ -{{ -? _ : _ -? _ : _ -? _ : _ -]} diff --git a/src/ext_depends/D-YAML/test/data/spec-02-03.data b/src/ext_depends/D-YAML/test/data/spec-02-03.data deleted file mode 100644 index 656d628..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-02-03.data +++ /dev/null @@ -1,8 +0,0 @@ -american: - - Boston Red Sox - - Detroit Tigers - - New York Yankees -national: - - New York Mets - - Chicago Cubs - - Atlanta Braves diff --git a/src/ext_depends/D-YAML/test/data/spec-02-03.structure b/src/ext_depends/D-YAML/test/data/spec-02-03.structure deleted file mode 100644 index 25de5d2..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-02-03.structure +++ /dev/null @@ -1 +0,0 @@ -[(True, [True, True, True]), (True, [True, True, True])] diff --git a/src/ext_depends/D-YAML/test/data/spec-02-03.tokens b/src/ext_depends/D-YAML/test/data/spec-02-03.tokens deleted file mode 100644 index 89815f2..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-02-03.tokens +++ /dev/null @@ -1,4 +0,0 @@ -{{ -? _ : [[ , _ , _ , _ ]} -? _ : [[ , _ , _ , _ ]} -]} diff --git a/src/ext_depends/D-YAML/test/data/spec-02-04.data b/src/ext_depends/D-YAML/test/data/spec-02-04.data deleted file mode 100644 index 430f6b3..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-02-04.data +++ /dev/null @@ -1,8 +0,0 @@ -- - name: Mark McGwire - hr: 65 - avg: 0.278 -- - name: Sammy Sosa - hr: 63 - avg: 0.288 diff --git a/src/ext_depends/D-YAML/test/data/spec-02-04.structure b/src/ext_depends/D-YAML/test/data/spec-02-04.structure deleted file mode 100644 index e7b526c..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-02-04.structure +++ /dev/null @@ -1,4 +0,0 @@ -[ - [(True, True), (True, True), (True, True)], - [(True, True), (True, True), (True, True)], -] diff --git a/src/ext_depends/D-YAML/test/data/spec-02-04.tokens b/src/ext_depends/D-YAML/test/data/spec-02-04.tokens deleted file mode 100644 index 9cb9815..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-02-04.tokens +++ /dev/null @@ -1,4 +0,0 @@ -[[ -, {{ ? _ : _ ? _ : _ ? _ : _ ]} -, {{ ? _ : _ ? _ : _ ? _ : _ ]} -]} diff --git a/src/ext_depends/D-YAML/test/data/spec-02-05.data b/src/ext_depends/D-YAML/test/data/spec-02-05.data deleted file mode 100644 index cdd7770..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-02-05.data +++ /dev/null @@ -1,3 +0,0 @@ -- [name , hr, avg ] -- [Mark McGwire, 65, 0.278] -- [Sammy Sosa , 63, 0.288] diff --git a/src/ext_depends/D-YAML/test/data/spec-02-05.structure b/src/ext_depends/D-YAML/test/data/spec-02-05.structure deleted file mode 100644 index e06b75a..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-02-05.structure +++ /dev/null @@ -1,5 +0,0 @@ -[ - [True, True, True], - [True, True, True], - [True, True, True], -] diff --git a/src/ext_depends/D-YAML/test/data/spec-02-05.tokens b/src/ext_depends/D-YAML/test/data/spec-02-05.tokens deleted file mode 100644 index 3f6f1ab..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-02-05.tokens +++ /dev/null @@ -1,5 +0,0 @@ -[[ -, [ _ , _ , _ ] -, [ _ , _ , _ ] -, [ _ , _ , _ ] -]} diff --git a/src/ext_depends/D-YAML/test/data/spec-02-06.data b/src/ext_depends/D-YAML/test/data/spec-02-06.data deleted file mode 100644 index 7a957b2..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-02-06.data +++ /dev/null @@ -1,5 +0,0 @@ -Mark McGwire: {hr: 65, avg: 0.278} -Sammy Sosa: { - hr: 63, - avg: 0.288 - } diff --git a/src/ext_depends/D-YAML/test/data/spec-02-06.structure b/src/ext_depends/D-YAML/test/data/spec-02-06.structure deleted file mode 100644 index 3ef0f4b..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-02-06.structure +++ /dev/null @@ -1,4 +0,0 @@ -[ - (True, [(True, True), (True, True)]), - (True, [(True, True), (True, True)]), -] diff --git a/src/ext_depends/D-YAML/test/data/spec-02-06.tokens b/src/ext_depends/D-YAML/test/data/spec-02-06.tokens deleted file mode 100644 index a1a5eef..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-02-06.tokens +++ /dev/null @@ -1,4 +0,0 @@ -{{ -? _ : { ? _ : _ , ? _ : _ } -? _ : { ? _ : _ , ? _ : _ } -]} diff --git a/src/ext_depends/D-YAML/test/data/spec-02-07.data b/src/ext_depends/D-YAML/test/data/spec-02-07.data deleted file mode 100644 index bc711d5..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-02-07.data +++ /dev/null @@ -1,10 +0,0 @@ -# Ranking of 1998 home runs ---- -- Mark McGwire -- Sammy Sosa -- Ken Griffey - -# Team ranking ---- -- Chicago Cubs -- St Louis Cardinals diff --git a/src/ext_depends/D-YAML/test/data/spec-02-07.structure b/src/ext_depends/D-YAML/test/data/spec-02-07.structure deleted file mode 100644 index c5d72a3..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-02-07.structure +++ /dev/null @@ -1,4 +0,0 @@ -[ -[True, True, True], -[True, True], -] diff --git a/src/ext_depends/D-YAML/test/data/spec-02-07.tokens b/src/ext_depends/D-YAML/test/data/spec-02-07.tokens deleted file mode 100644 index ed48883..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-02-07.tokens +++ /dev/null @@ -1,12 +0,0 @@ ---- -[[ -, _ -, _ -, _ -]} - ---- -[[ -, _ -, _ -]} diff --git a/src/ext_depends/D-YAML/test/data/spec-02-08.data b/src/ext_depends/D-YAML/test/data/spec-02-08.data deleted file mode 100644 index 05e102d..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-02-08.data +++ /dev/null @@ -1,10 +0,0 @@ ---- -time: 20:03:20 -player: Sammy Sosa -action: strike (miss) -... ---- -time: 20:03:47 -player: Sammy Sosa -action: grand slam -... diff --git a/src/ext_depends/D-YAML/test/data/spec-02-08.structure b/src/ext_depends/D-YAML/test/data/spec-02-08.structure deleted file mode 100644 index 24cff73..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-02-08.structure +++ /dev/null @@ -1,4 +0,0 @@ -[ -[(True, True), (True, True), (True, True)], -[(True, True), (True, True), (True, True)], -] diff --git a/src/ext_depends/D-YAML/test/data/spec-02-08.tokens b/src/ext_depends/D-YAML/test/data/spec-02-08.tokens deleted file mode 100644 index 7d2c03d..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-02-08.tokens +++ /dev/null @@ -1,15 +0,0 @@ ---- -{{ -? _ : _ -? _ : _ -? _ : _ -]} -... - ---- -{{ -? _ : _ -? _ : _ -? _ : _ -]} -... diff --git a/src/ext_depends/D-YAML/test/data/spec-02-09.data b/src/ext_depends/D-YAML/test/data/spec-02-09.data deleted file mode 100644 index e264180..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-02-09.data +++ /dev/null @@ -1,8 +0,0 @@ ---- -hr: # 1998 hr ranking - - Mark McGwire - - Sammy Sosa -rbi: - # 1998 rbi ranking - - Sammy Sosa - - Ken Griffey diff --git a/src/ext_depends/D-YAML/test/data/spec-02-09.structure b/src/ext_depends/D-YAML/test/data/spec-02-09.structure deleted file mode 100644 index b4c9914..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-02-09.structure +++ /dev/null @@ -1 +0,0 @@ -[(True, [True, True]), (True, [True, True])] diff --git a/src/ext_depends/D-YAML/test/data/spec-02-09.tokens b/src/ext_depends/D-YAML/test/data/spec-02-09.tokens deleted file mode 100644 index b2ec10e..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-02-09.tokens +++ /dev/null @@ -1,5 +0,0 @@ ---- -{{ -? _ : [[ , _ , _ ]} -? _ : [[ , _ , _ ]} -]} diff --git a/src/ext_depends/D-YAML/test/data/spec-02-10.data b/src/ext_depends/D-YAML/test/data/spec-02-10.data deleted file mode 100644 index 61808f6..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-02-10.data +++ /dev/null @@ -1,8 +0,0 @@ ---- -hr: - - Mark McGwire - # Following node labeled SS - - &SS Sammy Sosa -rbi: - - *SS # Subsequent occurrence - - Ken Griffey diff --git a/src/ext_depends/D-YAML/test/data/spec-02-10.structure b/src/ext_depends/D-YAML/test/data/spec-02-10.structure deleted file mode 100644 index ff8f4c3..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-02-10.structure +++ /dev/null @@ -1 +0,0 @@ -[(True, [True, True]), (True, ['*', True])] diff --git a/src/ext_depends/D-YAML/test/data/spec-02-10.tokens b/src/ext_depends/D-YAML/test/data/spec-02-10.tokens deleted file mode 100644 index 26caa2b..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-02-10.tokens +++ /dev/null @@ -1,5 +0,0 @@ ---- -{{ -? _ : [[ , _ , & _ ]} -? _ : [[ , * , _ ]} -]} diff --git a/src/ext_depends/D-YAML/test/data/spec-02-11.data b/src/ext_depends/D-YAML/test/data/spec-02-11.data deleted file mode 100644 index 9123ce2..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-02-11.data +++ /dev/null @@ -1,9 +0,0 @@ -? - Detroit Tigers - - Chicago cubs -: - - 2001-07-23 - -? [ New York Yankees, - Atlanta Braves ] -: [ 2001-07-02, 2001-08-12, - 2001-08-14 ] diff --git a/src/ext_depends/D-YAML/test/data/spec-02-11.structure b/src/ext_depends/D-YAML/test/data/spec-02-11.structure deleted file mode 100644 index 3d8f1ff..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-02-11.structure +++ /dev/null @@ -1,4 +0,0 @@ -[ -([True, True], [True]), -([True, True], [True, True, True]), -] diff --git a/src/ext_depends/D-YAML/test/data/spec-02-11.tokens b/src/ext_depends/D-YAML/test/data/spec-02-11.tokens deleted file mode 100644 index fe24203..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-02-11.tokens +++ /dev/null @@ -1,6 +0,0 @@ -{{ -? [[ , _ , _ ]} -: [[ , _ ]} -? [ _ , _ ] -: [ _ , _ , _ ] -]} diff --git a/src/ext_depends/D-YAML/test/data/spec-02-12.data b/src/ext_depends/D-YAML/test/data/spec-02-12.data deleted file mode 100644 index 1fc33f9..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-02-12.data +++ /dev/null @@ -1,8 +0,0 @@ ---- -# products purchased -- item : Super Hoop - quantity: 1 -- item : Basketball - quantity: 4 -- item : Big Shoes - quantity: 1 diff --git a/src/ext_depends/D-YAML/test/data/spec-02-12.structure b/src/ext_depends/D-YAML/test/data/spec-02-12.structure deleted file mode 100644 index e9c5359..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-02-12.structure +++ /dev/null @@ -1,5 +0,0 @@ -[ -[(True, True), (True, True)], -[(True, True), (True, True)], -[(True, True), (True, True)], -] diff --git a/src/ext_depends/D-YAML/test/data/spec-02-12.tokens b/src/ext_depends/D-YAML/test/data/spec-02-12.tokens deleted file mode 100644 index ea21e50..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-02-12.tokens +++ /dev/null @@ -1,6 +0,0 @@ ---- -[[ -, {{ ? _ : _ ? _ : _ ]} -, {{ ? _ : _ ? _ : _ ]} -, {{ ? _ : _ ? _ : _ ]} -]} diff --git a/src/ext_depends/D-YAML/test/data/spec-02-13.data b/src/ext_depends/D-YAML/test/data/spec-02-13.data deleted file mode 100644 index 13fb656..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-02-13.data +++ /dev/null @@ -1,4 +0,0 @@ -# ASCII Art ---- | - \//||\/|| - // || ||__ diff --git a/src/ext_depends/D-YAML/test/data/spec-02-13.structure b/src/ext_depends/D-YAML/test/data/spec-02-13.structure deleted file mode 100644 index 0ca9514..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-02-13.structure +++ /dev/null @@ -1 +0,0 @@ -True diff --git a/src/ext_depends/D-YAML/test/data/spec-02-13.tokens b/src/ext_depends/D-YAML/test/data/spec-02-13.tokens deleted file mode 100644 index 7456c05..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-02-13.tokens +++ /dev/null @@ -1 +0,0 @@ ---- _ diff --git a/src/ext_depends/D-YAML/test/data/spec-02-14.data b/src/ext_depends/D-YAML/test/data/spec-02-14.data deleted file mode 100644 index 59943de..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-02-14.data +++ /dev/null @@ -1,4 +0,0 @@ ---- - Mark McGwire's - year was crippled - by a knee injury. diff --git a/src/ext_depends/D-YAML/test/data/spec-02-14.structure b/src/ext_depends/D-YAML/test/data/spec-02-14.structure deleted file mode 100644 index 0ca9514..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-02-14.structure +++ /dev/null @@ -1 +0,0 @@ -True diff --git a/src/ext_depends/D-YAML/test/data/spec-02-14.tokens b/src/ext_depends/D-YAML/test/data/spec-02-14.tokens deleted file mode 100644 index 7456c05..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-02-14.tokens +++ /dev/null @@ -1 +0,0 @@ ---- _ diff --git a/src/ext_depends/D-YAML/test/data/spec-02-15.data b/src/ext_depends/D-YAML/test/data/spec-02-15.data deleted file mode 100644 index 80b89a6..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-02-15.data +++ /dev/null @@ -1,8 +0,0 @@ -> - Sammy Sosa completed another - fine season with great stats. - - 63 Home Runs - 0.288 Batting Average - - What a year! diff --git a/src/ext_depends/D-YAML/test/data/spec-02-15.structure b/src/ext_depends/D-YAML/test/data/spec-02-15.structure deleted file mode 100644 index 0ca9514..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-02-15.structure +++ /dev/null @@ -1 +0,0 @@ -True diff --git a/src/ext_depends/D-YAML/test/data/spec-02-15.tokens b/src/ext_depends/D-YAML/test/data/spec-02-15.tokens deleted file mode 100644 index 31354ec..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-02-15.tokens +++ /dev/null @@ -1 +0,0 @@ -_ diff --git a/src/ext_depends/D-YAML/test/data/spec-02-16.data b/src/ext_depends/D-YAML/test/data/spec-02-16.data deleted file mode 100644 index 9f66d88..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-02-16.data +++ /dev/null @@ -1,7 +0,0 @@ -name: Mark McGwire -accomplishment: > - Mark set a major league - home run record in 1998. -stats: | - 65 Home Runs - 0.278 Batting Average diff --git a/src/ext_depends/D-YAML/test/data/spec-02-16.structure b/src/ext_depends/D-YAML/test/data/spec-02-16.structure deleted file mode 100644 index aba1ced..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-02-16.structure +++ /dev/null @@ -1 +0,0 @@ -[(True, True), (True, True), (True, True)] diff --git a/src/ext_depends/D-YAML/test/data/spec-02-16.tokens b/src/ext_depends/D-YAML/test/data/spec-02-16.tokens deleted file mode 100644 index e4e381b..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-02-16.tokens +++ /dev/null @@ -1,5 +0,0 @@ -{{ -? _ : _ -? _ : _ -? _ : _ -]} diff --git a/src/ext_depends/D-YAML/test/data/spec-02-17.data b/src/ext_depends/D-YAML/test/data/spec-02-17.data deleted file mode 100644 index b2870c5..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-02-17.data +++ /dev/null @@ -1,7 +0,0 @@ -unicode: "Sosa did fine.\u263A" -control: "\b1998\t1999\t2000\n" -hexesc: "\x13\x10 is \r\n" - -single: '"Howdy!" he cried.' -quoted: ' # not a ''comment''.' -tie-fighter: '|\-*-/|' diff --git a/src/ext_depends/D-YAML/test/data/spec-02-17.structure b/src/ext_depends/D-YAML/test/data/spec-02-17.structure deleted file mode 100644 index 933646d..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-02-17.structure +++ /dev/null @@ -1 +0,0 @@ -[(True, True), (True, True), (True, True), (True, True), (True, True), (True, True)] diff --git a/src/ext_depends/D-YAML/test/data/spec-02-17.tokens b/src/ext_depends/D-YAML/test/data/spec-02-17.tokens deleted file mode 100644 index db65540..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-02-17.tokens +++ /dev/null @@ -1,8 +0,0 @@ -{{ -? _ : _ -? _ : _ -? _ : _ -? _ : _ -? _ : _ -? _ : _ -]} diff --git a/src/ext_depends/D-YAML/test/data/spec-02-18.data b/src/ext_depends/D-YAML/test/data/spec-02-18.data deleted file mode 100644 index e0a8bfa..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-02-18.data +++ /dev/null @@ -1,6 +0,0 @@ -plain: - This unquoted scalar - spans many lines. - -quoted: "So does this - quoted scalar.\n" diff --git a/src/ext_depends/D-YAML/test/data/spec-02-18.structure b/src/ext_depends/D-YAML/test/data/spec-02-18.structure deleted file mode 100644 index 0ca4991..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-02-18.structure +++ /dev/null @@ -1 +0,0 @@ -[(True, True), (True, True)] diff --git a/src/ext_depends/D-YAML/test/data/spec-02-18.tokens b/src/ext_depends/D-YAML/test/data/spec-02-18.tokens deleted file mode 100644 index 83b31dc..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-02-18.tokens +++ /dev/null @@ -1,4 +0,0 @@ -{{ -? _ : _ -? _ : _ -]} diff --git a/src/ext_depends/D-YAML/test/data/spec-02-19.data b/src/ext_depends/D-YAML/test/data/spec-02-19.data deleted file mode 100644 index bf69de6..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-02-19.data +++ /dev/null @@ -1,5 +0,0 @@ -canonical: 12345 -decimal: +12,345 -sexagesimal: 3:25:45 -octal: 014 -hexadecimal: 0xC diff --git a/src/ext_depends/D-YAML/test/data/spec-02-19.structure b/src/ext_depends/D-YAML/test/data/spec-02-19.structure deleted file mode 100644 index 48ca99d..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-02-19.structure +++ /dev/null @@ -1 +0,0 @@ -[(True, True), (True, True), (True, True), (True, True), (True, True)] diff --git a/src/ext_depends/D-YAML/test/data/spec-02-19.tokens b/src/ext_depends/D-YAML/test/data/spec-02-19.tokens deleted file mode 100644 index 5bda68f..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-02-19.tokens +++ /dev/null @@ -1,7 +0,0 @@ -{{ -? _ : _ -? _ : _ -? _ : _ -? _ : _ -? _ : _ -]} diff --git a/src/ext_depends/D-YAML/test/data/spec-02-20.data b/src/ext_depends/D-YAML/test/data/spec-02-20.data deleted file mode 100644 index 1d4897f..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-02-20.data +++ /dev/null @@ -1,6 +0,0 @@ -canonical: 1.23015e+3 -exponential: 12.3015e+02 -sexagesimal: 20:30.15 -fixed: 1,230.15 -negative infinity: -.inf -not a number: .NaN diff --git a/src/ext_depends/D-YAML/test/data/spec-02-20.structure b/src/ext_depends/D-YAML/test/data/spec-02-20.structure deleted file mode 100644 index 933646d..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-02-20.structure +++ /dev/null @@ -1 +0,0 @@ -[(True, True), (True, True), (True, True), (True, True), (True, True), (True, True)] diff --git a/src/ext_depends/D-YAML/test/data/spec-02-20.tokens b/src/ext_depends/D-YAML/test/data/spec-02-20.tokens deleted file mode 100644 index db65540..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-02-20.tokens +++ /dev/null @@ -1,8 +0,0 @@ -{{ -? _ : _ -? _ : _ -? _ : _ -? _ : _ -? _ : _ -? _ : _ -]} diff --git a/src/ext_depends/D-YAML/test/data/spec-02-21.data b/src/ext_depends/D-YAML/test/data/spec-02-21.data deleted file mode 100644 index dec6a56..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-02-21.data +++ /dev/null @@ -1,4 +0,0 @@ -null: ~ -true: y -false: n -string: '12345' diff --git a/src/ext_depends/D-YAML/test/data/spec-02-21.structure b/src/ext_depends/D-YAML/test/data/spec-02-21.structure deleted file mode 100644 index 021635f..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-02-21.structure +++ /dev/null @@ -1 +0,0 @@ -[(True, True), (True, True), (True, True), (True, True)] diff --git a/src/ext_depends/D-YAML/test/data/spec-02-21.tokens b/src/ext_depends/D-YAML/test/data/spec-02-21.tokens deleted file mode 100644 index aeccbaf..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-02-21.tokens +++ /dev/null @@ -1,6 +0,0 @@ -{{ -? _ : _ -? _ : _ -? _ : _ -? _ : _ -]} diff --git a/src/ext_depends/D-YAML/test/data/spec-02-22.data b/src/ext_depends/D-YAML/test/data/spec-02-22.data deleted file mode 100644 index aaac185..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-02-22.data +++ /dev/null @@ -1,4 +0,0 @@ -canonical: 2001-12-15T02:59:43.1Z -iso8601: 2001-12-14t21:59:43.10-05:00 -spaced: 2001-12-14 21:59:43.10 -5 -date: 2002-12-14 diff --git a/src/ext_depends/D-YAML/test/data/spec-02-22.structure b/src/ext_depends/D-YAML/test/data/spec-02-22.structure deleted file mode 100644 index 021635f..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-02-22.structure +++ /dev/null @@ -1 +0,0 @@ -[(True, True), (True, True), (True, True), (True, True)] diff --git a/src/ext_depends/D-YAML/test/data/spec-02-22.tokens b/src/ext_depends/D-YAML/test/data/spec-02-22.tokens deleted file mode 100644 index aeccbaf..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-02-22.tokens +++ /dev/null @@ -1,6 +0,0 @@ -{{ -? _ : _ -? _ : _ -? _ : _ -? _ : _ -]} diff --git a/src/ext_depends/D-YAML/test/data/spec-02-23.data b/src/ext_depends/D-YAML/test/data/spec-02-23.data deleted file mode 100644 index 5dbd992..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-02-23.data +++ /dev/null @@ -1,13 +0,0 @@ ---- -not-date: !!str 2002-04-28 - -picture: !!binary | - R0lGODlhDAAMAIQAAP//9/X - 17unp5WZmZgAAAOfn515eXv - Pz7Y6OjuDg4J+fn5OTk6enp - 56enmleECcgggoBADs= - -application specific tag: !something | - The semantics of the tag - above may be different for - different documents. diff --git a/src/ext_depends/D-YAML/test/data/spec-02-23.structure b/src/ext_depends/D-YAML/test/data/spec-02-23.structure deleted file mode 100644 index aba1ced..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-02-23.structure +++ /dev/null @@ -1 +0,0 @@ -[(True, True), (True, True), (True, True)] diff --git a/src/ext_depends/D-YAML/test/data/spec-02-23.tokens b/src/ext_depends/D-YAML/test/data/spec-02-23.tokens deleted file mode 100644 index 9ac54aa..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-02-23.tokens +++ /dev/null @@ -1,6 +0,0 @@ ---- -{{ -? _ : ! _ -? _ : ! _ -? _ : ! _ -]} diff --git a/src/ext_depends/D-YAML/test/data/spec-02-24.data b/src/ext_depends/D-YAML/test/data/spec-02-24.data deleted file mode 100644 index 1180757..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-02-24.data +++ /dev/null @@ -1,14 +0,0 @@ -%TAG ! tag:clarkevans.com,2002: ---- !shape - # Use the ! handle for presenting - # tag:clarkevans.com,2002:circle -- !circle - center: &ORIGIN {x: 73, y: 129} - radius: 7 -- !line - start: *ORIGIN - finish: { x: 89, y: 102 } -- !label - start: *ORIGIN - color: 0xFFEEBB - text: Pretty vector drawing. diff --git a/src/ext_depends/D-YAML/test/data/spec-02-24.structure b/src/ext_depends/D-YAML/test/data/spec-02-24.structure deleted file mode 100644 index a800729..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-02-24.structure +++ /dev/null @@ -1,5 +0,0 @@ -[ -[(True, [(True, True), (True, True)]), (True, True)], -[(True, '*'), (True, [(True, True), (True, True)])], -[(True, '*'), (True, True), (True, True)], -] diff --git a/src/ext_depends/D-YAML/test/data/spec-02-24.tokens b/src/ext_depends/D-YAML/test/data/spec-02-24.tokens deleted file mode 100644 index 039c385..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-02-24.tokens +++ /dev/null @@ -1,20 +0,0 @@ -% ---- ! -[[ -, ! - {{ - ? _ : & { ? _ : _ , ? _ : _ } - ? _ : _ - ]} -, ! - {{ - ? _ : * - ? _ : { ? _ : _ , ? _ : _ } - ]} -, ! - {{ - ? _ : * - ? _ : _ - ? _ : _ - ]} -]} diff --git a/src/ext_depends/D-YAML/test/data/spec-02-25.data b/src/ext_depends/D-YAML/test/data/spec-02-25.data deleted file mode 100644 index 769ac31..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-02-25.data +++ /dev/null @@ -1,7 +0,0 @@ -# sets are represented as a -# mapping where each key is -# associated with the empty string ---- !!set -? Mark McGwire -? Sammy Sosa -? Ken Griff diff --git a/src/ext_depends/D-YAML/test/data/spec-02-25.structure b/src/ext_depends/D-YAML/test/data/spec-02-25.structure deleted file mode 100644 index 0b40e61..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-02-25.structure +++ /dev/null @@ -1 +0,0 @@ -[(True, None), (True, None), (True, None)] diff --git a/src/ext_depends/D-YAML/test/data/spec-02-25.tokens b/src/ext_depends/D-YAML/test/data/spec-02-25.tokens deleted file mode 100644 index b700236..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-02-25.tokens +++ /dev/null @@ -1,6 +0,0 @@ ---- ! -{{ -? _ -? _ -? _ -]} diff --git a/src/ext_depends/D-YAML/test/data/spec-02-26.data b/src/ext_depends/D-YAML/test/data/spec-02-26.data deleted file mode 100644 index 3143763..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-02-26.data +++ /dev/null @@ -1,7 +0,0 @@ -# ordered maps are represented as -# a sequence of mappings, with -# each mapping having one key ---- !!omap -- Mark McGwire: 65 -- Sammy Sosa: 63 -- Ken Griffy: 58 diff --git a/src/ext_depends/D-YAML/test/data/spec-02-26.structure b/src/ext_depends/D-YAML/test/data/spec-02-26.structure deleted file mode 100644 index cf429b9..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-02-26.structure +++ /dev/null @@ -1,5 +0,0 @@ -[ -[(True, True)], -[(True, True)], -[(True, True)], -] diff --git a/src/ext_depends/D-YAML/test/data/spec-02-26.tokens b/src/ext_depends/D-YAML/test/data/spec-02-26.tokens deleted file mode 100644 index 7bee492..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-02-26.tokens +++ /dev/null @@ -1,6 +0,0 @@ ---- ! -[[ -, {{ ? _ : _ ]} -, {{ ? _ : _ ]} -, {{ ? _ : _ ]} -]} diff --git a/src/ext_depends/D-YAML/test/data/spec-02-27.data b/src/ext_depends/D-YAML/test/data/spec-02-27.data deleted file mode 100644 index 4625739..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-02-27.data +++ /dev/null @@ -1,29 +0,0 @@ ---- !<tag:clarkevans.com,2002:invoice> -invoice: 34843 -date : 2001-01-23 -bill-to: &id001 - given : Chris - family : Dumars - address: - lines: | - 458 Walkman Dr. - Suite #292 - city : Royal Oak - state : MI - postal : 48046 -ship-to: *id001 -product: - - sku : BL394D - quantity : 4 - description : Basketball - price : 450.00 - - sku : BL4438H - quantity : 1 - description : Super Hoop - price : 2392.00 -tax : 251.42 -total: 4443.52 -comments: - Late afternoon is best. - Backup contact is Nancy - Billsmer @ 338-4338. diff --git a/src/ext_depends/D-YAML/test/data/spec-02-27.structure b/src/ext_depends/D-YAML/test/data/spec-02-27.structure deleted file mode 100644 index a2113b9..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-02-27.structure +++ /dev/null @@ -1,17 +0,0 @@ -[ -(True, True), -(True, True), -(True, [ - (True, True), - (True, True), - (True, [(True, True), (True, True), (True, True), (True, True)]), - ]), -(True, '*'), -(True, [ - [(True, True), (True, True), (True, True), (True, True)], - [(True, True), (True, True), (True, True), (True, True)], - ]), -(True, True), -(True, True), -(True, True), -] diff --git a/src/ext_depends/D-YAML/test/data/spec-02-27.tokens b/src/ext_depends/D-YAML/test/data/spec-02-27.tokens deleted file mode 100644 index 2dc1c25..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-02-27.tokens +++ /dev/null @@ -1,20 +0,0 @@ ---- ! -{{ -? _ : _ -? _ : _ -? _ : & - {{ - ? _ : _ - ? _ : _ - ? _ : {{ ? _ : _ ? _ : _ ? _ : _ ? _ : _ ]} - ]} -? _ : * -? _ : - [[ - , {{ ? _ : _ ? _ : _ ? _ : _ ? _ : _ ]} - , {{ ? _ : _ ? _ : _ ? _ : _ ? _ : _ ]} - ]} -? _ : _ -? _ : _ -? _ : _ -]} diff --git a/src/ext_depends/D-YAML/test/data/spec-02-28.data b/src/ext_depends/D-YAML/test/data/spec-02-28.data deleted file mode 100644 index a5c8dc8..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-02-28.data +++ /dev/null @@ -1,26 +0,0 @@ ---- -Time: 2001-11-23 15:01:42 -5 -User: ed -Warning: - This is an error message - for the log file ---- -Time: 2001-11-23 15:02:31 -5 -User: ed -Warning: - A slightly different error - message. ---- -Date: 2001-11-23 15:03:17 -5 -User: ed -Fatal: - Unknown variable "bar" -Stack: - - file: TopClass.py - line: 23 - code: | - x = MoreObject("345\n") - - file: MoreClass.py - line: 58 - code: |- - foo = bar diff --git a/src/ext_depends/D-YAML/test/data/spec-02-28.structure b/src/ext_depends/D-YAML/test/data/spec-02-28.structure deleted file mode 100644 index 8ec0b56..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-02-28.structure +++ /dev/null @@ -1,10 +0,0 @@ -[ -[(True, True), (True, True), (True, True)], -[(True, True), (True, True), (True, True)], -[(True, True), (True, True), (True, True), -(True, [ - [(True, True), (True, True), (True, True)], - [(True, True), (True, True), (True, True)], - ]), -] -] diff --git a/src/ext_depends/D-YAML/test/data/spec-02-28.tokens b/src/ext_depends/D-YAML/test/data/spec-02-28.tokens deleted file mode 100644 index 8d5e1bc..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-02-28.tokens +++ /dev/null @@ -1,23 +0,0 @@ ---- -{{ -? _ : _ -? _ : _ -? _ : _ -]} ---- -{{ -? _ : _ -? _ : _ -? _ : _ -]} ---- -{{ -? _ : _ -? _ : _ -? _ : _ -? _ : - [[ - , {{ ? _ : _ ? _ : _ ? _ : _ ]} - , {{ ? _ : _ ? _ : _ ? _ : _ ]} - ]} -]} diff --git a/src/ext_depends/D-YAML/test/data/spec-05-01-utf16be.data b/src/ext_depends/D-YAML/test/data/spec-05-01-utf16be.data Binary files differdeleted file mode 100644 index 3525062..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-05-01-utf16be.data +++ /dev/null diff --git a/src/ext_depends/D-YAML/test/data/spec-05-01-utf16be.empty b/src/ext_depends/D-YAML/test/data/spec-05-01-utf16be.empty deleted file mode 100644 index bfffa8b..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-05-01-utf16be.empty +++ /dev/null @@ -1,2 +0,0 @@ -# This stream contains no -# documents, only comments. diff --git a/src/ext_depends/D-YAML/test/data/spec-05-01-utf16le.data b/src/ext_depends/D-YAML/test/data/spec-05-01-utf16le.data Binary files differdeleted file mode 100644 index 0823f74..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-05-01-utf16le.data +++ /dev/null diff --git a/src/ext_depends/D-YAML/test/data/spec-05-01-utf16le.empty b/src/ext_depends/D-YAML/test/data/spec-05-01-utf16le.empty deleted file mode 100644 index bfffa8b..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-05-01-utf16le.empty +++ /dev/null @@ -1,2 +0,0 @@ -# This stream contains no -# documents, only comments. diff --git a/src/ext_depends/D-YAML/test/data/spec-05-01-utf8.data b/src/ext_depends/D-YAML/test/data/spec-05-01-utf8.data deleted file mode 100644 index 780d25b..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-05-01-utf8.data +++ /dev/null @@ -1 +0,0 @@ -# Comment only. diff --git a/src/ext_depends/D-YAML/test/data/spec-05-01-utf8.empty b/src/ext_depends/D-YAML/test/data/spec-05-01-utf8.empty deleted file mode 100644 index bfffa8b..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-05-01-utf8.empty +++ /dev/null @@ -1,2 +0,0 @@ -# This stream contains no -# documents, only comments. diff --git a/src/ext_depends/D-YAML/test/data/spec-05-02-utf16be.data b/src/ext_depends/D-YAML/test/data/spec-05-02-utf16be.data Binary files differdeleted file mode 100644 index 5ebbb04..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-05-02-utf16be.data +++ /dev/null diff --git a/src/ext_depends/D-YAML/test/data/spec-05-02-utf16be.error b/src/ext_depends/D-YAML/test/data/spec-05-02-utf16be.error deleted file mode 100644 index 1df3616..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-05-02-utf16be.error +++ /dev/null @@ -1,3 +0,0 @@ -ERROR: - A BOM must not appear - inside a document. diff --git a/src/ext_depends/D-YAML/test/data/spec-05-02-utf16le.data b/src/ext_depends/D-YAML/test/data/spec-05-02-utf16le.data Binary files differdeleted file mode 100644 index 0cd90a2..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-05-02-utf16le.data +++ /dev/null diff --git a/src/ext_depends/D-YAML/test/data/spec-05-02-utf16le.error b/src/ext_depends/D-YAML/test/data/spec-05-02-utf16le.error deleted file mode 100644 index 1df3616..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-05-02-utf16le.error +++ /dev/null @@ -1,3 +0,0 @@ -ERROR: - A BOM must not appear - inside a document. diff --git a/src/ext_depends/D-YAML/test/data/spec-05-02-utf8.data b/src/ext_depends/D-YAML/test/data/spec-05-02-utf8.data deleted file mode 100644 index fb74866..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-05-02-utf8.data +++ /dev/null @@ -1,3 +0,0 @@ -# Invalid use of BOM -# inside a -# document. diff --git a/src/ext_depends/D-YAML/test/data/spec-05-02-utf8.error b/src/ext_depends/D-YAML/test/data/spec-05-02-utf8.error deleted file mode 100644 index 1df3616..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-05-02-utf8.error +++ /dev/null @@ -1,3 +0,0 @@ -ERROR: - A BOM must not appear - inside a document. diff --git a/src/ext_depends/D-YAML/test/data/spec-05-03.canonical b/src/ext_depends/D-YAML/test/data/spec-05-03.canonical deleted file mode 100644 index a143a73..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-05-03.canonical +++ /dev/null @@ -1,14 +0,0 @@ -%YAML 1.1 ---- -!!map { - ? !!str "sequence" - : !!seq [ - !!str "one", !!str "two" - ], - ? !!str "mapping" - : !!map { - ? !!str "sky" : !!str "blue", -# ? !!str "sea" : !!str "green", - ? !!map { ? !!str "sea" : !!str "green" } : !!null "", - } -} diff --git a/src/ext_depends/D-YAML/test/data/spec-05-03.data b/src/ext_depends/D-YAML/test/data/spec-05-03.data deleted file mode 100644 index 4661f33..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-05-03.data +++ /dev/null @@ -1,7 +0,0 @@ -sequence: -- one -- two -mapping: - ? sky - : blue - ? sea : green diff --git a/src/ext_depends/D-YAML/test/data/spec-05-04.canonical b/src/ext_depends/D-YAML/test/data/spec-05-04.canonical deleted file mode 100644 index 00c9723..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-05-04.canonical +++ /dev/null @@ -1,13 +0,0 @@ -%YAML 1.1 ---- -!!map { - ? !!str "sequence" - : !!seq [ - !!str "one", !!str "two" - ], - ? !!str "mapping" - : !!map { - ? !!str "sky" : !!str "blue", - ? !!str "sea" : !!str "green", - } -} diff --git a/src/ext_depends/D-YAML/test/data/spec-05-04.data b/src/ext_depends/D-YAML/test/data/spec-05-04.data deleted file mode 100644 index df33847..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-05-04.data +++ /dev/null @@ -1,2 +0,0 @@ -sequence: [ one, two, ] -mapping: { sky: blue, sea: green } diff --git a/src/ext_depends/D-YAML/test/data/spec-05-05.data b/src/ext_depends/D-YAML/test/data/spec-05-05.data deleted file mode 100644 index 62524c0..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-05-05.data +++ /dev/null @@ -1 +0,0 @@ -# Comment only. diff --git a/src/ext_depends/D-YAML/test/data/spec-05-05.empty b/src/ext_depends/D-YAML/test/data/spec-05-05.empty deleted file mode 100644 index bfffa8b..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-05-05.empty +++ /dev/null @@ -1,2 +0,0 @@ -# This stream contains no -# documents, only comments. diff --git a/src/ext_depends/D-YAML/test/data/spec-05-06.canonical b/src/ext_depends/D-YAML/test/data/spec-05-06.canonical deleted file mode 100644 index 4f30c11..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-05-06.canonical +++ /dev/null @@ -1,8 +0,0 @@ -%YAML 1.1 ---- -!!map { - ? !!str "anchored" - : &A1 !local "value", - ? !!str "alias" - : *A1, -} diff --git a/src/ext_depends/D-YAML/test/data/spec-05-06.data b/src/ext_depends/D-YAML/test/data/spec-05-06.data deleted file mode 100644 index 7a1f9b3..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-05-06.data +++ /dev/null @@ -1,2 +0,0 @@ -anchored: !local &anchor value -alias: *anchor diff --git a/src/ext_depends/D-YAML/test/data/spec-05-06.test_loader_skip b/src/ext_depends/D-YAML/test/data/spec-05-06.test_loader_skip deleted file mode 100644 index e69de29..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-05-06.test_loader_skip +++ /dev/null diff --git a/src/ext_depends/D-YAML/test/data/spec-05-07.canonical b/src/ext_depends/D-YAML/test/data/spec-05-07.canonical deleted file mode 100644 index dc3732a..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-05-07.canonical +++ /dev/null @@ -1,8 +0,0 @@ -%YAML 1.1 ---- -!!map { - ? !!str "literal" - : !!str "text\n", - ? !!str "folded" - : !!str "text\n", -} diff --git a/src/ext_depends/D-YAML/test/data/spec-05-07.data b/src/ext_depends/D-YAML/test/data/spec-05-07.data deleted file mode 100644 index 97eb3a3..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-05-07.data +++ /dev/null @@ -1,4 +0,0 @@ -literal: | - text -folded: > - text diff --git a/src/ext_depends/D-YAML/test/data/spec-05-08.canonical b/src/ext_depends/D-YAML/test/data/spec-05-08.canonical deleted file mode 100644 index 610bd68..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-05-08.canonical +++ /dev/null @@ -1,8 +0,0 @@ -%YAML 1.1 ---- -!!map { - ? !!str "single" - : !!str "text", - ? !!str "double" - : !!str "text", -} diff --git a/src/ext_depends/D-YAML/test/data/spec-05-08.data b/src/ext_depends/D-YAML/test/data/spec-05-08.data deleted file mode 100644 index 04ebf69..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-05-08.data +++ /dev/null @@ -1,2 +0,0 @@ -single: 'text' -double: "text" diff --git a/src/ext_depends/D-YAML/test/data/spec-05-09.canonical b/src/ext_depends/D-YAML/test/data/spec-05-09.canonical deleted file mode 100644 index 597e3de..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-05-09.canonical +++ /dev/null @@ -1,3 +0,0 @@ -%YAML 1.1 ---- -!!str "text" diff --git a/src/ext_depends/D-YAML/test/data/spec-05-09.data b/src/ext_depends/D-YAML/test/data/spec-05-09.data deleted file mode 100644 index a43431b..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-05-09.data +++ /dev/null @@ -1,2 +0,0 @@ -%YAML 1.1 ---- text diff --git a/src/ext_depends/D-YAML/test/data/spec-05-10.data b/src/ext_depends/D-YAML/test/data/spec-05-10.data deleted file mode 100644 index a4caf91..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-05-10.data +++ /dev/null @@ -1,2 +0,0 @@ -commercial-at: @text -grave-accent: `text diff --git a/src/ext_depends/D-YAML/test/data/spec-05-10.error b/src/ext_depends/D-YAML/test/data/spec-05-10.error deleted file mode 100644 index 46f776e..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-05-10.error +++ /dev/null @@ -1,3 +0,0 @@ -ERROR: - Reserved indicators can't - start a plain scalar. diff --git a/src/ext_depends/D-YAML/test/data/spec-05-11.canonical b/src/ext_depends/D-YAML/test/data/spec-05-11.canonical deleted file mode 100644 index fc25bef..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-05-11.canonical +++ /dev/null @@ -1,6 +0,0 @@ -%YAML 1.1 ---- !!str -"Generic line break (no glyph)\n\ - Generic line break (glyphed)\n\ - Line separator\u2028\ - Paragraph separator\u2029" diff --git a/src/ext_depends/D-YAML/test/data/spec-05-11.data b/src/ext_depends/D-YAML/test/data/spec-05-11.data deleted file mode 100644 index b448b75..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-05-11.data +++ /dev/null @@ -1,3 +0,0 @@ -| - Generic line break (no glyph) - Generic line break (glyphed)… Line separator
 Paragraph separator

\ No newline at end of file diff --git a/src/ext_depends/D-YAML/test/data/spec-05-12.data b/src/ext_depends/D-YAML/test/data/spec-05-12.data deleted file mode 100644 index 7c3ad7f..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-05-12.data +++ /dev/null @@ -1,9 +0,0 @@ -# Tabs do's and don'ts: -# comment: -quoted: "Quoted " -block: | - void main() { - printf("Hello, world!\n"); - } -elsewhere: # separation - indentation, in plain scalar diff --git a/src/ext_depends/D-YAML/test/data/spec-05-12.error b/src/ext_depends/D-YAML/test/data/spec-05-12.error deleted file mode 100644 index 8aad4c8..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-05-12.error +++ /dev/null @@ -1,8 +0,0 @@ -ERROR: - Tabs may appear inside - comments and quoted or - block scalar content. - Tabs must not appear - elsewhere, such as - in indentation and - separation spaces. diff --git a/src/ext_depends/D-YAML/test/data/spec-05-13.canonical b/src/ext_depends/D-YAML/test/data/spec-05-13.canonical deleted file mode 100644 index 90c1c5c..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-05-13.canonical +++ /dev/null @@ -1,5 +0,0 @@ -%YAML 1.1 ---- !!str -"Text containing \ - both space and \ - tab characters" diff --git a/src/ext_depends/D-YAML/test/data/spec-05-13.data b/src/ext_depends/D-YAML/test/data/spec-05-13.data deleted file mode 100644 index fce7951..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-05-13.data +++ /dev/null @@ -1,3 +0,0 @@ - "Text containing - both space and - tab characters" diff --git a/src/ext_depends/D-YAML/test/data/spec-05-14.canonical b/src/ext_depends/D-YAML/test/data/spec-05-14.canonical deleted file mode 100644 index 4bff01c..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-05-14.canonical +++ /dev/null @@ -1,7 +0,0 @@ -%YAML 1.1 ---- -"Fun with \x5C - \x22 \x07 \x08 \x1B \x0C - \x0A \x0D \x09 \x0B \x00 - \x20 \xA0 \x85 \u2028 \u2029 - A A A" diff --git a/src/ext_depends/D-YAML/test/data/spec-05-14.data b/src/ext_depends/D-YAML/test/data/spec-05-14.data deleted file mode 100644 index d6e8ce4..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-05-14.data +++ /dev/null @@ -1,2 +0,0 @@ -"Fun with \\ - \" \a \b \e \f \Â… \n \r \t \v \0 \
 \ \_ \N \L \P \
 \x41 \u0041 \U00000041" diff --git a/src/ext_depends/D-YAML/test/data/spec-05-15.data b/src/ext_depends/D-YAML/test/data/spec-05-15.data deleted file mode 100644 index 7bf12b6..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-05-15.data +++ /dev/null @@ -1,3 +0,0 @@ -Bad escapes: - "\c - \xq-" diff --git a/src/ext_depends/D-YAML/test/data/spec-05-15.error b/src/ext_depends/D-YAML/test/data/spec-05-15.error deleted file mode 100644 index 71ffbd9..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-05-15.error +++ /dev/null @@ -1,3 +0,0 @@ -ERROR: -- c is an invalid escaped character. -- q and - are invalid hex digits. diff --git a/src/ext_depends/D-YAML/test/data/spec-06-01.canonical b/src/ext_depends/D-YAML/test/data/spec-06-01.canonical deleted file mode 100644 index f17ec92..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-06-01.canonical +++ /dev/null @@ -1,15 +0,0 @@ -%YAML 1.1 ---- -!!map { - ? !!str "Not indented" - : !!map { - ? !!str "By one space" - : !!str "By four\n spaces\n", - ? !!str "Flow style" - : !!seq [ - !!str "By two", - !!str "Also by two", - !!str "Still by two", - ] - } -} diff --git a/src/ext_depends/D-YAML/test/data/spec-06-01.data b/src/ext_depends/D-YAML/test/data/spec-06-01.data deleted file mode 100644 index 6134ba1..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-06-01.data +++ /dev/null @@ -1,14 +0,0 @@ - # Leading comment line spaces are - # neither content nor indentation. - -Not indented: - By one space: | - By four - spaces - Flow style: [ # Leading spaces - By two, # in flow style - Also by two, # are neither -# Tabs are not allowed: -# Still by two # content nor - Still by two # content nor - ] # indentation. diff --git a/src/ext_depends/D-YAML/test/data/spec-06-02.data b/src/ext_depends/D-YAML/test/data/spec-06-02.data deleted file mode 100644 index ff741e5..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-06-02.data +++ /dev/null @@ -1,3 +0,0 @@ - # Comment - - diff --git a/src/ext_depends/D-YAML/test/data/spec-06-02.empty b/src/ext_depends/D-YAML/test/data/spec-06-02.empty deleted file mode 100644 index bfffa8b..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-06-02.empty +++ /dev/null @@ -1,2 +0,0 @@ -# This stream contains no -# documents, only comments. diff --git a/src/ext_depends/D-YAML/test/data/spec-06-03.canonical b/src/ext_depends/D-YAML/test/data/spec-06-03.canonical deleted file mode 100644 index ec26902..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-06-03.canonical +++ /dev/null @@ -1,6 +0,0 @@ -%YAML 1.1 ---- -!!map { - ? !!str "key" - : !!str "value" -} diff --git a/src/ext_depends/D-YAML/test/data/spec-06-03.data b/src/ext_depends/D-YAML/test/data/spec-06-03.data deleted file mode 100644 index 9db0912..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-06-03.data +++ /dev/null @@ -1,2 +0,0 @@ -key: # Comment - value diff --git a/src/ext_depends/D-YAML/test/data/spec-06-04.canonical b/src/ext_depends/D-YAML/test/data/spec-06-04.canonical deleted file mode 100644 index ec26902..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-06-04.canonical +++ /dev/null @@ -1,6 +0,0 @@ -%YAML 1.1 ---- -!!map { - ? !!str "key" - : !!str "value" -} diff --git a/src/ext_depends/D-YAML/test/data/spec-06-04.data b/src/ext_depends/D-YAML/test/data/spec-06-04.data deleted file mode 100644 index 86308dd..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-06-04.data +++ /dev/null @@ -1,4 +0,0 @@ -key: # Comment - # lines - value - diff --git a/src/ext_depends/D-YAML/test/data/spec-06-05.canonical b/src/ext_depends/D-YAML/test/data/spec-06-05.canonical deleted file mode 100644 index 8da431d..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-06-05.canonical +++ /dev/null @@ -1,16 +0,0 @@ -%YAML 1.1 ---- -!!map { - ? !!map { - ? !!str "first" - : !!str "Sammy", - ? !!str "last" - : !!str "Sosa" - } - : !!map { - ? !!str "hr" - : !!int "65", - ? !!str "avg" - : !!float "0.278" - } -} diff --git a/src/ext_depends/D-YAML/test/data/spec-06-05.data b/src/ext_depends/D-YAML/test/data/spec-06-05.data deleted file mode 100644 index 37613f5..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-06-05.data +++ /dev/null @@ -1,6 +0,0 @@ -{ first: Sammy, last: Sosa }: -# Statistics: - hr: # Home runs - 65 - avg: # Average - 0.278 diff --git a/src/ext_depends/D-YAML/test/data/spec-06-06.canonical b/src/ext_depends/D-YAML/test/data/spec-06-06.canonical deleted file mode 100644 index 513d07a..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-06-06.canonical +++ /dev/null @@ -1,10 +0,0 @@ -%YAML 1.1 ---- -!!map { - ? !!str "plain" - : !!str "text lines", - ? !!str "quoted" - : !!str "text lines", - ? !!str "block" - : !!str "text\n lines\n" -} diff --git a/src/ext_depends/D-YAML/test/data/spec-06-06.data b/src/ext_depends/D-YAML/test/data/spec-06-06.data deleted file mode 100644 index 2f62d08..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-06-06.data +++ /dev/null @@ -1,7 +0,0 @@ -plain: text - lines -quoted: "text - lines" -block: | - text - lines diff --git a/src/ext_depends/D-YAML/test/data/spec-06-07.canonical b/src/ext_depends/D-YAML/test/data/spec-06-07.canonical deleted file mode 100644 index 11357e4..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-06-07.canonical +++ /dev/null @@ -1,6 +0,0 @@ -%YAML 1.1 ---- -!!seq [ - !!str "foo\nbar", - !!str "foo\n\nbar" -] diff --git a/src/ext_depends/D-YAML/test/data/spec-06-07.data b/src/ext_depends/D-YAML/test/data/spec-06-07.data deleted file mode 100644 index 130cfa7..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-06-07.data +++ /dev/null @@ -1,8 +0,0 @@ -- foo - - bar -- |- - foo - - bar - diff --git a/src/ext_depends/D-YAML/test/data/spec-06-08.canonical b/src/ext_depends/D-YAML/test/data/spec-06-08.canonical deleted file mode 100644 index cc72bc8..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-06-08.canonical +++ /dev/null @@ -1,5 +0,0 @@ -%YAML 1.1 ---- !!str -"specific\L\ - trimmed\n\n\n\ - as space" diff --git a/src/ext_depends/D-YAML/test/data/spec-06-08.data b/src/ext_depends/D-YAML/test/data/spec-06-08.data deleted file mode 100644 index f2896ed..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-06-08.data +++ /dev/null @@ -1,2 +0,0 @@ ->- - specific
 trimmedÂ… Â… Â…Â… asÂ… space diff --git a/src/ext_depends/D-YAML/test/data/spec-07-01.canonical b/src/ext_depends/D-YAML/test/data/spec-07-01.canonical deleted file mode 100644 index 8c8c48d..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-07-01.canonical +++ /dev/null @@ -1,3 +0,0 @@ -%YAML 1.1 ---- !!str -"foo" diff --git a/src/ext_depends/D-YAML/test/data/spec-07-01.data b/src/ext_depends/D-YAML/test/data/spec-07-01.data deleted file mode 100644 index 2113eb6..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-07-01.data +++ /dev/null @@ -1,3 +0,0 @@ -%FOO bar baz # Should be ignored - # with a warning. ---- "foo" diff --git a/src/ext_depends/D-YAML/test/data/spec-07-01.skip-ext b/src/ext_depends/D-YAML/test/data/spec-07-01.skip-ext deleted file mode 100644 index e69de29..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-07-01.skip-ext +++ /dev/null diff --git a/src/ext_depends/D-YAML/test/data/spec-07-02.canonical b/src/ext_depends/D-YAML/test/data/spec-07-02.canonical deleted file mode 100644 index cb7dd1c..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-07-02.canonical +++ /dev/null @@ -1,3 +0,0 @@ -%YAML 1.1 ---- -!!str "foo" diff --git a/src/ext_depends/D-YAML/test/data/spec-07-02.data b/src/ext_depends/D-YAML/test/data/spec-07-02.data deleted file mode 100644 index c8b7322..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-07-02.data +++ /dev/null @@ -1,4 +0,0 @@ -%YAML 1.2 # Attempt parsing - # with a warning ---- -"foo" diff --git a/src/ext_depends/D-YAML/test/data/spec-07-02.skip-ext b/src/ext_depends/D-YAML/test/data/spec-07-02.skip-ext deleted file mode 100644 index e69de29..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-07-02.skip-ext +++ /dev/null diff --git a/src/ext_depends/D-YAML/test/data/spec-07-03.data b/src/ext_depends/D-YAML/test/data/spec-07-03.data deleted file mode 100644 index 4bfa07a..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-07-03.data +++ /dev/null @@ -1,3 +0,0 @@ -%YAML 1.1 -%YAML 1.1 -foo diff --git a/src/ext_depends/D-YAML/test/data/spec-07-03.error b/src/ext_depends/D-YAML/test/data/spec-07-03.error deleted file mode 100644 index b0ac446..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-07-03.error +++ /dev/null @@ -1,3 +0,0 @@ -ERROR: -The YAML directive must only be -given at most once per document. diff --git a/src/ext_depends/D-YAML/test/data/spec-07-04.canonical b/src/ext_depends/D-YAML/test/data/spec-07-04.canonical deleted file mode 100644 index cb7dd1c..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-07-04.canonical +++ /dev/null @@ -1,3 +0,0 @@ -%YAML 1.1 ---- -!!str "foo" diff --git a/src/ext_depends/D-YAML/test/data/spec-07-04.data b/src/ext_depends/D-YAML/test/data/spec-07-04.data deleted file mode 100644 index 50f5ab9..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-07-04.data +++ /dev/null @@ -1,3 +0,0 @@ -%TAG !yaml! tag:yaml.org,2002: ---- -!yaml!str "foo" diff --git a/src/ext_depends/D-YAML/test/data/spec-07-05.data b/src/ext_depends/D-YAML/test/data/spec-07-05.data deleted file mode 100644 index 7276eae..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-07-05.data +++ /dev/null @@ -1,3 +0,0 @@ -%TAG ! !foo -%TAG ! !foo -bar diff --git a/src/ext_depends/D-YAML/test/data/spec-07-05.error b/src/ext_depends/D-YAML/test/data/spec-07-05.error deleted file mode 100644 index 5601b19..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-07-05.error +++ /dev/null @@ -1,4 +0,0 @@ -ERROR: -The TAG directive must only -be given at most once per -handle in the same document. diff --git a/src/ext_depends/D-YAML/test/data/spec-07-06.canonical b/src/ext_depends/D-YAML/test/data/spec-07-06.canonical deleted file mode 100644 index bddf616..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-07-06.canonical +++ /dev/null @@ -1,6 +0,0 @@ -%YAML 1.1 ---- -!!seq [ - !<!foobar> "baz", - !<tag:yaml.org,2002:str> "string" -] diff --git a/src/ext_depends/D-YAML/test/data/spec-07-06.data b/src/ext_depends/D-YAML/test/data/spec-07-06.data deleted file mode 100644 index d9854cb..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-07-06.data +++ /dev/null @@ -1,5 +0,0 @@ -%TAG ! !foo -%TAG !yaml! tag:yaml.org,2002: ---- -- !bar "baz" -- !yaml!str "string" diff --git a/src/ext_depends/D-YAML/test/data/spec-07-06.test_loader_skip b/src/ext_depends/D-YAML/test/data/spec-07-06.test_loader_skip deleted file mode 100644 index e69de29..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-07-06.test_loader_skip +++ /dev/null diff --git a/src/ext_depends/D-YAML/test/data/spec-07-07a.canonical b/src/ext_depends/D-YAML/test/data/spec-07-07a.canonical deleted file mode 100644 index fa086df..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-07-07a.canonical +++ /dev/null @@ -1,3 +0,0 @@ -%YAML 1.1 ---- -!<!foo> "bar" diff --git a/src/ext_depends/D-YAML/test/data/spec-07-07a.data b/src/ext_depends/D-YAML/test/data/spec-07-07a.data deleted file mode 100644 index 9d42ec3..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-07-07a.data +++ /dev/null @@ -1,2 +0,0 @@ -# Private application: -!foo "bar" diff --git a/src/ext_depends/D-YAML/test/data/spec-07-07a.test_loader_skip b/src/ext_depends/D-YAML/test/data/spec-07-07a.test_loader_skip deleted file mode 100644 index e69de29..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-07-07a.test_loader_skip +++ /dev/null diff --git a/src/ext_depends/D-YAML/test/data/spec-07-07b.canonical b/src/ext_depends/D-YAML/test/data/spec-07-07b.canonical deleted file mode 100644 index fe917d8..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-07-07b.canonical +++ /dev/null @@ -1,3 +0,0 @@ -%YAML 1.1 ---- -!<tag:ben-kiki.org,2000:app/foo> "bar" diff --git a/src/ext_depends/D-YAML/test/data/spec-07-07b.data b/src/ext_depends/D-YAML/test/data/spec-07-07b.data deleted file mode 100644 index 2d36d0e..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-07-07b.data +++ /dev/null @@ -1,4 +0,0 @@ -# Migrated to global: -%TAG ! tag:ben-kiki.org,2000:app/ ---- -!foo "bar" diff --git a/src/ext_depends/D-YAML/test/data/spec-07-07b.test_loader_skip b/src/ext_depends/D-YAML/test/data/spec-07-07b.test_loader_skip deleted file mode 100644 index e69de29..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-07-07b.test_loader_skip +++ /dev/null diff --git a/src/ext_depends/D-YAML/test/data/spec-07-08.canonical b/src/ext_depends/D-YAML/test/data/spec-07-08.canonical deleted file mode 100644 index 703aa7b..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-07-08.canonical +++ /dev/null @@ -1,7 +0,0 @@ -%YAML 1.1 ---- -!!seq [ - !<!foo> "bar", - !<tag:yaml.org,2002:str> "string", - !<tag:ben-kiki.org,2000:type> "baz" -] diff --git a/src/ext_depends/D-YAML/test/data/spec-07-08.data b/src/ext_depends/D-YAML/test/data/spec-07-08.data deleted file mode 100644 index e2c6d9e..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-07-08.data +++ /dev/null @@ -1,9 +0,0 @@ -# Explicitly specify default settings: -%TAG ! ! -%TAG !! tag:yaml.org,2002: -# Named handles have no default: -%TAG !o! tag:ben-kiki.org,2000: ---- -- !foo "bar" -- !!str "string" -- !o!type "baz" diff --git a/src/ext_depends/D-YAML/test/data/spec-07-08.test_loader_skip b/src/ext_depends/D-YAML/test/data/spec-07-08.test_loader_skip deleted file mode 100644 index e69de29..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-07-08.test_loader_skip +++ /dev/null diff --git a/src/ext_depends/D-YAML/test/data/spec-07-09.canonical b/src/ext_depends/D-YAML/test/data/spec-07-09.canonical deleted file mode 100644 index 32d9e94..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-07-09.canonical +++ /dev/null @@ -1,9 +0,0 @@ -%YAML 1.1 ---- -!!str "foo" -%YAML 1.1 ---- -!!str "bar" -%YAML 1.1 ---- -!!str "baz" diff --git a/src/ext_depends/D-YAML/test/data/spec-07-09.data b/src/ext_depends/D-YAML/test/data/spec-07-09.data deleted file mode 100644 index 1209d47..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-07-09.data +++ /dev/null @@ -1,11 +0,0 @@ ---- -foo -... -# Repeated end marker. -... ---- -bar -# No end marker. ---- -baz -... diff --git a/src/ext_depends/D-YAML/test/data/spec-07-10.canonical b/src/ext_depends/D-YAML/test/data/spec-07-10.canonical deleted file mode 100644 index 1db650a..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-07-10.canonical +++ /dev/null @@ -1,15 +0,0 @@ -%YAML 1.1 ---- -!!str "Root flow scalar" -%YAML 1.1 ---- -!!str "Root block scalar\n" -%YAML 1.1 ---- -!!map { - ? !!str "foo" - : !!str "bar" -} ---- -#!!str "" -!!null "" diff --git a/src/ext_depends/D-YAML/test/data/spec-07-10.data b/src/ext_depends/D-YAML/test/data/spec-07-10.data deleted file mode 100644 index 6939b39..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-07-10.data +++ /dev/null @@ -1,11 +0,0 @@ -"Root flow - scalar" ---- !!str > - Root block - scalar ---- -# Root collection: -foo : bar -... # Is optional. ---- -# Explicit document may be empty. diff --git a/src/ext_depends/D-YAML/test/data/spec-07-11.data b/src/ext_depends/D-YAML/test/data/spec-07-11.data deleted file mode 100644 index d11302d..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-07-11.data +++ /dev/null @@ -1,2 +0,0 @@ -# A stream may contain -# no documents. diff --git a/src/ext_depends/D-YAML/test/data/spec-07-11.empty b/src/ext_depends/D-YAML/test/data/spec-07-11.empty deleted file mode 100644 index bfffa8b..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-07-11.empty +++ /dev/null @@ -1,2 +0,0 @@ -# This stream contains no -# documents, only comments. diff --git a/src/ext_depends/D-YAML/test/data/spec-07-12a.canonical b/src/ext_depends/D-YAML/test/data/spec-07-12a.canonical deleted file mode 100644 index efc116f..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-07-12a.canonical +++ /dev/null @@ -1,6 +0,0 @@ -%YAML 1.1 ---- -!!map { - ? !!str "foo" - : !!str "bar" -} diff --git a/src/ext_depends/D-YAML/test/data/spec-07-12a.data b/src/ext_depends/D-YAML/test/data/spec-07-12a.data deleted file mode 100644 index 3807d57..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-07-12a.data +++ /dev/null @@ -1,3 +0,0 @@ -# Implicit document. Root -# collection (mapping) node. -foo : bar diff --git a/src/ext_depends/D-YAML/test/data/spec-07-12b.canonical b/src/ext_depends/D-YAML/test/data/spec-07-12b.canonical deleted file mode 100644 index 04bcffc..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-07-12b.canonical +++ /dev/null @@ -1,3 +0,0 @@ -%YAML 1.1 ---- -!!str "Text content\n" diff --git a/src/ext_depends/D-YAML/test/data/spec-07-12b.data b/src/ext_depends/D-YAML/test/data/spec-07-12b.data deleted file mode 100644 index 43250db..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-07-12b.data +++ /dev/null @@ -1,4 +0,0 @@ -# Explicit document. Root -# scalar (literal) node. ---- | - Text content diff --git a/src/ext_depends/D-YAML/test/data/spec-07-13.canonical b/src/ext_depends/D-YAML/test/data/spec-07-13.canonical deleted file mode 100644 index 5af71e9..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-07-13.canonical +++ /dev/null @@ -1,9 +0,0 @@ -%YAML 1.1 ---- -!!str "First document" ---- -!<!foo> "No directives" ---- -!<!foobar> "With directives" ---- -!<!baz> "Reset settings" diff --git a/src/ext_depends/D-YAML/test/data/spec-07-13.data b/src/ext_depends/D-YAML/test/data/spec-07-13.data deleted file mode 100644 index ba7ec63..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-07-13.data +++ /dev/null @@ -1,9 +0,0 @@ -! "First document" ---- -!foo "No directives" -%TAG ! !foo ---- -!bar "With directives" -%YAML 1.1 ---- -!baz "Reset settings" diff --git a/src/ext_depends/D-YAML/test/data/spec-07-13.test_loader_skip b/src/ext_depends/D-YAML/test/data/spec-07-13.test_loader_skip deleted file mode 100644 index e69de29..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-07-13.test_loader_skip +++ /dev/null diff --git a/src/ext_depends/D-YAML/test/data/spec-08-01.canonical b/src/ext_depends/D-YAML/test/data/spec-08-01.canonical deleted file mode 100644 index 69e4161..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-08-01.canonical +++ /dev/null @@ -1,8 +0,0 @@ -%YAML 1.1 ---- -!!map { - ? &A1 !!str "foo" - : !!str "bar", - ? &A2 !!str "baz" - : *A1 -} diff --git a/src/ext_depends/D-YAML/test/data/spec-08-01.data b/src/ext_depends/D-YAML/test/data/spec-08-01.data deleted file mode 100644 index 48986ec..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-08-01.data +++ /dev/null @@ -1,2 +0,0 @@ -!!str &a1 "foo" : !!str bar -&a2 baz : *a1 diff --git a/src/ext_depends/D-YAML/test/data/spec-08-02.canonical b/src/ext_depends/D-YAML/test/data/spec-08-02.canonical deleted file mode 100644 index dd6f76e..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-08-02.canonical +++ /dev/null @@ -1,8 +0,0 @@ -%YAML 1.1 ---- -!!map { - ? !!str "First occurrence" - : &A !!str "Value", - ? !!str "Second occurrence" - : *A -} diff --git a/src/ext_depends/D-YAML/test/data/spec-08-02.data b/src/ext_depends/D-YAML/test/data/spec-08-02.data deleted file mode 100644 index 600d179..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-08-02.data +++ /dev/null @@ -1,2 +0,0 @@ -First occurrence: &anchor Value -Second occurrence: *anchor diff --git a/src/ext_depends/D-YAML/test/data/spec-08-03.canonical b/src/ext_depends/D-YAML/test/data/spec-08-03.canonical deleted file mode 100644 index be7ea8f..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-08-03.canonical +++ /dev/null @@ -1,6 +0,0 @@ -%YAML 1.1 ---- -!!map { - ? !<tag:yaml.org,2002:str> "foo" - : !<!bar> "baz" -} diff --git a/src/ext_depends/D-YAML/test/data/spec-08-03.data b/src/ext_depends/D-YAML/test/data/spec-08-03.data deleted file mode 100644 index 8e51f52..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-08-03.data +++ /dev/null @@ -1,2 +0,0 @@ -!<tag:yaml.org,2002:str> foo : - !<!bar> baz diff --git a/src/ext_depends/D-YAML/test/data/spec-08-03.test_loader_skip b/src/ext_depends/D-YAML/test/data/spec-08-03.test_loader_skip deleted file mode 100644 index e69de29..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-08-03.test_loader_skip +++ /dev/null diff --git a/src/ext_depends/D-YAML/test/data/spec-08-04.data b/src/ext_depends/D-YAML/test/data/spec-08-04.data deleted file mode 100644 index f7d1b01..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-08-04.data +++ /dev/null @@ -1,2 +0,0 @@ -- !<!> foo -- !<$:?> bar diff --git a/src/ext_depends/D-YAML/test/data/spec-08-04.error b/src/ext_depends/D-YAML/test/data/spec-08-04.error deleted file mode 100644 index 6066375..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-08-04.error +++ /dev/null @@ -1,6 +0,0 @@ -ERROR: -- Verbatim tags aren't resolved, - so ! is invalid. -- The $:? tag is neither a global - URI tag nor a local tag starting - with “!â€. diff --git a/src/ext_depends/D-YAML/test/data/spec-08-05.canonical b/src/ext_depends/D-YAML/test/data/spec-08-05.canonical deleted file mode 100644 index a5c710a..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-08-05.canonical +++ /dev/null @@ -1,7 +0,0 @@ -%YAML 1.1 ---- -!!seq [ - !<!local> "foo", - !<tag:yaml.org,2002:str> "bar", - !<tag:ben-kiki.org,2000:type> "baz", -] diff --git a/src/ext_depends/D-YAML/test/data/spec-08-05.data b/src/ext_depends/D-YAML/test/data/spec-08-05.data deleted file mode 100644 index 93576ed..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-08-05.data +++ /dev/null @@ -1,5 +0,0 @@ -%TAG !o! tag:ben-kiki.org,2000: ---- -- !local foo -- !!str bar -- !o!type baz diff --git a/src/ext_depends/D-YAML/test/data/spec-08-05.test_loader_skip b/src/ext_depends/D-YAML/test/data/spec-08-05.test_loader_skip deleted file mode 100644 index e69de29..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-08-05.test_loader_skip +++ /dev/null diff --git a/src/ext_depends/D-YAML/test/data/spec-08-06.data b/src/ext_depends/D-YAML/test/data/spec-08-06.data deleted file mode 100644 index 8580010..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-08-06.data +++ /dev/null @@ -1,5 +0,0 @@ -%TAG !o! tag:ben-kiki.org,2000: ---- -- !$a!b foo -- !o! bar -- !h!type baz diff --git a/src/ext_depends/D-YAML/test/data/spec-08-06.error b/src/ext_depends/D-YAML/test/data/spec-08-06.error deleted file mode 100644 index fb76f42..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-08-06.error +++ /dev/null @@ -1,4 +0,0 @@ -ERROR: -- The !$a! looks like a handle. -- The !o! handle has no suffix. -- The !h! handle wasn't declared. diff --git a/src/ext_depends/D-YAML/test/data/spec-08-07.canonical b/src/ext_depends/D-YAML/test/data/spec-08-07.canonical deleted file mode 100644 index e2f43d9..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-08-07.canonical +++ /dev/null @@ -1,8 +0,0 @@ -%YAML 1.1 ---- -!!seq [ - !<tag:yaml.org,2002:str> "12", - !<tag:yaml.org,2002:int> "12", -# !<tag:yaml.org,2002:str> "12", - !<tag:yaml.org,2002:int> "12", -] diff --git a/src/ext_depends/D-YAML/test/data/spec-08-07.data b/src/ext_depends/D-YAML/test/data/spec-08-07.data deleted file mode 100644 index 98aa565..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-08-07.data +++ /dev/null @@ -1,4 +0,0 @@ -# Assuming conventional resolution: -- "12" -- 12 -- ! 12 diff --git a/src/ext_depends/D-YAML/test/data/spec-08-08.canonical b/src/ext_depends/D-YAML/test/data/spec-08-08.canonical deleted file mode 100644 index d3f8b1a..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-08-08.canonical +++ /dev/null @@ -1,15 +0,0 @@ -%YAML 1.1 ---- -!!map { - ? !!str "foo" - : !!str "bar baz" -} -%YAML 1.1 ---- -!!str "foo bar" -%YAML 1.1 ---- -!!str "foo bar" -%YAML 1.1 ---- -!!str "foo\n" diff --git a/src/ext_depends/D-YAML/test/data/spec-08-08.data b/src/ext_depends/D-YAML/test/data/spec-08-08.data deleted file mode 100644 index 757a93d..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-08-08.data +++ /dev/null @@ -1,13 +0,0 @@ ---- -foo: - "bar - baz" ---- -"foo - bar" ---- -foo - bar ---- | - foo -... diff --git a/src/ext_depends/D-YAML/test/data/spec-08-09.canonical b/src/ext_depends/D-YAML/test/data/spec-08-09.canonical deleted file mode 100644 index 3805daf..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-08-09.canonical +++ /dev/null @@ -1,21 +0,0 @@ -%YAML 1.1 ---- !!map { - ? !!str "scalars" : !!map { - ? !!str "plain" - : !!str "some text", - ? !!str "quoted" - : !!map { - ? !!str "single" - : !!str "some text", - ? !!str "double" - : !!str "some text" - } }, - ? !!str "collections" : !!map { - ? !!str "sequence" : !!seq [ - !!str "entry", - !!map { - ? !!str "key" : !!str "value" - } ], - ? !!str "mapping" : !!map { - ? !!str "key" : !!str "value" -} } } diff --git a/src/ext_depends/D-YAML/test/data/spec-08-09.data b/src/ext_depends/D-YAML/test/data/spec-08-09.data deleted file mode 100644 index 69da042..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-08-09.data +++ /dev/null @@ -1,11 +0,0 @@ ---- -scalars: - plain: !!str some text - quoted: - single: 'some text' - double: "some text" -collections: - sequence: !!seq [ !!str entry, - # Mapping entry: - key: value ] - mapping: { key: value } diff --git a/src/ext_depends/D-YAML/test/data/spec-08-10.canonical b/src/ext_depends/D-YAML/test/data/spec-08-10.canonical deleted file mode 100644 index 8281c5e..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-08-10.canonical +++ /dev/null @@ -1,23 +0,0 @@ -%YAML 1.1 ---- -!!map { - ? !!str "block styles" : !!map { - ? !!str "scalars" : !!map { - ? !!str "literal" - : !!str "#!/usr/bin/perl\n\ - print \"Hello, - world!\\n\";\n", - ? !!str "folded" - : !!str "This sentence - is false.\n" - }, - ? !!str "collections" : !!map { - ? !!str "sequence" : !!seq [ - !!str "entry", - !!map { - ? !!str "key" : !!str "value" - } - ], - ? !!str "mapping" : !!map { - ? !!str "key" : !!str "value" -} } } } diff --git a/src/ext_depends/D-YAML/test/data/spec-08-10.data b/src/ext_depends/D-YAML/test/data/spec-08-10.data deleted file mode 100644 index 72acc56..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-08-10.data +++ /dev/null @@ -1,15 +0,0 @@ -block styles: - scalars: - literal: !!str | - #!/usr/bin/perl - print "Hello, world!\n"; - folded: > - This sentence - is false. - collections: !!map - sequence: !!seq # Entry: - - entry # Plain - # Mapping entry: - - key: value - mapping: - key: value diff --git a/src/ext_depends/D-YAML/test/data/spec-08-11.canonical b/src/ext_depends/D-YAML/test/data/spec-08-11.canonical deleted file mode 100644 index dd6f76e..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-08-11.canonical +++ /dev/null @@ -1,8 +0,0 @@ -%YAML 1.1 ---- -!!map { - ? !!str "First occurrence" - : &A !!str "Value", - ? !!str "Second occurrence" - : *A -} diff --git a/src/ext_depends/D-YAML/test/data/spec-08-11.data b/src/ext_depends/D-YAML/test/data/spec-08-11.data deleted file mode 100644 index 600d179..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-08-11.data +++ /dev/null @@ -1,2 +0,0 @@ -First occurrence: &anchor Value -Second occurrence: *anchor diff --git a/src/ext_depends/D-YAML/test/data/spec-08-12.canonical b/src/ext_depends/D-YAML/test/data/spec-08-12.canonical deleted file mode 100644 index 93899f4..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-08-12.canonical +++ /dev/null @@ -1,10 +0,0 @@ -%YAML 1.1 ---- -!!seq [ - !!str "Without properties", - &A !!str "Anchored", - !!str "Tagged", - *A, - !!str "", - !!str "", -] diff --git a/src/ext_depends/D-YAML/test/data/spec-08-12.data b/src/ext_depends/D-YAML/test/data/spec-08-12.data deleted file mode 100644 index 3d4c6b7..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-08-12.data +++ /dev/null @@ -1,8 +0,0 @@ -[ - Without properties, - &anchor "Anchored", - !!str 'Tagged', - *anchor, # Alias node - !!str , # Empty plain scalar - '', # Empty plain scalar -] diff --git a/src/ext_depends/D-YAML/test/data/spec-08-13.canonical b/src/ext_depends/D-YAML/test/data/spec-08-13.canonical deleted file mode 100644 index 618bb7b..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-08-13.canonical +++ /dev/null @@ -1,10 +0,0 @@ -%YAML 1.1 ---- -!!map { - ? !!str "foo" -# : !!str "", -# ? !!str "" - : !!null "", - ? !!null "" - : !!str "bar", -} diff --git a/src/ext_depends/D-YAML/test/data/spec-08-13.data b/src/ext_depends/D-YAML/test/data/spec-08-13.data deleted file mode 100644 index ebe663a..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-08-13.data +++ /dev/null @@ -1,4 +0,0 @@ -{ - ? foo :, - ? : bar, -} diff --git a/src/ext_depends/D-YAML/test/data/spec-08-13.skip-ext b/src/ext_depends/D-YAML/test/data/spec-08-13.skip-ext deleted file mode 100644 index e69de29..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-08-13.skip-ext +++ /dev/null diff --git a/src/ext_depends/D-YAML/test/data/spec-08-14.canonical b/src/ext_depends/D-YAML/test/data/spec-08-14.canonical deleted file mode 100644 index 11db439..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-08-14.canonical +++ /dev/null @@ -1,10 +0,0 @@ -%YAML 1.1 ---- -!!seq [ - !!str "flow in block", - !!str "Block scalar\n", - !!map { - ? !!str "foo" - : !!str "bar" - } -] diff --git a/src/ext_depends/D-YAML/test/data/spec-08-14.data b/src/ext_depends/D-YAML/test/data/spec-08-14.data deleted file mode 100644 index 2fbb1f7..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-08-14.data +++ /dev/null @@ -1,5 +0,0 @@ -- "flow in block" -- > - Block scalar -- !!map # Block collection - foo : bar diff --git a/src/ext_depends/D-YAML/test/data/spec-08-15.canonical b/src/ext_depends/D-YAML/test/data/spec-08-15.canonical deleted file mode 100644 index 76f028e..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-08-15.canonical +++ /dev/null @@ -1,11 +0,0 @@ -%YAML 1.1 ---- -!!seq [ - !!null "", - !!map { - ? !!str "foo" - : !!null "", - ? !!null "" - : !!str "bar", - } -] diff --git a/src/ext_depends/D-YAML/test/data/spec-08-15.data b/src/ext_depends/D-YAML/test/data/spec-08-15.data deleted file mode 100644 index 7c86bcf..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-08-15.data +++ /dev/null @@ -1,5 +0,0 @@ -- # Empty plain scalar -- ? foo - : - ? - : bar diff --git a/src/ext_depends/D-YAML/test/data/spec-09-01.canonical b/src/ext_depends/D-YAML/test/data/spec-09-01.canonical deleted file mode 100644 index e71a548..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-09-01.canonical +++ /dev/null @@ -1,11 +0,0 @@ -%YAML 1.1 ---- -!!map { - ? !!str "simple key" - : !!map { - ? !!str "also simple" - : !!str "value", - ? !!str "not a simple key" - : !!str "any value" - } -} diff --git a/src/ext_depends/D-YAML/test/data/spec-09-01.data b/src/ext_depends/D-YAML/test/data/spec-09-01.data deleted file mode 100644 index 9e83eaf..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-09-01.data +++ /dev/null @@ -1,6 +0,0 @@ -"simple key" : { - "also simple" : value, - ? "not a - simple key" : "any - value" -} diff --git a/src/ext_depends/D-YAML/test/data/spec-09-02.canonical b/src/ext_depends/D-YAML/test/data/spec-09-02.canonical deleted file mode 100644 index 6f8f41a..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-09-02.canonical +++ /dev/null @@ -1,7 +0,0 @@ -%YAML 1.1 ---- -!!str "as space \ - trimmed\n\ - specific\L\n\ - escaped\t\n\ - none" diff --git a/src/ext_depends/D-YAML/test/data/spec-09-02.data b/src/ext_depends/D-YAML/test/data/spec-09-02.data deleted file mode 100644 index d84883d..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-09-02.data +++ /dev/null @@ -1,6 +0,0 @@ - "as space - trimmed - - specific
 - escaped \
 - none" diff --git a/src/ext_depends/D-YAML/test/data/spec-09-03.canonical b/src/ext_depends/D-YAML/test/data/spec-09-03.canonical deleted file mode 100644 index 658c6df..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-09-03.canonical +++ /dev/null @@ -1,7 +0,0 @@ -%YAML 1.1 ---- -!!seq [ - !!str " last", - !!str " last", - !!str " \tfirst last", -] diff --git a/src/ext_depends/D-YAML/test/data/spec-09-03.data b/src/ext_depends/D-YAML/test/data/spec-09-03.data deleted file mode 100644 index e0b914d..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-09-03.data +++ /dev/null @@ -1,6 +0,0 @@ -- " - last" -- " - last" -- " first - last" diff --git a/src/ext_depends/D-YAML/test/data/spec-09-04.canonical b/src/ext_depends/D-YAML/test/data/spec-09-04.canonical deleted file mode 100644 index fa46632..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-09-04.canonical +++ /dev/null @@ -1,6 +0,0 @@ -%YAML 1.1 ---- -!!str "first \ - inner 1 \ - inner 2 \ - last" diff --git a/src/ext_depends/D-YAML/test/data/spec-09-04.data b/src/ext_depends/D-YAML/test/data/spec-09-04.data deleted file mode 100644 index 313a91b..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-09-04.data +++ /dev/null @@ -1,4 +0,0 @@ - "first - inner 1 - \ inner 2 \ - last" diff --git a/src/ext_depends/D-YAML/test/data/spec-09-05.canonical b/src/ext_depends/D-YAML/test/data/spec-09-05.canonical deleted file mode 100644 index 24d1052..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-09-05.canonical +++ /dev/null @@ -1,7 +0,0 @@ -%YAML 1.1 ---- -!!seq [ - !!str "first ", - !!str "first\nlast", - !!str "first inner \tlast", -] diff --git a/src/ext_depends/D-YAML/test/data/spec-09-05.data b/src/ext_depends/D-YAML/test/data/spec-09-05.data deleted file mode 100644 index 624c30e..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-09-05.data +++ /dev/null @@ -1,8 +0,0 @@ -- "first - " -- "first - - last" -- "first - inner - \ last" diff --git a/src/ext_depends/D-YAML/test/data/spec-09-06.canonical b/src/ext_depends/D-YAML/test/data/spec-09-06.canonical deleted file mode 100644 index 5028772..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-09-06.canonical +++ /dev/null @@ -1,3 +0,0 @@ -%YAML 1.1 ---- -!!str "here's to \"quotes\"" diff --git a/src/ext_depends/D-YAML/test/data/spec-09-06.data b/src/ext_depends/D-YAML/test/data/spec-09-06.data deleted file mode 100644 index b038078..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-09-06.data +++ /dev/null @@ -1 +0,0 @@ - 'here''s to "quotes"' diff --git a/src/ext_depends/D-YAML/test/data/spec-09-07.canonical b/src/ext_depends/D-YAML/test/data/spec-09-07.canonical deleted file mode 100644 index e71a548..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-09-07.canonical +++ /dev/null @@ -1,11 +0,0 @@ -%YAML 1.1 ---- -!!map { - ? !!str "simple key" - : !!map { - ? !!str "also simple" - : !!str "value", - ? !!str "not a simple key" - : !!str "any value" - } -} diff --git a/src/ext_depends/D-YAML/test/data/spec-09-07.data b/src/ext_depends/D-YAML/test/data/spec-09-07.data deleted file mode 100644 index 755b54a..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-09-07.data +++ /dev/null @@ -1,6 +0,0 @@ -'simple key' : { - 'also simple' : value, - ? 'not a - simple key' : 'any - value' -} diff --git a/src/ext_depends/D-YAML/test/data/spec-09-08.canonical b/src/ext_depends/D-YAML/test/data/spec-09-08.canonical deleted file mode 100644 index 06abdb5..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-09-08.canonical +++ /dev/null @@ -1,6 +0,0 @@ -%YAML 1.1 ---- -!!str "as space \ - trimmed\n\ - specific\L\n\ - none" diff --git a/src/ext_depends/D-YAML/test/data/spec-09-08.data b/src/ext_depends/D-YAML/test/data/spec-09-08.data deleted file mode 100644 index aa4d458..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-09-08.data +++ /dev/null @@ -1 +0,0 @@ - 'as space Â… trimmed Â…Â… specific
… none' diff --git a/src/ext_depends/D-YAML/test/data/spec-09-09.canonical b/src/ext_depends/D-YAML/test/data/spec-09-09.canonical deleted file mode 100644 index 658c6df..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-09-09.canonical +++ /dev/null @@ -1,7 +0,0 @@ -%YAML 1.1 ---- -!!seq [ - !!str " last", - !!str " last", - !!str " \tfirst last", -] diff --git a/src/ext_depends/D-YAML/test/data/spec-09-09.data b/src/ext_depends/D-YAML/test/data/spec-09-09.data deleted file mode 100644 index 52171df..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-09-09.data +++ /dev/null @@ -1,6 +0,0 @@ -- ' - last' -- ' - last' -- ' first - last' diff --git a/src/ext_depends/D-YAML/test/data/spec-09-10.canonical b/src/ext_depends/D-YAML/test/data/spec-09-10.canonical deleted file mode 100644 index 2028d04..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-09-10.canonical +++ /dev/null @@ -1,5 +0,0 @@ -%YAML 1.1 ---- -!!str "first \ - inner \ - last" diff --git a/src/ext_depends/D-YAML/test/data/spec-09-10.data b/src/ext_depends/D-YAML/test/data/spec-09-10.data deleted file mode 100644 index 0e41449..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-09-10.data +++ /dev/null @@ -1,3 +0,0 @@ - 'first - inner - last' diff --git a/src/ext_depends/D-YAML/test/data/spec-09-11.canonical b/src/ext_depends/D-YAML/test/data/spec-09-11.canonical deleted file mode 100644 index 4eb222c..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-09-11.canonical +++ /dev/null @@ -1,6 +0,0 @@ -%YAML 1.1 ---- -!!seq [ - !!str "first ", - !!str "first\nlast", -] diff --git a/src/ext_depends/D-YAML/test/data/spec-09-11.data b/src/ext_depends/D-YAML/test/data/spec-09-11.data deleted file mode 100644 index 5efa873..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-09-11.data +++ /dev/null @@ -1,5 +0,0 @@ -- 'first - ' -- 'first - - last' diff --git a/src/ext_depends/D-YAML/test/data/spec-09-12.canonical b/src/ext_depends/D-YAML/test/data/spec-09-12.canonical deleted file mode 100644 index d8e6dce..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-09-12.canonical +++ /dev/null @@ -1,12 +0,0 @@ -%YAML 1.1 ---- -!!seq [ - !!str "::std::vector", - !!str "Up, up, and away!", - !!int "-123", - !!seq [ - !!str "::std::vector", - !!str "Up, up, and away!", - !!int "-123", - ] -] diff --git a/src/ext_depends/D-YAML/test/data/spec-09-12.data b/src/ext_depends/D-YAML/test/data/spec-09-12.data deleted file mode 100644 index b9a3ac5..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-09-12.data +++ /dev/null @@ -1,8 +0,0 @@ -# Outside flow collection: -- ::std::vector -- Up, up, and away! -- -123 -# Inside flow collection: -- [ '::std::vector', - "Up, up, and away!", - -123 ] diff --git a/src/ext_depends/D-YAML/test/data/spec-09-13.canonical b/src/ext_depends/D-YAML/test/data/spec-09-13.canonical deleted file mode 100644 index e71a548..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-09-13.canonical +++ /dev/null @@ -1,11 +0,0 @@ -%YAML 1.1 ---- -!!map { - ? !!str "simple key" - : !!map { - ? !!str "also simple" - : !!str "value", - ? !!str "not a simple key" - : !!str "any value" - } -} diff --git a/src/ext_depends/D-YAML/test/data/spec-09-13.data b/src/ext_depends/D-YAML/test/data/spec-09-13.data deleted file mode 100644 index b156386..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-09-13.data +++ /dev/null @@ -1,6 +0,0 @@ -simple key : { - also simple : value, - ? not a - simple key : any - value -} diff --git a/src/ext_depends/D-YAML/test/data/spec-09-14.data b/src/ext_depends/D-YAML/test/data/spec-09-14.data deleted file mode 100644 index 97f2316..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-09-14.data +++ /dev/null @@ -1,14 +0,0 @@ ---- ---- ||| : foo -... >>>: bar ---- -[ ---- -, -... , -{ ---- : -... # Nested -} -] -... diff --git a/src/ext_depends/D-YAML/test/data/spec-09-14.error b/src/ext_depends/D-YAML/test/data/spec-09-14.error deleted file mode 100644 index 9f3db7b..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-09-14.error +++ /dev/null @@ -1,6 +0,0 @@ -ERROR: - The --- and ... document - start and end markers must - not be specified as the - first content line of a - non-indented plain scalar. diff --git a/src/ext_depends/D-YAML/test/data/spec-09-15.canonical b/src/ext_depends/D-YAML/test/data/spec-09-15.canonical deleted file mode 100644 index df02040..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-09-15.canonical +++ /dev/null @@ -1,18 +0,0 @@ -%YAML 1.1 ---- -!!map { - ? !!str "---" - : !!str "foo", - ? !!str "..." - : !!str "bar" -} -%YAML 1.1 ---- -!!seq [ - !!str "---", - !!str "...", - !!map { - ? !!str "---" - : !!str "..." - } -] diff --git a/src/ext_depends/D-YAML/test/data/spec-09-15.data b/src/ext_depends/D-YAML/test/data/spec-09-15.data deleted file mode 100644 index e6863b0..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-09-15.data +++ /dev/null @@ -1,13 +0,0 @@ ---- -"---" : foo -...: bar ---- -[ ----, -..., -{ -? --- -: ... -} -] -... diff --git a/src/ext_depends/D-YAML/test/data/spec-09-16.canonical b/src/ext_depends/D-YAML/test/data/spec-09-16.canonical deleted file mode 100644 index 06abdb5..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-09-16.canonical +++ /dev/null @@ -1,6 +0,0 @@ -%YAML 1.1 ---- -!!str "as space \ - trimmed\n\ - specific\L\n\ - none" diff --git a/src/ext_depends/D-YAML/test/data/spec-09-16.data b/src/ext_depends/D-YAML/test/data/spec-09-16.data deleted file mode 100644 index 473beb9..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-09-16.data +++ /dev/null @@ -1,3 +0,0 @@ -# Tabs are confusing: -# as space/trimmed/specific/none - as space Â… trimmed Â…Â… specific
… none diff --git a/src/ext_depends/D-YAML/test/data/spec-09-17.canonical b/src/ext_depends/D-YAML/test/data/spec-09-17.canonical deleted file mode 100644 index 68cb70d..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-09-17.canonical +++ /dev/null @@ -1,4 +0,0 @@ -%YAML 1.1 ---- -!!str "first line\n\ - more line" diff --git a/src/ext_depends/D-YAML/test/data/spec-09-17.data b/src/ext_depends/D-YAML/test/data/spec-09-17.data deleted file mode 100644 index 97bc46c..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-09-17.data +++ /dev/null @@ -1,3 +0,0 @@ - first line - - more line diff --git a/src/ext_depends/D-YAML/test/data/spec-09-18.canonical b/src/ext_depends/D-YAML/test/data/spec-09-18.canonical deleted file mode 100644 index f21428f..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-09-18.canonical +++ /dev/null @@ -1,8 +0,0 @@ -%YAML 1.1 ---- -!!seq [ - !!str "literal\n", - !!str " folded\n", - !!str "keep\n\n", - !!str " strip", -] diff --git a/src/ext_depends/D-YAML/test/data/spec-09-18.data b/src/ext_depends/D-YAML/test/data/spec-09-18.data deleted file mode 100644 index 68c5d7c..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-09-18.data +++ /dev/null @@ -1,9 +0,0 @@ -- | # Just the style - literal -- >1 # Indentation indicator - folded -- |+ # Chomping indicator - keep - -- >-1 # Both indicators - strip diff --git a/src/ext_depends/D-YAML/test/data/spec-09-19.canonical b/src/ext_depends/D-YAML/test/data/spec-09-19.canonical deleted file mode 100644 index 3e828d7..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-09-19.canonical +++ /dev/null @@ -1,6 +0,0 @@ -%YAML 1.1 ---- -!!seq [ - !!str "literal\n", - !!str "folded\n", -] diff --git a/src/ext_depends/D-YAML/test/data/spec-09-19.data b/src/ext_depends/D-YAML/test/data/spec-09-19.data deleted file mode 100644 index f0e589d..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-09-19.data +++ /dev/null @@ -1,4 +0,0 @@ -- | - literal -- > - folded diff --git a/src/ext_depends/D-YAML/test/data/spec-09-20.canonical b/src/ext_depends/D-YAML/test/data/spec-09-20.canonical deleted file mode 100644 index d03bef5..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-09-20.canonical +++ /dev/null @@ -1,8 +0,0 @@ -%YAML 1.1 ---- -!!seq [ - !!str "detected\n", - !!str "\n\n# detected\n", - !!str " explicit\n", - !!str "\t\ndetected\n", -] diff --git a/src/ext_depends/D-YAML/test/data/spec-09-20.data b/src/ext_depends/D-YAML/test/data/spec-09-20.data deleted file mode 100644 index 39bee04..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-09-20.data +++ /dev/null @@ -1,11 +0,0 @@ -- | - detected -- > - - - # detected -- |1 - explicit -- > - - detected diff --git a/src/ext_depends/D-YAML/test/data/spec-09-20.skip-ext b/src/ext_depends/D-YAML/test/data/spec-09-20.skip-ext deleted file mode 100644 index e69de29..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-09-20.skip-ext +++ /dev/null diff --git a/src/ext_depends/D-YAML/test/data/spec-09-21.data b/src/ext_depends/D-YAML/test/data/spec-09-21.data deleted file mode 100644 index 0fdd14f..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-09-21.data +++ /dev/null @@ -1,8 +0,0 @@ -- | - - text -- > - text - text -- |1 - text diff --git a/src/ext_depends/D-YAML/test/data/spec-09-21.error b/src/ext_depends/D-YAML/test/data/spec-09-21.error deleted file mode 100644 index 1379ca5..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-09-21.error +++ /dev/null @@ -1,7 +0,0 @@ -ERROR: -- A leading all-space line must - not have too many spaces. -- A following text line must - not be less indented. -- The text is less indented - than the indicated level. diff --git a/src/ext_depends/D-YAML/test/data/spec-09-22.canonical b/src/ext_depends/D-YAML/test/data/spec-09-22.canonical deleted file mode 100644 index c1bbcd2..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-09-22.canonical +++ /dev/null @@ -1,10 +0,0 @@ -%YAML 1.1 ---- -!!map { - ? !!str "strip" - : !!str "text", - ? !!str "clip" - : !!str "text\n", - ? !!str "keep" - : !!str "text\L", -} diff --git a/src/ext_depends/D-YAML/test/data/spec-09-22.data b/src/ext_depends/D-YAML/test/data/spec-09-22.data deleted file mode 100644 index 0dd51eb..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-09-22.data +++ /dev/null @@ -1,4 +0,0 @@ -strip: |- - text
clip: | - textÂ…keep: |+ - text

\ No newline at end of file diff --git a/src/ext_depends/D-YAML/test/data/spec-09-23.canonical b/src/ext_depends/D-YAML/test/data/spec-09-23.canonical deleted file mode 100644 index c4444ca..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-09-23.canonical +++ /dev/null @@ -1,10 +0,0 @@ -%YAML 1.1 ---- -!!map { - ? !!str "strip" - : !!str "# text", - ? !!str "clip" - : !!str "# text\n", - ? !!str "keep" - : !!str "# text\L\n", -} diff --git a/src/ext_depends/D-YAML/test/data/spec-09-23.data b/src/ext_depends/D-YAML/test/data/spec-09-23.data deleted file mode 100644 index 8972d2b..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-09-23.data +++ /dev/null @@ -1,11 +0,0 @@ - # Strip - # Comments: -strip: |- - # text
 
 # Clip - # comments: -Â…clip: | - # textÂ… 
 # Keep - # comments: -Â…keep: |+ - # text
… # Trail - # comments. diff --git a/src/ext_depends/D-YAML/test/data/spec-09-24.canonical b/src/ext_depends/D-YAML/test/data/spec-09-24.canonical deleted file mode 100644 index 45a99b0..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-09-24.canonical +++ /dev/null @@ -1,10 +0,0 @@ -%YAML 1.1 ---- -!!map { - ? !!str "strip" - : !!str "", - ? !!str "clip" - : !!str "", - ? !!str "keep" - : !!str "\n", -} diff --git a/src/ext_depends/D-YAML/test/data/spec-09-24.data b/src/ext_depends/D-YAML/test/data/spec-09-24.data deleted file mode 100644 index de0b64b..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-09-24.data +++ /dev/null @@ -1,6 +0,0 @@ -strip: >- - -clip: > - -keep: |+ - diff --git a/src/ext_depends/D-YAML/test/data/spec-09-25.canonical b/src/ext_depends/D-YAML/test/data/spec-09-25.canonical deleted file mode 100644 index 9d2327b..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-09-25.canonical +++ /dev/null @@ -1,4 +0,0 @@ -%YAML 1.1 ---- -!!str "literal\n\ - \ttext\n" diff --git a/src/ext_depends/D-YAML/test/data/spec-09-25.data b/src/ext_depends/D-YAML/test/data/spec-09-25.data deleted file mode 100644 index f6303a1..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-09-25.data +++ /dev/null @@ -1,3 +0,0 @@ -| # Simple block scalar - literal - text diff --git a/src/ext_depends/D-YAML/test/data/spec-09-26.canonical b/src/ext_depends/D-YAML/test/data/spec-09-26.canonical deleted file mode 100644 index 3029a11..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-09-26.canonical +++ /dev/null @@ -1,3 +0,0 @@ -%YAML 1.1 ---- -!!str "\n\nliteral\n\ntext\n" diff --git a/src/ext_depends/D-YAML/test/data/spec-09-26.data b/src/ext_depends/D-YAML/test/data/spec-09-26.data deleted file mode 100644 index f28555a..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-09-26.data +++ /dev/null @@ -1,8 +0,0 @@ -| - - - literal - - text - - # Comment diff --git a/src/ext_depends/D-YAML/test/data/spec-09-27.canonical b/src/ext_depends/D-YAML/test/data/spec-09-27.canonical deleted file mode 100644 index 3029a11..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-09-27.canonical +++ /dev/null @@ -1,3 +0,0 @@ -%YAML 1.1 ---- -!!str "\n\nliteral\n\ntext\n" diff --git a/src/ext_depends/D-YAML/test/data/spec-09-27.data b/src/ext_depends/D-YAML/test/data/spec-09-27.data deleted file mode 100644 index f28555a..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-09-27.data +++ /dev/null @@ -1,8 +0,0 @@ -| - - - literal - - text - - # Comment diff --git a/src/ext_depends/D-YAML/test/data/spec-09-28.canonical b/src/ext_depends/D-YAML/test/data/spec-09-28.canonical deleted file mode 100644 index 3029a11..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-09-28.canonical +++ /dev/null @@ -1,3 +0,0 @@ -%YAML 1.1 ---- -!!str "\n\nliteral\n\ntext\n" diff --git a/src/ext_depends/D-YAML/test/data/spec-09-28.data b/src/ext_depends/D-YAML/test/data/spec-09-28.data deleted file mode 100644 index f28555a..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-09-28.data +++ /dev/null @@ -1,8 +0,0 @@ -| - - - literal - - text - - # Comment diff --git a/src/ext_depends/D-YAML/test/data/spec-09-29.canonical b/src/ext_depends/D-YAML/test/data/spec-09-29.canonical deleted file mode 100644 index 0980789..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-09-29.canonical +++ /dev/null @@ -1,4 +0,0 @@ -%YAML 1.1 ---- -!!str "folded text\n\ - \tlines\n" diff --git a/src/ext_depends/D-YAML/test/data/spec-09-29.data b/src/ext_depends/D-YAML/test/data/spec-09-29.data deleted file mode 100644 index 82e611f..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-09-29.data +++ /dev/null @@ -1,4 +0,0 @@ -> # Simple folded scalar - folded - text - lines diff --git a/src/ext_depends/D-YAML/test/data/spec-09-30.canonical b/src/ext_depends/D-YAML/test/data/spec-09-30.canonical deleted file mode 100644 index fc37db1..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-09-30.canonical +++ /dev/null @@ -1,7 +0,0 @@ -%YAML 1.1 ---- -!!str "folded line\n\ - next line\n\n\ - \ * bullet\n\ - \ * list\n\n\ - last line\n" diff --git a/src/ext_depends/D-YAML/test/data/spec-09-30.data b/src/ext_depends/D-YAML/test/data/spec-09-30.data deleted file mode 100644 index a4d8c36..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-09-30.data +++ /dev/null @@ -1,14 +0,0 @@ -> - folded - line - - next - line - - * bullet - * list - - last - line - -# Comment diff --git a/src/ext_depends/D-YAML/test/data/spec-09-31.canonical b/src/ext_depends/D-YAML/test/data/spec-09-31.canonical deleted file mode 100644 index fc37db1..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-09-31.canonical +++ /dev/null @@ -1,7 +0,0 @@ -%YAML 1.1 ---- -!!str "folded line\n\ - next line\n\n\ - \ * bullet\n\ - \ * list\n\n\ - last line\n" diff --git a/src/ext_depends/D-YAML/test/data/spec-09-31.data b/src/ext_depends/D-YAML/test/data/spec-09-31.data deleted file mode 100644 index a4d8c36..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-09-31.data +++ /dev/null @@ -1,14 +0,0 @@ -> - folded - line - - next - line - - * bullet - * list - - last - line - -# Comment diff --git a/src/ext_depends/D-YAML/test/data/spec-09-32.canonical b/src/ext_depends/D-YAML/test/data/spec-09-32.canonical deleted file mode 100644 index fc37db1..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-09-32.canonical +++ /dev/null @@ -1,7 +0,0 @@ -%YAML 1.1 ---- -!!str "folded line\n\ - next line\n\n\ - \ * bullet\n\ - \ * list\n\n\ - last line\n" diff --git a/src/ext_depends/D-YAML/test/data/spec-09-32.data b/src/ext_depends/D-YAML/test/data/spec-09-32.data deleted file mode 100644 index a4d8c36..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-09-32.data +++ /dev/null @@ -1,14 +0,0 @@ -> - folded - line - - next - line - - * bullet - * list - - last - line - -# Comment diff --git a/src/ext_depends/D-YAML/test/data/spec-09-33.canonical b/src/ext_depends/D-YAML/test/data/spec-09-33.canonical deleted file mode 100644 index fc37db1..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-09-33.canonical +++ /dev/null @@ -1,7 +0,0 @@ -%YAML 1.1 ---- -!!str "folded line\n\ - next line\n\n\ - \ * bullet\n\ - \ * list\n\n\ - last line\n" diff --git a/src/ext_depends/D-YAML/test/data/spec-09-33.data b/src/ext_depends/D-YAML/test/data/spec-09-33.data deleted file mode 100644 index a4d8c36..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-09-33.data +++ /dev/null @@ -1,14 +0,0 @@ -> - folded - line - - next - line - - * bullet - * list - - last - line - -# Comment diff --git a/src/ext_depends/D-YAML/test/data/spec-10-01.canonical b/src/ext_depends/D-YAML/test/data/spec-10-01.canonical deleted file mode 100644 index d08cdd4..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-10-01.canonical +++ /dev/null @@ -1,12 +0,0 @@ -%YAML 1.1 ---- -!!seq [ - !!seq [ - !!str "inner", - !!str "inner", - ], - !!seq [ - !!str "inner", - !!str "last", - ], -] diff --git a/src/ext_depends/D-YAML/test/data/spec-10-01.data b/src/ext_depends/D-YAML/test/data/spec-10-01.data deleted file mode 100644 index e668d38..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-10-01.data +++ /dev/null @@ -1,2 +0,0 @@ -- [ inner, inner, ] -- [inner,last] diff --git a/src/ext_depends/D-YAML/test/data/spec-10-02.canonical b/src/ext_depends/D-YAML/test/data/spec-10-02.canonical deleted file mode 100644 index 82fe0d9..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-10-02.canonical +++ /dev/null @@ -1,14 +0,0 @@ -%YAML 1.1 ---- -!!seq [ - !!str "double quoted", - !!str "single quoted", - !!str "plain text", - !!seq [ - !!str "nested", - ], - !!map { - ? !!str "single" - : !!str "pair" - } -] diff --git a/src/ext_depends/D-YAML/test/data/spec-10-02.data b/src/ext_depends/D-YAML/test/data/spec-10-02.data deleted file mode 100644 index 3b23351..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-10-02.data +++ /dev/null @@ -1,8 +0,0 @@ -[ -"double - quoted", 'single - quoted', -plain - text, [ nested ], -single: pair , -] diff --git a/src/ext_depends/D-YAML/test/data/spec-10-03.canonical b/src/ext_depends/D-YAML/test/data/spec-10-03.canonical deleted file mode 100644 index 1443395..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-10-03.canonical +++ /dev/null @@ -1,12 +0,0 @@ -%YAML 1.1 ---- -!!map { - ? !!str "block" - : !!seq [ - !!str "one", - !!map { - ? !!str "two" - : !!str "three" - } - ] -} diff --git a/src/ext_depends/D-YAML/test/data/spec-10-03.data b/src/ext_depends/D-YAML/test/data/spec-10-03.data deleted file mode 100644 index 9e15f83..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-10-03.data +++ /dev/null @@ -1,4 +0,0 @@ -block: # Block - # sequence -- one -- two : three diff --git a/src/ext_depends/D-YAML/test/data/spec-10-04.canonical b/src/ext_depends/D-YAML/test/data/spec-10-04.canonical deleted file mode 100644 index ae486a3..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-10-04.canonical +++ /dev/null @@ -1,11 +0,0 @@ -%YAML 1.1 ---- -!!map { - ? !!str "block" - : !!seq [ - !!str "one", - !!seq [ - !!str "two" - ] - ] -} diff --git a/src/ext_depends/D-YAML/test/data/spec-10-04.data b/src/ext_depends/D-YAML/test/data/spec-10-04.data deleted file mode 100644 index 2905b0d..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-10-04.data +++ /dev/null @@ -1,4 +0,0 @@ -block: -- one -- - - two diff --git a/src/ext_depends/D-YAML/test/data/spec-10-05.canonical b/src/ext_depends/D-YAML/test/data/spec-10-05.canonical deleted file mode 100644 index 07cc0c9..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-10-05.canonical +++ /dev/null @@ -1,14 +0,0 @@ -%YAML 1.1 ---- -!!seq [ - !!null "", - !!str "block node\n", - !!seq [ - !!str "one", - !!str "two", - ], - !!map { - ? !!str "one" - : !!str "two", - } -] diff --git a/src/ext_depends/D-YAML/test/data/spec-10-05.data b/src/ext_depends/D-YAML/test/data/spec-10-05.data deleted file mode 100644 index f19a99e..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-10-05.data +++ /dev/null @@ -1,7 +0,0 @@ -- # Empty -- | - block node -- - one # in-line - - two # sequence -- one: two # in-line - # mapping diff --git a/src/ext_depends/D-YAML/test/data/spec-10-06.canonical b/src/ext_depends/D-YAML/test/data/spec-10-06.canonical deleted file mode 100644 index d9986c2..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-10-06.canonical +++ /dev/null @@ -1,16 +0,0 @@ -%YAML 1.1 ---- -!!seq [ - !!map { - ? !!str "inner" - : !!str "entry", - ? !!str "also" - : !!str "inner" - }, - !!map { - ? !!str "inner" - : !!str "entry", - ? !!str "last" - : !!str "entry" - } -] diff --git a/src/ext_depends/D-YAML/test/data/spec-10-06.data b/src/ext_depends/D-YAML/test/data/spec-10-06.data deleted file mode 100644 index 860ba25..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-10-06.data +++ /dev/null @@ -1,2 +0,0 @@ -- { inner : entry , also: inner , } -- {inner: entry,last : entry} diff --git a/src/ext_depends/D-YAML/test/data/spec-10-07.canonical b/src/ext_depends/D-YAML/test/data/spec-10-07.canonical deleted file mode 100644 index ec74230..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-10-07.canonical +++ /dev/null @@ -1,16 +0,0 @@ -%YAML 1.1 ---- -!!map { - ? !!null "" - : !!str "value", - ? !!str "explicit key" - : !!str "value", - ? !!str "simple key" - : !!str "value", - ? !!seq [ - !!str "collection", - !!str "simple", - !!str "key" - ] - : !!str "value" -} diff --git a/src/ext_depends/D-YAML/test/data/spec-10-07.data b/src/ext_depends/D-YAML/test/data/spec-10-07.data deleted file mode 100644 index ff943fb..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-10-07.data +++ /dev/null @@ -1,7 +0,0 @@ -{ -? : value, # Empty key -? explicit - key: value, -simple key : value, -[ collection, simple, key ]: value -} diff --git a/src/ext_depends/D-YAML/test/data/spec-10-08.error b/src/ext_depends/D-YAML/test/data/spec-10-08.error deleted file mode 100644 index 3979e1f..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-10-08.error +++ /dev/null @@ -1,5 +0,0 @@ -ERROR: -- A simple key is restricted - to only one line. -- A simple key must not be - longer than 1024 characters. diff --git a/src/ext_depends/D-YAML/test/data/spec-10-09.canonical b/src/ext_depends/D-YAML/test/data/spec-10-09.canonical deleted file mode 100644 index 4d9827b..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-10-09.canonical +++ /dev/null @@ -1,8 +0,0 @@ -%YAML 1.1 ---- -!!map { - ? !!str "key" - : !!str "value", - ? !!str "empty" - : !!null "", -} diff --git a/src/ext_depends/D-YAML/test/data/spec-10-09.data b/src/ext_depends/D-YAML/test/data/spec-10-09.data deleted file mode 100644 index 4d55e21..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-10-09.data +++ /dev/null @@ -1,4 +0,0 @@ -{ -key : value, -empty: # empty value↓ -} diff --git a/src/ext_depends/D-YAML/test/data/spec-10-10.canonical b/src/ext_depends/D-YAML/test/data/spec-10-10.canonical deleted file mode 100644 index 016fb64..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-10-10.canonical +++ /dev/null @@ -1,16 +0,0 @@ -%YAML 1.1 ---- -!!map { - ? !!str "explicit key1" - : !!str "explicit value", - ? !!str "explicit key2" - : !!null "", - ? !!str "explicit key3" - : !!null "", - ? !!str "simple key1" - : !!str "explicit value", - ? !!str "simple key2" - : !!null "", - ? !!str "simple key3" - : !!null "", -} diff --git a/src/ext_depends/D-YAML/test/data/spec-10-10.data b/src/ext_depends/D-YAML/test/data/spec-10-10.data deleted file mode 100644 index 0888b05..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-10-10.data +++ /dev/null @@ -1,8 +0,0 @@ -{ -? explicit key1 : explicit value, -? explicit key2 : , # Explicit empty -? explicit key3, # Empty value -simple key1 : explicit value, -simple key2 : , # Explicit empty -simple key3, # Empty value -} diff --git a/src/ext_depends/D-YAML/test/data/spec-10-11.canonical b/src/ext_depends/D-YAML/test/data/spec-10-11.canonical deleted file mode 100644 index 7309544..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-10-11.canonical +++ /dev/null @@ -1,24 +0,0 @@ -%YAML 1.1 ---- -!!seq [ - !!map { - ? !!str "explicit key1" - : !!str "explicit value", - }, - !!map { - ? !!str "explicit key2" - : !!null "", - }, - !!map { - ? !!str "explicit key3" - : !!null "", - }, - !!map { - ? !!str "simple key1" - : !!str "explicit value", - }, - !!map { - ? !!str "simple key2" - : !!null "", - }, -] diff --git a/src/ext_depends/D-YAML/test/data/spec-10-11.data b/src/ext_depends/D-YAML/test/data/spec-10-11.data deleted file mode 100644 index 9f05568..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-10-11.data +++ /dev/null @@ -1,7 +0,0 @@ -[ -? explicit key1 : explicit value, -? explicit key2 : , # Explicit empty -? explicit key3, # Implicit empty -simple key1 : explicit value, -simple key2 : , # Explicit empty -] diff --git a/src/ext_depends/D-YAML/test/data/spec-10-12.canonical b/src/ext_depends/D-YAML/test/data/spec-10-12.canonical deleted file mode 100644 index a95dd40..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-10-12.canonical +++ /dev/null @@ -1,9 +0,0 @@ -%YAML 1.1 ---- -!!map { - ? !!str "block" - : !!map { - ? !!str "key" - : !!str "value" - } -} diff --git a/src/ext_depends/D-YAML/test/data/spec-10-12.data b/src/ext_depends/D-YAML/test/data/spec-10-12.data deleted file mode 100644 index 5521443..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-10-12.data +++ /dev/null @@ -1,3 +0,0 @@ -block: # Block - # mapping - key: value diff --git a/src/ext_depends/D-YAML/test/data/spec-10-13.canonical b/src/ext_depends/D-YAML/test/data/spec-10-13.canonical deleted file mode 100644 index e183c50..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-10-13.canonical +++ /dev/null @@ -1,11 +0,0 @@ -%YAML 1.1 ---- -!!map { - ? !!str "explicit key" - : !!null "", - ? !!str "block key\n" - : !!seq [ - !!str "one", - !!str "two", - ] -} diff --git a/src/ext_depends/D-YAML/test/data/spec-10-13.data b/src/ext_depends/D-YAML/test/data/spec-10-13.data deleted file mode 100644 index b5b97db..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-10-13.data +++ /dev/null @@ -1,5 +0,0 @@ -? explicit key # implicit value -? | - block key -: - one # explicit in-line - - two # block value diff --git a/src/ext_depends/D-YAML/test/data/spec-10-14.canonical b/src/ext_depends/D-YAML/test/data/spec-10-14.canonical deleted file mode 100644 index e87c880..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-10-14.canonical +++ /dev/null @@ -1,11 +0,0 @@ -%YAML 1.1 ---- -!!map { - ? !!str "plain key" - : !!null "", - ? !!str "quoted key" - : !!seq [ - !!str "one", - !!str "two", - ] -} diff --git a/src/ext_depends/D-YAML/test/data/spec-10-14.data b/src/ext_depends/D-YAML/test/data/spec-10-14.data deleted file mode 100644 index 7f5995c..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-10-14.data +++ /dev/null @@ -1,4 +0,0 @@ -plain key: # empty value -"quoted key": -- one # explicit next-line -- two # block value diff --git a/src/ext_depends/D-YAML/test/data/spec-10-15.canonical b/src/ext_depends/D-YAML/test/data/spec-10-15.canonical deleted file mode 100644 index 85fbbd0..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-10-15.canonical +++ /dev/null @@ -1,18 +0,0 @@ -%YAML 1.1 ---- -!!seq [ - !!map { - ? !!str "sun" - : !!str "yellow" - }, - !!map { - ? !!map { - ? !!str "earth" - : !!str "blue" - } - : !!map { - ? !!str "moon" - : !!str "white" - } - } -] diff --git a/src/ext_depends/D-YAML/test/data/spec-10-15.data b/src/ext_depends/D-YAML/test/data/spec-10-15.data deleted file mode 100644 index d675cfd..0000000 --- a/src/ext_depends/D-YAML/test/data/spec-10-15.data +++ /dev/null @@ -1,3 +0,0 @@ -- sun: yellow -- ? earth: blue - : moon: white diff --git a/src/ext_depends/D-YAML/test/data/str.data b/src/ext_depends/D-YAML/test/data/str.data deleted file mode 100644 index 7cbdb7c..0000000 --- a/src/ext_depends/D-YAML/test/data/str.data +++ /dev/null @@ -1 +0,0 @@ -- abcd diff --git a/src/ext_depends/D-YAML/test/data/str.detect b/src/ext_depends/D-YAML/test/data/str.detect deleted file mode 100644 index 7d5026f..0000000 --- a/src/ext_depends/D-YAML/test/data/str.detect +++ /dev/null @@ -1 +0,0 @@ -tag:yaml.org,2002:str diff --git a/src/ext_depends/D-YAML/test/data/tags.events b/src/ext_depends/D-YAML/test/data/tags.events deleted file mode 100644 index bb93dce..0000000 --- a/src/ext_depends/D-YAML/test/data/tags.events +++ /dev/null @@ -1,12 +0,0 @@ -- !StreamStart -- !DocumentStart -- !SequenceStart -- !Scalar { value: 'data' } -#- !Scalar { tag: '!', value: 'data' } -- !Scalar { tag: 'tag:yaml.org,2002:str', value: 'data' } -- !Scalar { tag: '!myfunnytag', value: 'data' } -- !Scalar { tag: '!my!ugly!tag', value: 'data' } -- !Scalar { tag: 'tag:my.domain.org,2002:data!? #', value: 'data' } -- !SequenceEnd -- !DocumentEnd -- !StreamEnd diff --git a/src/ext_depends/D-YAML/test/data/test_mark.marks b/src/ext_depends/D-YAML/test/data/test_mark.marks deleted file mode 100644 index 7b08ee4..0000000 --- a/src/ext_depends/D-YAML/test/data/test_mark.marks +++ /dev/null @@ -1,38 +0,0 @@ ---- -*The first line. -The last line. ---- -The first*line. -The last line. ---- -The first line.* -The last line. ---- -The first line. -*The last line. ---- -The first line. -The last*line. ---- -The first line. -The last line.* ---- -The first line. -*The selected line. -The last line. ---- -The first line. -The selected*line. -The last line. ---- -The first line. -The selected line.* -The last line. ---- -*The only line. ---- -The only*line. ---- -The only line.* ---- -Loooooooooooooooooooooooooooooooooooooooooooooong*Liiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiine diff --git a/src/ext_depends/D-YAML/test/data/timestamp-bugs.code b/src/ext_depends/D-YAML/test/data/timestamp-bugs.code deleted file mode 100644 index 97e0aca..0000000 --- a/src/ext_depends/D-YAML/test/data/timestamp-bugs.code +++ /dev/null @@ -1 +0,0 @@ -#dummy used in constructor test diff --git a/src/ext_depends/D-YAML/test/data/timestamp-bugs.data b/src/ext_depends/D-YAML/test/data/timestamp-bugs.data deleted file mode 100644 index 503f1ce..0000000 --- a/src/ext_depends/D-YAML/test/data/timestamp-bugs.data +++ /dev/null @@ -1,6 +0,0 @@ -- 2001-12-14 21:59:43.1 -5:30 -- 2001-12-14 21:59:43.1 +5:30 -- 2001-12-14 21:59:43.00101 -- 2001-12-14 21:59:43+1 -- 2001-12-14 21:59:43-1:30 -- 2005-07-08 17:35:04.517600 diff --git a/src/ext_depends/D-YAML/test/data/timestamp.data b/src/ext_depends/D-YAML/test/data/timestamp.data deleted file mode 100644 index 7d214ce..0000000 --- a/src/ext_depends/D-YAML/test/data/timestamp.data +++ /dev/null @@ -1,5 +0,0 @@ -- 2001-12-15T02:59:43.1Z -- 2001-12-14t21:59:43.10-05:00 -- 2001-12-14 21:59:43.10 -5 -- 2001-12-15 2:59:43.10 -- 2002-12-14 diff --git a/src/ext_depends/D-YAML/test/data/timestamp.detect b/src/ext_depends/D-YAML/test/data/timestamp.detect deleted file mode 100644 index 2013936..0000000 --- a/src/ext_depends/D-YAML/test/data/timestamp.detect +++ /dev/null @@ -1 +0,0 @@ -tag:yaml.org,2002:timestamp diff --git a/src/ext_depends/D-YAML/test/data/unclosed-bracket.loader-error b/src/ext_depends/D-YAML/test/data/unclosed-bracket.loader-error deleted file mode 100644 index 8c82077..0000000 --- a/src/ext_depends/D-YAML/test/data/unclosed-bracket.loader-error +++ /dev/null @@ -1,6 +0,0 @@ -test: - - [ foo: bar -# comment the rest of the stream to let the scanner detect the problem. -# - baz -#"we could have detected the unclosed bracket on the above line, but this would forbid such syntax as": { -#} diff --git a/src/ext_depends/D-YAML/test/data/unclosed-quoted-scalar.loader-error b/src/ext_depends/D-YAML/test/data/unclosed-quoted-scalar.loader-error deleted file mode 100644 index 8537429..0000000 --- a/src/ext_depends/D-YAML/test/data/unclosed-quoted-scalar.loader-error +++ /dev/null @@ -1,2 +0,0 @@ -'foo - bar diff --git a/src/ext_depends/D-YAML/test/data/undefined-anchor.loader-error b/src/ext_depends/D-YAML/test/data/undefined-anchor.loader-error deleted file mode 100644 index 9469103..0000000 --- a/src/ext_depends/D-YAML/test/data/undefined-anchor.loader-error +++ /dev/null @@ -1,3 +0,0 @@ -- foo -- &bar baz -- *bat diff --git a/src/ext_depends/D-YAML/test/data/undefined-tag-handle.loader-error b/src/ext_depends/D-YAML/test/data/undefined-tag-handle.loader-error deleted file mode 100644 index 82ba335..0000000 --- a/src/ext_depends/D-YAML/test/data/undefined-tag-handle.loader-error +++ /dev/null @@ -1 +0,0 @@ ---- !foo!bar baz diff --git a/src/ext_depends/D-YAML/test/data/unsupported-version.emitter-error b/src/ext_depends/D-YAML/test/data/unsupported-version.emitter-error deleted file mode 100644 index f9c6197..0000000 --- a/src/ext_depends/D-YAML/test/data/unsupported-version.emitter-error +++ /dev/null @@ -1,5 +0,0 @@ -- !StreamStart -- !DocumentStart { version: [5,6] } -- !Scalar { value: foo } -- !DocumentEnd -- !StreamEnd diff --git a/src/ext_depends/D-YAML/test/data/uri.data b/src/ext_depends/D-YAML/test/data/uri.data deleted file mode 100644 index 4532bd8..0000000 --- a/src/ext_depends/D-YAML/test/data/uri.data +++ /dev/null @@ -1,3 +0,0 @@ -%TAG !e! tag:example.com,2000:app/ ---- -- !e!tag%F0%9F%A4%94 baz diff --git a/src/ext_depends/D-YAML/test/data/uri.detect b/src/ext_depends/D-YAML/test/data/uri.detect deleted file mode 100644 index 981dd7f..0000000 --- a/src/ext_depends/D-YAML/test/data/uri.detect +++ /dev/null @@ -1 +0,0 @@ -tag:example.com,2000:app/tag🤔 diff --git a/src/ext_depends/D-YAML/test/data/utf16be.code b/src/ext_depends/D-YAML/test/data/utf16be.code deleted file mode 100644 index 97e0aca..0000000 --- a/src/ext_depends/D-YAML/test/data/utf16be.code +++ /dev/null @@ -1 +0,0 @@ -#dummy used in constructor test diff --git a/src/ext_depends/D-YAML/test/data/utf16be.data b/src/ext_depends/D-YAML/test/data/utf16be.data Binary files differdeleted file mode 100644 index 50dcfae..0000000 --- a/src/ext_depends/D-YAML/test/data/utf16be.data +++ /dev/null diff --git a/src/ext_depends/D-YAML/test/data/utf16le.code b/src/ext_depends/D-YAML/test/data/utf16le.code deleted file mode 100644 index 97e0aca..0000000 --- a/src/ext_depends/D-YAML/test/data/utf16le.code +++ /dev/null @@ -1 +0,0 @@ -#dummy used in constructor test diff --git a/src/ext_depends/D-YAML/test/data/utf16le.data b/src/ext_depends/D-YAML/test/data/utf16le.data Binary files differdeleted file mode 100644 index 76f5e73..0000000 --- a/src/ext_depends/D-YAML/test/data/utf16le.data +++ /dev/null diff --git a/src/ext_depends/D-YAML/test/data/utf8-implicit.code b/src/ext_depends/D-YAML/test/data/utf8-implicit.code deleted file mode 100644 index 97e0aca..0000000 --- a/src/ext_depends/D-YAML/test/data/utf8-implicit.code +++ /dev/null @@ -1 +0,0 @@ -#dummy used in constructor test diff --git a/src/ext_depends/D-YAML/test/data/utf8-implicit.data b/src/ext_depends/D-YAML/test/data/utf8-implicit.data deleted file mode 100644 index 9d8081e..0000000 --- a/src/ext_depends/D-YAML/test/data/utf8-implicit.data +++ /dev/null @@ -1 +0,0 @@ ---- implicit UTF-8 diff --git a/src/ext_depends/D-YAML/test/data/utf8.code b/src/ext_depends/D-YAML/test/data/utf8.code deleted file mode 100644 index 97e0aca..0000000 --- a/src/ext_depends/D-YAML/test/data/utf8.code +++ /dev/null @@ -1 +0,0 @@ -#dummy used in constructor test diff --git a/src/ext_depends/D-YAML/test/data/utf8.data b/src/ext_depends/D-YAML/test/data/utf8.data deleted file mode 100644 index 686f48a..0000000 --- a/src/ext_depends/D-YAML/test/data/utf8.data +++ /dev/null @@ -1 +0,0 @@ ---- UTF-8 diff --git a/src/ext_depends/D-YAML/test/data/value.data b/src/ext_depends/D-YAML/test/data/value.data deleted file mode 100644 index c5b7680..0000000 --- a/src/ext_depends/D-YAML/test/data/value.data +++ /dev/null @@ -1 +0,0 @@ -- = diff --git a/src/ext_depends/D-YAML/test/data/value.detect b/src/ext_depends/D-YAML/test/data/value.detect deleted file mode 100644 index 7c37d02..0000000 --- a/src/ext_depends/D-YAML/test/data/value.detect +++ /dev/null @@ -1 +0,0 @@ -tag:yaml.org,2002:value diff --git a/src/ext_depends/D-YAML/test/data/yaml.data b/src/ext_depends/D-YAML/test/data/yaml.data deleted file mode 100644 index a4bb3f8..0000000 --- a/src/ext_depends/D-YAML/test/data/yaml.data +++ /dev/null @@ -1,3 +0,0 @@ -- !!yaml '!' -- !!yaml '&' -- !!yaml '*' diff --git a/src/ext_depends/D-YAML/test/document-separator-in-quoted-scalar.yaml b/src/ext_depends/D-YAML/test/document-separator-in-quoted-scalar.yaml new file mode 100644 index 0000000..e268916 --- /dev/null +++ b/src/ext_depends/D-YAML/test/document-separator-in-quoted-scalar.yaml @@ -0,0 +1,19 @@ +%YAML 1.1 +--- +- name: document-separator-in-quoted-scalar + fail: true + mark: { line: 10, column: 1 } + mark2: { line: 8, column: 1 } + error: "While scanning a quoted scalar, found unexpected document separator" + yaml: | + --- + "this --- is correct" + --- + "this + ...is also + correct" + --- + "a quoted scalar + cannot contain + --- + document separators" diff --git a/src/ext_depends/D-YAML/test/duplicate-errors.yaml b/src/ext_depends/D-YAML/test/duplicate-errors.yaml new file mode 100644 index 0000000..2b61857 --- /dev/null +++ b/src/ext_depends/D-YAML/test/duplicate-errors.yaml @@ -0,0 +1,45 @@ +%YAML 1.1 +--- +- name: duplicate-anchor-1 + fail: true + mark: { line: 3, column: 3 } + mark2: { line: 1, column: 3 } + error: | + Unable to load test/duplicate-errors.yaml#duplicate-anchor-1:yaml: Found duplicate anchor: foo + yaml: | + - &foo bar + - &bar bar + - &foo bar +- name: duplicate-anchor-2 + fail: true + mark: { line: 1, column: 16 } + mark2: { line: 1, column: 1 } + error: | + Unable to load test/duplicate-errors.yaml#duplicate-anchor-2:yaml: Found duplicate anchor: foo + yaml: | + &foo [1, 2, 3, &foo 4] +- name: duplicate-mapping-key + fail: true + mark: { line: 2, column: 1 } + mark2: { line: 1, column: 1 } + error: | + Unable to load test/duplicate-errors.yaml#duplicate-mapping-key:yaml: Key 'a' appears multiple times in mapping + yaml: |- + a: 1 + a: 2 +- name: duplicate-tag-directive + fail: true + mark: { line: 2, column: 1 } + error: "Duplicate tag handle: !foo!" + yaml: | + %TAG !foo! bar + %TAG !foo! baz + --- foo +- name: duplicate-yaml-directive + fail: true + mark: { line: 2, column: 1 } + error: "Duplicate YAML directive" + yaml: | + %YAML 1.1 + %YAML 1.1 + --- foo diff --git a/src/ext_depends/D-YAML/test/emit-block-scalar-in-simple-key-context-bug.yaml b/src/ext_depends/D-YAML/test/emit-block-scalar-in-simple-key-context-bug.yaml new file mode 100644 index 0000000..53d8e58 --- /dev/null +++ b/src/ext_depends/D-YAML/test/emit-block-scalar-in-simple-key-context-bug.yaml @@ -0,0 +1,34 @@ +%YAML 1.1 +--- +- name: emit-block-scalar-in-simple-key-context-bug + yaml: | + ? |- + foo + : |- + bar + tree: | + +STR + +DOC + +MAP + =VAL |foo + =VAL |bar + -MAP + -DOC + -STR +- name: emit-block-scalar-in-simple-key-context-bug-canonical + yaml: | + %YAML 1.1 + --- !!map + { + ? !!str "foo" + : !!str "bar" + } + tree: | + +STR + +DOC --- + +MAP {} <tag:yaml.org,2002:map> + =VAL <tag:yaml.org,2002:str> "foo + =VAL <tag:yaml.org,2002:str> "bar + -MAP + -DOC + -STR diff --git a/src/ext_depends/D-YAML/test/emojianchor.yaml b/src/ext_depends/D-YAML/test/emojianchor.yaml new file mode 100644 index 0000000..7bf97ae --- /dev/null +++ b/src/ext_depends/D-YAML/test/emojianchor.yaml @@ -0,0 +1,29 @@ +%YAML 1.1 +--- +- name: emojianchor + yaml: | + --- + - &😠unicode anchor + tree: | + +STR + +DOC --- + +SEQ + =VAL &😠:unicode anchor + -SEQ + -DOC + -STR +- name: emojianchor-canonical + yaml: | + %YAML 1.1 + --- + !!seq [ + &😠!!str "unicode anchor" + ] + tree: | + +STR + +DOC --- + +SEQ [] <tag:yaml.org,2002:seq> + =VAL &😠<tag:yaml.org,2002:str> "unicode anchor + -SEQ + -DOC + -STR diff --git a/src/ext_depends/D-YAML/test/empty-document-bug.yaml b/src/ext_depends/D-YAML/test/empty-document-bug.yaml new file mode 100644 index 0000000..89c3acf --- /dev/null +++ b/src/ext_depends/D-YAML/test/empty-document-bug.yaml @@ -0,0 +1,13 @@ +%YAML 1.1 +--- +- name: empty-document-bug + yaml: "" + tree: | + +STR + -STR +- name: empty-document-bug-canonical + yaml: | + # This YAML stream contains no YAML documents. + tree: | + +STR + -STR diff --git a/src/ext_depends/D-YAML/test/expected.yaml b/src/ext_depends/D-YAML/test/expected.yaml new file mode 100644 index 0000000..2a75242 --- /dev/null +++ b/src/ext_depends/D-YAML/test/expected.yaml @@ -0,0 +1,26 @@ +%YAML 1.1 +--- +- name: expected-mapping + fail: true + mark: { line: 1, column: 5 } + mark2: { line: 1, column: 24 } + error: | + Unable to load test/expected.yaml#expected-mapping:yaml: Error constructing Node[]: Only mappings can be maps + yaml: | + --- !!map [not, a, map] +- name: expected-scalar + fail: true + mark: { line: 1, column: 5 } + mark2: { line: 1, column: 25 } + error: | + Unable to load test/expected.yaml#expected-scalar:yaml: Error constructing Node[]: Only scalars can be strings + yaml: | + --- !!str [not a scalar] +- name: expected-sequence + fail: true + mark: { line: 1, column: 5 } + mark2: { line: 1, column: 26 } + error: | + Unable to load test/expected.yaml#expected-sequence:yaml: Error constructing Pair[]: Only sequences can be sequences + yaml: | + --- !!seq {foo, bar, baz} diff --git a/src/ext_depends/D-YAML/test/fetch-complex-value-bug.yaml b/src/ext_depends/D-YAML/test/fetch-complex-value-bug.yaml new file mode 100644 index 0000000..d42ccb2 --- /dev/null +++ b/src/ext_depends/D-YAML/test/fetch-complex-value-bug.yaml @@ -0,0 +1,10 @@ +%YAML 1.1 +--- +- name: fetch-complex-value-bug + fail: true + mark: { line: 2, column: 2 } + mark2: { line: 1, column: 1 } + error: "While parsing a block mapping, expected block end, but found: blockMappingStart" + yaml: | + ? "foo" + : "bar" diff --git a/src/ext_depends/D-YAML/test/forbidden.yaml b/src/ext_depends/D-YAML/test/forbidden.yaml new file mode 100644 index 0000000..175b3e2 --- /dev/null +++ b/src/ext_depends/D-YAML/test/forbidden.yaml @@ -0,0 +1,28 @@ +%YAML 1.1 +--- +- name: forbidden-entry + fail: true + mark: { line: 1, column: 7 } + error: "Sequence keys are not allowed here" + yaml: | + test: - foo + - bar +- name: forbidden-key + fail: true + mark: { line: 1, column: 7 } + error: "Mapping keys are not allowed here" + yaml: | + test: ? foo + : bar +- name: forbidden-value + fail: true + mark: { line: 1, column: 10 } + error: "Mapping values are not allowed here" + yaml: | + test: key: value +- name: forbidden-starting-character + fail: true + mark: { line: 1, column: 1 } + error: "While scanning for the next token, found character '@', index 64 that cannot start any token" + yaml: | + @ diff --git a/src/ext_depends/D-YAML/test/invalid.yaml b/src/ext_depends/D-YAML/test/invalid.yaml new file mode 100644 index 0000000..2ec63c8 --- /dev/null +++ b/src/ext_depends/D-YAML/test/invalid.yaml @@ -0,0 +1,525 @@ +%YAML 1.1 +--- +- name: invalid-anchor + fail: true + mark: { line: 6, column: 13 } + mark2: { line: 2, column: 1 } + error: "While parsing a block sequence, expected block end, but found: scalar" + yaml: |+ + --- + - [ + &correct foo, + *correct, + *correct] # still correct + - *correct: still correct + - &correct-or-not[foo, bar] + +- name: invalid-anchor-2 + fail: true + mark: { line: 1, column: 7 } + mark2: { line: 1, column: 6 } + error: "While scanning an anchor or alias, expected a printable character besides '[', ']', '{', '}' and ',', but found [" + yaml: |- + foo: &[ +- name: invalid-base64-data + fail: true + mark: { line: 1, column: 5 } + mark2: { line: 2, column: 50 } + error: | + Unable to load test/invalid.yaml#invalid-base64-data:yaml: Unable to decode base64 value: Invalid length of encoded data + yaml: | + --- !!binary + binary data encoded in base64 should be here. +- name: invalid-base64-data-2 + fail: true + mark: { line: 1, column: 5 } + mark2: { line: 2, column: 29 } + error: | + Unable to load test/invalid.yaml#invalid-base64-data-2:yaml: Unable to decode base64 value: Invalid length of encoded data + yaml: | + --- !!binary + двоичные данные в base64 +- name: invalid-block-scalar-indicator + fail: true + mark: { line: 1, column: 7 } + mark2: { line: 1, column: 5 } + error: "While scanning a block scalar, expected a comment or line break, but found w" + yaml: | + --- > what is this? # a comment + data +- name: invalid-character-stream + yaml: "Control character ('\\x0'): \0" + mark: { line: 1, column: 1 } + error: "Special unicode characters are not allowed" + fail: true +- name: invalid-character-loader + yaml: "Control character ('\\x0'): \0" + fail: true + mark: { line: 1, column: 1 } + error: "Special unicode characters are not allowed" +- name: invalid-directive-line + fail: true + mark: { line: 1, column: 13 } + mark2: { line: 1, column: 1 } + error: "While scanning a directive, expected a comment or a line break, but found ?" + yaml: | + %YAML 1.1 ? # extra symbol + --- +- name: invalid-directive-name-1 + fail: true + mark: { line: 1, column: 2 } + mark2: { line: 1, column: 1 } + error: "While scanning a directive, expected alphanumeric, '-' or '_', but found" + yaml: | + % # no name at all + --- +- name: invalid-directive-name-2 + fail: true + mark: { line: 1, column: 20 } + mark2: { line: 1, column: 1 } + error: "While scanning a directive, expected alphanumeric, '-' or '_', but found :" + yaml: | + %invalid-characters:in-directive name + --- +- name: invalid-escape-character + fail: true + mark: { line: 1, column: 54 } + mark2: { line: 1, column: 1 } + error: "While scanning a double quoted scalar, found unsupported escape character ?" + yaml: | + "some escape characters are \ncorrect, but this one \?\nis not\n" +- name: invalid-escape-character-2 + fail: true + mark: { line: 1, column: 3 } + mark2: { line: 1, column: 1 } + error: "While scanning a double quoted scalar, found unsupported escape character :" + yaml: |- + "\:" +- name: invalid-escape-numbers + fail: true + mark: { line: 1, column: 11 } + mark2: { line: 1, column: 1 } + error: "While scanning a double quoted scalar, expected an escape sequence of hexadecimal numbers, but found ?" + yaml: | + "hm.... \u123?" +- name: invalid-incomplete-escape + fail: true + mark: { line: 1, column: 4 } + mark2: { line: 1, column: 1 } + error: "While scanning a double quoted scalar, expected an escape sequence of hexadecimal numbers, but found \"" + yaml: | + "\x" +- name: invalid-incomplete-scalar + fail: true + mark: { line: 1, column: 20 } + mark2: { line: 1, column: 1 } + error: "While scanning a quoted scalar, found unexpected end of buffer" + yaml: |- + "an unfinished scal +- name: invalid-incomplete-scalar-2 + fail: true + mark: { line: 2, column: 1 } + mark2: { line: 1, column: 1 } + error: "While scanning a quoted scalar, found unexpected document separator" + yaml: | + "an unfinished scal + --- +- name: invalid-indentation-indicator-1 + fail: true + mark: { line: 1, column: 6 } + mark2: { line: 1, column: 5 } + error: "While scanning a block scalar, expected an indentation indicator in range 1-9, but found 0" + yaml: | + --- >0 # not valid + data +- name: invalid-indentation-indicator-2 + fail: true + mark: { line: 1, column: 7 } + mark2: { line: 1, column: 5 } + error: "While scanning a block scalar, expected an indentation indicator in range 1-9, but found 0" + yaml: | + --- >-0 + data +- name: invalid-indentation-indicator-3 + fail: true + mark: { line: 1, column: 7 } + mark2: { line: 1, column: 6 } + error: "While scanning a block scalar, expected an indentation indicator in range 1-9, but found 0" + yaml: | + foo: |0 +- name: invalid-indentation-indicator-4 + fail: true + mark: { line: 1, column: 7 } + mark2: { line: 1, column: 6 } + error: "While scanning a block scalar, expected a chomping or indentation indicator, but found b" + yaml: | + foo: |b +- name: invalid-item-without-trailing-break + fail: true + mark: { line: 2, column: 3 } + mark2: { line: 2, column: 1 } + error: "While scanning a simple key, could not find expected ':'" + yaml: |- + - + -0 +- name: invalid-merge-1 + fail: true + mark: { line: 3, column: 1 } + mark2: { line: 1, column: 1 } + error: | + Unable to load test/invalid.yaml#invalid-merge-1:yaml: While constructing a mapping, expected a mapping or a list of mappings for merging, but found: string + yaml: | + foo: bar + <<: baz +- name: invalid-merge-2 + fail: true + mark: { line: 3, column: 1 } + mark2: { line: 1, column: 1 } + error: | + Unable to load test/invalid.yaml#invalid-merge-2:yaml: While constructing a mapping, expected a mapping or a list of mappings for merging, but found: string + yaml: | + foo: bar + <<: [x: 1, y: 2, z, t: 4] +- name: invalid-merge-3 + fail: true + mark: { line: 2, column: 19 } + mark2: { line: 2, column: 4 } + error: | + Unable to load test/invalid.yaml#invalid-merge-3:yaml: While constructing a mapping, expected a mapping or a list of mappings for merging, but found: integer + yaml: | + a: &anchor 3 + b: { <<: *anchor } +- name: invalid-omap-1 + fail: true + mark: { line: 1, column: 5 } + mark2: { line: 4, column: 1 } + error: | + Unable to load test/invalid.yaml#invalid-omap-1:yaml: Error constructing Pair[]: Only sequences can be ordered maps + yaml: | + --- !!omap + foo: bar + baz: bat +- name: invalid-omap-2 + fail: true + mark: { line: 3, column: 3 } + error: | + Unable to load test/invalid.yaml#invalid-omap-2:yaml: While constructing an ordered map, expected a mapping with single element + yaml: | + --- !!omap + - foo: bar + - baz +- name: invalid-omap-3 + fail: true + mark: { line: 3, column: 3 } + error: | + Unable to load test/invalid.yaml#invalid-omap-3:yaml: While constructing an ordered map, expected a mapping with single element + yaml: | + --- !!omap + - foo: bar + - baz: bar + bar: bar +- name: invalid-pairs-1 + fail: true + mark: { line: 1, column: 5 } + mark2: { line: 4, column: 1 } + error: | + Unable to load test/invalid.yaml#invalid-pairs-1:yaml: Error constructing Pair[]: Only sequences can be pairs + yaml: | + --- !!pairs + foo: bar + baz: bat +- name: invalid-pairs-2 + fail: true + mark: { line: 3, column: 3 } + error: | + Unable to load test/invalid.yaml#invalid-pairs-2:yaml: While constructing pairs, expected a mapping with single element + yaml: | + --- !!pairs + - foo: bar + - baz +- name: invalid-pairs-3 + fail: true + mark: { line: 3, column: 3 } + error: | + Unable to load test/invalid.yaml#invalid-pairs-3:yaml: While constructing pairs, expected a mapping with single element + yaml: | + --- !!pairs + - foo: bar + - baz: bar + bar: bar +- name: invalid-simple-key + fail: true + mark: { line: 3, column: 1 } + mark2: { line: 2, column: 1 } + error: "While scanning a simple key, could not find expected ':'" + yaml: | + key: value + invalid simple key + next key: next value +- name: invalid-simple-key-2 + fail: true + mark: { line: 2, column: 4 } + mark2: { line: 2, column: 1 } + error: "While scanning a simple key, could not find expected ':'" + yaml: |- + foo: &A bar + *A ] +- name: invalid-simple-key-3 + fail: true + mark: { line: 2, column: 4 } + mark2: { line: 2, column: 1 } + error: "While scanning a simple key, could not find expected ':'" + yaml: |- + foo: bar + meh +- name: invalid-starting-character + fail: true + mark: { line: 1, column: 1 } + error: "While scanning for the next token, found character '@', index 64 that cannot start any token" + yaml: | + @@@@@@@@@@@@@@@@@@@ +- name: invalid-tag-1 + fail: true + mark: { line: 1, column: 8 } + mark2: { line: 1, column: 3 } + error: "While scanning a tag, expected a '>', but found #" + yaml: | + - !<foo#bar> baz +- name: invalid-tag-2 + fail: true + mark: { line: 1, column: 14 } + mark2: { line: 1, column: 3 } + error: "While scanning a tag, expected a ' ', but found #" + yaml: | + - !prefix!foo#bar baz +- name: invalid-tag-3 + fail: true + mark: { line: 1, column: 10 } + mark2: { line: 1, column: 6 } + error: "While scanning a tag, expected a ' ', but found #" + yaml: | + foo: !<a># +- name: invalid-tag-4 + fail: true + mark: { line: 1, column: 9 } + mark2: { line: 1, column: 6 } + error: "While scanning a tag, expected a '>', but found #" + yaml: | + foo: !<a# +- name: invalid-tag-directive-handle + fail: true + mark: { line: 1, column: 8 } + mark2: { line: 1, column: 1 } + error: "While scanning a directive handle, expected ' ', but found !" + yaml: | + %TAG !!! !!! + --- +- name: invalid-tag-directive-prefix + fail: true + mark: { line: 1, column: 27 } + mark2: { line: 1, column: 1 } + error: "While scanning a directive prefix, expected ' ', but found #" + yaml: | + %TAG ! tag:zz.com/foo#bar # '#' is not allowed in URLs + --- +- name: invalid-tag-handle-1 + fail: true + mark: { line: 1, column: 9 } + mark2: { line: 1, column: 1 } + error: "While scanning a directive, expected a !, but found f" + yaml: | + %TAG foo bar + --- +- name: invalid-tag-handle-2 + fail: true + mark: { line: 1, column: 13 } + mark2: { line: 1, column: 1 } + error: "While scanning a directive, expected a !, but found" + yaml: | + %TAG !foo bar + --- +- name: invalid-tag-handle-3 + fail: true + mark: { line: 1, column: 10 } + mark2: { line: 1, column: 8 } + error: "While scanning a tag, expected a !, but found :" + yaml: |- + Error: !a:! + --- +- name: invalid-uri-escapes-1 + fail: true + mark: { line: 1, column: 12 } + mark2: { line: 1, column: 5 } + error: "While scanning a tag, expected a URI escape sequence of 2 hexadecimal numbers, but found x?" + yaml: | + --- !<tag:%x?y> foo +- name: invalid-uri-escapes-2 + fail: true + mark: { line: 1, column: 10 } + mark2: { line: 1, column: 5 } + error: "While scanning a tag, found invalid UTF-8 data encoded in URI escape sequence" + yaml: | + --- !<%FF> foo +- name: invalid-uri-escapes-3 + fail: true + mark: { line: 1, column: 25 } + mark2: { line: 1, column: 5 } + error: "While scanning a tag, found invalid UTF-8 data encoded in URI escape sequence" + yaml: | + --- !<foo%d0%af%d0%af%d0bar> baz +- name: invalid-uri-escapes-4 + fail: true + mark: { line: 1, column: 15 } + mark2: { line: 1, column: 8 } + error: "While scanning a tag, expected a URI escape sequence of 2 hexadecimal numbers, but found :)" + yaml: |- + Error: !e!tag%:) +- name: invalid-uri-utf8 + fail: true + mark: { line: 1, column: 20 } + mark2: { line: 1, column: 8 } + error: "While scanning a tag, found invalid UTF-8 data encoded in URI escape sequence" + yaml: |- + Error: !e!tag%99%99 +- name: invalid-uri + fail: true + mark: { line: 1, column: 10 } + mark2: { line: 1, column: 5 } + error: "While parsing a tag, expected a URI, but found" + yaml: | + --- !foo! bar +- name: invalid-uri-2 + fail: true + mark: { line: 1, column: 8 } + mark2: { line: 1, column: 6 } + error: "While parsing a tag, expected a URI, but found #" + yaml: | + foo: !<# +- name: invalid-yaml-directive-version-1 + fail: true + mark: { line: 2, column: 6 } + mark2: { line: 2, column: 1 } + error: "While scanning a directive, expected a digit, but found" + yaml: | + # No version at all. + %YAML + --- +- name: invalid-yaml-directive-version-2 + fail: true + mark: { line: 1, column: 10 } + mark2: { line: 1, column: 1 } + error: "While scanning a directive, expected digit or '.', but found e" + yaml: | + %YAML 1e-5 + --- +- name: invalid-yaml-directive-version-3 + fail: true + mark: { line: 1, column: 9 } + mark2: { line: 1, column: 1 } + error: "While scanning a directive, expected a digit, but found" + yaml: | + %YAML 1. + --- +- name: invalid-yaml-directive-version-4 + fail: true + mark: { line: 1, column: 12 } + mark2: { line: 1, column: 1 } + error: "While scanning a directive, expected digit or '.', but found ." + yaml: | + %YAML 1.132.435 + --- +- name: invalid-yaml-directive-version-5 + fail: true + mark: { line: 1, column: 7 } + mark2: { line: 1, column: 1 } + error: "While scanning a directive, expected a digit, but found A" + yaml: | + %YAML A.0 + --- +- name: invalid-yaml-directive-version-6 + fail: true + mark: { line: 1, column: 11 } + mark2: { line: 1, column: 1 } + error: "While scanning a directive, expected a digit, but found C" + yaml: | + %YAML 123.C + --- +- name: invalid-yaml-directive-version-7 + fail: true + mark: { line: 1, column: 11 } + mark2: { line: 1, column: 1 } + error: "While scanning a directive, expected a comment or a line break, but found ?" + yaml: | + %YAML 1.0 ? +- name: invalid-yaml-directive-version-8 + fail: true + mark: { line: 1, column: 11 } + mark2: { line: 1, column: 1 } + error: "While scanning a directive prefix, expected ' ', but found >" + yaml: | + %TAG !a! !> +- name: invalid-yaml-directive-version-9 + fail: true + mark: { line: 1, column: 9 } + mark2: { line: 1, column: 1 } + error: "While scanning a directive handle, expected ' ', but found <" + yaml: | + %TAG !a!< +- name: invalid-yaml-directive-version-10 + fail: true + mark: { line: 1, column: 7 } + mark2: { line: 1, column: 1 } + error: "While scanning a directive, expected a digit, but found ?" + yaml: | + %YAML ? +- name: invalid-yaml-directive-version-11 + fail: true + mark: { line: 1, column: 10 } + mark2: { line: 1, column: 1 } + error: "While scanning a directive, expected digit or '.', but found ?" + yaml: | + %YAML 1.1? +- name: invalid-yaml-directive-version-12 + fail: true + mark: { line: 1, column: 8 } + mark2: { line: 1, column: 1 } + error: "While scanning a directive, expected digit or '.', but found ?" + yaml: | + %YAML 1? +- name: invalid-yaml-directive-version-13 + fail: true + mark: { line: 1, column: 3 } + mark2: { line: 1, column: 1 } + error: "While scanning a directive, expected alphanumeric, '-' or '_', but found ?" + yaml: | + %b? +- name: invalid-yaml-directive-version-14 + fail: true + mark: { line: 1, column: 2 } + mark2: { line: 1, column: 1 } + error: "While scanning a directive, expected alphanumeric, '-' or '_', but found ?" + yaml: | + %? +- name: invalid-yaml-version + fail: true + mark: { line: 1, column: 1 } #TODO: maybe this should be a later column + error: "Incompatible document (version 1.x is required)" + yaml: | + %YAML 2.0 + --- foo +- name: invalid-block-sequence + fail: true + mark: { line: 2, column: 1 } + mark2: { line: 1, column: 1 } + error: "While parsing a block sequence, expected block end, but found: flowEntry" + yaml: |- + - a + , +- name: invalid-block-mapping + fail: true + mark: { line: 2, column: 1 } + mark2: { line: 1, column: 1 } + error: "While parsing a block mapping, expected block end, but found: flowEntry" + yaml: |- + a: b + , diff --git a/src/ext_depends/D-YAML/test/multiline.yaml b/src/ext_depends/D-YAML/test/multiline.yaml new file mode 100644 index 0000000..127075f --- /dev/null +++ b/src/ext_depends/D-YAML/test/multiline.yaml @@ -0,0 +1,15 @@ +%YAML 1.1 +--- +- name: end-of-buffer-multiline #Issue 309 - https://github.com/dlang-community/D-YAML/issues/309 + tree: | + +STR + +DOC + +MAP + =VAL :exp + =VAL |foobar + -MAP + -DOC + -STR + yaml: |- + exp: | + foobar diff --git a/src/ext_depends/D-YAML/test/no-block-collection-end.yaml b/src/ext_depends/D-YAML/test/no-block-collection-end.yaml new file mode 100644 index 0000000..44717e8 --- /dev/null +++ b/src/ext_depends/D-YAML/test/no-block-collection-end.yaml @@ -0,0 +1,11 @@ +%YAML 1.1 +--- +- name: no-block-collection-end + fail: true + mark: { line: 3, column: 1 } + mark2: { line: 1, column: 1 } + error: "While parsing a block sequence, expected block end, but found: key" + yaml: | + - foo + - bar + baz: bar diff --git a/src/ext_depends/D-YAML/test/no-block-mapping-end.yaml b/src/ext_depends/D-YAML/test/no-block-mapping-end.yaml new file mode 100644 index 0000000..bc59559 --- /dev/null +++ b/src/ext_depends/D-YAML/test/no-block-mapping-end.yaml @@ -0,0 +1,18 @@ +%YAML 1.1 +--- +- name: no-block-mapping-end + fail: true + mark: { line: 1, column: 12 } + mark2: { line: 1, column: 1 } + error: "While parsing a block mapping, expected block end, but found: scalar" + yaml: | + foo: "bar" "baz" +- name: no-block-mapping-end-2 + fail: true + mark: { line: 3, column: 1 } + mark2: { line: 1, column: 1 } + error: "While parsing a block mapping, expected block end, but found: value" + yaml: | + ? foo + : bar + : baz diff --git a/src/ext_depends/D-YAML/test/no-document-start.yaml b/src/ext_depends/D-YAML/test/no-document-start.yaml new file mode 100644 index 0000000..e2f7e20 --- /dev/null +++ b/src/ext_depends/D-YAML/test/no-document-start.yaml @@ -0,0 +1,10 @@ +%YAML 1.1 +--- +- name: no-document-start + fail: true + mark: { line: 3, column: 1 } + error: "Expected document start but found blockMappingStart" + yaml: | + %YAML 1.1 + # no --- + foo: bar diff --git a/src/ext_depends/D-YAML/test/no-flow-mapping-end.yaml b/src/ext_depends/D-YAML/test/no-flow-mapping-end.yaml new file mode 100644 index 0000000..4cf8e36 --- /dev/null +++ b/src/ext_depends/D-YAML/test/no-flow-mapping-end.yaml @@ -0,0 +1,30 @@ +%YAML 1.1 +--- +- name: no-flow-mapping-end + fail: true + mark: { line: 1, column: 12 } + mark2: { line: 1, column: 1 } + error: "While parsing a flow mapping, expected ',' or '}', but got: flowSequenceEnd" + yaml: | + { foo: bar ] +- name: no-flow-mapping-end-2 + fail: true + mark: { line: 1, column: 2 } + mark2: { line: 1, column: 2 } + error: "While parsing a flow node, expected node content, but found: streamEnd" + yaml: |- + { +- name: no-flow-mapping-end-3 + fail: true + mark: { line: 1, column: 7 } + mark2: { line: 1, column: 1 } + error: "While parsing a flow mapping, expected ',' or '}', but got: streamEnd" + yaml: |- + { blah +- name: no-flow-mapping-end-4 + fail: true + mark: { line: 1, column: 7 } + mark2: { line: 1, column: 1 } + error: "While parsing a flow mapping, expected ',' or '}', but got: streamEnd" + yaml: |- + {a,b,c diff --git a/src/ext_depends/D-YAML/test/no-flow-sequence-end.yaml b/src/ext_depends/D-YAML/test/no-flow-sequence-end.yaml new file mode 100644 index 0000000..980e15e --- /dev/null +++ b/src/ext_depends/D-YAML/test/no-flow-sequence-end.yaml @@ -0,0 +1,30 @@ +%YAML 1.1 +--- +- name: no-flow-sequence-end + fail: true + mark: { line: 1, column: 10 } + mark2: { line: 1, column: 1 } + error: "While parsing a flow sequence, expected ',' or ']', but got: flowMappingEnd" + yaml: | + [foo, bar} +- name: no-flow-sequence-end-2 + fail: true + mark: { line: 1, column: 2 } + mark2: { line: 1, column: 2 } + error: "While parsing a flow node, expected node content, but found: streamEnd" + yaml: |- + [ +- name: no-flow-sequence-end-3 + fail: true + mark: { line: 1, column: 7 } + mark2: { line: 1, column: 1 } + error: "While parsing a flow sequence, expected ',' or ']', but got: streamEnd" + yaml: |- + [ blah +- name: no-flow-sequence-end-4 + fail: true + mark: { line: 1, column: 7 } + mark2: { line: 1, column: 1 } + error: "While parsing a flow sequence, expected ',' or ']', but got: streamEnd" + yaml: |- + [a,b,c diff --git a/src/ext_depends/D-YAML/test/no-node.yaml b/src/ext_depends/D-YAML/test/no-node.yaml new file mode 100644 index 0000000..6a06462 --- /dev/null +++ b/src/ext_depends/D-YAML/test/no-node.yaml @@ -0,0 +1,16 @@ +%YAML 1.1 +--- +- name: no-node-1 + fail: true + mark: { line: 1, column: 8 } + mark2: { line: 1, column: 1 } + error: "While parsing a block sequence, expected block end, but found: flowSequenceEnd" + yaml: | + - !foo ] +- name: no-node-2 + fail: true + mark: { line: 1, column: 10 } + mark2: { line: 1, column: 3 } + error: "While parsing a flow sequence, expected ',' or ']', but got: flowMappingEnd" + yaml: | + - [ !foo } ] diff --git a/src/ext_depends/D-YAML/test/question-mark-in-flow-context.yaml b/src/ext_depends/D-YAML/test/question-mark-in-flow-context.yaml new file mode 100644 index 0000000..b85ef63 --- /dev/null +++ b/src/ext_depends/D-YAML/test/question-mark-in-flow-context.yaml @@ -0,0 +1,14 @@ +%YAML 1.1 +--- +- name: question-mark-in-flow-context + yaml: | + { foo?bar } + tree: | + +STR + +DOC + +MAP {} + =VAL :foo?bar + =VAL : + -MAP + -DOC + -STR diff --git a/src/ext_depends/D-YAML/test/recursive-alias.yaml b/src/ext_depends/D-YAML/test/recursive-alias.yaml new file mode 100644 index 0000000..6de2eb2 --- /dev/null +++ b/src/ext_depends/D-YAML/test/recursive-alias.yaml @@ -0,0 +1,12 @@ +%YAML 1.1 +--- +- name: recursive-alias + fail: true + mark: { line: 2, column: 8 } + mark2: { line: 1, column: 4 } + error: | + Unable to load test/recursive-alias.yaml#recursive-alias:yaml: Found recursive alias: anchor + yaml: | + a: &anchor { + b: *anchor + } diff --git a/src/ext_depends/D-YAML/test/remove-possible-simple-key-bug.yaml b/src/ext_depends/D-YAML/test/remove-possible-simple-key-bug.yaml new file mode 100644 index 0000000..ca4943f --- /dev/null +++ b/src/ext_depends/D-YAML/test/remove-possible-simple-key-bug.yaml @@ -0,0 +1,11 @@ +%YAML 1.1 +--- +- name: remove-possible-simple-key-bug + fail: true + mark: { line: 2, column: 4 } + mark2: { line: 2, column: 1 } + error: "While scanning a simple key, could not find expected ':'" + yaml: | + foo: &A bar + *A ] # The ']' indicator triggers remove_possible_simple_key, + # which should raise an error. diff --git a/src/ext_depends/D-YAML/test/run-parser-crash-bug.yaml b/src/ext_depends/D-YAML/test/run-parser-crash-bug.yaml new file mode 100644 index 0000000..0a1a56e --- /dev/null +++ b/src/ext_depends/D-YAML/test/run-parser-crash-bug.yaml @@ -0,0 +1,29 @@ +%YAML 1.1 +--- +- name: run-parser-crash-bug + tree: | + +STR + +DOC --- + +SEQ + =VAL :Harry Potter and the Prisoner of Azkaban + =VAL :Harry Potter and the Goblet of Fire + =VAL :Harry Potter and the Order of the Phoenix + -SEQ + -DOC + +DOC --- + +SEQ + =VAL :Memoirs Found in a Bathtub + =VAL :Snow Crash + =VAL :Ghost World + -SEQ + -DOC + -STR + yaml: | + --- + - Harry Potter and the Prisoner of Azkaban + - Harry Potter and the Goblet of Fire + - Harry Potter and the Order of the Phoenix + --- + - Memoirs Found in a Bathtub + - Snow Crash + - Ghost World diff --git a/src/ext_depends/D-YAML/test/scan-document-end-bug.yaml b/src/ext_depends/D-YAML/test/scan-document-end-bug.yaml new file mode 100644 index 0000000..4839c88 --- /dev/null +++ b/src/ext_depends/D-YAML/test/scan-document-end-bug.yaml @@ -0,0 +1,24 @@ +%YAML 1.1 +--- +- name: scan-document-end-bug + yaml: |- + # Ticket #4 + --- + ... + tree: | + +STR + +DOC --- + =VAL : + -DOC ... + -STR +- name: scan-document-end-bug-canonical + yaml: | + %YAML 1.1 + --- + !!null "" + tree: | + +STR + +DOC --- + =VAL <tag:yaml.org,2002:null> " + -DOC + -STR diff --git a/src/ext_depends/D-YAML/test/scan-line-break-bug.yaml b/src/ext_depends/D-YAML/test/scan-line-break-bug.yaml new file mode 100644 index 0000000..8e70410 --- /dev/null +++ b/src/ext_depends/D-YAML/test/scan-line-break-bug.yaml @@ -0,0 +1,27 @@ +%YAML 1.1 +--- +- name: scan-line-break-bug + yaml: "foo:\r\n bar\r\n baz\r\n" + tree: | + +STR + +DOC + +MAP + =VAL :foo + =VAL :bar baz + -MAP + -DOC + -STR +- name: scan-line-break-bug-canonical + yaml: | + %YAML 1.1 + --- + !!map { ? !!str "foo" : !!str "bar baz" } + tree: | + +STR + +DOC --- + +MAP {} <tag:yaml.org,2002:map> + =VAL <tag:yaml.org,2002:str> "foo + =VAL <tag:yaml.org,2002:str> "bar baz + -MAP + -DOC + -STR diff --git a/src/ext_depends/D-YAML/test/sloppy-indentation.yaml b/src/ext_depends/D-YAML/test/sloppy-indentation.yaml new file mode 100644 index 0000000..86b66a0 --- /dev/null +++ b/src/ext_depends/D-YAML/test/sloppy-indentation.yaml @@ -0,0 +1,17 @@ +%YAML 1.1 +--- +- name: sloppy-indentation + yaml: "---\nin the block context:\n indentation should be kept: { \n but in\ + \ the flow context: [\nit may be violated]\n}\n---\nthe parser does not require\ + \ scalars\nto be indented with at least one space\n...\n---\n\"the parser does not\ + \ require scalars\nto be indented with at least one space\"\n---\nfoo:\n bar:\ + \ 'quoted scalars\nmay not adhere indentation'\n" +- name: sloppy-indentation-canonical + yaml: "%YAML 1.1\n---\n!!map { \n ? !!str \"in the block context\"\n \ + \ : !!map {\n ? !!str \"indentation should be kept\"\n : !!map {\n\ + \ ? !!str \"but in the flow context\"\n : !!seq [ !!str \"\ + it may be violated\" ]\n }\n }\n}\n--- !!str\n\"the parser does not require\ + \ scalars to be indented with at least one space\"\n--- !!str\n\"the parser does\ + \ not require scalars to be indented with at least one space\"\n--- !!map\n{ ? !!str\ + \ \"foo\": { ? !!str \"bar\" : !!str \"quoted scalars may not adhere indentation\"\ + \ } }\n" diff --git a/src/ext_depends/D-YAML/test/spec 1.1/spec-02-01.yaml b/src/ext_depends/D-YAML/test/spec 1.1/spec-02-01.yaml new file mode 100644 index 0000000..8452f53 --- /dev/null +++ b/src/ext_depends/D-YAML/test/spec 1.1/spec-02-01.yaml @@ -0,0 +1,17 @@ +%YAML 1.1 +--- +- name: spec-02-01 + tree: | + +STR + +DOC + +SEQ + =VAL :Mark McGwire + =VAL :Sammy Sosa + =VAL :Ken Griffey + -SEQ + -DOC + -STR + yaml: | + - Mark McGwire + - Sammy Sosa + - Ken Griffey diff --git a/src/ext_depends/D-YAML/test/spec 1.1/spec-02-02.yaml b/src/ext_depends/D-YAML/test/spec 1.1/spec-02-02.yaml new file mode 100644 index 0000000..18f4ca6 --- /dev/null +++ b/src/ext_depends/D-YAML/test/spec 1.1/spec-02-02.yaml @@ -0,0 +1,20 @@ +%YAML 1.1 +--- +- name: spec-02-02 + tree: | + +STR + +DOC + +MAP + =VAL :hr + =VAL :65 + =VAL :avg + =VAL :0.278 + =VAL :rbi + =VAL :147 + -MAP + -DOC + -STR + yaml: | + hr: 65 # Home runs + avg: 0.278 # Batting average + rbi: 147 # Runs Batted In diff --git a/src/ext_depends/D-YAML/test/spec 1.1/spec-02-03.yaml b/src/ext_depends/D-YAML/test/spec 1.1/spec-02-03.yaml new file mode 100644 index 0000000..9bb0dde --- /dev/null +++ b/src/ext_depends/D-YAML/test/spec 1.1/spec-02-03.yaml @@ -0,0 +1,31 @@ +%YAML 1.1 +--- +- name: spec-02-03 + tree: | + +STR + +DOC + +MAP + =VAL :american + +SEQ + =VAL :Boston Red Sox + =VAL :Detroit Tigers + =VAL :New York Yankees + -SEQ + =VAL :national + +SEQ + =VAL :New York Mets + =VAL :Chicago Cubs + =VAL :Atlanta Braves + -SEQ + -MAP + -DOC + -STR + yaml: | + american: + - Boston Red Sox + - Detroit Tigers + - New York Yankees + national: + - New York Mets + - Chicago Cubs + - Atlanta Braves diff --git a/src/ext_depends/D-YAML/test/spec 1.1/spec-02-04.yaml b/src/ext_depends/D-YAML/test/spec 1.1/spec-02-04.yaml new file mode 100644 index 0000000..2dbe91d --- /dev/null +++ b/src/ext_depends/D-YAML/test/spec 1.1/spec-02-04.yaml @@ -0,0 +1,35 @@ +%YAML 1.1 +--- +- name: spec-02-04 + tree: | + +STR + +DOC + +SEQ + +MAP + =VAL :name + =VAL :Mark McGwire + =VAL :hr + =VAL :65 + =VAL :avg + =VAL :0.278 + -MAP + +MAP + =VAL :name + =VAL :Sammy Sosa + =VAL :hr + =VAL :63 + =VAL :avg + =VAL :0.288 + -MAP + -SEQ + -DOC + -STR + yaml: | + - + name: Mark McGwire + hr: 65 + avg: 0.278 + - + name: Sammy Sosa + hr: 63 + avg: 0.288 diff --git a/src/ext_depends/D-YAML/test/spec 1.1/spec-02-05.yaml b/src/ext_depends/D-YAML/test/spec 1.1/spec-02-05.yaml new file mode 100644 index 0000000..f486192 --- /dev/null +++ b/src/ext_depends/D-YAML/test/spec 1.1/spec-02-05.yaml @@ -0,0 +1,29 @@ +%YAML 1.1 +--- +- name: spec-02-05 + tree: | + +STR + +DOC + +SEQ + +SEQ [] + =VAL :name + =VAL :hr + =VAL :avg + -SEQ + +SEQ [] + =VAL :Mark McGwire + =VAL :65 + =VAL :0.278 + -SEQ + +SEQ [] + =VAL :Sammy Sosa + =VAL :63 + =VAL :0.288 + -SEQ + -SEQ + -DOC + -STR + yaml: | + - [name , hr, avg ] + - [Mark McGwire, 65, 0.278] + - [Sammy Sosa , 63, 0.288] diff --git a/src/ext_depends/D-YAML/test/spec 1.1/spec-02-06.yaml b/src/ext_depends/D-YAML/test/spec 1.1/spec-02-06.yaml new file mode 100644 index 0000000..c42129d --- /dev/null +++ b/src/ext_depends/D-YAML/test/spec 1.1/spec-02-06.yaml @@ -0,0 +1,30 @@ +%YAML 1.1 +--- +- name: spec-02-06 + tree: | + +STR + +DOC + +MAP + =VAL :Mark McGwire + +MAP {} + =VAL :hr + =VAL :65 + =VAL :avg + =VAL :0.278 + -MAP + =VAL :Sammy Sosa + +MAP {} + =VAL :hr + =VAL :63 + =VAL :avg + =VAL :0.288 + -MAP + -MAP + -DOC + -STR + yaml: | + Mark McGwire: {hr: 65, avg: 0.278} + Sammy Sosa: { + hr: 63, + avg: 0.288 + } diff --git a/src/ext_depends/D-YAML/test/spec 1.1/spec-02-07.yaml b/src/ext_depends/D-YAML/test/spec 1.1/spec-02-07.yaml new file mode 100644 index 0000000..7ff92e9 --- /dev/null +++ b/src/ext_depends/D-YAML/test/spec 1.1/spec-02-07.yaml @@ -0,0 +1,30 @@ +%YAML 1.1 +--- +- name: spec-02-07 + tree: | + +STR + +DOC --- + +SEQ + =VAL :Mark McGwire + =VAL :Sammy Sosa + =VAL :Ken Griffey + -SEQ + -DOC + +DOC --- + +SEQ + =VAL :Chicago Cubs + =VAL :St Louis Cardinals + -SEQ + -DOC + -STR + yaml: | + # Ranking of 1998 home runs + --- + - Mark McGwire + - Sammy Sosa + - Ken Griffey + + # Team ranking + --- + - Chicago Cubs + - St Louis Cardinals diff --git a/src/ext_depends/D-YAML/test/spec 1.1/spec-02-08.yaml b/src/ext_depends/D-YAML/test/spec 1.1/spec-02-08.yaml new file mode 100644 index 0000000..26a8bec --- /dev/null +++ b/src/ext_depends/D-YAML/test/spec 1.1/spec-02-08.yaml @@ -0,0 +1,37 @@ +%YAML 1.1 +--- +- name: spec-02-08 + tree: | + +STR + +DOC --- + +MAP + =VAL :time + =VAL :20:03:20 + =VAL :player + =VAL :Sammy Sosa + =VAL :action + =VAL :strike (miss) + -MAP + -DOC ... + +DOC --- + +MAP + =VAL :time + =VAL :20:03:47 + =VAL :player + =VAL :Sammy Sosa + =VAL :action + =VAL :grand slam + -MAP + -DOC ... + -STR + yaml: | + --- + time: 20:03:20 + player: Sammy Sosa + action: strike (miss) + ... + --- + time: 20:03:47 + player: Sammy Sosa + action: grand slam + ... diff --git a/src/ext_depends/D-YAML/test/spec 1.1/spec-02-09.yaml b/src/ext_depends/D-YAML/test/spec 1.1/spec-02-09.yaml new file mode 100644 index 0000000..1288847 --- /dev/null +++ b/src/ext_depends/D-YAML/test/spec 1.1/spec-02-09.yaml @@ -0,0 +1,29 @@ +%YAML 1.1 +--- +- name: spec-02-09 + tree: | + +STR + +DOC --- + +MAP + =VAL :hr + +SEQ + =VAL :Mark McGwire + =VAL :Sammy Sosa + -SEQ + =VAL :rbi + +SEQ + =VAL :Sammy Sosa + =VAL :Ken Griffey + -SEQ + -MAP + -DOC + -STR + yaml: | + --- + hr: # 1998 hr ranking + - Mark McGwire + - Sammy Sosa + rbi: + # 1998 rbi ranking + - Sammy Sosa + - Ken Griffey diff --git a/src/ext_depends/D-YAML/test/spec 1.1/spec-02-10.yaml b/src/ext_depends/D-YAML/test/spec 1.1/spec-02-10.yaml new file mode 100644 index 0000000..ed2e3cb --- /dev/null +++ b/src/ext_depends/D-YAML/test/spec 1.1/spec-02-10.yaml @@ -0,0 +1,29 @@ +%YAML 1.1 +--- +- name: spec-02-10 + tree: | + +STR + +DOC --- + +MAP + =VAL :hr + +SEQ + =VAL :Mark McGwire + =VAL &SS :Sammy Sosa + -SEQ + =VAL :rbi + +SEQ + =ALI *SS + =VAL :Ken Griffey + -SEQ + -MAP + -DOC + -STR + yaml: | + --- + hr: + - Mark McGwire + # Following node labeled SS + - &SS Sammy Sosa + rbi: + - *SS # Subsequent occurrence + - Ken Griffey diff --git a/src/ext_depends/D-YAML/test/spec 1.1/spec-02-11.yaml b/src/ext_depends/D-YAML/test/spec 1.1/spec-02-11.yaml new file mode 100644 index 0000000..3d4f1c8 --- /dev/null +++ b/src/ext_depends/D-YAML/test/spec 1.1/spec-02-11.yaml @@ -0,0 +1,36 @@ +%YAML 1.1 +--- +- name: spec-02-11 + tree: | + +STR + +DOC + +MAP + +SEQ + =VAL :Detroit Tigers + =VAL :Chicago cubs + -SEQ + +SEQ + =VAL :2001-07-23 + -SEQ + +SEQ [] + =VAL :New York Yankees + =VAL :Atlanta Braves + -SEQ + +SEQ [] + =VAL :2001-07-02 + =VAL :2001-08-12 + =VAL :2001-08-14 + -SEQ + -MAP + -DOC + -STR + yaml: | + ? - Detroit Tigers + - Chicago cubs + : + - 2001-07-23 + + ? [ New York Yankees, + Atlanta Braves ] + : [ 2001-07-02, 2001-08-12, + 2001-08-14 ] diff --git a/src/ext_depends/D-YAML/test/spec 1.1/spec-02-12.yaml b/src/ext_depends/D-YAML/test/spec 1.1/spec-02-12.yaml new file mode 100644 index 0000000..fb63aa5 --- /dev/null +++ b/src/ext_depends/D-YAML/test/spec 1.1/spec-02-12.yaml @@ -0,0 +1,37 @@ +%YAML 1.1 +--- +- name: spec-02-12 + tree: | + +STR + +DOC --- + +SEQ + +MAP + =VAL :item + =VAL :Super Hoop + =VAL :quantity + =VAL :1 + -MAP + +MAP + =VAL :item + =VAL :Basketball + =VAL :quantity + =VAL :4 + -MAP + +MAP + =VAL :item + =VAL :Big Shoes + =VAL :quantity + =VAL :1 + -MAP + -SEQ + -DOC + -STR + yaml: | + --- + # products purchased + - item : Super Hoop + quantity: 1 + - item : Basketball + quantity: 4 + - item : Big Shoes + quantity: 1 diff --git a/src/ext_depends/D-YAML/test/spec 1.1/spec-02-13.yaml b/src/ext_depends/D-YAML/test/spec 1.1/spec-02-13.yaml new file mode 100644 index 0000000..4f6eb3b --- /dev/null +++ b/src/ext_depends/D-YAML/test/spec 1.1/spec-02-13.yaml @@ -0,0 +1,14 @@ +%YAML 1.1 +--- +- name: spec-02-13 + tree: | + +STR + +DOC --- + =VAL |\\//||\\/||\n// || ||__\n + -DOC + -STR + yaml: | + # ASCII Art + --- | + \//||\/|| + // || ||__ diff --git a/src/ext_depends/D-YAML/test/spec 1.1/spec-02-14.yaml b/src/ext_depends/D-YAML/test/spec 1.1/spec-02-14.yaml new file mode 100644 index 0000000..201537a --- /dev/null +++ b/src/ext_depends/D-YAML/test/spec 1.1/spec-02-14.yaml @@ -0,0 +1,14 @@ +%YAML 1.1 +--- +- name: spec-02-14 + tree: | + +STR + +DOC --- + =VAL :Mark McGwire's year was crippled by a knee injury. + -DOC + -STR + yaml: | + --- + Mark McGwire's + year was crippled + by a knee injury. diff --git a/src/ext_depends/D-YAML/test/spec 1.1/spec-02-15.yaml b/src/ext_depends/D-YAML/test/spec 1.1/spec-02-15.yaml new file mode 100644 index 0000000..83e7616 --- /dev/null +++ b/src/ext_depends/D-YAML/test/spec 1.1/spec-02-15.yaml @@ -0,0 +1,18 @@ +%YAML 1.1 +--- +- name: spec-02-15 + tree: | + +STR + +DOC + =VAL >Sammy Sosa completed another fine season with great stats.\n\n 63 Home Runs\n 0.288 Batting Average\n\nWhat a year!\n + -DOC + -STR + yaml: | + > + Sammy Sosa completed another + fine season with great stats. + + 63 Home Runs + 0.288 Batting Average + + What a year! diff --git a/src/ext_depends/D-YAML/test/spec 1.1/spec-02-16.yaml b/src/ext_depends/D-YAML/test/spec 1.1/spec-02-16.yaml new file mode 100644 index 0000000..787a35b --- /dev/null +++ b/src/ext_depends/D-YAML/test/spec 1.1/spec-02-16.yaml @@ -0,0 +1,24 @@ +%YAML 1.1 +--- +- name: spec-02-16 + tree: | + +STR + +DOC + +MAP + =VAL :name + =VAL :Mark McGwire + =VAL :accomplishment + =VAL >Mark set a major league home run record in 1998.\n + =VAL :stats + =VAL |65 Home Runs\n0.278 Batting Average\n + -MAP + -DOC + -STR + yaml: | + name: Mark McGwire + accomplishment: > + Mark set a major league + home run record in 1998. + stats: | + 65 Home Runs + 0.278 Batting Average diff --git a/src/ext_depends/D-YAML/test/spec 1.1/spec-02-17.yaml b/src/ext_depends/D-YAML/test/spec 1.1/spec-02-17.yaml new file mode 100644 index 0000000..ab2924c --- /dev/null +++ b/src/ext_depends/D-YAML/test/spec 1.1/spec-02-17.yaml @@ -0,0 +1,30 @@ +%YAML 1.1 +--- +- name: spec-02-17 + tree: | + +STR + +DOC + +MAP + =VAL :unicode + =VAL "Sosa did fine.☺ + =VAL :control + =VAL "\b1998\t1999\t2000\n + =VAL :hexesc + =VAL "\r\n is \r\n + =VAL :single + =VAL '"Howdy!" he cried. + =VAL :quoted + =VAL ' # not a 'comment'. + =VAL :tie-fighter + =VAL '|\\-*-/| + -MAP + -DOC + -STR + yaml: | + unicode: "Sosa did fine.\u263A" + control: "\b1998\t1999\t2000\n" + hexesc: "\x0D\x0A is \r\n" + + single: '"Howdy!" he cried.' + quoted: ' # not a ''comment''.' + tie-fighter: '|\-*-/|' diff --git a/src/ext_depends/D-YAML/test/spec 1.1/spec-02-18.yaml b/src/ext_depends/D-YAML/test/spec 1.1/spec-02-18.yaml new file mode 100644 index 0000000..96227cf --- /dev/null +++ b/src/ext_depends/D-YAML/test/spec 1.1/spec-02-18.yaml @@ -0,0 +1,21 @@ +%YAML 1.1 +--- +- name: spec-02-18 + tree: | + +STR + +DOC + +MAP + =VAL :plain + =VAL :This unquoted scalar spans many lines. + =VAL :quoted + =VAL "So does this quoted scalar.\n + -MAP + -DOC + -STR + yaml: | + plain: + This unquoted scalar + spans many lines. + + quoted: "So does this + quoted scalar.\n" diff --git a/src/ext_depends/D-YAML/test/spec 1.1/spec-02-19.yaml b/src/ext_depends/D-YAML/test/spec 1.1/spec-02-19.yaml new file mode 100644 index 0000000..fdd18a9 --- /dev/null +++ b/src/ext_depends/D-YAML/test/spec 1.1/spec-02-19.yaml @@ -0,0 +1,26 @@ +%YAML 1.1 +--- +- name: spec-02-19 + tree: | + +STR + +DOC + +MAP + =VAL :canonical + =VAL :12345 + =VAL :decimal + =VAL :+12,345 + =VAL :sexagesimal + =VAL :3:25:45 + =VAL :octal + =VAL :014 + =VAL :hexadecimal + =VAL :0xC + -MAP + -DOC + -STR + yaml: | + canonical: 12345 + decimal: +12,345 + sexagesimal: 3:25:45 + octal: 014 + hexadecimal: 0xC diff --git a/src/ext_depends/D-YAML/test/spec 1.1/spec-02-20.yaml b/src/ext_depends/D-YAML/test/spec 1.1/spec-02-20.yaml new file mode 100644 index 0000000..0902005 --- /dev/null +++ b/src/ext_depends/D-YAML/test/spec 1.1/spec-02-20.yaml @@ -0,0 +1,29 @@ +%YAML 1.1 +--- +- name: spec-02-20 + tree: | + +STR + +DOC + +MAP + =VAL :canonical + =VAL :1.23015e+3 + =VAL :exponential + =VAL :12.3015e+02 + =VAL :sexagesimal + =VAL :20:30.15 + =VAL :fixed + =VAL :1,230.15 + =VAL :negative infinity + =VAL :-.inf + =VAL :not a number + =VAL :.NaN + -MAP + -DOC + -STR + yaml: | + canonical: 1.23015e+3 + exponential: 12.3015e+02 + sexagesimal: 20:30.15 + fixed: 1,230.15 + negative infinity: -.inf + not a number: .NaN diff --git a/src/ext_depends/D-YAML/test/spec 1.1/spec-02-21.yaml b/src/ext_depends/D-YAML/test/spec 1.1/spec-02-21.yaml new file mode 100644 index 0000000..a5beaa5 --- /dev/null +++ b/src/ext_depends/D-YAML/test/spec 1.1/spec-02-21.yaml @@ -0,0 +1,23 @@ +%YAML 1.1 +--- +- name: spec-02-21 + tree: | + +STR + +DOC + +MAP + =VAL :null + =VAL :~ + =VAL :true + =VAL :y + =VAL :false + =VAL :n + =VAL :string + =VAL '12345 + -MAP + -DOC + -STR + yaml: | + null: ~ + true: y + false: n + string: '12345' diff --git a/src/ext_depends/D-YAML/test/spec 1.1/spec-02-22.yaml b/src/ext_depends/D-YAML/test/spec 1.1/spec-02-22.yaml new file mode 100644 index 0000000..00e1bf6 --- /dev/null +++ b/src/ext_depends/D-YAML/test/spec 1.1/spec-02-22.yaml @@ -0,0 +1,23 @@ +%YAML 1.1 +--- +- name: spec-02-22 + tree: | + +STR + +DOC + +MAP + =VAL :canonical + =VAL :2001-12-15T02:59:43.1Z + =VAL :iso8601 + =VAL :2001-12-14t21:59:43.10-05:00 + =VAL :spaced + =VAL :2001-12-14 21:59:43.10 -5 + =VAL :date + =VAL :2002-12-14 + -MAP + -DOC + -STR + yaml: | + canonical: 2001-12-15T02:59:43.1Z + iso8601: 2001-12-14t21:59:43.10-05:00 + spaced: 2001-12-14 21:59:43.10 -5 + date: 2002-12-14 diff --git a/src/ext_depends/D-YAML/test/spec 1.1/spec-02-23.yaml b/src/ext_depends/D-YAML/test/spec 1.1/spec-02-23.yaml new file mode 100644 index 0000000..09a3e4a --- /dev/null +++ b/src/ext_depends/D-YAML/test/spec 1.1/spec-02-23.yaml @@ -0,0 +1,30 @@ +%YAML 1.1 +--- +- name: spec-02-23 + tree: | + +STR + +DOC --- + +MAP + =VAL :not-date + =VAL <tag:yaml.org,2002:str> :2002-04-28 + =VAL :picture + =VAL <tag:yaml.org,2002:binary> |R0lGODlhDAAMAIQAAP//9/X\n17unp5WZmZgAAAOfn515eXv\nPz7Y6OjuDg4J+fn5OTk6enp\n56enmleECcgggoBADs=\n + =VAL :application specific tag + =VAL <!something> |The semantics of the tag\nabove may be different for\ndifferent documents.\n + -MAP + -DOC + -STR + yaml: | + --- + not-date: !!str 2002-04-28 + + picture: !!binary | + R0lGODlhDAAMAIQAAP//9/X + 17unp5WZmZgAAAOfn515eXv + Pz7Y6OjuDg4J+fn5OTk6enp + 56enmleECcgggoBADs= + + application specific tag: !something | + The semantics of the tag + above may be different for + different documents. diff --git a/src/ext_depends/D-YAML/test/spec 1.1/spec-02-24.yaml b/src/ext_depends/D-YAML/test/spec 1.1/spec-02-24.yaml new file mode 100644 index 0000000..29ecb6c --- /dev/null +++ b/src/ext_depends/D-YAML/test/spec 1.1/spec-02-24.yaml @@ -0,0 +1,55 @@ +%YAML 1.1 +--- +- name: spec-02-24 + tree: | + +STR + +DOC --- + +SEQ <tag:clarkevans.com,2002:shape> + +MAP <tag:clarkevans.com,2002:circle> + =VAL :center + +MAP {} &ORIGIN + =VAL :x + =VAL :73 + =VAL :y + =VAL :129 + -MAP + =VAL :radius + =VAL :7 + -MAP + +MAP <tag:clarkevans.com,2002:line> + =VAL :start + =ALI *ORIGIN + =VAL :finish + +MAP {} + =VAL :x + =VAL :89 + =VAL :y + =VAL :102 + -MAP + -MAP + +MAP <tag:clarkevans.com,2002:label> + =VAL :start + =ALI *ORIGIN + =VAL :color + =VAL :0xFFEEBB + =VAL :text + =VAL :Pretty vector drawing. + -MAP + -SEQ + -DOC + -STR + yaml: | + %TAG ! tag:clarkevans.com,2002: + --- !shape + # Use the ! handle for presenting + # tag:clarkevans.com,2002:circle + - !circle + center: &ORIGIN {x: 73, y: 129} + radius: 7 + - !line + start: *ORIGIN + finish: { x: 89, y: 102 } + - !label + start: *ORIGIN + color: 0xFFEEBB + text: Pretty vector drawing. diff --git a/src/ext_depends/D-YAML/test/spec 1.1/spec-02-25.yaml b/src/ext_depends/D-YAML/test/spec 1.1/spec-02-25.yaml new file mode 100644 index 0000000..85ac7d8 --- /dev/null +++ b/src/ext_depends/D-YAML/test/spec 1.1/spec-02-25.yaml @@ -0,0 +1,24 @@ +%YAML 1.1 +--- +- name: spec-02-25 + tree: | + +STR + +DOC --- + +MAP <tag:yaml.org,2002:set> + =VAL :Mark McGwire + =VAL : + =VAL :Sammy Sosa + =VAL : + =VAL :Ken Griff + =VAL : + -MAP + -DOC + -STR + yaml: | + # sets are represented as a + # mapping where each key is + # associated with the empty string + --- !!set + ? Mark McGwire + ? Sammy Sosa + ? Ken Griff diff --git a/src/ext_depends/D-YAML/test/spec 1.1/spec-02-26.yaml b/src/ext_depends/D-YAML/test/spec 1.1/spec-02-26.yaml new file mode 100644 index 0000000..852aa4f --- /dev/null +++ b/src/ext_depends/D-YAML/test/spec 1.1/spec-02-26.yaml @@ -0,0 +1,30 @@ +%YAML 1.1 +--- +- name: spec-02-26 + tree: | + +STR + +DOC --- + +SEQ <tag:yaml.org,2002:omap> + +MAP + =VAL :Mark McGwire + =VAL :65 + -MAP + +MAP + =VAL :Sammy Sosa + =VAL :63 + -MAP + +MAP + =VAL :Ken Griffy + =VAL :58 + -MAP + -SEQ + -DOC + -STR + yaml: | + # ordered maps are represented as + # a sequence of mappings, with + # each mapping having one key + --- !!omap + - Mark McGwire: 65 + - Sammy Sosa: 63 + - Ken Griffy: 58 diff --git a/src/ext_depends/D-YAML/test/spec 1.1/spec-02-27.yaml b/src/ext_depends/D-YAML/test/spec 1.1/spec-02-27.yaml new file mode 100644 index 0000000..5e23800 --- /dev/null +++ b/src/ext_depends/D-YAML/test/spec 1.1/spec-02-27.yaml @@ -0,0 +1,93 @@ +%YAML 1.1 +--- +- name: spec-02-27 + tree: | + +STR + +DOC --- + +MAP <tag:clarkevans.com,2002:invoice> + =VAL :invoice + =VAL :34843 + =VAL :date + =VAL :2001-01-23 + =VAL :bill-to + +MAP &id001 + =VAL :given + =VAL :Chris + =VAL :family + =VAL :Dumars + =VAL :address + +MAP + =VAL :lines + =VAL |458 Walkman Dr.\nSuite #292\n + =VAL :city + =VAL :Royal Oak + =VAL :state + =VAL :MI + =VAL :postal + =VAL :48046 + -MAP + -MAP + =VAL :ship-to + =ALI *id001 + =VAL :product + +SEQ + +MAP + =VAL :sku + =VAL :BL394D + =VAL :quantity + =VAL :4 + =VAL :description + =VAL :Basketball + =VAL :price + =VAL :450.00 + -MAP + +MAP + =VAL :sku + =VAL :BL4438H + =VAL :quantity + =VAL :1 + =VAL :description + =VAL :Super Hoop + =VAL :price + =VAL :2392.00 + -MAP + -SEQ + =VAL :tax + =VAL :251.42 + =VAL :total + =VAL :4443.52 + =VAL :comments + =VAL :Late afternoon is best. Backup contact is Nancy Billsmer @ 338-4338. + -MAP + -DOC + -STR + yaml: | + --- !<tag:clarkevans.com,2002:invoice> + invoice: 34843 + date : 2001-01-23 + bill-to: &id001 + given : Chris + family : Dumars + address: + lines: | + 458 Walkman Dr. + Suite #292 + city : Royal Oak + state : MI + postal : 48046 + ship-to: *id001 + product: + - sku : BL394D + quantity : 4 + description : Basketball + price : 450.00 + - sku : BL4438H + quantity : 1 + description : Super Hoop + price : 2392.00 + tax : 251.42 + total: 4443.52 + comments: + Late afternoon is best. + Backup contact is Nancy + Billsmer @ 338-4338. diff --git a/src/ext_depends/D-YAML/test/spec 1.1/spec-02-28.yaml b/src/ext_depends/D-YAML/test/spec 1.1/spec-02-28.yaml new file mode 100644 index 0000000..7f142d7 --- /dev/null +++ b/src/ext_depends/D-YAML/test/spec 1.1/spec-02-28.yaml @@ -0,0 +1,82 @@ +%YAML 1.1 +--- +- name: spec-02-28 + tree: | + +STR + +DOC --- + +MAP + =VAL :Time + =VAL :2001-11-23 15:01:42 -5 + =VAL :User + =VAL :ed + =VAL :Warning + =VAL :This is an error message for the log file + -MAP + -DOC + +DOC --- + +MAP + =VAL :Time + =VAL :2001-11-23 15:02:31 -5 + =VAL :User + =VAL :ed + =VAL :Warning + =VAL :A slightly different error message. + -MAP + -DOC + +DOC --- + +MAP + =VAL :Date + =VAL :2001-11-23 15:03:17 -5 + =VAL :User + =VAL :ed + =VAL :Fatal + =VAL :Unknown variable "bar" + =VAL :Stack + +SEQ + +MAP + =VAL :file + =VAL :TopClass.py + =VAL :line + =VAL :23 + =VAL :code + =VAL |x = MoreObject("345\\n")\n + -MAP + +MAP + =VAL :file + =VAL :MoreClass.py + =VAL :line + =VAL :58 + =VAL :code + =VAL |foo = bar + -MAP + -SEQ + -MAP + -DOC + -STR + yaml: | + --- + Time: 2001-11-23 15:01:42 -5 + User: ed + Warning: + This is an error message + for the log file + --- + Time: 2001-11-23 15:02:31 -5 + User: ed + Warning: + A slightly different error + message. + --- + Date: 2001-11-23 15:03:17 -5 + User: ed + Fatal: + Unknown variable "bar" + Stack: + - file: TopClass.py + line: 23 + code: | + x = MoreObject("345\n") + - file: MoreClass.py + line: 58 + code: |- + foo = bar diff --git a/src/ext_depends/D-YAML/test/spec 1.1/spec-05-01-utf8.yaml b/src/ext_depends/D-YAML/test/spec 1.1/spec-05-01-utf8.yaml new file mode 100644 index 0000000..0605eb0 --- /dev/null +++ b/src/ext_depends/D-YAML/test/spec 1.1/spec-05-01-utf8.yaml @@ -0,0 +1,13 @@ +%YAML 1.1 +--- +- name: spec-05-01-utf8 + yaml: | + # Comment only. + tree: | + +STR + -STR +- name: spec-05-01-utf8-canonical + yaml: "" + tree: | + +STR + -STR diff --git a/src/ext_depends/D-YAML/test/spec 1.1/spec-05-02-utf8.yaml b/src/ext_depends/D-YAML/test/spec 1.1/spec-05-02-utf8.yaml new file mode 100644 index 0000000..bc50fe9 --- /dev/null +++ b/src/ext_depends/D-YAML/test/spec 1.1/spec-05-02-utf8.yaml @@ -0,0 +1,9 @@ +%YAML 1.1 +--- +- name: spec-05-02-utf8 + #FIXME + # error: | + # ERROR: + # A BOM must not appear + # inside a document. + yaml: "# Invalid use of BOM\n\uFEFF# inside a\n# document.\n" diff --git a/src/ext_depends/D-YAML/test/spec 1.1/spec-05-03.yaml b/src/ext_depends/D-YAML/test/spec 1.1/spec-05-03.yaml new file mode 100644 index 0000000..0078d03 --- /dev/null +++ b/src/ext_depends/D-YAML/test/spec 1.1/spec-05-03.yaml @@ -0,0 +1,71 @@ +%YAML 1.1 +--- +- name: spec-05-03 + yaml: | + sequence: + - one + - two + mapping: + ? sky + : blue + ? sea : green + tree: | + +STR + +DOC + +MAP + =VAL :sequence + +SEQ + =VAL :one + =VAL :two + -SEQ + =VAL :mapping + +MAP + =VAL :sky + =VAL :blue + +MAP + =VAL :sea + =VAL :green + -MAP + =VAL : + -MAP + -MAP + -DOC + -STR +- name: spec-05-03-canonical + yaml: | + %YAML 1.1 + --- + !!map { + ? !!str "sequence" + : !!seq [ + !!str "one", !!str "two" + ], + ? !!str "mapping" + : !!map { + ? !!str "sky" : !!str "blue", + # ? !!str "sea" : !!str "green", + ? !!map { ? !!str "sea" : !!str "green" } : !!null "", + } + } + tree: | + +STR + +DOC --- + +MAP {} <tag:yaml.org,2002:map> + =VAL <tag:yaml.org,2002:str> "sequence + +SEQ [] <tag:yaml.org,2002:seq> + =VAL <tag:yaml.org,2002:str> "one + =VAL <tag:yaml.org,2002:str> "two + -SEQ + =VAL <tag:yaml.org,2002:str> "mapping + +MAP {} <tag:yaml.org,2002:map> + =VAL <tag:yaml.org,2002:str> "sky + =VAL <tag:yaml.org,2002:str> "blue + +MAP {} <tag:yaml.org,2002:map> + =VAL <tag:yaml.org,2002:str> "sea + =VAL <tag:yaml.org,2002:str> "green + -MAP + =VAL <tag:yaml.org,2002:null> " + -MAP + -MAP + -DOC + -STR diff --git a/src/ext_depends/D-YAML/test/spec 1.1/spec-05-04.yaml b/src/ext_depends/D-YAML/test/spec 1.1/spec-05-04.yaml new file mode 100644 index 0000000..1e18cc6 --- /dev/null +++ b/src/ext_depends/D-YAML/test/spec 1.1/spec-05-04.yaml @@ -0,0 +1,59 @@ +%YAML 1.1 +--- +- name: spec-05-04 + yaml: | + sequence: [ one, two, ] + mapping: { sky: blue, sea: green } + tree: | + +STR + +DOC + +MAP + =VAL :sequence + +SEQ [] + =VAL :one + =VAL :two + -SEQ + =VAL :mapping + +MAP {} + =VAL :sky + =VAL :blue + =VAL :sea + =VAL :green + -MAP + -MAP + -DOC + -STR +- name: spec-05-04-canonical + yaml: | + %YAML 1.1 + --- + !!map { + ? !!str "sequence" + : !!seq [ + !!str "one", !!str "two" + ], + ? !!str "mapping" + : !!map { + ? !!str "sky" : !!str "blue", + ? !!str "sea" : !!str "green", + } + } + tree: | + +STR + +DOC --- + +MAP {} <tag:yaml.org,2002:map> + =VAL <tag:yaml.org,2002:str> "sequence + +SEQ [] <tag:yaml.org,2002:seq> + =VAL <tag:yaml.org,2002:str> "one + =VAL <tag:yaml.org,2002:str> "two + -SEQ + =VAL <tag:yaml.org,2002:str> "mapping + +MAP {} <tag:yaml.org,2002:map> + =VAL <tag:yaml.org,2002:str> "sky + =VAL <tag:yaml.org,2002:str> "blue + =VAL <tag:yaml.org,2002:str> "sea + =VAL <tag:yaml.org,2002:str> "green + -MAP + -MAP + -DOC + -STR diff --git a/src/ext_depends/D-YAML/test/spec 1.1/spec-05-05.yaml b/src/ext_depends/D-YAML/test/spec 1.1/spec-05-05.yaml new file mode 100644 index 0000000..ba6c65a --- /dev/null +++ b/src/ext_depends/D-YAML/test/spec 1.1/spec-05-05.yaml @@ -0,0 +1,13 @@ +%YAML 1.1 +--- +- name: spec-05-05 + yaml: | + # Comment only. + tree: | + +STR + -STR +- name: spec-05-05-canonical + yaml: "" + tree: | + +STR + -STR diff --git a/src/ext_depends/D-YAML/test/spec 1.1/spec-05-06.yaml b/src/ext_depends/D-YAML/test/spec 1.1/spec-05-06.yaml new file mode 100644 index 0000000..97c48e3 --- /dev/null +++ b/src/ext_depends/D-YAML/test/spec 1.1/spec-05-06.yaml @@ -0,0 +1,38 @@ +%YAML 1.1 +--- +- name: spec-05-06 + yaml: | + anchored: !local &anchor value + alias: *anchor + tree: | + +STR + +DOC + +MAP + =VAL :anchored + =VAL &anchor <!local> :value + =VAL :alias + =ALI *anchor + -MAP + -DOC + -STR +- name: spec-05-06-canonical + yaml: | + %YAML 1.1 + --- + !!map { + ? !!str "anchored" + : &A1 !local "value", + ? !!str "alias" + : *A1, + } + tree: | + +STR + +DOC --- + +MAP {} <tag:yaml.org,2002:map> + =VAL <tag:yaml.org,2002:str> "anchored + =VAL &A1 <!local> "value + =VAL <tag:yaml.org,2002:str> "alias + =ALI *A1 + -MAP + -DOC + -STR diff --git a/src/ext_depends/D-YAML/test/spec 1.1/spec-05-07.yaml b/src/ext_depends/D-YAML/test/spec 1.1/spec-05-07.yaml new file mode 100644 index 0000000..1338d16 --- /dev/null +++ b/src/ext_depends/D-YAML/test/spec 1.1/spec-05-07.yaml @@ -0,0 +1,40 @@ +%YAML 1.1 +--- +- name: spec-05-07 + yaml: | + literal: | + text + folded: > + text + tree: | + +STR + +DOC + +MAP + =VAL :literal + =VAL |text\n + =VAL :folded + =VAL >text\n + -MAP + -DOC + -STR +- name: spec-05-07-canonical + yaml: | + %YAML 1.1 + --- + !!map { + ? !!str "literal" + : !!str "text\n", + ? !!str "folded" + : !!str "text\n", + } + tree: | + +STR + +DOC --- + +MAP {} <tag:yaml.org,2002:map> + =VAL <tag:yaml.org,2002:str> "literal + =VAL <tag:yaml.org,2002:str> "text\n + =VAL <tag:yaml.org,2002:str> "folded + =VAL <tag:yaml.org,2002:str> "text\n + -MAP + -DOC + -STR diff --git a/src/ext_depends/D-YAML/test/spec 1.1/spec-05-08.yaml b/src/ext_depends/D-YAML/test/spec 1.1/spec-05-08.yaml new file mode 100644 index 0000000..716641c --- /dev/null +++ b/src/ext_depends/D-YAML/test/spec 1.1/spec-05-08.yaml @@ -0,0 +1,38 @@ +%YAML 1.1 +--- +- name: spec-05-08 + yaml: | + single: 'text' + double: "text" + tree: | + +STR + +DOC + +MAP + =VAL :single + =VAL 'text + =VAL :double + =VAL "text + -MAP + -DOC + -STR +- name: spec-05-08-canonical + yaml: | + %YAML 1.1 + --- + !!map { + ? !!str "single" + : !!str "text", + ? !!str "double" + : !!str "text", + } + tree: | + +STR + +DOC --- + +MAP {} <tag:yaml.org,2002:map> + =VAL <tag:yaml.org,2002:str> "single + =VAL <tag:yaml.org,2002:str> "text + =VAL <tag:yaml.org,2002:str> "double + =VAL <tag:yaml.org,2002:str> "text + -MAP + -DOC + -STR diff --git a/src/ext_depends/D-YAML/test/spec 1.1/spec-05-09.yaml b/src/ext_depends/D-YAML/test/spec 1.1/spec-05-09.yaml new file mode 100644 index 0000000..7c36e8d --- /dev/null +++ b/src/ext_depends/D-YAML/test/spec 1.1/spec-05-09.yaml @@ -0,0 +1,23 @@ +%YAML 1.1 +--- +- name: spec-05-09 + yaml: | + %YAML 1.1 + --- text + tree: | + +STR + +DOC --- + =VAL :text + -DOC + -STR +- name: spec-05-09-canonical + yaml: | + %YAML 1.1 + --- + !!str "text" + tree: | + +STR + +DOC --- + =VAL <tag:yaml.org,2002:str> "text + -DOC + -STR diff --git a/src/ext_depends/D-YAML/test/spec 1.1/spec-05-10.yaml b/src/ext_depends/D-YAML/test/spec 1.1/spec-05-10.yaml new file mode 100644 index 0000000..5a45e25 --- /dev/null +++ b/src/ext_depends/D-YAML/test/spec 1.1/spec-05-10.yaml @@ -0,0 +1,10 @@ +%YAML 1.1 +--- +- name: spec-05-10 + fail: true + mark: { line: 1, column: 16 } + error: | + While scanning for the next token, found character '@', index 64 that cannot start any token + yaml: | + commercial-at: @text + grave-accent: `text diff --git a/src/ext_depends/D-YAML/test/spec 1.1/spec-05-11.yaml b/src/ext_depends/D-YAML/test/spec 1.1/spec-05-11.yaml new file mode 100644 index 0000000..3bcfbd4 --- /dev/null +++ b/src/ext_depends/D-YAML/test/spec 1.1/spec-05-11.yaml @@ -0,0 +1,25 @@ +%YAML 1.1 +--- +- name: spec-05-11 + yaml: "|\n Generic line break (no glyph)\n Generic line break (glyphed)\N Line separator\L Paragraph separator\P" + # FIXME + # tree: | + # +STR + # +DOC + # =VAL |Generic line break (no glyph)\nGeneric line break (glyphed)\nLine separator\LParagraph separator\P + # -DOC + # -STR +- name: spec-05-11-canonical + yaml: | + %YAML 1.1 + --- !!str + "Generic line break (no glyph)\n\ + Generic line break (glyphed)\n\ + Line separator\u2028\ + Paragraph separator\u2029" + # tree: | + # +STR + # +DOC --- + # =VAL <tag:yaml.org,2002:str> "Generic line break (no glyph)\nGeneric line break (glyphed)\nLine separator\LParagraph separator\P + # -DOC + # -STR diff --git a/src/ext_depends/D-YAML/test/spec 1.1/spec-05-12.yaml b/src/ext_depends/D-YAML/test/spec 1.1/spec-05-12.yaml new file mode 100644 index 0000000..3e7cb2b --- /dev/null +++ b/src/ext_depends/D-YAML/test/spec 1.1/spec-05-12.yaml @@ -0,0 +1,10 @@ +%YAML 1.1 +--- +- name: spec-05-12 + fail: true + mark: { line: 8, column: 11 } + error: | + While scanning for the next token, found character ' ', index 9 that cannot start any token + yaml: "# Tabs do's and don'ts:\n# comment: \t\nquoted: \"Quoted\t\t\"\nblock: |\n\ + \ void main() {\n \tprintf(\"Hello, world!\\n\");\n }\nelsewhere:\t# separation\n\ + \tindentation, in\tplain scalar\n" diff --git a/src/ext_depends/D-YAML/test/spec 1.1/spec-05-13.yaml b/src/ext_depends/D-YAML/test/spec 1.1/spec-05-13.yaml new file mode 100644 index 0000000..f8faf76 --- /dev/null +++ b/src/ext_depends/D-YAML/test/spec 1.1/spec-05-13.yaml @@ -0,0 +1,19 @@ +%YAML 1.1 +--- +- name: spec-05-13 + yaml: " \"Text containing \n both space and\t\n \ttab\tcharacters\"\n" + tree: | + +STR + +DOC + =VAL "Text containing both space and tab\tcharacters + -DOC + -STR +- name: spec-05-13-canonical + yaml: "%YAML 1.1\n--- !!str\n\"Text containing \\\n both space and \\\n tab\t\ + characters\"\n" + tree: | + +STR + +DOC --- + =VAL <tag:yaml.org,2002:str> "Text containing both space and tab\tcharacters + -DOC + -STR diff --git a/src/ext_depends/D-YAML/test/spec 1.1/spec-05-14.yaml b/src/ext_depends/D-YAML/test/spec 1.1/spec-05-14.yaml new file mode 100644 index 0000000..9665fa9 --- /dev/null +++ b/src/ext_depends/D-YAML/test/spec 1.1/spec-05-14.yaml @@ -0,0 +1,23 @@ +%YAML 1.1 +--- +- name: spec-05-14 + yaml: | + "Fun with \\ + \" \a \b \e \f \ + \n \r \t \v \0 \
 \ \_ \N \L \P \
 \x41 \u0041 \U00000041" +- name: spec-05-14-canonical + yaml: | + %YAML 1.1 + --- + "Fun with \x5C + \x22 \x07 \x08 \x1B \x0C + \x0A \x0D \x09 \x0B \x00 + \x20 \xA0 \x85 \u2028 \u2029 + A A A" + # FIXME + # tree: | + # +STR + # +DOC --- + # =VAL "Fun with \\ " \a \b \e \f \n \r \t \v \0 \_ \N \L \P A A A + # -DOC + # -STR diff --git a/src/ext_depends/D-YAML/test/spec 1.1/spec-05-15.yaml b/src/ext_depends/D-YAML/test/spec 1.1/spec-05-15.yaml new file mode 100644 index 0000000..a584453 --- /dev/null +++ b/src/ext_depends/D-YAML/test/spec 1.1/spec-05-15.yaml @@ -0,0 +1,12 @@ +%YAML 1.1 +--- +- name: spec-05-15 + fail: true + mark: { line: 2, column: 5 } + mark2: { line: 2, column: 3 } + error: | + While scanning a double quoted scalar, found unsupported escape character c + yaml: | + Bad escapes: + "\c + \xq-" diff --git a/src/ext_depends/D-YAML/test/spec 1.1/spec-06-01.yaml b/src/ext_depends/D-YAML/test/spec 1.1/spec-06-01.yaml new file mode 100644 index 0000000..635877b --- /dev/null +++ b/src/ext_depends/D-YAML/test/spec 1.1/spec-06-01.yaml @@ -0,0 +1,61 @@ +%YAML 1.1 +--- +- name: spec-06-01 + yaml: " # Leading comment line spaces are\n # neither content nor indentation.\n\ + \ \nNot indented:\n By one space: |\n By four\n spaces\n Flow style:\ + \ [ # Leading spaces\n By two, # in flow style\n Also by two, #\ + \ are neither\n# Tabs are not allowed:\n# \tStill by two # content nor\n Still\ + \ by two # content nor\n ] # indentation.\n" + tree: | + +STR + +DOC + +MAP + =VAL :Not indented + +MAP + =VAL :By one space + =VAL |By four\n spaces\n + =VAL :Flow style + +SEQ [] + =VAL :By two + =VAL :Also by two + =VAL :Still by two + -SEQ + -MAP + -MAP + -DOC + -STR +- name: spec-06-01-canonical + yaml: | + %YAML 1.1 + --- + !!map { + ? !!str "Not indented" + : !!map { + ? !!str "By one space" + : !!str "By four\n spaces\n", + ? !!str "Flow style" + : !!seq [ + !!str "By two", + !!str "Also by two", + !!str "Still by two", + ] + } + } + tree: | + +STR + +DOC --- + +MAP {} <tag:yaml.org,2002:map> + =VAL <tag:yaml.org,2002:str> "Not indented + +MAP {} <tag:yaml.org,2002:map> + =VAL <tag:yaml.org,2002:str> "By one space + =VAL <tag:yaml.org,2002:str> "By four\n spaces\n + =VAL <tag:yaml.org,2002:str> "Flow style + +SEQ [] <tag:yaml.org,2002:seq> + =VAL <tag:yaml.org,2002:str> "By two + =VAL <tag:yaml.org,2002:str> "Also by two + =VAL <tag:yaml.org,2002:str> "Still by two + -SEQ + -MAP + -MAP + -DOC + -STR diff --git a/src/ext_depends/D-YAML/test/spec 1.1/spec-06-02.yaml b/src/ext_depends/D-YAML/test/spec 1.1/spec-06-02.yaml new file mode 100644 index 0000000..e7979be --- /dev/null +++ b/src/ext_depends/D-YAML/test/spec 1.1/spec-06-02.yaml @@ -0,0 +1,12 @@ +%YAML 1.1 +--- +- name: spec-06-02 + yaml: " # Comment\n \n\n" + tree: | + +STR + -STR +- name: spec-06-02-canonical + yaml: "" + tree: | + +STR + -STR diff --git a/src/ext_depends/D-YAML/test/spec 1.1/spec-06-03.yaml b/src/ext_depends/D-YAML/test/spec 1.1/spec-06-03.yaml new file mode 100644 index 0000000..87f8268 --- /dev/null +++ b/src/ext_depends/D-YAML/test/spec 1.1/spec-06-03.yaml @@ -0,0 +1,33 @@ +%YAML 1.1 +--- +- name: spec-06-03 + yaml: | + key: # Comment + value + tree: | + +STR + +DOC + +MAP + =VAL :key + =VAL :value + -MAP + -DOC + -STR +- name: spec-06-03-canonical + yaml: | + %YAML 1.1 + --- + !!map { + ? !!str "key" + : !!str "value" + } + tree: | + +STR + +DOC --- + +MAP {} <tag:yaml.org,2002:map> + =VAL <tag:yaml.org,2002:str> "key + =VAL <tag:yaml.org,2002:str> "value + -MAP + -DOC + -STR + diff --git a/src/ext_depends/D-YAML/test/spec 1.1/spec-06-04.yaml b/src/ext_depends/D-YAML/test/spec 1.1/spec-06-04.yaml new file mode 100644 index 0000000..2a99fcb --- /dev/null +++ b/src/ext_depends/D-YAML/test/spec 1.1/spec-06-04.yaml @@ -0,0 +1,34 @@ +%YAML 1.1 +--- +- name: spec-06-04 + yaml: |+ + key: # Comment + # lines + value + + tree: | + +STR + +DOC + +MAP + =VAL :key + =VAL :value + -MAP + -DOC + -STR +- name: spec-06-04-canonical + yaml: | + %YAML 1.1 + --- + !!map { + ? !!str "key" + : !!str "value" + } + tree: | + +STR + +DOC --- + +MAP {} <tag:yaml.org,2002:map> + =VAL <tag:yaml.org,2002:str> "key + =VAL <tag:yaml.org,2002:str> "value + -MAP + -DOC + -STR diff --git a/src/ext_depends/D-YAML/test/spec 1.1/spec-06-05.yaml b/src/ext_depends/D-YAML/test/spec 1.1/spec-06-05.yaml new file mode 100644 index 0000000..6bd3ac4 --- /dev/null +++ b/src/ext_depends/D-YAML/test/spec 1.1/spec-06-05.yaml @@ -0,0 +1,66 @@ +%YAML 1.1 +--- +- name: spec-06-05 + yaml: | + { first: Sammy, last: Sosa }: + # Statistics: + hr: # Home runs + 65 + avg: # Average + 0.278 + tree: | + +STR + +DOC + +MAP + +MAP {} + =VAL :first + =VAL :Sammy + =VAL :last + =VAL :Sosa + -MAP + +MAP + =VAL :hr + =VAL :65 + =VAL :avg + =VAL :0.278 + -MAP + -MAP + -DOC + -STR +- name: spec-06-05-canonical + yaml: | + %YAML 1.1 + --- + !!map { + ? !!map { + ? !!str "first" + : !!str "Sammy", + ? !!str "last" + : !!str "Sosa" + } + : !!map { + ? !!str "hr" + : !!int "65", + ? !!str "avg" + : !!float "0.278" + } + } + tree: | + +STR + +DOC --- + +MAP {} <tag:yaml.org,2002:map> + +MAP {} <tag:yaml.org,2002:map> + =VAL <tag:yaml.org,2002:str> "first + =VAL <tag:yaml.org,2002:str> "Sammy + =VAL <tag:yaml.org,2002:str> "last + =VAL <tag:yaml.org,2002:str> "Sosa + -MAP + +MAP {} <tag:yaml.org,2002:map> + =VAL <tag:yaml.org,2002:str> "hr + =VAL <tag:yaml.org,2002:int> "65 + =VAL <tag:yaml.org,2002:str> "avg + =VAL <tag:yaml.org,2002:float> "0.278 + -MAP + -MAP + -DOC + -STR diff --git a/src/ext_depends/D-YAML/test/spec 1.1/spec-06-06.yaml b/src/ext_depends/D-YAML/test/spec 1.1/spec-06-06.yaml new file mode 100644 index 0000000..d3ab9da --- /dev/null +++ b/src/ext_depends/D-YAML/test/spec 1.1/spec-06-06.yaml @@ -0,0 +1,35 @@ +%YAML 1.1 +--- +- name: spec-06-06 + yaml: "plain: text\n lines\nquoted: \"text\n \tlines\"\nblock: |\n text\n \t\ + lines\n" + tree: | + +STR + +DOC + +MAP + =VAL :plain + =VAL :text lines + =VAL :quoted + =VAL "text lines + =VAL :block + =VAL |text\n \tlines\n + -MAP + -DOC + -STR +- name: spec-06-06-canonical + yaml: "%YAML 1.1\n---\n!!map {\n ? !!str \"plain\"\n : !!str \"text lines\"\ + ,\n ? !!str \"quoted\"\n : !!str \"text lines\",\n ? !!str \"block\"\n : !!str\ + \ \"text\\n \tlines\\n\"\n}\n" + tree: | + +STR + +DOC --- + +MAP {} <tag:yaml.org,2002:map> + =VAL <tag:yaml.org,2002:str> "plain + =VAL <tag:yaml.org,2002:str> "text lines + =VAL <tag:yaml.org,2002:str> "quoted + =VAL <tag:yaml.org,2002:str> "text lines + =VAL <tag:yaml.org,2002:str> "block + =VAL <tag:yaml.org,2002:str> "text\n \tlines\n + -MAP + -DOC + -STR diff --git a/src/ext_depends/D-YAML/test/spec 1.1/spec-06-07.yaml b/src/ext_depends/D-YAML/test/spec 1.1/spec-06-07.yaml new file mode 100644 index 0000000..ab210d8 --- /dev/null +++ b/src/ext_depends/D-YAML/test/spec 1.1/spec-06-07.yaml @@ -0,0 +1,30 @@ +%YAML 1.1 +--- +- name: spec-06-07 + yaml: "- foo\n \n bar\n- |-\n foo\n \n bar\n \n" + tree: | + +STR + +DOC + +SEQ + =VAL :foo\nbar + =VAL |foo\n\nbar + -SEQ + -DOC + -STR +- name: spec-06-07-canonical + yaml: | + %YAML 1.1 + --- + !!seq [ + !!str "foo\nbar", + !!str "foo\n\nbar" + ] + tree: | + +STR + +DOC --- + +SEQ [] <tag:yaml.org,2002:seq> + =VAL <tag:yaml.org,2002:str> "foo\nbar + =VAL <tag:yaml.org,2002:str> "foo\n\nbar + -SEQ + -DOC + -STR diff --git a/src/ext_depends/D-YAML/test/spec 1.1/spec-06-08.yaml b/src/ext_depends/D-YAML/test/spec 1.1/spec-06-08.yaml new file mode 100644 index 0000000..05c3fba --- /dev/null +++ b/src/ext_depends/D-YAML/test/spec 1.1/spec-06-08.yaml @@ -0,0 +1,18 @@ +%YAML 1.1 +--- +- name: spec-06-08 + yaml: ">-\n specific\L trimmed\N \N \N\N as\N space\n" +- name: spec-06-08-canonical + yaml: | + %YAML 1.1 + --- !!str + "specific\L\ + trimmed\n\n\n\ + as space" + # FIXME + # tree: | + # +STR + # +DOC --- + # =VAL <tag:yaml.org,2002:str> "specific\Ltrimmed\n\n\nas space + # -DOC + # -STR diff --git a/src/ext_depends/D-YAML/test/spec 1.1/spec-07-01.yaml b/src/ext_depends/D-YAML/test/spec 1.1/spec-07-01.yaml new file mode 100644 index 0000000..b8bd3ac --- /dev/null +++ b/src/ext_depends/D-YAML/test/spec 1.1/spec-07-01.yaml @@ -0,0 +1,24 @@ +%YAML 1.1 +--- +- name: spec-07-01 + yaml: | + %FOO bar baz # Should be ignored + # with a warning. + --- "foo" + tree: | + +STR + +DOC --- + =VAL "foo + -DOC + -STR +- name: spec-07-01-canonical + yaml: | + %YAML 1.1 + --- !!str + "foo" + tree: | + +STR + +DOC --- + =VAL <tag:yaml.org,2002:str> "foo + -DOC + -STR diff --git a/src/ext_depends/D-YAML/test/spec 1.1/spec-07-02.yaml b/src/ext_depends/D-YAML/test/spec 1.1/spec-07-02.yaml new file mode 100644 index 0000000..7d21c26 --- /dev/null +++ b/src/ext_depends/D-YAML/test/spec 1.1/spec-07-02.yaml @@ -0,0 +1,25 @@ +%YAML 1.1 +--- +- name: spec-07-02 + yaml: | + %YAML 1.2 # Attempt parsing + # with a warning + --- + "foo" + tree: | + +STR + +DOC --- + =VAL "foo + -DOC + -STR +- name: spec-07-02-canonical + yaml: | + %YAML 1.1 + --- + !!str "foo" + tree: | + +STR + +DOC --- + =VAL <tag:yaml.org,2002:str> "foo + -DOC + -STR diff --git a/src/ext_depends/D-YAML/test/spec 1.1/spec-07-03.yaml b/src/ext_depends/D-YAML/test/spec 1.1/spec-07-03.yaml new file mode 100644 index 0000000..f642cf0 --- /dev/null +++ b/src/ext_depends/D-YAML/test/spec 1.1/spec-07-03.yaml @@ -0,0 +1,11 @@ +%YAML 1.1 +--- +- name: spec-07-03 + fail: true + mark: { line: 2, column: 1} + error: | + Duplicate YAML directive + yaml: | + %YAML 1.1 + %YAML 1.1 + foo diff --git a/src/ext_depends/D-YAML/test/spec 1.1/spec-07-04.yaml b/src/ext_depends/D-YAML/test/spec 1.1/spec-07-04.yaml new file mode 100644 index 0000000..e4abb19 --- /dev/null +++ b/src/ext_depends/D-YAML/test/spec 1.1/spec-07-04.yaml @@ -0,0 +1,24 @@ +%YAML 1.1 +--- +- name: spec-07-04 + yaml: | + %TAG !yaml! tag:yaml.org,2002: + --- + !yaml!str "foo" + tree: | + +STR + +DOC --- + =VAL <tag:yaml.org,2002:str> "foo + -DOC + -STR +- name: spec-07-04-canonical + yaml: | + %YAML 1.1 + --- + !!str "foo" + tree: | + +STR + +DOC --- + =VAL <tag:yaml.org,2002:str> "foo + -DOC + -STR diff --git a/src/ext_depends/D-YAML/test/spec 1.1/spec-07-05.yaml b/src/ext_depends/D-YAML/test/spec 1.1/spec-07-05.yaml new file mode 100644 index 0000000..a6d4262 --- /dev/null +++ b/src/ext_depends/D-YAML/test/spec 1.1/spec-07-05.yaml @@ -0,0 +1,11 @@ +%YAML 1.1 +--- +- name: spec-07-05 + fail: true + mark: { line: 2, column: 1} + error: | + Duplicate tag handle: ! + yaml: | + %TAG ! !foo + %TAG ! !foo + bar diff --git a/src/ext_depends/D-YAML/test/spec 1.1/spec-07-06.yaml b/src/ext_depends/D-YAML/test/spec 1.1/spec-07-06.yaml new file mode 100644 index 0000000..1c561c3 --- /dev/null +++ b/src/ext_depends/D-YAML/test/spec 1.1/spec-07-06.yaml @@ -0,0 +1,35 @@ +%YAML 1.1 +--- +- name: spec-07-06 + yaml: | + %TAG ! !foo + %TAG !yaml! tag:yaml.org,2002: + --- + - !bar "baz" + - !yaml!str "string" + tree: | + +STR + +DOC --- + +SEQ + =VAL <!foobar> "baz + =VAL <tag:yaml.org,2002:str> "string + -SEQ + -DOC + -STR +- name: spec-07-06-canonical + yaml: | + %YAML 1.1 + --- + !!seq [ + !<!foobar> "baz", + !<tag:yaml.org,2002:str> "string" + ] + tree: | + +STR + +DOC --- + +SEQ [] <tag:yaml.org,2002:seq> + =VAL <!foobar> "baz + =VAL <tag:yaml.org,2002:str> "string + -SEQ + -DOC + -STR diff --git a/src/ext_depends/D-YAML/test/spec 1.1/spec-07-07.yaml b/src/ext_depends/D-YAML/test/spec 1.1/spec-07-07.yaml new file mode 100644 index 0000000..503126c --- /dev/null +++ b/src/ext_depends/D-YAML/test/spec 1.1/spec-07-07.yaml @@ -0,0 +1,46 @@ +%YAML 1.1 +--- +- name: spec-07-07a + yaml: | + # Private application: + !foo "bar" + tree: | + +STR + +DOC + =VAL <!foo> "bar + -DOC + -STR +- name: spec-07-07b + yaml: | + # Migrated to global: + %TAG ! tag:ben-kiki.org,2000:app/ + --- + !foo "bar" + tree: | + +STR + +DOC --- + =VAL <tag:ben-kiki.org,2000:app/foo> "bar + -DOC + -STR +- name: spec-07-07a-canonical + yaml: | + %YAML 1.1 + --- + !<!foo> "bar" + tree: | + +STR + +DOC --- + =VAL <!foo> "bar + -DOC + -STR +- name: spec-07-07b-canonical + yaml: | + %YAML 1.1 + --- + !<tag:ben-kiki.org,2000:app/foo> "bar" + tree: | + +STR + +DOC --- + =VAL <tag:ben-kiki.org,2000:app/foo> "bar + -DOC + -STR diff --git a/src/ext_depends/D-YAML/test/spec 1.1/spec-07-08.yaml b/src/ext_depends/D-YAML/test/spec 1.1/spec-07-08.yaml new file mode 100644 index 0000000..4eeb245 --- /dev/null +++ b/src/ext_depends/D-YAML/test/spec 1.1/spec-07-08.yaml @@ -0,0 +1,42 @@ +%YAML 1.1 +--- +- name: spec-07-08 + yaml: | + # Explicitly specify default settings: + %TAG ! ! + %TAG !! tag:yaml.org,2002: + # Named handles have no default: + %TAG !o! tag:ben-kiki.org,2000: + --- + - !foo "bar" + - !!str "string" + - !o!type "baz" + tree: | + +STR + +DOC --- + +SEQ + =VAL <!foo> "bar + =VAL <tag:yaml.org,2002:str> "string + =VAL <tag:ben-kiki.org,2000:type> "baz + -SEQ + -DOC + -STR +- name: spec-07-08-canonical + yaml: | + %YAML 1.1 + --- + !!seq [ + !<!foo> "bar", + !<tag:yaml.org,2002:str> "string", + !<tag:ben-kiki.org,2000:type> "baz" + ] + tree: | + +STR + +DOC --- + +SEQ [] <tag:yaml.org,2002:seq> + =VAL <!foo> "bar + =VAL <tag:yaml.org,2002:str> "string + =VAL <tag:ben-kiki.org,2000:type> "baz + -SEQ + -DOC + -STR diff --git a/src/ext_depends/D-YAML/test/spec 1.1/spec-07-09.yaml b/src/ext_depends/D-YAML/test/spec 1.1/spec-07-09.yaml new file mode 100644 index 0000000..fae3f43 --- /dev/null +++ b/src/ext_depends/D-YAML/test/spec 1.1/spec-07-09.yaml @@ -0,0 +1,48 @@ +%YAML 1.1 +--- +- name: spec-07-09 + yaml: | + --- + foo + ... + # Repeated end marker. + ... + --- + bar + # No end marker. + --- + baz + ... + tree: | + +STR + +DOC --- + =VAL :foo + -DOC ... + +DOC --- + =VAL :bar + -DOC + +DOC --- + =VAL :baz + -DOC ... + -STR +- name: spec-07-09-canonical + yaml: | + %YAML 1.1 + --- + !!str "foo" + --- + !!str "bar" + --- + !!str "baz" + tree: | + +STR + +DOC --- + =VAL <tag:yaml.org,2002:str> "foo + -DOC + +DOC --- + =VAL <tag:yaml.org,2002:str> "bar + -DOC + +DOC --- + =VAL <tag:yaml.org,2002:str> "baz + -DOC + -STR diff --git a/src/ext_depends/D-YAML/test/spec 1.1/spec-07-10.yaml b/src/ext_depends/D-YAML/test/spec 1.1/spec-07-10.yaml new file mode 100644 index 0000000..6d1decd --- /dev/null +++ b/src/ext_depends/D-YAML/test/spec 1.1/spec-07-10.yaml @@ -0,0 +1,66 @@ +%YAML 1.1 +--- +- name: spec-07-10 + yaml: | + "Root flow + scalar" + --- !!str > + Root block + scalar + --- + # Root collection: + foo : bar + ... # Is optional. + --- + # Explicit document may be empty. + tree: | + +STR + +DOC + =VAL "Root flow scalar + -DOC + +DOC --- + =VAL <tag:yaml.org,2002:str> >Root block scalar\n + -DOC + +DOC --- + +MAP + =VAL :foo + =VAL :bar + -MAP + -DOC ... + +DOC --- + =VAL : + -DOC + -STR +- name: spec-07-10-canonical + yaml: | + %YAML 1.1 + --- + !!str "Root flow scalar" + --- + !!str "Root block scalar\n" + --- + !!map { + ? !!str "foo" + : !!str "bar" + } + --- + #!!str "" + !!null "" + tree: | + +STR + +DOC --- + =VAL <tag:yaml.org,2002:str> "Root flow scalar + -DOC + +DOC --- + =VAL <tag:yaml.org,2002:str> "Root block scalar\n + -DOC + +DOC --- + +MAP {} <tag:yaml.org,2002:map> + =VAL <tag:yaml.org,2002:str> "foo + =VAL <tag:yaml.org,2002:str> "bar + -MAP + -DOC + +DOC --- + =VAL <tag:yaml.org,2002:null> " + -DOC + -STR diff --git a/src/ext_depends/D-YAML/test/spec 1.1/spec-07-11.yaml b/src/ext_depends/D-YAML/test/spec 1.1/spec-07-11.yaml new file mode 100644 index 0000000..08f5890 --- /dev/null +++ b/src/ext_depends/D-YAML/test/spec 1.1/spec-07-11.yaml @@ -0,0 +1,14 @@ +%YAML 1.1 +--- +- name: spec-07-11 + yaml: | + # A stream may contain + # no documents. + tree: | + +STR + -STR +- name: spec-07-11-canonical + yaml: "" + tree: | + +STR + -STR diff --git a/src/ext_depends/D-YAML/test/spec 1.1/spec-07-12.yaml b/src/ext_depends/D-YAML/test/spec 1.1/spec-07-12.yaml new file mode 100644 index 0000000..9c372da --- /dev/null +++ b/src/ext_depends/D-YAML/test/spec 1.1/spec-07-12.yaml @@ -0,0 +1,56 @@ +%YAML 1.1 +--- +- name: spec-07-12a + yaml: | + # Implicit document. Root + # collection (mapping) node. + foo : bar + tree: | + +STR + +DOC + +MAP + =VAL :foo + =VAL :bar + -MAP + -DOC + -STR +- name: spec-07-12a-canonical + yaml: | + %YAML 1.1 + --- + !!map { + ? !!str "foo" + : !!str "bar" + } + tree: | + +STR + +DOC --- + +MAP {} <tag:yaml.org,2002:map> + =VAL <tag:yaml.org,2002:str> "foo + =VAL <tag:yaml.org,2002:str> "bar + -MAP + -DOC + -STR +- name: spec-07-12b + yaml: | + # Explicit document. Root + # scalar (literal) node. + --- | + Text content + tree: | + +STR + +DOC --- + =VAL |Text content\n + -DOC + -STR +- name: spec-07-12b-canonical + yaml: | + %YAML 1.1 + --- + !!str "Text content\n" + tree: | + +STR + +DOC --- + =VAL <tag:yaml.org,2002:str> "Text content\n + -DOC + -STR diff --git a/src/ext_depends/D-YAML/test/spec 1.1/spec-07-13.yaml b/src/ext_depends/D-YAML/test/spec 1.1/spec-07-13.yaml new file mode 100644 index 0000000..4a84726 --- /dev/null +++ b/src/ext_depends/D-YAML/test/spec 1.1/spec-07-13.yaml @@ -0,0 +1,54 @@ +%YAML 1.1 +--- +- name: spec-07-13 + yaml: | + ! "First document" + --- + !foo "No directives" + %TAG ! !foo + --- + !bar "With directives" + %YAML 1.1 + --- + !baz "Reset settings" + tree: | + +STR + +DOC + =VAL <!> "First document + -DOC + +DOC --- + =VAL <!foo> "No directives + -DOC + +DOC --- + =VAL <!foobar> "With directives + -DOC + +DOC --- + =VAL <!baz> "Reset settings + -DOC + -STR +- name: spec-07-13-canonical + yaml: | + %YAML 1.1 + --- + !!str "First document" + --- + !<!foo> "No directives" + --- + !<!foobar> "With directives" + --- + !<!baz> "Reset settings" + tree: | + +STR + +DOC --- + =VAL <tag:yaml.org,2002:str> "First document + -DOC + +DOC --- + =VAL <!foo> "No directives + -DOC + +DOC --- + =VAL <!foobar> "With directives + -DOC + +DOC --- + =VAL <!baz> "Reset settings + -DOC + -STR diff --git a/src/ext_depends/D-YAML/test/spec 1.1/spec-08-01.yaml b/src/ext_depends/D-YAML/test/spec 1.1/spec-08-01.yaml new file mode 100644 index 0000000..38bc958 --- /dev/null +++ b/src/ext_depends/D-YAML/test/spec 1.1/spec-08-01.yaml @@ -0,0 +1,38 @@ +%YAML 1.1 +--- +- name: spec-08-01 + yaml: | + !!str &a1 "foo" : !!str bar + &a2 baz : *a1 + tree: | + +STR + +DOC + +MAP + =VAL &a1 <tag:yaml.org,2002:str> "foo + =VAL <tag:yaml.org,2002:str> :bar + =VAL &a2 :baz + =ALI *a1 + -MAP + -DOC + -STR +- name: spec-08-01-canonical + yaml: | + %YAML 1.1 + --- + !!map { + ? &A1 !!str "foo" + : !!str "bar", + ? &A2 !!str "baz" + : *A1 + } + tree: | + +STR + +DOC --- + +MAP {} <tag:yaml.org,2002:map> + =VAL &A1 <tag:yaml.org,2002:str> "foo + =VAL <tag:yaml.org,2002:str> "bar + =VAL &A2 <tag:yaml.org,2002:str> "baz + =ALI *A1 + -MAP + -DOC + -STR diff --git a/src/ext_depends/D-YAML/test/spec 1.1/spec-08-02.yaml b/src/ext_depends/D-YAML/test/spec 1.1/spec-08-02.yaml new file mode 100644 index 0000000..f002beb --- /dev/null +++ b/src/ext_depends/D-YAML/test/spec 1.1/spec-08-02.yaml @@ -0,0 +1,38 @@ +%YAML 1.1 +--- +- name: spec-08-02 + yaml: | + First occurrence: &anchor Value + Second occurrence: *anchor + tree: | + +STR + +DOC + +MAP + =VAL :First occurrence + =VAL &anchor :Value + =VAL :Second occurrence + =ALI *anchor + -MAP + -DOC + -STR +- name: spec-08-02-canonical + yaml: | + %YAML 1.1 + --- + !!map { + ? !!str "First occurrence" + : &A !!str "Value", + ? !!str "Second occurrence" + : *A + } + tree: | + +STR + +DOC --- + +MAP {} <tag:yaml.org,2002:map> + =VAL <tag:yaml.org,2002:str> "First occurrence + =VAL &A <tag:yaml.org,2002:str> "Value + =VAL <tag:yaml.org,2002:str> "Second occurrence + =ALI *A + -MAP + -DOC + -STR diff --git a/src/ext_depends/D-YAML/test/spec 1.1/spec-08-03.yaml b/src/ext_depends/D-YAML/test/spec 1.1/spec-08-03.yaml new file mode 100644 index 0000000..6f715bf --- /dev/null +++ b/src/ext_depends/D-YAML/test/spec 1.1/spec-08-03.yaml @@ -0,0 +1,32 @@ +%YAML 1.1 +--- +- name: spec-08-03 + yaml: | + !<tag:yaml.org,2002:str> foo : + !<!bar> baz + tree: | + +STR + +DOC + +MAP + =VAL <tag:yaml.org,2002:str> :foo + =VAL <!bar> :baz + -MAP + -DOC + -STR +- name: spec-08-03-canonical + yaml: | + %YAML 1.1 + --- + !!map { + ? !<tag:yaml.org,2002:str> "foo" + : !<!bar> "baz" + } + tree: | + +STR + +DOC --- + +MAP {} <tag:yaml.org,2002:map> + =VAL <tag:yaml.org,2002:str> "foo + =VAL <!bar> "baz + -MAP + -DOC + -STR diff --git a/src/ext_depends/D-YAML/test/spec 1.1/spec-08-04.yaml b/src/ext_depends/D-YAML/test/spec 1.1/spec-08-04.yaml new file mode 100644 index 0000000..7eac42f --- /dev/null +++ b/src/ext_depends/D-YAML/test/spec 1.1/spec-08-04.yaml @@ -0,0 +1,15 @@ +%YAML 1.1 +--- +- name: spec-08-04 + yaml: | + - !<!> foo + - !<$:?> bar + tree: | + +STR + +DOC + +SEQ + =VAL <!> :foo + =VAL <$:?> :bar + -SEQ + -DOC + -STR diff --git a/src/ext_depends/D-YAML/test/spec 1.1/spec-08-05.yaml b/src/ext_depends/D-YAML/test/spec 1.1/spec-08-05.yaml new file mode 100644 index 0000000..1ea2e94 --- /dev/null +++ b/src/ext_depends/D-YAML/test/spec 1.1/spec-08-05.yaml @@ -0,0 +1,38 @@ +%YAML 1.1 +--- +- name: spec-08-05 + yaml: | + %TAG !o! tag:ben-kiki.org,2000: + --- + - !local foo + - !!str bar + - !o!type baz + tree: | + +STR + +DOC --- + +SEQ + =VAL <!local> :foo + =VAL <tag:yaml.org,2002:str> :bar + =VAL <tag:ben-kiki.org,2000:type> :baz + -SEQ + -DOC + -STR +- name: spec-08-05-canonical + yaml: | + %YAML 1.1 + --- + !!seq [ + !<!local> "foo", + !<tag:yaml.org,2002:str> "bar", + !<tag:ben-kiki.org,2000:type> "baz", + ] + tree: | + +STR + +DOC --- + +SEQ [] <tag:yaml.org,2002:seq> + =VAL <!local> "foo + =VAL <tag:yaml.org,2002:str> "bar + =VAL <tag:ben-kiki.org,2000:type> "baz + -SEQ + -DOC + -STR diff --git a/src/ext_depends/D-YAML/test/spec 1.1/spec-08-06.yaml b/src/ext_depends/D-YAML/test/spec 1.1/spec-08-06.yaml new file mode 100644 index 0000000..6d60148 --- /dev/null +++ b/src/ext_depends/D-YAML/test/spec 1.1/spec-08-06.yaml @@ -0,0 +1,14 @@ +%YAML 1.1 +--- +- name: spec-08-06 + fail: true + mark: { line: 3, column: 4 } + mark2: { line: 3, column: 3 } + error: | + While scanning a tag, expected a !, but found $ + yaml: | + %TAG !o! tag:ben-kiki.org,2000: + --- + - !$a!b foo + - !o! bar + - !h!type baz diff --git a/src/ext_depends/D-YAML/test/spec 1.1/spec-08-07.yaml b/src/ext_depends/D-YAML/test/spec 1.1/spec-08-07.yaml new file mode 100644 index 0000000..a7abd06 --- /dev/null +++ b/src/ext_depends/D-YAML/test/spec 1.1/spec-08-07.yaml @@ -0,0 +1,38 @@ +%YAML 1.1 +--- +- name: spec-08-07 + yaml: | + # Assuming conventional resolution: + - "12" + - 12 + - ! 12 + tree: | + +STR + +DOC + +SEQ + =VAL "12 + =VAL :12 + =VAL <!> :12 + -SEQ + -DOC + -STR +- name: spec-08-07-canonical + yaml: | + %YAML 1.1 + --- + !!seq [ + !<tag:yaml.org,2002:str> "12", + !<tag:yaml.org,2002:int> "12", + # !<tag:yaml.org,2002:str> "12", + !<tag:yaml.org,2002:int> "12", + ] + tree: | + +STR + +DOC --- + +SEQ [] <tag:yaml.org,2002:seq> + =VAL <tag:yaml.org,2002:str> "12 + =VAL <tag:yaml.org,2002:int> "12 + =VAL <tag:yaml.org,2002:int> "12 + -SEQ + -DOC + -STR diff --git a/src/ext_depends/D-YAML/test/spec 1.1/spec-08-08.yaml b/src/ext_depends/D-YAML/test/spec 1.1/spec-08-08.yaml new file mode 100644 index 0000000..31bdc3b --- /dev/null +++ b/src/ext_depends/D-YAML/test/spec 1.1/spec-08-08.yaml @@ -0,0 +1,67 @@ +%YAML 1.1 +--- +- name: spec-08-08 + yaml: | + --- + foo: + "bar + baz" + --- + "foo + bar" + --- + foo + bar + --- | + foo + ... + tree: | + +STR + +DOC --- + +MAP + =VAL :foo + =VAL "bar baz + -MAP + -DOC + +DOC --- + =VAL "foo bar + -DOC + +DOC --- + =VAL :foo bar + -DOC + +DOC --- + =VAL |foo\n + -DOC ... + -STR +- name: spec-08-08-canonical + yaml: | + %YAML 1.1 + --- + !!map { + ? !!str "foo" + : !!str "bar baz" + } + --- + !!str "foo bar" + --- + !!str "foo bar" + --- + !!str "foo\n" + tree: | + +STR + +DOC --- + +MAP {} <tag:yaml.org,2002:map> + =VAL <tag:yaml.org,2002:str> "foo + =VAL <tag:yaml.org,2002:str> "bar baz + -MAP + -DOC + +DOC --- + =VAL <tag:yaml.org,2002:str> "foo bar + -DOC + +DOC --- + =VAL <tag:yaml.org,2002:str> "foo bar + -DOC + +DOC --- + =VAL <tag:yaml.org,2002:str> "foo\n + -DOC + -STR diff --git a/src/ext_depends/D-YAML/test/spec 1.1/spec-08-09.yaml b/src/ext_depends/D-YAML/test/spec 1.1/spec-08-09.yaml new file mode 100644 index 0000000..4faa40b --- /dev/null +++ b/src/ext_depends/D-YAML/test/spec 1.1/spec-08-09.yaml @@ -0,0 +1,108 @@ +%YAML 1.1 +--- +- name: spec-08-09 + yaml: | + --- + scalars: + plain: !!str some text + quoted: + single: 'some text' + double: "some text" + collections: + sequence: !!seq [ !!str entry, + # Mapping entry: + key: value ] + mapping: { key: value } + tree: | + +STR + +DOC --- + +MAP + =VAL :scalars + +MAP + =VAL :plain + =VAL <tag:yaml.org,2002:str> :some text + =VAL :quoted + +MAP + =VAL :single + =VAL 'some text + =VAL :double + =VAL "some text + -MAP + -MAP + =VAL :collections + +MAP + =VAL :sequence + +SEQ [] <tag:yaml.org,2002:seq> + =VAL <tag:yaml.org,2002:str> :entry + +MAP {} + =VAL :key + =VAL :value + -MAP + -SEQ + =VAL :mapping + +MAP {} + =VAL :key + =VAL :value + -MAP + -MAP + -MAP + -DOC + -STR +- name: spec-08-09-canonical + yaml: | + %YAML 1.1 + --- !!map { + ? !!str "scalars" : !!map { + ? !!str "plain" + : !!str "some text", + ? !!str "quoted" + : !!map { + ? !!str "single" + : !!str "some text", + ? !!str "double" + : !!str "some text" + } }, + ? !!str "collections" : !!map { + ? !!str "sequence" : !!seq [ + !!str "entry", + !!map { + ? !!str "key" : !!str "value" + } ], + ? !!str "mapping" : !!map { + ? !!str "key" : !!str "value" + } } } + tree: | + +STR + +DOC --- + +MAP {} <tag:yaml.org,2002:map> + =VAL <tag:yaml.org,2002:str> "scalars + +MAP {} <tag:yaml.org,2002:map> + =VAL <tag:yaml.org,2002:str> "plain + =VAL <tag:yaml.org,2002:str> "some text + =VAL <tag:yaml.org,2002:str> "quoted + +MAP {} <tag:yaml.org,2002:map> + =VAL <tag:yaml.org,2002:str> "single + =VAL <tag:yaml.org,2002:str> "some text + =VAL <tag:yaml.org,2002:str> "double + =VAL <tag:yaml.org,2002:str> "some text + -MAP + -MAP + =VAL <tag:yaml.org,2002:str> "collections + +MAP {} <tag:yaml.org,2002:map> + =VAL <tag:yaml.org,2002:str> "sequence + +SEQ [] <tag:yaml.org,2002:seq> + =VAL <tag:yaml.org,2002:str> "entry + +MAP {} <tag:yaml.org,2002:map> + =VAL <tag:yaml.org,2002:str> "key + =VAL <tag:yaml.org,2002:str> "value + -MAP + -SEQ + =VAL <tag:yaml.org,2002:str> "mapping + +MAP {} <tag:yaml.org,2002:map> + =VAL <tag:yaml.org,2002:str> "key + =VAL <tag:yaml.org,2002:str> "value + -MAP + -MAP + -MAP + -DOC + -STR diff --git a/src/ext_depends/D-YAML/test/spec 1.1/spec-08-10.yaml b/src/ext_depends/D-YAML/test/spec 1.1/spec-08-10.yaml new file mode 100644 index 0000000..e68632a --- /dev/null +++ b/src/ext_depends/D-YAML/test/spec 1.1/spec-08-10.yaml @@ -0,0 +1,98 @@ +%YAML 1.1 +--- +- name: spec-08-10 + yaml: "block styles:\n scalars:\n literal: !!str |\n #!/usr/bin/perl\n\ + \ print \"Hello, world!\\n\";\n folded: >\n This sentence\n is\ + \ false.\n collections: !!map\n sequence: !!seq # Entry:\n - entry # Plain\n\ + \ # Mapping entry:\n - key: value\n mapping: \n key: value\n" + tree: | + +STR + +DOC + +MAP + =VAL :block styles + +MAP + =VAL :scalars + +MAP + =VAL :literal + =VAL <tag:yaml.org,2002:str> |#!/usr/bin/perl\nprint "Hello, world!\\n";\n + =VAL :folded + =VAL >This sentence is false.\n + -MAP + =VAL :collections + +MAP <tag:yaml.org,2002:map> + =VAL :sequence + +SEQ <tag:yaml.org,2002:seq> + =VAL :entry + +MAP + =VAL :key + =VAL :value + -MAP + -SEQ + =VAL :mapping + +MAP + =VAL :key + =VAL :value + -MAP + -MAP + -MAP + -MAP + -DOC + -STR +- name: spec-08-10-canonical + yaml: | + %YAML 1.1 + --- + !!map { + ? !!str "block styles" : !!map { + ? !!str "scalars" : !!map { + ? !!str "literal" + : !!str "#!/usr/bin/perl\n\ + print \"Hello, + world!\\n\";\n", + ? !!str "folded" + : !!str "This sentence + is false.\n" + }, + ? !!str "collections" : !!map { + ? !!str "sequence" : !!seq [ + !!str "entry", + !!map { + ? !!str "key" : !!str "value" + } + ], + ? !!str "mapping" : !!map { + ? !!str "key" : !!str "value" + } } } } + tree: | + +STR + +DOC --- + +MAP {} <tag:yaml.org,2002:map> + =VAL <tag:yaml.org,2002:str> "block styles + +MAP {} <tag:yaml.org,2002:map> + =VAL <tag:yaml.org,2002:str> "scalars + +MAP {} <tag:yaml.org,2002:map> + =VAL <tag:yaml.org,2002:str> "literal + =VAL <tag:yaml.org,2002:str> "#!/usr/bin/perl\nprint "Hello, world!\\n";\n + =VAL <tag:yaml.org,2002:str> "folded + =VAL <tag:yaml.org,2002:str> "This sentence is false.\n + -MAP + =VAL <tag:yaml.org,2002:str> "collections + +MAP {} <tag:yaml.org,2002:map> + =VAL <tag:yaml.org,2002:str> "sequence + +SEQ [] <tag:yaml.org,2002:seq> + =VAL <tag:yaml.org,2002:str> "entry + +MAP {} <tag:yaml.org,2002:map> + =VAL <tag:yaml.org,2002:str> "key + =VAL <tag:yaml.org,2002:str> "value + -MAP + -SEQ + =VAL <tag:yaml.org,2002:str> "mapping + +MAP {} <tag:yaml.org,2002:map> + =VAL <tag:yaml.org,2002:str> "key + =VAL <tag:yaml.org,2002:str> "value + -MAP + -MAP + -MAP + -MAP + -DOC + -STR diff --git a/src/ext_depends/D-YAML/test/spec 1.1/spec-08-11.yaml b/src/ext_depends/D-YAML/test/spec 1.1/spec-08-11.yaml new file mode 100644 index 0000000..6d18988 --- /dev/null +++ b/src/ext_depends/D-YAML/test/spec 1.1/spec-08-11.yaml @@ -0,0 +1,38 @@ +%YAML 1.1 +--- +- name: spec-08-11 + yaml: | + First occurrence: &anchor Value + Second occurrence: *anchor + tree: | + +STR + +DOC + +MAP + =VAL :First occurrence + =VAL &anchor :Value + =VAL :Second occurrence + =ALI *anchor + -MAP + -DOC + -STR +- name: spec-08-11-canonical + yaml: | + %YAML 1.1 + --- + !!map { + ? !!str "First occurrence" + : &A !!str "Value", + ? !!str "Second occurrence" + : *A + } + tree: | + +STR + +DOC --- + +MAP {} <tag:yaml.org,2002:map> + =VAL <tag:yaml.org,2002:str> "First occurrence + =VAL &A <tag:yaml.org,2002:str> "Value + =VAL <tag:yaml.org,2002:str> "Second occurrence + =ALI *A + -MAP + -DOC + -STR diff --git a/src/ext_depends/D-YAML/test/spec 1.1/spec-08-12.yaml b/src/ext_depends/D-YAML/test/spec 1.1/spec-08-12.yaml new file mode 100644 index 0000000..fb784d8 --- /dev/null +++ b/src/ext_depends/D-YAML/test/spec 1.1/spec-08-12.yaml @@ -0,0 +1,50 @@ +%YAML 1.1 +--- +- name: spec-08-12 + yaml: | + [ + Without properties, + &anchor "Anchored", + !!str 'Tagged', + *anchor, # Alias node + !!str , # Empty plain scalar + '', # Empty plain scalar + ] + tree: | + +STR + +DOC + +SEQ [] + =VAL :Without properties + =VAL &anchor "Anchored + =VAL <tag:yaml.org,2002:str> 'Tagged + =ALI *anchor + =VAL <tag:yaml.org,2002:str> : + =VAL ' + -SEQ + -DOC + -STR +- name: spec-08-12-canonical + yaml: | + %YAML 1.1 + --- + !!seq [ + !!str "Without properties", + &A !!str "Anchored", + !!str "Tagged", + *A, + !!str "", + !!str "", + ] + tree: | + +STR + +DOC --- + +SEQ [] <tag:yaml.org,2002:seq> + =VAL <tag:yaml.org,2002:str> "Without properties + =VAL &A <tag:yaml.org,2002:str> "Anchored + =VAL <tag:yaml.org,2002:str> "Tagged + =ALI *A + =VAL <tag:yaml.org,2002:str> " + =VAL <tag:yaml.org,2002:str> " + -SEQ + -DOC + -STR diff --git a/src/ext_depends/D-YAML/test/spec 1.1/spec-08-13.yaml b/src/ext_depends/D-YAML/test/spec 1.1/spec-08-13.yaml new file mode 100644 index 0000000..2c4f8dd --- /dev/null +++ b/src/ext_depends/D-YAML/test/spec 1.1/spec-08-13.yaml @@ -0,0 +1,42 @@ +%YAML 1.1 +--- +- name: spec-08-13 + yaml: | + { + ? foo :, + ? : bar, + } + tree: | + +STR + +DOC + +MAP {} + =VAL :foo + =VAL : + =VAL : + =VAL :bar + -MAP + -DOC + -STR +- name: spec-08-13-canonical + yaml: | + %YAML 1.1 + --- + !!map { + ? !!str "foo" + # : !!str "", + # ? !!str "" + : !!null "", + ? !!null "" + : !!str "bar", + } + tree: | + +STR + +DOC --- + +MAP {} <tag:yaml.org,2002:map> + =VAL <tag:yaml.org,2002:str> "foo + =VAL <tag:yaml.org,2002:null> " + =VAL <tag:yaml.org,2002:null> " + =VAL <tag:yaml.org,2002:str> "bar + -MAP + -DOC + -STR diff --git a/src/ext_depends/D-YAML/test/spec 1.1/spec-08-14.yaml b/src/ext_depends/D-YAML/test/spec 1.1/spec-08-14.yaml new file mode 100644 index 0000000..d77e8d2 --- /dev/null +++ b/src/ext_depends/D-YAML/test/spec 1.1/spec-08-14.yaml @@ -0,0 +1,47 @@ +%YAML 1.1 +--- +- name: spec-08-14 + yaml: | + - "flow in block" + - > + Block scalar + - !!map # Block collection + foo : bar + tree: | + +STR + +DOC + +SEQ + =VAL "flow in block + =VAL >Block scalar\n + +MAP <tag:yaml.org,2002:map> + =VAL :foo + =VAL :bar + -MAP + -SEQ + -DOC + -STR +- name: spec-08-14-canonical + yaml: | + %YAML 1.1 + --- + !!seq [ + !!str "flow in block", + !!str "Block scalar\n", + !!map { + ? !!str "foo" + : !!str "bar" + } + ] + tree: | + +STR + +DOC --- + +SEQ [] <tag:yaml.org,2002:seq> + =VAL <tag:yaml.org,2002:str> "flow in block + =VAL <tag:yaml.org,2002:str> "Block scalar\n + +MAP {} <tag:yaml.org,2002:map> + =VAL <tag:yaml.org,2002:str> "foo + =VAL <tag:yaml.org,2002:str> "bar + -MAP + -SEQ + -DOC + -STR diff --git a/src/ext_depends/D-YAML/test/spec 1.1/spec-08-15.yaml b/src/ext_depends/D-YAML/test/spec 1.1/spec-08-15.yaml new file mode 100644 index 0000000..66dddde --- /dev/null +++ b/src/ext_depends/D-YAML/test/spec 1.1/spec-08-15.yaml @@ -0,0 +1,50 @@ +%YAML 1.1 +--- +- name: spec-08-15 + yaml: | + - # Empty plain scalar + - ? foo + : + ? + : bar + tree: | + +STR + +DOC + +SEQ + =VAL : + +MAP + =VAL :foo + =VAL : + =VAL : + =VAL :bar + -MAP + -SEQ + -DOC + -STR +- name: spec-08-15-canonical + yaml: | + %YAML 1.1 + --- + !!seq [ + !!null "", + !!map { + ? !!str "foo" + : !!null "", + ? !!null "" + : !!str "bar", + } + ] + tree: | + +STR + +DOC --- + +SEQ [] <tag:yaml.org,2002:seq> + =VAL <tag:yaml.org,2002:null> " + +MAP {} <tag:yaml.org,2002:map> + =VAL <tag:yaml.org,2002:str> "foo + =VAL <tag:yaml.org,2002:null> " + =VAL <tag:yaml.org,2002:null> " + =VAL <tag:yaml.org,2002:str> "bar + -MAP + -SEQ + -DOC + -STR diff --git a/src/ext_depends/D-YAML/test/spec 1.1/spec-09-01.yaml b/src/ext_depends/D-YAML/test/spec 1.1/spec-09-01.yaml new file mode 100644 index 0000000..51c8fbb --- /dev/null +++ b/src/ext_depends/D-YAML/test/spec 1.1/spec-09-01.yaml @@ -0,0 +1,51 @@ +%YAML 1.1 +--- +- name: spec-09-01 + yaml: | + "simple key" : { + "also simple" : value, + ? "not a + simple key" : "any + value" + } + tree: | + +STR + +DOC + +MAP + =VAL "simple key + +MAP {} + =VAL "also simple + =VAL :value + =VAL "not a simple key + =VAL "any value + -MAP + -MAP + -DOC + -STR +- name: spec-09-01-canonical + yaml: | + %YAML 1.1 + --- + !!map { + ? !!str "simple key" + : !!map { + ? !!str "also simple" + : !!str "value", + ? !!str "not a simple key" + : !!str "any value" + } + } + tree: | + +STR + +DOC --- + +MAP {} <tag:yaml.org,2002:map> + =VAL <tag:yaml.org,2002:str> "simple key + +MAP {} <tag:yaml.org,2002:map> + =VAL <tag:yaml.org,2002:str> "also simple + =VAL <tag:yaml.org,2002:str> "value + =VAL <tag:yaml.org,2002:str> "not a simple key + =VAL <tag:yaml.org,2002:str> "any value + -MAP + -MAP + -DOC + -STR diff --git a/src/ext_depends/D-YAML/test/spec 1.1/spec-09-02.yaml b/src/ext_depends/D-YAML/test/spec 1.1/spec-09-02.yaml new file mode 100644 index 0000000..0737411 --- /dev/null +++ b/src/ext_depends/D-YAML/test/spec 1.1/spec-09-02.yaml @@ -0,0 +1,20 @@ +%YAML 1.1 +--- +- name: spec-09-02 + yaml: " \"as space\t\n trimmed \n\n specific\L\n escaped\t\\\P \n none\"\n" +- name: spec-09-02-canonical + yaml: | + %YAML 1.1 + --- + !!str "as space \ + trimmed\n\ + specific\L\n\ + escaped\t\n\ + none" + # FIXME + # tree: | + # +STR + # +DOC --- + # =VAL <tag:yaml.org,2002:str> "as space trimmed\nspecific\L\nescaped\t\nnone + # -DOC + # -STR diff --git a/src/ext_depends/D-YAML/test/spec 1.1/spec-09-03.yaml b/src/ext_depends/D-YAML/test/spec 1.1/spec-09-03.yaml new file mode 100644 index 0000000..fbed7c4 --- /dev/null +++ b/src/ext_depends/D-YAML/test/spec 1.1/spec-09-03.yaml @@ -0,0 +1,33 @@ +%YAML 1.1 +--- +- name: spec-09-03 + yaml: "- \"\n last\"\n- \" \t\n last\"\n- \" \tfirst\n last\"\n" + tree: | + +STR + +DOC + +SEQ + =VAL " last + =VAL " last + =VAL " \tfirst last + -SEQ + -DOC + -STR +- name: spec-09-03-canonical + yaml: | + %YAML 1.1 + --- + !!seq [ + !!str " last", + !!str " last", + !!str " \tfirst last", + ] + tree: | + +STR + +DOC --- + +SEQ [] <tag:yaml.org,2002:seq> + =VAL <tag:yaml.org,2002:str> " last + =VAL <tag:yaml.org,2002:str> " last + =VAL <tag:yaml.org,2002:str> " \tfirst last + -SEQ + -DOC + -STR diff --git a/src/ext_depends/D-YAML/test/spec 1.1/spec-09-04.yaml b/src/ext_depends/D-YAML/test/spec 1.1/spec-09-04.yaml new file mode 100644 index 0000000..d76d880 --- /dev/null +++ b/src/ext_depends/D-YAML/test/spec 1.1/spec-09-04.yaml @@ -0,0 +1,24 @@ +%YAML 1.1 +--- +- name: spec-09-04 + yaml: " \"first\n \tinner 1\t\n \\ inner 2 \\\n last\"\n" + tree: | + +STR + +DOC + =VAL "first inner 1 inner 2 last + -DOC + -STR +- name: spec-09-04-canonical + yaml: | + %YAML 1.1 + --- + !!str "first \ + inner 1 \ + inner 2 \ + last" + tree: | + +STR + +DOC --- + =VAL <tag:yaml.org,2002:str> "first inner 1 inner 2 last + -DOC + -STR diff --git a/src/ext_depends/D-YAML/test/spec 1.1/spec-09-05.yaml b/src/ext_depends/D-YAML/test/spec 1.1/spec-09-05.yaml new file mode 100644 index 0000000..11cfd2e --- /dev/null +++ b/src/ext_depends/D-YAML/test/spec 1.1/spec-09-05.yaml @@ -0,0 +1,34 @@ +%YAML 1.1 +--- +- name: spec-09-05 + yaml: "- \"first\n \t\"\n- \"first\n\n \tlast\"\n- \"first\n inner\n \\ \tlast\"\ + \n" + tree: | + +STR + +DOC + +SEQ + =VAL "first + =VAL "first\nlast + =VAL "first inner \tlast + -SEQ + -DOC + -STR +- name: spec-09-05-canonical + yaml: | + %YAML 1.1 + --- + !!seq [ + !!str "first ", + !!str "first\nlast", + !!str "first inner \tlast", + ] + tree: | + +STR + +DOC --- + +SEQ [] <tag:yaml.org,2002:seq> + =VAL <tag:yaml.org,2002:str> "first + =VAL <tag:yaml.org,2002:str> "first\nlast + =VAL <tag:yaml.org,2002:str> "first inner \tlast + -SEQ + -DOC + -STR diff --git a/src/ext_depends/D-YAML/test/spec 1.1/spec-09-06.yaml b/src/ext_depends/D-YAML/test/spec 1.1/spec-09-06.yaml new file mode 100644 index 0000000..ed143c7 --- /dev/null +++ b/src/ext_depends/D-YAML/test/spec 1.1/spec-09-06.yaml @@ -0,0 +1,22 @@ +%YAML 1.1 +--- +- name: spec-09-06 + yaml: |2 + 'here''s to "quotes"' + tree: | + +STR + +DOC + =VAL 'here's to "quotes" + -DOC + -STR +- name: spec-09-06-canonical + yaml: | + %YAML 1.1 + --- + !!str "here's to \"quotes\"" + tree: | + +STR + +DOC --- + =VAL <tag:yaml.org,2002:str> "here's to "quotes" + -DOC + -STR diff --git a/src/ext_depends/D-YAML/test/spec 1.1/spec-09-07.yaml b/src/ext_depends/D-YAML/test/spec 1.1/spec-09-07.yaml new file mode 100644 index 0000000..8a3c4cc --- /dev/null +++ b/src/ext_depends/D-YAML/test/spec 1.1/spec-09-07.yaml @@ -0,0 +1,51 @@ +%YAML 1.1 +--- +- name: spec-09-07 + yaml: | + 'simple key' : { + 'also simple' : value, + ? 'not a + simple key' : 'any + value' + } + tree: | + +STR + +DOC + +MAP + =VAL 'simple key + +MAP {} + =VAL 'also simple + =VAL :value + =VAL 'not a simple key + =VAL 'any value + -MAP + -MAP + -DOC + -STR +- name: spec-09-07-canonical + yaml: | + %YAML 1.1 + --- + !!map { + ? !!str "simple key" + : !!map { + ? !!str "also simple" + : !!str "value", + ? !!str "not a simple key" + : !!str "any value" + } + } + tree: | + +STR + +DOC --- + +MAP {} <tag:yaml.org,2002:map> + =VAL <tag:yaml.org,2002:str> "simple key + +MAP {} <tag:yaml.org,2002:map> + =VAL <tag:yaml.org,2002:str> "also simple + =VAL <tag:yaml.org,2002:str> "value + =VAL <tag:yaml.org,2002:str> "not a simple key + =VAL <tag:yaml.org,2002:str> "any value + -MAP + -MAP + -DOC + -STR diff --git a/src/ext_depends/D-YAML/test/spec 1.1/spec-09-08.yaml b/src/ext_depends/D-YAML/test/spec 1.1/spec-09-08.yaml new file mode 100644 index 0000000..53767ad --- /dev/null +++ b/src/ext_depends/D-YAML/test/spec 1.1/spec-09-08.yaml @@ -0,0 +1,19 @@ +%YAML 1.1 +--- +- name: spec-09-08 + yaml: " 'as space\t\N trimmed \N\N specific\L\N none'\n" +- name: spec-09-08-canonical + yaml: | + %YAML 1.1 + --- + !!str "as space \ + trimmed\n\ + specific\L\n\ + none" + # FIXME + # tree: | + # +STR + # +DOC --- + # =VAL <tag:yaml.org,2002:str> "as space trimmed\nspecific\L\nnone + # -DOC + # -STR diff --git a/src/ext_depends/D-YAML/test/spec 1.1/spec-09-09.yaml b/src/ext_depends/D-YAML/test/spec 1.1/spec-09-09.yaml new file mode 100644 index 0000000..e4b960e --- /dev/null +++ b/src/ext_depends/D-YAML/test/spec 1.1/spec-09-09.yaml @@ -0,0 +1,33 @@ +%YAML 1.1 +--- +- name: spec-09-09 + yaml: "- '\n last'\n- ' \t\n last'\n- ' \tfirst\n last'\n" + tree: | + +STR + +DOC + +SEQ + =VAL ' last + =VAL ' last + =VAL ' \tfirst last + -SEQ + -DOC + -STR +- name: spec-09-09-canonical + yaml: | + %YAML 1.1 + --- + !!seq [ + !!str " last", + !!str " last", + !!str " \tfirst last", + ] + tree: | + +STR + +DOC --- + +SEQ [] <tag:yaml.org,2002:seq> + =VAL <tag:yaml.org,2002:str> " last + =VAL <tag:yaml.org,2002:str> " last + =VAL <tag:yaml.org,2002:str> " \tfirst last + -SEQ + -DOC + -STR diff --git a/src/ext_depends/D-YAML/test/spec 1.1/spec-09-10.yaml b/src/ext_depends/D-YAML/test/spec 1.1/spec-09-10.yaml new file mode 100644 index 0000000..52aa6c3 --- /dev/null +++ b/src/ext_depends/D-YAML/test/spec 1.1/spec-09-10.yaml @@ -0,0 +1,23 @@ +%YAML 1.1 +--- +- name: spec-09-10 + yaml: " 'first\n \tinner\t\n last'\n" + tree: | + +STR + +DOC + =VAL 'first inner last + -DOC + -STR +- name: spec-09-10-canonical + yaml: | + %YAML 1.1 + --- + !!str "first \ + inner \ + last" + tree: | + +STR + +DOC --- + =VAL <tag:yaml.org,2002:str> "first inner last + -DOC + -STR diff --git a/src/ext_depends/D-YAML/test/spec 1.1/spec-09-11.yaml b/src/ext_depends/D-YAML/test/spec 1.1/spec-09-11.yaml new file mode 100644 index 0000000..db37a14 --- /dev/null +++ b/src/ext_depends/D-YAML/test/spec 1.1/spec-09-11.yaml @@ -0,0 +1,30 @@ +%YAML 1.1 +--- +- name: spec-09-11 + yaml: "- 'first\n \t'\n- 'first\n\n \tlast'\n" + tree: | + +STR + +DOC + +SEQ + =VAL 'first + =VAL 'first\nlast + -SEQ + -DOC + -STR +- name: spec-09-11-canonical + yaml: | + %YAML 1.1 + --- + !!seq [ + !!str "first ", + !!str "first\nlast", + ] + tree: | + +STR + +DOC --- + +SEQ [] <tag:yaml.org,2002:seq> + =VAL <tag:yaml.org,2002:str> "first + =VAL <tag:yaml.org,2002:str> "first\nlast + -SEQ + -DOC + -STR diff --git a/src/ext_depends/D-YAML/test/spec 1.1/spec-09-12.yaml b/src/ext_depends/D-YAML/test/spec 1.1/spec-09-12.yaml new file mode 100644 index 0000000..1fd24da --- /dev/null +++ b/src/ext_depends/D-YAML/test/spec 1.1/spec-09-12.yaml @@ -0,0 +1,56 @@ +%YAML 1.1 +--- +- name: spec-09-12 + yaml: | + # Outside flow collection: + - ::std::vector + - Up, up, and away! + - -123 + # Inside flow collection: + - [ '::std::vector', + "Up, up, and away!", + -123 ] + tree: | + +STR + +DOC + +SEQ + =VAL :::std::vector + =VAL :Up, up, and away! + =VAL :-123 + +SEQ [] + =VAL '::std::vector + =VAL "Up, up, and away! + =VAL :-123 + -SEQ + -SEQ + -DOC + -STR +- name: spec-09-12-canonical + yaml: | + %YAML 1.1 + --- + !!seq [ + !!str "::std::vector", + !!str "Up, up, and away!", + !!int "-123", + !!seq [ + !!str "::std::vector", + !!str "Up, up, and away!", + !!int "-123", + ] + ] + tree: | + +STR + +DOC --- + +SEQ [] <tag:yaml.org,2002:seq> + =VAL <tag:yaml.org,2002:str> "::std::vector + =VAL <tag:yaml.org,2002:str> "Up, up, and away! + =VAL <tag:yaml.org,2002:int> "-123 + +SEQ [] <tag:yaml.org,2002:seq> + =VAL <tag:yaml.org,2002:str> "::std::vector + =VAL <tag:yaml.org,2002:str> "Up, up, and away! + =VAL <tag:yaml.org,2002:int> "-123 + -SEQ + -SEQ + -DOC + -STR diff --git a/src/ext_depends/D-YAML/test/spec 1.1/spec-09-13.yaml b/src/ext_depends/D-YAML/test/spec 1.1/spec-09-13.yaml new file mode 100644 index 0000000..af8f802 --- /dev/null +++ b/src/ext_depends/D-YAML/test/spec 1.1/spec-09-13.yaml @@ -0,0 +1,37 @@ +%YAML 1.1 +--- +- name: spec-09-13 + yaml: | + simple key : { + also simple : value, + ? not a + simple key : any + value + } +- name: spec-09-13-canonical + yaml: | + %YAML 1.1 + --- + !!map { + ? !!str "simple key" + : !!map { + ? !!str "also simple" + : !!str "value", + ? !!str "not a simple key" + : !!str "any value" + } + } + tree: | + +STR + +DOC --- + +MAP {} <tag:yaml.org,2002:map> + =VAL <tag:yaml.org,2002:str> "simple key + +MAP {} <tag:yaml.org,2002:map> + =VAL <tag:yaml.org,2002:str> "also simple + =VAL <tag:yaml.org,2002:str> "value + =VAL <tag:yaml.org,2002:str> "not a simple key + =VAL <tag:yaml.org,2002:str> "any value + -MAP + -MAP + -DOC + -STR diff --git a/src/ext_depends/D-YAML/test/spec 1.1/spec-09-14.yaml b/src/ext_depends/D-YAML/test/spec 1.1/spec-09-14.yaml new file mode 100644 index 0000000..de5d69b --- /dev/null +++ b/src/ext_depends/D-YAML/test/spec 1.1/spec-09-14.yaml @@ -0,0 +1,23 @@ +%YAML 1.1 +--- +- name: spec-09-14 + mark: { line: 2, column: 6 } + mark2: { line: 2, column: 5 } + yaml: | + --- + --- ||| : foo + ... >>>: bar + --- + [ + --- + , + ... , + { + --- : + ... # Nested + } + ] + ... + fail: true + error: | + While scanning a block scalar, expected a chomping or indentation indicator, but found | diff --git a/src/ext_depends/D-YAML/test/spec 1.1/spec-09-15.yaml b/src/ext_depends/D-YAML/test/spec 1.1/spec-09-15.yaml new file mode 100644 index 0000000..459f24a --- /dev/null +++ b/src/ext_depends/D-YAML/test/spec 1.1/spec-09-15.yaml @@ -0,0 +1,78 @@ +%YAML 1.1 +--- +- name: spec-09-15 + yaml: | + --- + "---" : foo + ...: bar + --- + [ + ---, + ..., + { + ? --- + : ... + } + ] + ... + tree: | + +STR + +DOC --- + +MAP + =VAL "--- + =VAL :foo + =VAL :... + =VAL :bar + -MAP + -DOC + +DOC --- + +SEQ [] + =VAL :--- + =VAL :... + +MAP {} + =VAL :--- + =VAL :... + -MAP + -SEQ + -DOC ... + -STR +- name: spec-09-15-canonical + yaml: | + %YAML 1.1 + --- + !!map { + ? !!str "---" + : !!str "foo", + ? !!str "..." + : !!str "bar" + } + --- + !!seq [ + !!str "---", + !!str "...", + !!map { + ? !!str "---" + : !!str "..." + } + ] + tree: | + +STR + +DOC --- + +MAP {} <tag:yaml.org,2002:map> + =VAL <tag:yaml.org,2002:str> "--- + =VAL <tag:yaml.org,2002:str> "foo + =VAL <tag:yaml.org,2002:str> "... + =VAL <tag:yaml.org,2002:str> "bar + -MAP + -DOC + +DOC --- + +SEQ [] <tag:yaml.org,2002:seq> + =VAL <tag:yaml.org,2002:str> "--- + =VAL <tag:yaml.org,2002:str> "... + +MAP {} <tag:yaml.org,2002:map> + =VAL <tag:yaml.org,2002:str> "--- + =VAL <tag:yaml.org,2002:str> "... + -MAP + -SEQ + -DOC + -STR diff --git a/src/ext_depends/D-YAML/test/spec 1.1/spec-09-16.yaml b/src/ext_depends/D-YAML/test/spec 1.1/spec-09-16.yaml new file mode 100644 index 0000000..2140587 --- /dev/null +++ b/src/ext_depends/D-YAML/test/spec 1.1/spec-09-16.yaml @@ -0,0 +1,13 @@ +%YAML 1.1 +--- +- name: spec-09-16 + yaml: "# Tabs are confusing:\n# as space/trimmed/specific/none\n as space \N trimmed\ + \ \N\N specific\L\N none\n" +- name: spec-09-16-canonical + yaml: | + %YAML 1.1 + --- + !!str "as space \ + trimmed\n\ + specific\L\n\ + none" diff --git a/src/ext_depends/D-YAML/test/spec 1.1/spec-09-17.yaml b/src/ext_depends/D-YAML/test/spec 1.1/spec-09-17.yaml new file mode 100644 index 0000000..caa2d75 --- /dev/null +++ b/src/ext_depends/D-YAML/test/spec 1.1/spec-09-17.yaml @@ -0,0 +1,22 @@ +%YAML 1.1 +--- +- name: spec-09-17 + yaml: " first line \n \n more line\n" + tree: | + +STR + +DOC + =VAL :first line\nmore line + -DOC + -STR +- name: spec-09-17-canonical + yaml: | + %YAML 1.1 + --- + !!str "first line\n\ + more line" + tree: | + +STR + +DOC --- + =VAL <tag:yaml.org,2002:str> "first line\nmore line + -DOC + -STR diff --git a/src/ext_depends/D-YAML/test/spec 1.1/spec-09-18.yaml b/src/ext_depends/D-YAML/test/spec 1.1/spec-09-18.yaml new file mode 100644 index 0000000..d6c2deb --- /dev/null +++ b/src/ext_depends/D-YAML/test/spec 1.1/spec-09-18.yaml @@ -0,0 +1,45 @@ +%YAML 1.1 +--- +- name: spec-09-18 + yaml: | + - | # Just the style + literal + - >1 # Indentation indicator + folded + - |+ # Chomping indicator + keep + + - >-1 # Both indicators + strip + tree: | + +STR + +DOC + +SEQ + =VAL |literal\n + =VAL > folded\n + =VAL |keep\n\n + =VAL > strip + -SEQ + -DOC + -STR +- name: spec-09-18-canonical + yaml: | + %YAML 1.1 + --- + !!seq [ + !!str "literal\n", + !!str " folded\n", + !!str "keep\n\n", + !!str " strip", + ] + tree: | + +STR + +DOC --- + +SEQ [] <tag:yaml.org,2002:seq> + =VAL <tag:yaml.org,2002:str> "literal\n + =VAL <tag:yaml.org,2002:str> " folded\n + =VAL <tag:yaml.org,2002:str> "keep\n\n + =VAL <tag:yaml.org,2002:str> " strip + -SEQ + -DOC + -STR diff --git a/src/ext_depends/D-YAML/test/spec 1.1/spec-09-19.yaml b/src/ext_depends/D-YAML/test/spec 1.1/spec-09-19.yaml new file mode 100644 index 0000000..344cfe8 --- /dev/null +++ b/src/ext_depends/D-YAML/test/spec 1.1/spec-09-19.yaml @@ -0,0 +1,34 @@ +%YAML 1.1 +--- +- name: spec-09-19 + yaml: | + - | + literal + - > + folded + tree: | + +STR + +DOC + +SEQ + =VAL |literal\n + =VAL >folded\n + -SEQ + -DOC + -STR +- name: spec-09-19-canonical + yaml: | + %YAML 1.1 + --- + !!seq [ + !!str "literal\n", + !!str "folded\n", + ] + tree: | + +STR + +DOC --- + +SEQ [] <tag:yaml.org,2002:seq> + =VAL <tag:yaml.org,2002:str> "literal\n + =VAL <tag:yaml.org,2002:str> "folded\n + -SEQ + -DOC + -STR diff --git a/src/ext_depends/D-YAML/test/spec 1.1/spec-09-20.yaml b/src/ext_depends/D-YAML/test/spec 1.1/spec-09-20.yaml new file mode 100644 index 0000000..40b1883 --- /dev/null +++ b/src/ext_depends/D-YAML/test/spec 1.1/spec-09-20.yaml @@ -0,0 +1,36 @@ +%YAML 1.1 +--- +- name: spec-09-20 + yaml: "- |\n detected\n- >\n \n \n # detected\n- |1\n explicit\n- >\n \t\n detected\n" + tree: | + +STR + +DOC + +SEQ + =VAL |detected\n + =VAL >\n\n# detected\n + =VAL | explicit\n + =VAL >\t\ndetected\n + -SEQ + -DOC + -STR +- name: spec-09-20-canonical + yaml: | + %YAML 1.1 + --- + !!seq [ + !!str "detected\n", + !!str "\n\n# detected\n", + !!str " explicit\n", + !!str "\t\ndetected\n", + ] + tree: | + +STR + +DOC --- + +SEQ [] <tag:yaml.org,2002:seq> + =VAL <tag:yaml.org,2002:str> "detected\n + =VAL <tag:yaml.org,2002:str> "\n\n# detected\n + =VAL <tag:yaml.org,2002:str> " explicit\n + =VAL <tag:yaml.org,2002:str> "\t\ndetected\n + -SEQ + -DOC + -STR diff --git a/src/ext_depends/D-YAML/test/spec 1.1/spec-09-21.yaml b/src/ext_depends/D-YAML/test/spec 1.1/spec-09-21.yaml new file mode 100644 index 0000000..40f6e67 --- /dev/null +++ b/src/ext_depends/D-YAML/test/spec 1.1/spec-09-21.yaml @@ -0,0 +1,9 @@ +%YAML 1.1 +--- +- name: spec-09-21 + fail: true + mark: { line: 3, column: 2 } + mark2: { line: 1, column: 1 } + error: | + While parsing a block sequence, expected block end, but found: scalar + yaml: "- |\n \n text\n- >\n text\n text\n- |1\n text\n" diff --git a/src/ext_depends/D-YAML/test/spec 1.1/spec-09-22.yaml b/src/ext_depends/D-YAML/test/spec 1.1/spec-09-22.yaml new file mode 100644 index 0000000..315a728 --- /dev/null +++ b/src/ext_depends/D-YAML/test/spec 1.1/spec-09-22.yaml @@ -0,0 +1,30 @@ +%YAML 1.1 +--- +- name: spec-09-22 + yaml: "strip: |-\n text\Pclip: |\n text\Nkeep: |+\n text\L" +- name: spec-09-22-canonical + yaml: | + %YAML 1.1 + --- + !!map { + ? !!str "strip" + : !!str "text", + ? !!str "clip" + : !!str "text\n", + ? !!str "keep" + : !!str "text\L", + } + # FIXME + # tree: | + # +STR + # +DOC --- + # +MAP {} <tag:yaml.org,2002:map> + # =VAL <tag:yaml.org,2002:str> "strip + # =VAL <tag:yaml.org,2002:str> "text + # =VAL <tag:yaml.org,2002:str> "clip + # =VAL <tag:yaml.org,2002:str> "text\n + # =VAL <tag:yaml.org,2002:str> "keep + # =VAL <tag:yaml.org,2002:str> "text\L + # -MAP + # -DOC + # -STR diff --git a/src/ext_depends/D-YAML/test/spec 1.1/spec-09-23.yaml b/src/ext_depends/D-YAML/test/spec 1.1/spec-09-23.yaml new file mode 100644 index 0000000..eae61d5 --- /dev/null +++ b/src/ext_depends/D-YAML/test/spec 1.1/spec-09-23.yaml @@ -0,0 +1,32 @@ +%YAML 1.1 +--- +- name: spec-09-23 + yaml: " # Strip\n # Comments:\nstrip: |-\n # text\P \L # Clip\n # comments:\n\ + \Nclip: |\n # text\N \P # Keep\n # comments:\n\Nkeep: |+\n # text\L\N # Trail\n\ + \ # comments.\n" +- name: spec-09-23-canonical + yaml: | + %YAML 1.1 + --- + !!map { + ? !!str "strip" + : !!str "# text", + ? !!str "clip" + : !!str "# text\n", + ? !!str "keep" + : !!str "# text\L\n", + } + # FIXME + # tree: | + # +STR + # +DOC --- + # +MAP {} <tag:yaml.org,2002:map> + # =VAL <tag:yaml.org,2002:str> "strip + # =VAL <tag:yaml.org,2002:str> "# text + # =VAL <tag:yaml.org,2002:str> "clip + # =VAL <tag:yaml.org,2002:str> "# text\n + # =VAL <tag:yaml.org,2002:str> "keep + # =VAL <tag:yaml.org,2002:str> "# text\L\n + # -MAP + # -DOC + # -STR diff --git a/src/ext_depends/D-YAML/test/spec 1.1/spec-09-24.yaml b/src/ext_depends/D-YAML/test/spec 1.1/spec-09-24.yaml new file mode 100644 index 0000000..1eb31aa --- /dev/null +++ b/src/ext_depends/D-YAML/test/spec 1.1/spec-09-24.yaml @@ -0,0 +1,49 @@ +%YAML 1.1 +--- +- name: spec-09-24 + yaml: |+ + strip: >- + + clip: > + + keep: |+ + + # FIXME + # tree: | + # +STR + # +DOC + # +MAP + # =VAL :strip + # =VAL > + # =VAL :clip + # =VAL > + # =VAL :keep + # =VAL | + # -MAP + # -DOC + # -STR +- name: spec-09-24-canonical + yaml: | + %YAML 1.1 + --- + !!map { + ? !!str "strip" + : !!str "", + ? !!str "clip" + : !!str "", + ? !!str "keep" + : !!str "\n", + } + tree: | + +STR + +DOC --- + +MAP {} <tag:yaml.org,2002:map> + =VAL <tag:yaml.org,2002:str> "strip + =VAL <tag:yaml.org,2002:str> " + =VAL <tag:yaml.org,2002:str> "clip + =VAL <tag:yaml.org,2002:str> " + =VAL <tag:yaml.org,2002:str> "keep + =VAL <tag:yaml.org,2002:str> "\n + -MAP + -DOC + -STR diff --git a/src/ext_depends/D-YAML/test/spec 1.1/spec-09-25.yaml b/src/ext_depends/D-YAML/test/spec 1.1/spec-09-25.yaml new file mode 100644 index 0000000..f8e9570 --- /dev/null +++ b/src/ext_depends/D-YAML/test/spec 1.1/spec-09-25.yaml @@ -0,0 +1,22 @@ +%YAML 1.1 +--- +- name: spec-09-25 + yaml: "| # Simple block scalar\n literal\n \ttext\n" + tree: | + +STR + +DOC + =VAL |literal\n\ttext\n + -DOC + -STR +- name: spec-09-25-canonical + yaml: | + %YAML 1.1 + --- + !!str "literal\n\ + \ttext\n" + tree: | + +STR + +DOC --- + =VAL <tag:yaml.org,2002:str> "literal\n\ttext\n + -DOC + -STR diff --git a/src/ext_depends/D-YAML/test/spec 1.1/spec-09-26.yaml b/src/ext_depends/D-YAML/test/spec 1.1/spec-09-26.yaml new file mode 100644 index 0000000..448fcf0 --- /dev/null +++ b/src/ext_depends/D-YAML/test/spec 1.1/spec-09-26.yaml @@ -0,0 +1,21 @@ +%YAML 1.1 +--- +- name: spec-09-26 + yaml: "|\n \n \n literal\n \n text\n\n # Comment\n" + tree: | + +STR + +DOC + =VAL |\n\nliteral\n\ntext\n + -DOC + -STR +- name: spec-09-26-canonical + yaml: | + %YAML 1.1 + --- + !!str "\n\nliteral\n\ntext\n" + tree: | + +STR + +DOC --- + =VAL <tag:yaml.org,2002:str> "\n\nliteral\n\ntext\n + -DOC + -STR diff --git a/src/ext_depends/D-YAML/test/spec 1.1/spec-09-29.yaml b/src/ext_depends/D-YAML/test/spec 1.1/spec-09-29.yaml new file mode 100644 index 0000000..6dde563 --- /dev/null +++ b/src/ext_depends/D-YAML/test/spec 1.1/spec-09-29.yaml @@ -0,0 +1,22 @@ +%YAML 1.1 +--- +- name: spec-09-29 + yaml: "> # Simple folded scalar\n folded\n text\n \tlines\n" + tree: | + +STR + +DOC + =VAL >folded text\n\tlines\n + -DOC + -STR +- name: spec-09-29-canonical + yaml: | + %YAML 1.1 + --- + !!str "folded text\n\ + \tlines\n" + tree: | + +STR + +DOC --- + =VAL <tag:yaml.org,2002:str> "folded text\n\tlines\n + -DOC + -STR diff --git a/src/ext_depends/D-YAML/test/spec 1.1/spec-09-30.yaml b/src/ext_depends/D-YAML/test/spec 1.1/spec-09-30.yaml new file mode 100644 index 0000000..5b94dc5 --- /dev/null +++ b/src/ext_depends/D-YAML/test/spec 1.1/spec-09-30.yaml @@ -0,0 +1,39 @@ +%YAML 1.1 +--- +- name: spec-09-30 + yaml: | + > + folded + line + + next + line + + * bullet + * list + + last + line + + # Comment + tree: | + +STR + +DOC + =VAL >folded line\nnext line\n\n * bullet\n * list\n\nlast line\n + -DOC + -STR +- name: spec-09-30-canonical + yaml: | + %YAML 1.1 + --- + !!str "folded line\n\ + next line\n\n\ + \ * bullet\n\ + \ * list\n\n\ + last line\n" + tree: | + +STR + +DOC --- + =VAL <tag:yaml.org,2002:str> "folded line\nnext line\n\n * bullet\n * list\n\nlast line\n + -DOC + -STR diff --git a/src/ext_depends/D-YAML/test/spec 1.1/spec-10-01.yaml b/src/ext_depends/D-YAML/test/spec 1.1/spec-10-01.yaml new file mode 100644 index 0000000..e091710 --- /dev/null +++ b/src/ext_depends/D-YAML/test/spec 1.1/spec-10-01.yaml @@ -0,0 +1,50 @@ +%YAML 1.1 +--- +- name: spec-10-01 + yaml: | + - [ inner, inner, ] + - [inner,last] + tree: | + +STR + +DOC + +SEQ + +SEQ [] + =VAL :inner + =VAL :inner + -SEQ + +SEQ [] + =VAL :inner + =VAL :last + -SEQ + -SEQ + -DOC + -STR +- name: spec-10-01-canonical + yaml: | + %YAML 1.1 + --- + !!seq [ + !!seq [ + !!str "inner", + !!str "inner", + ], + !!seq [ + !!str "inner", + !!str "last", + ], + ] + tree: | + +STR + +DOC --- + +SEQ [] <tag:yaml.org,2002:seq> + +SEQ [] <tag:yaml.org,2002:seq> + =VAL <tag:yaml.org,2002:str> "inner + =VAL <tag:yaml.org,2002:str> "inner + -SEQ + +SEQ [] <tag:yaml.org,2002:seq> + =VAL <tag:yaml.org,2002:str> "inner + =VAL <tag:yaml.org,2002:str> "last + -SEQ + -SEQ + -DOC + -STR diff --git a/src/ext_depends/D-YAML/test/spec 1.1/spec-10-02.yaml b/src/ext_depends/D-YAML/test/spec 1.1/spec-10-02.yaml new file mode 100644 index 0000000..ce0fc7d --- /dev/null +++ b/src/ext_depends/D-YAML/test/spec 1.1/spec-10-02.yaml @@ -0,0 +1,62 @@ +%YAML 1.1 +--- +- name: spec-10-02 + yaml: | + [ + "double + quoted", 'single + quoted', + plain + text, [ nested ], + single: pair , + ] + tree: | + +STR + +DOC + +SEQ [] + =VAL "double quoted + =VAL 'single quoted + =VAL :plain text + +SEQ [] + =VAL :nested + -SEQ + +MAP {} + =VAL :single + =VAL :pair + -MAP + -SEQ + -DOC + -STR +- name: spec-10-02-canonical + yaml: | + %YAML 1.1 + --- + !!seq [ + !!str "double quoted", + !!str "single quoted", + !!str "plain text", + !!seq [ + !!str "nested", + ], + !!map { + ? !!str "single" + : !!str "pair" + } + ] + tree: | + +STR + +DOC --- + +SEQ [] <tag:yaml.org,2002:seq> + =VAL <tag:yaml.org,2002:str> "double quoted + =VAL <tag:yaml.org,2002:str> "single quoted + =VAL <tag:yaml.org,2002:str> "plain text + +SEQ [] <tag:yaml.org,2002:seq> + =VAL <tag:yaml.org,2002:str> "nested + -SEQ + +MAP {} <tag:yaml.org,2002:map> + =VAL <tag:yaml.org,2002:str> "single + =VAL <tag:yaml.org,2002:str> "pair + -MAP + -SEQ + -DOC + -STR diff --git a/src/ext_depends/D-YAML/test/spec 1.1/spec-10-03.yaml b/src/ext_depends/D-YAML/test/spec 1.1/spec-10-03.yaml new file mode 100644 index 0000000..f11782c --- /dev/null +++ b/src/ext_depends/D-YAML/test/spec 1.1/spec-10-03.yaml @@ -0,0 +1,52 @@ +%YAML 1.1 +--- +- name: spec-10-03 + yaml: | + block: # Block + # sequence + - one + - two : three + tree: | + +STR + +DOC + +MAP + =VAL :block + +SEQ + =VAL :one + +MAP + =VAL :two + =VAL :three + -MAP + -SEQ + -MAP + -DOC + -STR +- name: spec-10-03-canonical + yaml: | + %YAML 1.1 + --- + !!map { + ? !!str "block" + : !!seq [ + !!str "one", + !!map { + ? !!str "two" + : !!str "three" + } + ] + } + tree: | + +STR + +DOC --- + +MAP {} <tag:yaml.org,2002:map> + =VAL <tag:yaml.org,2002:str> "block + +SEQ [] <tag:yaml.org,2002:seq> + =VAL <tag:yaml.org,2002:str> "one + +MAP {} <tag:yaml.org,2002:map> + =VAL <tag:yaml.org,2002:str> "two + =VAL <tag:yaml.org,2002:str> "three + -MAP + -SEQ + -MAP + -DOC + -STR diff --git a/src/ext_depends/D-YAML/test/spec 1.1/spec-10-04.yaml b/src/ext_depends/D-YAML/test/spec 1.1/spec-10-04.yaml new file mode 100644 index 0000000..80b7e76 --- /dev/null +++ b/src/ext_depends/D-YAML/test/spec 1.1/spec-10-04.yaml @@ -0,0 +1,49 @@ +%YAML 1.1 +--- +- name: spec-10-04 + yaml: | + block: + - one + - + - two + tree: | + +STR + +DOC + +MAP + =VAL :block + +SEQ + =VAL :one + +SEQ + =VAL :two + -SEQ + -SEQ + -MAP + -DOC + -STR +- name: spec-10-04-canonical + yaml: | + %YAML 1.1 + --- + !!map { + ? !!str "block" + : !!seq [ + !!str "one", + !!seq [ + !!str "two" + ] + ] + } + tree: | + +STR + +DOC --- + +MAP {} <tag:yaml.org,2002:map> + =VAL <tag:yaml.org,2002:str> "block + +SEQ [] <tag:yaml.org,2002:seq> + =VAL <tag:yaml.org,2002:str> "one + +SEQ [] <tag:yaml.org,2002:seq> + =VAL <tag:yaml.org,2002:str> "two + -SEQ + -SEQ + -MAP + -DOC + -STR diff --git a/src/ext_depends/D-YAML/test/spec 1.1/spec-10-05.yaml b/src/ext_depends/D-YAML/test/spec 1.1/spec-10-05.yaml new file mode 100644 index 0000000..a16ab82 --- /dev/null +++ b/src/ext_depends/D-YAML/test/spec 1.1/spec-10-05.yaml @@ -0,0 +1,61 @@ +%YAML 1.1 +--- +- name: spec-10-05 + yaml: | + - # Empty + - | + block node + - - one # in-line + - two # sequence + - one: two # in-line + # mapping + tree: | + +STR + +DOC + +SEQ + =VAL : + =VAL |block node\n + +SEQ + =VAL :one + =VAL :two + -SEQ + +MAP + =VAL :one + =VAL :two + -MAP + -SEQ + -DOC + -STR +- name: spec-10-05-canonical + yaml: | + %YAML 1.1 + --- + !!seq [ + !!null "", + !!str "block node\n", + !!seq [ + !!str "one", + !!str "two", + ], + !!map { + ? !!str "one" + : !!str "two", + } + ] + tree: | + +STR + +DOC --- + +SEQ [] <tag:yaml.org,2002:seq> + =VAL <tag:yaml.org,2002:null> " + =VAL <tag:yaml.org,2002:str> "block node\n + +SEQ [] <tag:yaml.org,2002:seq> + =VAL <tag:yaml.org,2002:str> "one + =VAL <tag:yaml.org,2002:str> "two + -SEQ + +MAP {} <tag:yaml.org,2002:map> + =VAL <tag:yaml.org,2002:str> "one + =VAL <tag:yaml.org,2002:str> "two + -MAP + -SEQ + -DOC + -STR diff --git a/src/ext_depends/D-YAML/test/spec 1.1/spec-10-06.yaml b/src/ext_depends/D-YAML/test/spec 1.1/spec-10-06.yaml new file mode 100644 index 0000000..21658e9 --- /dev/null +++ b/src/ext_depends/D-YAML/test/spec 1.1/spec-10-06.yaml @@ -0,0 +1,62 @@ +%YAML 1.1 +--- +- name: spec-10-06 + yaml: | + - { inner : entry , also: inner , } + - {inner: entry,last : entry} + tree: | + +STR + +DOC + +SEQ + +MAP {} + =VAL :inner + =VAL :entry + =VAL :also + =VAL :inner + -MAP + +MAP {} + =VAL :inner + =VAL :entry + =VAL :last + =VAL :entry + -MAP + -SEQ + -DOC + -STR +- name: spec-10-06-canonical + yaml: | + %YAML 1.1 + --- + !!seq [ + !!map { + ? !!str "inner" + : !!str "entry", + ? !!str "also" + : !!str "inner" + }, + !!map { + ? !!str "inner" + : !!str "entry", + ? !!str "last" + : !!str "entry" + } + ] + tree: | + +STR + +DOC --- + +SEQ [] <tag:yaml.org,2002:seq> + +MAP {} <tag:yaml.org,2002:map> + =VAL <tag:yaml.org,2002:str> "inner + =VAL <tag:yaml.org,2002:str> "entry + =VAL <tag:yaml.org,2002:str> "also + =VAL <tag:yaml.org,2002:str> "inner + -MAP + +MAP {} <tag:yaml.org,2002:map> + =VAL <tag:yaml.org,2002:str> "inner + =VAL <tag:yaml.org,2002:str> "entry + =VAL <tag:yaml.org,2002:str> "last + =VAL <tag:yaml.org,2002:str> "entry + -MAP + -SEQ + -DOC + -STR diff --git a/src/ext_depends/D-YAML/test/spec 1.1/spec-10-07.yaml b/src/ext_depends/D-YAML/test/spec 1.1/spec-10-07.yaml new file mode 100644 index 0000000..0016e06 --- /dev/null +++ b/src/ext_depends/D-YAML/test/spec 1.1/spec-10-07.yaml @@ -0,0 +1,67 @@ +%YAML 1.1 +--- +- name: spec-10-07 + yaml: | + { + ? : value, # Empty key + ? explicit + key: value, + simple key : value, + [ collection, simple, key ]: value + } + tree: | + +STR + +DOC + +MAP {} + =VAL : + =VAL :value + =VAL :explicit key + =VAL :value + =VAL :simple key + =VAL :value + +SEQ [] + =VAL :collection + =VAL :simple + =VAL :key + -SEQ + =VAL :value + -MAP + -DOC + -STR +- name: spec-10-07-canonical + yaml: | + %YAML 1.1 + --- + !!map { + ? !!null "" + : !!str "value", + ? !!str "explicit key" + : !!str "value", + ? !!str "simple key" + : !!str "value", + ? !!seq [ + !!str "collection", + !!str "simple", + !!str "key" + ] + : !!str "value" + } + tree: | + +STR + +DOC --- + +MAP {} <tag:yaml.org,2002:map> + =VAL <tag:yaml.org,2002:null> " + =VAL <tag:yaml.org,2002:str> "value + =VAL <tag:yaml.org,2002:str> "explicit key + =VAL <tag:yaml.org,2002:str> "value + =VAL <tag:yaml.org,2002:str> "simple key + =VAL <tag:yaml.org,2002:str> "value + +SEQ [] <tag:yaml.org,2002:seq> + =VAL <tag:yaml.org,2002:str> "collection + =VAL <tag:yaml.org,2002:str> "simple + =VAL <tag:yaml.org,2002:str> "key + -SEQ + =VAL <tag:yaml.org,2002:str> "value + -MAP + -DOC + -STR diff --git a/src/ext_depends/D-YAML/test/data/spec-10-08.data b/src/ext_depends/D-YAML/test/spec 1.1/spec-10-08.yaml index 55bd788..8e59eb9 100644 --- a/src/ext_depends/D-YAML/test/data/spec-10-08.data +++ b/src/ext_depends/D-YAML/test/spec 1.1/spec-10-08.yaml @@ -1,5 +1,14 @@ -{ -multi-line - simple key : value, -very long ...................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................(>1KB)................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... key: value -} +%YAML 1.1 +--- +- name: spec-10-08 + fail: true + mark: { line: 3, column: 13 } + mark2: { line: 1, column: 1 } + error: | + While parsing a flow mapping, expected ',' or '}', but got: value + yaml: | + { + multi-line + simple key : value, + very long ...................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................(>1KB)................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... key: value + } diff --git a/src/ext_depends/D-YAML/test/spec 1.1/spec-10-09.yaml b/src/ext_depends/D-YAML/test/spec 1.1/spec-10-09.yaml new file mode 100644 index 0000000..1543056 --- /dev/null +++ b/src/ext_depends/D-YAML/test/spec 1.1/spec-10-09.yaml @@ -0,0 +1,40 @@ +%YAML 1.1 +--- +- name: spec-10-09 + yaml: | + { + key : value, + empty: # empty value↓ + } + tree: | + +STR + +DOC + +MAP {} + =VAL :key + =VAL :value + =VAL :empty + =VAL : + -MAP + -DOC + -STR +- name: spec-10-09-canonical + yaml: | + %YAML 1.1 + --- + !!map { + ? !!str "key" + : !!str "value", + ? !!str "empty" + : !!null "", + } + tree: | + +STR + +DOC --- + +MAP {} <tag:yaml.org,2002:map> + =VAL <tag:yaml.org,2002:str> "key + =VAL <tag:yaml.org,2002:str> "value + =VAL <tag:yaml.org,2002:str> "empty + =VAL <tag:yaml.org,2002:null> " + -MAP + -DOC + -STR diff --git a/src/ext_depends/D-YAML/test/spec 1.1/spec-10-10.yaml b/src/ext_depends/D-YAML/test/spec 1.1/spec-10-10.yaml new file mode 100644 index 0000000..40a5fc5 --- /dev/null +++ b/src/ext_depends/D-YAML/test/spec 1.1/spec-10-10.yaml @@ -0,0 +1,68 @@ +%YAML 1.1 +--- +- name: spec-10-10 + yaml: | + { + ? explicit key1 : explicit value, + ? explicit key2 : , # Explicit empty + ? explicit key3, # Empty value + simple key1 : explicit value, + simple key2 : , # Explicit empty + simple key3, # Empty value + } + tree: | + +STR + +DOC + +MAP {} + =VAL :explicit key1 + =VAL :explicit value + =VAL :explicit key2 + =VAL : + =VAL :explicit key3 + =VAL : + =VAL :simple key1 + =VAL :explicit value + =VAL :simple key2 + =VAL : + =VAL :simple key3 + =VAL : + -MAP + -DOC + -STR +- name: spec-10-10-canonical + yaml: | + %YAML 1.1 + --- + !!map { + ? !!str "explicit key1" + : !!str "explicit value", + ? !!str "explicit key2" + : !!null "", + ? !!str "explicit key3" + : !!null "", + ? !!str "simple key1" + : !!str "explicit value", + ? !!str "simple key2" + : !!null "", + ? !!str "simple key3" + : !!null "", + } + tree: | + +STR + +DOC --- + +MAP {} <tag:yaml.org,2002:map> + =VAL <tag:yaml.org,2002:str> "explicit key1 + =VAL <tag:yaml.org,2002:str> "explicit value + =VAL <tag:yaml.org,2002:str> "explicit key2 + =VAL <tag:yaml.org,2002:null> " + =VAL <tag:yaml.org,2002:str> "explicit key3 + =VAL <tag:yaml.org,2002:null> " + =VAL <tag:yaml.org,2002:str> "simple key1 + =VAL <tag:yaml.org,2002:str> "explicit value + =VAL <tag:yaml.org,2002:str> "simple key2 + =VAL <tag:yaml.org,2002:null> " + =VAL <tag:yaml.org,2002:str> "simple key3 + =VAL <tag:yaml.org,2002:null> " + -MAP + -DOC + -STR diff --git a/src/ext_depends/D-YAML/test/spec 1.1/spec-10-11.yaml b/src/ext_depends/D-YAML/test/spec 1.1/spec-10-11.yaml new file mode 100644 index 0000000..f1d698b --- /dev/null +++ b/src/ext_depends/D-YAML/test/spec 1.1/spec-10-11.yaml @@ -0,0 +1,91 @@ +%YAML 1.1 +--- +- name: spec-10-11 + yaml: | + [ + ? explicit key1 : explicit value, + ? explicit key2 : , # Explicit empty + ? explicit key3, # Implicit empty + simple key1 : explicit value, + simple key2 : , # Explicit empty + ] + tree: | + +STR + +DOC + +SEQ [] + +MAP {} + =VAL :explicit key1 + =VAL :explicit value + -MAP + +MAP {} + =VAL :explicit key2 + =VAL : + -MAP + +MAP {} + =VAL :explicit key3 + =VAL : + -MAP + +MAP {} + =VAL :simple key1 + =VAL :explicit value + -MAP + +MAP {} + =VAL :simple key2 + =VAL : + -MAP + -SEQ + -DOC + -STR +- name: spec-10-11-canonical + yaml: | + %YAML 1.1 + --- + !!seq [ + !!map { + ? !!str "explicit key1" + : !!str "explicit value", + }, + !!map { + ? !!str "explicit key2" + : !!null "", + }, + !!map { + ? !!str "explicit key3" + : !!null "", + }, + !!map { + ? !!str "simple key1" + : !!str "explicit value", + }, + !!map { + ? !!str "simple key2" + : !!null "", + }, + ] + tree: | + +STR + +DOC --- + +SEQ [] <tag:yaml.org,2002:seq> + +MAP {} <tag:yaml.org,2002:map> + =VAL <tag:yaml.org,2002:str> "explicit key1 + =VAL <tag:yaml.org,2002:str> "explicit value + -MAP + +MAP {} <tag:yaml.org,2002:map> + =VAL <tag:yaml.org,2002:str> "explicit key2 + =VAL <tag:yaml.org,2002:null> " + -MAP + +MAP {} <tag:yaml.org,2002:map> + =VAL <tag:yaml.org,2002:str> "explicit key3 + =VAL <tag:yaml.org,2002:null> " + -MAP + +MAP {} <tag:yaml.org,2002:map> + =VAL <tag:yaml.org,2002:str> "simple key1 + =VAL <tag:yaml.org,2002:str> "explicit value + -MAP + +MAP {} <tag:yaml.org,2002:map> + =VAL <tag:yaml.org,2002:str> "simple key2 + =VAL <tag:yaml.org,2002:null> " + -MAP + -SEQ + -DOC + -STR diff --git a/src/ext_depends/D-YAML/test/spec 1.1/spec-10-12.yaml b/src/ext_depends/D-YAML/test/spec 1.1/spec-10-12.yaml new file mode 100644 index 0000000..72c7c3c --- /dev/null +++ b/src/ext_depends/D-YAML/test/spec 1.1/spec-10-12.yaml @@ -0,0 +1,42 @@ +%YAML 1.1 +--- +- name: spec-10-12 + yaml: | + block: # Block + # mapping + key: value + tree: | + +STR + +DOC + +MAP + =VAL :block + +MAP + =VAL :key + =VAL :value + -MAP + -MAP + -DOC + -STR +- name: spec-10-12-canonical + yaml: | + %YAML 1.1 + --- + !!map { + ? !!str "block" + : !!map { + ? !!str "key" + : !!str "value" + } + } + tree: | + +STR + +DOC --- + +MAP {} <tag:yaml.org,2002:map> + =VAL <tag:yaml.org,2002:str> "block + +MAP {} <tag:yaml.org,2002:map> + =VAL <tag:yaml.org,2002:str> "key + =VAL <tag:yaml.org,2002:str> "value + -MAP + -MAP + -DOC + -STR diff --git a/src/ext_depends/D-YAML/test/spec 1.1/spec-10-13.yaml b/src/ext_depends/D-YAML/test/spec 1.1/spec-10-13.yaml new file mode 100644 index 0000000..2547ea5 --- /dev/null +++ b/src/ext_depends/D-YAML/test/spec 1.1/spec-10-13.yaml @@ -0,0 +1,50 @@ +%YAML 1.1 +--- +- name: spec-10-13 + yaml: | + ? explicit key # implicit value + ? | + block key + : - one # explicit in-line + - two # block value + tree: | + +STR + +DOC + +MAP + =VAL :explicit key + =VAL : + =VAL |block key\n + +SEQ + =VAL :one + =VAL :two + -SEQ + -MAP + -DOC + -STR +- name: spec-10-13-canonical + yaml: | + %YAML 1.1 + --- + !!map { + ? !!str "explicit key" + : !!null "", + ? !!str "block key\n" + : !!seq [ + !!str "one", + !!str "two", + ] + } + tree: | + +STR + +DOC --- + +MAP {} <tag:yaml.org,2002:map> + =VAL <tag:yaml.org,2002:str> "explicit key + =VAL <tag:yaml.org,2002:null> " + =VAL <tag:yaml.org,2002:str> "block key\n + +SEQ [] <tag:yaml.org,2002:seq> + =VAL <tag:yaml.org,2002:str> "one + =VAL <tag:yaml.org,2002:str> "two + -SEQ + -MAP + -DOC + -STR diff --git a/src/ext_depends/D-YAML/test/spec 1.1/spec-10-14.yaml b/src/ext_depends/D-YAML/test/spec 1.1/spec-10-14.yaml new file mode 100644 index 0000000..4c31edf --- /dev/null +++ b/src/ext_depends/D-YAML/test/spec 1.1/spec-10-14.yaml @@ -0,0 +1,49 @@ +%YAML 1.1 +--- +- name: spec-10-14 + yaml: | + plain key: # empty value + "quoted key": + - one # explicit next-line + - two # block value + tree: | + +STR + +DOC + +MAP + =VAL :plain key + =VAL : + =VAL "quoted key + +SEQ + =VAL :one + =VAL :two + -SEQ + -MAP + -DOC + -STR +- name: spec-10-14-canonical + yaml: | + %YAML 1.1 + --- + !!map { + ? !!str "plain key" + : !!null "", + ? !!str "quoted key" + : !!seq [ + !!str "one", + !!str "two", + ] + } + tree: | + +STR + +DOC --- + +MAP {} <tag:yaml.org,2002:map> + =VAL <tag:yaml.org,2002:str> "plain key + =VAL <tag:yaml.org,2002:null> " + =VAL <tag:yaml.org,2002:str> "quoted key + +SEQ [] <tag:yaml.org,2002:seq> + =VAL <tag:yaml.org,2002:str> "one + =VAL <tag:yaml.org,2002:str> "two + -SEQ + -MAP + -DOC + -STR diff --git a/src/ext_depends/D-YAML/test/spec 1.1/spec-10-15.yaml b/src/ext_depends/D-YAML/test/spec 1.1/spec-10-15.yaml new file mode 100644 index 0000000..ae09905 --- /dev/null +++ b/src/ext_depends/D-YAML/test/spec 1.1/spec-10-15.yaml @@ -0,0 +1,69 @@ +%YAML 1.1 +--- +- name: spec-10-15 + yaml: | + - sun: yellow + - ? earth: blue + : moon: white + tree: | + +STR + +DOC + +SEQ + +MAP + =VAL :sun + =VAL :yellow + -MAP + +MAP + +MAP + =VAL :earth + =VAL :blue + -MAP + +MAP + =VAL :moon + =VAL :white + -MAP + -MAP + -SEQ + -DOC + -STR +- name: spec-10-15-canonical + yaml: | + %YAML 1.1 + --- + !!seq [ + !!map { + ? !!str "sun" + : !!str "yellow" + }, + !!map { + ? !!map { + ? !!str "earth" + : !!str "blue" + } + : !!map { + ? !!str "moon" + : !!str "white" + } + } + ] + tree: | + +STR + +DOC --- + +SEQ [] <tag:yaml.org,2002:seq> + +MAP {} <tag:yaml.org,2002:map> + =VAL <tag:yaml.org,2002:str> "sun + =VAL <tag:yaml.org,2002:str> "yellow + -MAP + +MAP {} <tag:yaml.org,2002:map> + +MAP {} <tag:yaml.org,2002:map> + =VAL <tag:yaml.org,2002:str> "earth + =VAL <tag:yaml.org,2002:str> "blue + -MAP + +MAP {} <tag:yaml.org,2002:map> + =VAL <tag:yaml.org,2002:str> "moon + =VAL <tag:yaml.org,2002:str> "white + -MAP + -MAP + -SEQ + -DOC + -STR diff --git a/src/ext_depends/D-YAML/test/unclosed-bracket.yaml b/src/ext_depends/D-YAML/test/unclosed-bracket.yaml new file mode 100644 index 0000000..aae8c4f --- /dev/null +++ b/src/ext_depends/D-YAML/test/unclosed-bracket.yaml @@ -0,0 +1,14 @@ +%YAML 1.1 +--- +- name: unclosed-bracket + fail: true + mark: { line: 7, column: 1 } + mark2: { line: 2, column: 7 } + error: "While parsing a flow sequence, expected ',' or ']', but got: streamEnd" + yaml: | + test: + - [ foo: bar + # comment the rest of the stream to let the scanner detect the problem. + # - baz + #"we could have detected the unclosed bracket on the above line, but this would forbid such syntax as": { + #} diff --git a/src/ext_depends/D-YAML/test/unclosed-quoted-scalar.yaml b/src/ext_depends/D-YAML/test/unclosed-quoted-scalar.yaml new file mode 100644 index 0000000..0c2a022 --- /dev/null +++ b/src/ext_depends/D-YAML/test/unclosed-quoted-scalar.yaml @@ -0,0 +1,10 @@ +%YAML 1.1 +--- +- name: unclosed-quoted-scalar + fail: true + mark: { line: 3, column: 1 } + mark2: { line: 1, column: 1 } + error: "While scanning a quoted scalar, found unexpected end of buffer" + yaml: | + 'foo + bar diff --git a/src/ext_depends/D-YAML/test/undefined-anchor.yaml b/src/ext_depends/D-YAML/test/undefined-anchor.yaml new file mode 100644 index 0000000..0c26061 --- /dev/null +++ b/src/ext_depends/D-YAML/test/undefined-anchor.yaml @@ -0,0 +1,11 @@ +%YAML 1.1 +--- +- name: undefined-anchor + fail: true + error: | + Unable to load test/undefined-anchor.yaml#undefined-anchor:yaml: Found undefined alias: bat + mark: { line: 3, column: 3 } + yaml: | + - foo + - &bar baz + - *bat diff --git a/src/ext_depends/D-YAML/test/undefined-tag-handle.yaml b/src/ext_depends/D-YAML/test/undefined-tag-handle.yaml new file mode 100644 index 0000000..15eccbd --- /dev/null +++ b/src/ext_depends/D-YAML/test/undefined-tag-handle.yaml @@ -0,0 +1,16 @@ +%YAML 1.1 +--- +- name: undefined-tag-handle + fail: true + mark: { line: 1, column: 5 } + mark2: { line: 1, column: 5 } + error: "While parsing a node, found undefined tag handle: !foo!" + yaml: | + --- !foo!bar baz +- name: undefined-tag-handle-2 + fail: true + mark: { line: 1, column: 9 } + mark2: { line: 1, column: 1 } + error: "While parsing a node, found undefined tag handle: !foo!" + yaml: |- + &anchor !foo!bar value diff --git a/src/sisudoc/COPYRIGHT b/src/sisudoc/COPYRIGHT index 88b66fb..2a71121 100644 --- a/src/sisudoc/COPYRIGHT +++ b/src/sisudoc/COPYRIGHT @@ -5,7 +5,7 @@ - Author: Ralph Amissah [ralph.amissah@gmail.com] - - Copyright: (C) 2015 - 2024 Ralph Amissah + - Copyright: (C) 2015 - 2025 Ralph Amissah - code under src/* src/sisudoc/* - License: AGPL 3 or later: @@ -140,6 +140,7 @@ - code: cgi.d aria2c https://raw.githubusercontent.com/adamdruppe/arsd/master/cgi.d + aria2c https://raw.githubusercontent.com/adamdruppe/arsd/master/core.d - License: BSL-1.0 Boost Software License 1.0 diff --git a/src/sisudoc/conf/compile_time_info.d b/src/sisudoc/conf/compile_time_info.d index e1ce86b..3169237 100644 --- a/src/sisudoc/conf/compile_time_info.d +++ b/src/sisudoc/conf/compile_time_info.d @@ -6,7 +6,7 @@ - Author: Ralph Amissah [ralph.amissah@gmail.com] - - Copyright: (C) 2015 - 2024 Ralph Amissah, All Rights Reserved. + - Copyright: (C) 2015 - 2025 Ralph Amissah, All Rights Reserved. - License: AGPL 3 or later: diff --git a/src/sisudoc/io_in/paths_source.d b/src/sisudoc/io_in/paths_source.d index 071abff..c30b5d5 100644 --- a/src/sisudoc/io_in/paths_source.d +++ b/src/sisudoc/io_in/paths_source.d @@ -6,7 +6,7 @@ - Author: Ralph Amissah [ralph.amissah@gmail.com] - - Copyright: (C) 2015 - 2024 Ralph Amissah, All Rights Reserved. + - Copyright: (C) 2015 - 2025 Ralph Amissah, All Rights Reserved. - License: AGPL 3 or later: @@ -54,16 +54,14 @@ +/ module sisudoc.io_in.paths_source; @safe: -import - std.array, - std.file, - std.path, - std.regex, - std.stdio, - std.conv : to; -import - sisudoc.meta.defaults, - sisudoc.meta.rgx_files; +import std.array; +import std.file; +import std.path; +import std.regex; +import std.stdio; +import std.conv : to; +import sisudoc.meta.defaults; +import sisudoc.meta.rgx_files; template PodManifest() { mixin spineRgxFiles; static auto rgx_files = RgxFiles(); diff --git a/src/sisudoc/io_in/read_config_files.d b/src/sisudoc/io_in/read_config_files.d index c71364c..9a390d5 100644 --- a/src/sisudoc/io_in/read_config_files.d +++ b/src/sisudoc/io_in/read_config_files.d @@ -6,7 +6,7 @@ - Author: Ralph Amissah [ralph.amissah@gmail.com] - - Copyright: (C) 2015 - 2024 Ralph Amissah, All Rights Reserved. + - Copyright: (C) 2015 - 2025 Ralph Amissah, All Rights Reserved. - License: AGPL 3 or later: @@ -54,14 +54,12 @@ +/ module sisudoc.io_in.read_config_files; @safe: -import - std.file, - std.path; -import - sisudoc.meta, - sisudoc.io_in.paths_source, - sisudoc.meta.rgx_files, - sisudoc.meta.rgx; +import std.file; +import std.path; +import sisudoc.meta; +import sisudoc.io_in.paths_source; +import sisudoc.meta.rgx_files; +import sisudoc.meta.rgx; template readConfigSite() { @system final auto readConfigSite(Cf,O,Cfg)(Cf _conf_file_details, O _opt_action, Cfg _cfg) { mixin spineRgxIn; @@ -190,14 +188,12 @@ webserv: } } static template readConfigDoc() { - import - std.file, - std.path; - import - sisudoc.meta, - sisudoc.io_in.paths_source, - sisudoc.meta.rgx_files, - sisudoc.meta.rgx; + import std.file; + import std.path; + import sisudoc.meta; + import sisudoc.io_in.paths_source; + import sisudoc.meta.rgx_files; + import sisudoc.meta.rgx; @system final auto readConfigDoc(M,E)(M _manifested, E _env) { mixin spineRgxIn; static auto rgx = RgxI(); @@ -246,14 +242,12 @@ static template readConfigDoc() { } } static template configReadSiteYAML() { - import - std.file, - std.path; - import - sisudoc.meta, - sisudoc.io_in.paths_source, - sisudoc.meta.rgx_files, - sisudoc.meta.rgx; + import std.file; + import std.path; + import sisudoc.meta; + import sisudoc.io_in.paths_source; + import sisudoc.meta.rgx_files; + import sisudoc.meta.rgx; final YAMLDocument configReadSiteYAML(M,E)(M _manifested, E _env) { string _configuration = configReadInSiteYAML!()(_manifested, _env); auto _conf_file_details = configFilePaths!()(_manifested, _env); @@ -263,12 +257,10 @@ static template configReadSiteYAML() { } } static template configReadDocYAML() { - import - std.file, - std.path; - import - sisudoc.meta, - sisudoc.io_in.paths_source; + import std.file; + import std.path; + import sisudoc.meta; + import sisudoc.io_in.paths_source; final YAMLDocument configReadDocYAML(M,E)(M _manifested, E _env) { string _configuration = configReadInDocYAML!()(_manifested, _env); auto _conf_file_details = configFilePaths!()(_manifested, _env); diff --git a/src/sisudoc/io_in/read_source_files.d b/src/sisudoc/io_in/read_source_files.d index b465cc3..428c119 100644 --- a/src/sisudoc/io_in/read_source_files.d +++ b/src/sisudoc/io_in/read_source_files.d @@ -6,7 +6,7 @@ - Author: Ralph Amissah [ralph.amissah@gmail.com] - - Copyright: (C) 2015 - 2024 Ralph Amissah, All Rights Reserved. + - Copyright: (C) 2015 - 2025 Ralph Amissah, All Rights Reserved. - License: AGPL 3 or later: @@ -55,15 +55,13 @@ module sisudoc.io_in.read_source_files; @safe: template spineRawMarkupContent() { - import - std.digest.sha, - std.file, - std.path; - import - sisudoc.meta, - sisudoc.io_in.paths_source, - sisudoc.meta.rgx_files, - sisudoc.meta.rgx; + import std.digest.sha; + import std.file; + import std.path; + import sisudoc.meta; + import sisudoc.io_in.paths_source; + import sisudoc.meta.rgx_files; + import sisudoc.meta.rgx; mixin spineRgxIn; static auto rgx = RgxI(); mixin spineRgxFiles; @@ -132,7 +130,7 @@ template spineRawMarkupContent() { sourcefile_body_content = _cii.contents; insert_file_list_get = _cii.insert_files.dup; images_list_get = _cii.images.dup; - } else if (_opt_action.source || _opt_action.pod) { + } else if (_opt_action.source_or_pod) { auto ins = Inserts(); ST_contents_inserts_images _cii = ins.scan_master_src_for_insert_files_and_import_content(_opt_action, sourcefile_body_content, fn_src); @@ -157,9 +155,8 @@ template spineRawMarkupContent() { } } struct MarkupRawUnit { - import - std.digest.sha, - std.file; + import std.digest.sha; + import std.file; final private string readInMarkupSource(in char[] fn_src) { enforce( exists(fn_src) != 0, @@ -253,7 +250,7 @@ template spineRawMarkupContent() { ) { char[][] contents_insert; int code_block_status = 0; - enum codeBlock { off, curly, tic, } + enum codeBlock { off, curly, tic, quotemarks } auto fn_pth_full = fn_src.match(rgx_files.src_pth_sst_or_ssm); auto markup_src_file_path = fn_pth_full.captures[1]; foreach (line; markup_sourcefile_insert_content) { @@ -265,11 +262,19 @@ template spineRawMarkupContent() { } else if (line.matchFirst(rgx.block_curly_code_open)) { code_block_status = codeBlock.curly; contents_insert ~= line; + } else if (code_block_status == codeBlock.quotemarks) { + if (line.matchFirst(rgx.block_quotemarks_close)) { + code_block_status = codeBlock.off; + } + contents_insert ~= line; } else if (code_block_status == codeBlock.tic) { if (line.matchFirst(rgx.block_tic_close)) { code_block_status = codeBlock.off; } contents_insert ~= line; + } else if (line.matchFirst(rgx.block_quotemarks_code_open)) { + code_block_status = codeBlock.quotemarks; + contents_insert ~= line; } else if (line.matchFirst(rgx.block_tic_code_open)) { code_block_status = codeBlock.tic; contents_insert ~= line; @@ -289,7 +294,7 @@ template spineRawMarkupContent() { markup_sourcesubfile_insert_content.length ); } - if (_opt_action.source || _opt_action.pod) { + if (_opt_action.source_or_pod) { _images ~= _extract_images(markup_sourcesubfile_insert_content); } auto ins = Inserts(); @@ -305,7 +310,7 @@ template spineRawMarkupContent() { +/ } else { contents_insert ~= line; // images to extract for image list? - if (_opt_action.source || _opt_action.pod) { + if (_opt_action.source_or_pod) { string[] _image_linelist = _extract_images(line); if (_image_linelist.length > 0) { _images ~= _image_linelist; @@ -328,7 +333,7 @@ template spineRawMarkupContent() { import std.algorithm; char[][] contents; int code_block_status = 0; - enum codeBlock { off, curly, tic, } + enum codeBlock { off, curly, tic, quotemarks } auto fn_pth_full = fn_src.match(rgx_files.src_pth_sst_or_ssm); auto markup_src_file_path = fn_pth_full.captures[1]; char[][] contents_insert; @@ -343,11 +348,19 @@ template spineRawMarkupContent() { } else if (line.matchFirst(rgx.block_curly_code_open)) { code_block_status = codeBlock.curly; contents ~= line; + } else if (code_block_status == codeBlock.quotemarks) { + if (line.matchFirst(rgx.block_quotemarks_close)) { + code_block_status = codeBlock.off; + } + contents ~= line; } else if (code_block_status == codeBlock.tic) { if (line.matchFirst(rgx.block_tic_close)) { code_block_status = codeBlock.off; } contents ~= line; + } else if (line.matchFirst(rgx.block_quotemarks_code_open)) { + code_block_status = codeBlock.quotemarks; + contents ~= line; } else if (line.matchFirst(rgx.block_tic_code_open)) { code_block_status = codeBlock.tic; contents ~= line; @@ -376,7 +389,7 @@ template spineRawMarkupContent() { fn_src_insert.to!string ); contents ~= contents_insert_st.insert_contents; - if (_opt_action.source || _opt_action.pod) { + if (_opt_action.source_or_pod) { string[] _image_linelist = _extract_images(contents_insert_st.images); if (_image_linelist.length > 0) { _images ~= _image_linelist; @@ -394,7 +407,7 @@ template spineRawMarkupContent() { +/ } else { contents ~= line; - if (_opt_action.source || _opt_action.pod) { + if (_opt_action.source_or_pod) { string[] _image_linelist = _extract_images(line); if (_image_linelist.length > 0) { _images ~= _image_linelist; diff --git a/src/sisudoc/io_out/create_zip_file.d b/src/sisudoc/io_out/create_zip_file.d index 36863eb..7bd58bc 100644 --- a/src/sisudoc/io_out/create_zip_file.d +++ b/src/sisudoc/io_out/create_zip_file.d @@ -6,7 +6,7 @@ - Author: Ralph Amissah [ralph.amissah@gmail.com] - - Copyright: (C) 2015 - 2024 Ralph Amissah, All Rights Reserved. + - Copyright: (C) 2015 - 2025 Ralph Amissah, All Rights Reserved. - License: AGPL 3 or later: @@ -50,11 +50,10 @@ module sisudoc.io_out.create_zip_file; @safe: template createZipFile() { - import - std.file, - std.outbuffer, - std.string, - std.zip; + import std.file; + import std.outbuffer; + import std.string; + import std.zip; void createZipFile( string zip_file_name, void[] compressed_zip_data, diff --git a/src/sisudoc/io_out/defaults.d b/src/sisudoc/io_out/defaults.d index be7c122..e373b76 100644 --- a/src/sisudoc/io_out/defaults.d +++ b/src/sisudoc/io_out/defaults.d @@ -6,7 +6,7 @@ - Author: Ralph Amissah [ralph.amissah@gmail.com] - - Copyright: (C) 2015 - 2024 Ralph Amissah, All Rights Reserved. + - Copyright: (C) 2015 - 2025 Ralph Amissah, All Rights Reserved. - License: AGPL 3 or later: diff --git a/src/sisudoc/io_out/epub3.d b/src/sisudoc/io_out/epub3.d index b4ff21b..77bf040 100644 --- a/src/sisudoc/io_out/epub3.d +++ b/src/sisudoc/io_out/epub3.d @@ -6,7 +6,7 @@ - Author: Ralph Amissah [ralph.amissah@gmail.com] - - Copyright: (C) 2015 - 2024 Ralph Amissah, All Rights Reserved. + - Copyright: (C) 2015 - 2025 Ralph Amissah, All Rights Reserved. - License: AGPL 3 or later: @@ -50,19 +50,17 @@ module sisudoc.io_out.epub3; @safe: template outputEPub3() { - import - std.file, - std.outbuffer, - std.uri, - std.zip, - std.conv : to; - import - sisudoc.io_out, - sisudoc.io_out.rgx, - sisudoc.io_out.rgx_xhtml, - sisudoc.io_out.create_zip_file, - sisudoc.io_out.xmls, - sisudoc.io_out.xmls_css; + import std.file; + import std.outbuffer; + import std.uri; + import std.zip; + import std.conv : to; + import sisudoc.io_out; + import sisudoc.io_out.rgx; + import sisudoc.io_out.rgx_xhtml; + import sisudoc.io_out.create_zip_file; + import sisudoc.io_out.xmls; + import sisudoc.io_out.xmls_css; mixin InternalMarkup; mixin outputXHTMLs; static auto rgx = RgxO(); @@ -95,10 +93,10 @@ template outputEPub3() { </rootfiles>┃") ~ "\n</container>\n"; return o; } - string epub3_oebps_content(D,M,P)(D doc_abstraction, M doc_matters, P parts) { + string epub3_oebps_content(D,P)(D doc, P parts) { auto xhtml_format = outputXHTMLs(); - auto pth_epub3 = spinePathsEPUB!()(doc_matters.output_path, doc_matters.src.language); - string _uuid = "18275d951861c77f78acd05672c9906924c59f18a2e0ba06dad95959693e9bd8"; // TODO sort uuid in doc_matters! + auto pth_epub3 = spinePathsEPUB!()(doc.matters.output_path, doc.matters.src.language); + string _uuid = "18275d951861c77f78acd05672c9906924c59f18a2e0ba06dad95959693e9bd8"; // TODO sort uuid in doc.matters! string content = format(q"┃<?xml version="1.0" encoding="utf-8"?> <package version="3.0" xmlns="http://www.idpf.org/2007/opf" unique-identifier="uid" prefix="rendition: http://www.idpf.org/vocab/rendition/#"> <metadata @@ -122,25 +120,25 @@ template outputEPub3() { <item id="nav" href="toc_nav.xhtml" media-type="application/xhtml+xml" properties="nav" /> ┃", _uuid, - xhtml_format.special_characters_text(doc_matters.conf_make_meta.meta.title_main), - (doc_matters.conf_make_meta.meta.title_sub.empty) - ? "" : xhtml_format.special_characters_text(doc_matters.conf_make_meta.meta.title_sub), - (doc_matters.conf_make_meta.meta.creator_author.empty) - ? "" : xhtml_format.special_characters_text(doc_matters.conf_make_meta.meta.creator_author), - (doc_matters.conf_make_meta.meta.creator_author.empty) - ? "" : xhtml_format.special_characters_text(doc_matters.conf_make_meta.meta.creator_author), - doc_matters.src.language, // language, fix (needed in dochead metadata) - (doc_matters.conf_make_meta.meta.date_published.empty) - ? "" : xhtml_format.special_characters_date(doc_matters.conf_make_meta.meta.date_published), - (doc_matters.conf_make_meta.meta.rights_copyright.empty) - ? "" : xhtml_format.special_characters_text(doc_matters.conf_make_meta.meta.rights_copyright), + xhtml_format.special_characters_text(doc.matters.conf_make_meta.meta.title_main), + (doc.matters.conf_make_meta.meta.title_sub.empty) + ? "" : xhtml_format.special_characters_text(doc.matters.conf_make_meta.meta.title_sub), + (doc.matters.conf_make_meta.meta.creator_author.empty) + ? "" : xhtml_format.special_characters_text(doc.matters.conf_make_meta.meta.creator_author), + (doc.matters.conf_make_meta.meta.creator_author.empty) + ? "" : xhtml_format.special_characters_text(doc.matters.conf_make_meta.meta.creator_author), + doc.matters.src.language, // language, fix (needed in dochead metadata) + (doc.matters.conf_make_meta.meta.date_published.empty) + ? "" : xhtml_format.special_characters_date(doc.matters.conf_make_meta.meta.date_published), + (doc.matters.conf_make_meta.meta.rights_copyright.empty) + ? "" : xhtml_format.special_characters_text(doc.matters.conf_make_meta.meta.rights_copyright), _uuid, _uuid, (pth_epub3.fn_oebps_css).chompPrefix("OEBPS/"), ); content ~= parts["manifest_documents"]; // TODO sort jpg & png - foreach (image; doc_matters.srcs.image_list) { + foreach (image; doc.matters.srcs.image_list) { content ~= format(q"┃ <item id="%s" href="%s/%s" media-type="image/%s" /> ┃", image.baseName.stripExtension, @@ -158,8 +156,8 @@ template outputEPub3() { content ~= " " ~ "</guide>" ~ "\n "; content ~= "" ~ "</package>"; debug(epubmanifest) { - foreach (section; doc_matters.has.keys_seq.seg) { // TODO - foreach (obj; doc_abstraction[section]) { + foreach (section; doc.matters.has.keys_seq.seg) { // TODO + foreach (obj; doc.abstraction[section]) { if (obj.metainfo.is_a == "heading") { if (obj.metainfo.heading_lev_markup == 4) { writefln( @@ -183,7 +181,7 @@ template outputEPub3() { } return content; } - string epub3_oebps_toc_nav_xhtml(D,I)(D doc_abstraction, I doc_matters) { + string epub3_oebps_toc_nav_xhtml(D)(D doc) { enum DomTags { none, open, close, close_and_open, open_still, } auto markup = InlineMarkup(); static auto rgx = RgxO(); @@ -202,12 +200,12 @@ template outputEPub3() { </header> <nav epub:type="toc" id="toc"> ┃", - (doc_matters.conf_make_meta.meta.title_full).special_characters_text, + (doc.matters.conf_make_meta.meta.title_full).special_characters_text, ); string _toc_nav_tail = ""; - // writeln(doc_matters.has.keys_seq.seg); // DEBUG line - foreach (sect; doc_matters.has.keys_seq.seg) { - foreach (obj; doc_abstraction[sect]) { + // writeln(doc.matters.has.keys_seq.seg); // DEBUG line + foreach (sect; doc.matters.has.keys_seq.seg) { + foreach (obj; doc.abstraction[sect]) { if ((sect == "head") && (obj.metainfo.is_a == "heading")) { toc = toc_head; } @@ -263,7 +261,7 @@ template outputEPub3() { } break; } - if (doc_matters.has.keys_seq.seg[doc_matters.has.keys_seq.seg.length - 2] == sect) { + if (doc.matters.has.keys_seq.seg[doc.matters.has.keys_seq.seg.length - 2] == sect) { // writeln(n, ": ", sect, ": ", _txt, " - ", obj.metainfo.dom_structure_collapsed_tags_status); // DEBUG // read last heading (heading prior to closing) and determine what those instructions imply still need to be done // CLOSE // DomTags { 0 none, 1 open, 2 close, 3 close_and_open, 4 open_still, } @@ -296,16 +294,12 @@ template outputEPub3() { toc ~= _toc_nav_tail; return toc; } - @system void outputEPub3(D,I)( - const D doc_abstraction, - I doc_matters, - ) { + @system void outputEPub3(D)(D doc) { mixin spineRgxOut; mixin spineRgxXHTML; auto xhtml_format = outputXHTMLs(); static auto rgx = RgxO(); static auto rgx_xhtml = RgxXHTML(); - string[] doc; string segment_filename; string[] top_level_headings = ["","","",""]; string[string] oepbs_content_parts; @@ -322,8 +316,8 @@ template outputEPub3() { string[] doc_parts; } auto epubWrite = writeOut(); - foreach (section; doc_matters.has.keys_seq.seg) { - foreach (obj; doc_abstraction[section]) { + foreach (section; doc.matters.has.keys_seq.seg) { + foreach (obj; doc.abstraction[section]) { string _txt = xhtml_format.special_characters_breaks_indents_bullets(obj); if (obj.metainfo.is_a == "heading") { assert(section == "head" || "toc" || "body" || "endnotes" || "glossary" || "bibliography" || "bookindex" || "blurb" || "tail"); @@ -351,8 +345,8 @@ template outputEPub3() { goto default; default: epubWrite.doc_parts ~= obj.tags.segment_anchor_tag_epub; - epubWrite.doc_epub3[obj.tags.segment_anchor_tag_epub] ~= xhtml_format.epub3_seg_head(doc_matters); - Tuple!(string, string[]) t = xhtml_format.heading_seg(_txt, obj, doc_matters, suffix, "epub"); + epubWrite.doc_epub3[obj.tags.segment_anchor_tag_epub] ~= xhtml_format.epub3_seg_head(doc.matters); + Tuple!(string, string[]) t = xhtml_format.heading_seg(_txt, obj, doc.matters, suffix, "epub"); epubWrite.doc_epub3[obj.tags.segment_anchor_tag_epub] ~= t[0]; epubWrite.doc_epub3_endnotes[obj.tags.segment_anchor_tag_epub] ~= t[1]; break; @@ -360,19 +354,19 @@ template outputEPub3() { break; case 4: segment_filename = obj.tags.segment_anchor_tag_epub; - epubWrite.doc_epub3[segment_filename] ~= xhtml_format.epub3_seg_head(doc_matters); - Tuple!(string, string[]) t = xhtml_format.heading_seg(_txt, obj, doc_matters, suffix, "epub"); + epubWrite.doc_epub3[segment_filename] ~= xhtml_format.epub3_seg_head(doc.matters); + Tuple!(string, string[]) t = xhtml_format.heading_seg(_txt, obj, doc.matters, suffix, "epub"); epubWrite.doc_epub3[segment_filename] ~= t[0]; epubWrite.doc_epub3_endnotes[segment_filename] ~= t[1]; break; case 5: .. case 7: - Tuple!(string, string[]) t = xhtml_format.heading_seg(_txt, obj, doc_matters, suffix, "epub"); + Tuple!(string, string[]) t = xhtml_format.heading_seg(_txt, obj, doc.matters, suffix, "epub"); epubWrite.doc_epub3[segment_filename] ~= t[0]; epubWrite.doc_epub3_endnotes[segment_filename] ~= t[1]; break; case 8: .. case 9: { /+ debug +/ - if (doc_matters.opt.action.debug_do_epub) { + if (doc.matters.opt.action.debug_do_epub) { writeln(__FILE__, ":", __LINE__, ": ", obj.metainfo.is_a, ": ", obj.metainfo.heading_lev_markup); writeln(__FILE__, ":", __LINE__, ": ", obj.text); } @@ -380,7 +374,7 @@ template outputEPub3() { break; default: { /+ debug +/ - if (doc_matters.opt.action.debug_do_epub) { + if (doc.matters.opt.action.debug_do_epub) { writeln(__FILE__, ":", __LINE__, ": ", obj.metainfo.is_a, ": ", obj.metainfo.heading_lev_markup); } } @@ -395,13 +389,13 @@ template outputEPub3() { case "para": switch (obj.metainfo.is_a) { case "toc": - t = xhtml_format.para_seg(_txt, obj, doc_matters, suffix, "epub"); + t = xhtml_format.para_seg(_txt, obj, doc.matters, suffix, "epub"); epubWrite.doc_epub3[segment_filename] ~= t[0]; epubWrite.doc_epub3_endnotes[segment_filename] ~= t[1]; break; default: { /+ debug +/ - if (doc_matters.opt.action.debug_do_epub) { + if (doc.matters.opt.action.debug_do_epub) { writeln(__FILE__, ":", __LINE__, ": ", obj.metainfo.is_a); } } @@ -410,7 +404,7 @@ template outputEPub3() { break; default: { /+ debug +/ - if (doc_matters.opt.action.debug_do_epub) { + if (doc.matters.opt.action.debug_do_epub) { writeln(__FILE__, ":", __LINE__, ": ", obj.metainfo.is_of_type); } } @@ -422,13 +416,13 @@ template outputEPub3() { case "para": switch (obj.metainfo.is_a) { case "para": - t = xhtml_format.para_seg(_txt, obj, doc_matters, suffix, "epub"); + t = xhtml_format.para_seg(_txt, obj, doc.matters, suffix, "epub"); epubWrite.doc_epub3[segment_filename] ~= t[0]; epubWrite.doc_epub3_endnotes[segment_filename] ~= t[1]; break; default: { /+ debug +/ - if (doc_matters.opt.action.debug_do_epub) { + if (doc.matters.opt.action.debug_do_epub) { writeln(__FILE__, ":", __LINE__, ": ", obj.metainfo.is_a); } } @@ -438,37 +432,37 @@ template outputEPub3() { case "block": switch (obj.metainfo.is_a) { case "quote": - t = xhtml_format.quote_seg(_txt, obj, doc_matters, suffix, "epub"); + t = xhtml_format.quote_seg(_txt, obj, doc.matters, suffix, "epub"); epubWrite.doc_epub3[segment_filename] ~= t[0].to!string; epubWrite.doc_epub3_endnotes[segment_filename] ~= t[1]; break; case "group": - t = xhtml_format.group_seg(_txt, obj, doc_matters, suffix, "epub"); + t = xhtml_format.group_seg(_txt, obj, doc.matters, suffix, "epub"); epubWrite.doc_epub3[segment_filename] ~= t[0].to!string; epubWrite.doc_epub3_endnotes[segment_filename] ~= t[1]; break; case "block": - t = xhtml_format.block_seg(_txt, obj, doc_matters, suffix, "epub"); + t = xhtml_format.block_seg(_txt, obj, doc.matters, suffix, "epub"); epubWrite.doc_epub3[segment_filename] ~= t[0].to!string; epubWrite.doc_epub3_endnotes[segment_filename] ~= t[1]; break; case "poem": break; case "verse": - t = xhtml_format.verse_seg(_txt, obj, doc_matters, suffix, "epub"); + t = xhtml_format.verse_seg(_txt, obj, doc.matters, suffix, "epub"); epubWrite.doc_epub3[segment_filename] ~= t[0].to!string; epubWrite.doc_epub3_endnotes[segment_filename] ~= t[1]; break; case "code": - epubWrite.doc_epub3[segment_filename] ~= xhtml_format.code(_txt, obj, doc_matters); + epubWrite.doc_epub3[segment_filename] ~= xhtml_format.code(_txt, obj, doc.matters); break; case "table": - epubWrite.doc_epub3[segment_filename] ~= xhtml_format.table(_txt, obj, doc_matters); + epubWrite.doc_epub3[segment_filename] ~= xhtml_format.table(_txt, obj, doc.matters); epubWrite.doc_epub3_endnotes[segment_filename] ~= ""; break; default: { /+ debug +/ - if (doc_matters.opt.action.debug_do_epub) { + if (doc.matters.opt.action.debug_do_epub) { writeln(__FILE__, ":", __LINE__, ": ", obj.metainfo.is_a); } } @@ -477,7 +471,7 @@ template outputEPub3() { break; default: { /+ debug +/ - if (doc_matters.opt.action.debug_do_epub) { + if (doc.matters.opt.action.debug_do_epub) { writeln(__FILE__, ":", __LINE__, ": ", obj.metainfo.is_of_type); } } @@ -490,37 +484,37 @@ template outputEPub3() { case "para": switch (obj.metainfo.is_a) { case "endnote": assert(section == "endnotes"); - t = xhtml_format.para_seg(_txt, obj, doc_matters, suffix, "epub"); + t = xhtml_format.para_seg(_txt, obj, doc.matters, suffix, "epub"); epubWrite.doc_epub3[segment_filename] ~= t[0]; break; case "glossary": assert(section == "glossary"); - t = xhtml_format.para_seg(_txt, obj, doc_matters, suffix, "epub"); + t = xhtml_format.para_seg(_txt, obj, doc.matters, suffix, "epub"); epubWrite.doc_epub3[segment_filename] ~= t[0]; epubWrite.doc_epub3_endnotes[segment_filename] ~= t[1]; break; case "bibliography": assert(section == "bibliography"); - t = xhtml_format.para_seg(_txt, obj, doc_matters, suffix, "epub"); + t = xhtml_format.para_seg(_txt, obj, doc.matters, suffix, "epub"); epubWrite.doc_epub3[segment_filename] ~= t[0]; epubWrite.doc_epub3_endnotes[segment_filename] ~= t[1]; break; case "bookindex": assert(section == "bookindex"); - t = xhtml_format.para_seg(_txt, obj, doc_matters, suffix, "epub"); + t = xhtml_format.para_seg(_txt, obj, doc.matters, suffix, "epub"); epubWrite.doc_epub3[segment_filename] ~= t[0]; epubWrite.doc_epub3_endnotes[segment_filename] ~= t[1]; break; case "blurb": assert(section == "blurb"); - t = xhtml_format.para_seg(_txt, obj, doc_matters, suffix, "epub"); + t = xhtml_format.para_seg(_txt, obj, doc.matters, suffix, "epub"); epubWrite.doc_epub3[segment_filename] ~= t[0]; epubWrite.doc_epub3_endnotes[segment_filename] ~= t[1]; break; case "tail": assert(section == "tail"); - t = xhtml_format.para_seg(_txt, obj, doc_matters, suffix, "epub"); + t = xhtml_format.para_seg(_txt, obj, doc.matters, suffix, "epub"); epubWrite.doc_epub3[segment_filename] ~= t[0]; epubWrite.doc_epub3_endnotes[segment_filename] ~= t[1]; break; default: { /+ debug +/ - if (doc_matters.opt.action.debug_do_epub) { + if (doc.matters.opt.action.debug_do_epub) { writeln(__FILE__, ":", __LINE__, ": ", obj.metainfo.is_a); } } @@ -529,7 +523,7 @@ template outputEPub3() { break; default: { /+ debug +/ - if (doc_matters.opt.action.debug_do_epub) { + if (doc.matters.opt.action.debug_do_epub) { writeln(__FILE__, ":", __LINE__, ": ", obj.metainfo.is_of_type); } } @@ -540,7 +534,7 @@ template outputEPub3() { break; default: { /+ debug +/ - if (doc_matters.opt.action.debug_do_epub) { + if (doc.matters.opt.action.debug_do_epub) { writeln(__FILE__, ":", __LINE__, ": ", obj.metainfo.is_of_part); } } @@ -597,9 +591,9 @@ template outputEPub3() { /+ epub specific documents +/ epubWrite.mimetypes = epub3_mimetypes; epubWrite.meta_inf_container_xml = epub3_container_xml; - epubWrite.oebps_toc_nav_xhtml = doc_abstraction.epub3_oebps_toc_nav_xhtml(doc_matters); - epubWrite.oebps_content_opf = doc_abstraction.epub3_oebps_content(doc_matters, oepbs_content_parts); - epubWrite.epub3_write_output_files(doc_matters); + epubWrite.oebps_toc_nav_xhtml = doc.epub3_oebps_toc_nav_xhtml; + epubWrite.oebps_content_opf = doc.epub3_oebps_content(oepbs_content_parts); + epubWrite.epub3_write_output_files(doc.matters); } @system void epub3_write_output_files(W,M)( W epub_write, diff --git a/src/sisudoc/io_out/html.d b/src/sisudoc/io_out/html.d index d9aaa58..5ca320c 100644 --- a/src/sisudoc/io_out/html.d +++ b/src/sisudoc/io_out/html.d @@ -6,7 +6,7 @@ - Author: Ralph Amissah [ralph.amissah@gmail.com] - - Copyright: (C) 2015 - 2024 Ralph Amissah, All Rights Reserved. + - Copyright: (C) 2015 - 2025 Ralph Amissah, All Rights Reserved. - License: AGPL 3 or later: @@ -50,36 +50,31 @@ module sisudoc.io_out.html; @safe: template outputHTML() { - import - std.file, - std.outbuffer, - std.uri, - std.conv : to; - import - sisudoc.io_out, - sisudoc.io_out.rgx, - sisudoc.meta.rgx_files, - sisudoc.io_out.rgx_xhtml, - sisudoc.io_out.create_zip_file, - sisudoc.io_out.xmls, - sisudoc.io_out.xmls_css; + import std.file; + import std.outbuffer; + import std.uri; + import std.conv : to; + import sisudoc.io_out; + import sisudoc.io_out.rgx; + import sisudoc.meta.rgx_files; + import sisudoc.io_out.rgx_xhtml; + import sisudoc.io_out.create_zip_file; + import sisudoc.io_out.xmls; + import sisudoc.io_out.xmls_css; mixin outputXHTMLs; - void scroll(D,M)( - const D doc_abstraction, - M doc_matters, - ) { + void scroll(D)(D doc) { mixin spineRgxOut; mixin spineRgxXHTML; auto xhtml_format = outputXHTMLs(); static auto rgx = RgxO(); static auto rgx_xhtml = RgxXHTML(); string[] doc_html; - string[] doc; + string[] doc_out; string suffix = ".html"; string previous_section = ""; string delimit = ""; - foreach (section; doc_matters.has.keys_seq.scroll) { - foreach (obj; doc_abstraction[section]) { + foreach (section; doc.matters.has.keys_seq.scroll) { + foreach (obj; doc.abstraction[section]) { delimit = xhtml_format.div_delimit(section, previous_section); string _txt = xhtml_format.special_characters_breaks_indents_bullets(obj); switch (obj.metainfo.is_of_part) { @@ -88,14 +83,14 @@ template outputHTML() { case "para": switch (obj.metainfo.is_a) { case "heading": - doc_html ~= delimit ~ xhtml_format.heading_scroll(_txt, obj, doc_matters, suffix); + doc_html ~= delimit ~ xhtml_format.heading_scroll(_txt, obj, doc.matters, suffix); break; case "toc": - doc_html ~= xhtml_format.para_scroll(_txt, obj, doc_matters, suffix); + doc_html ~= xhtml_format.para_scroll(_txt, obj, doc.matters, suffix); break; default: { /+ debug +/ - if (doc_matters.opt.action.debug_do_html) { + if (doc.matters.opt.action.debug_do_html) { writeln(__FILE__, ":", __LINE__, ": ", obj.metainfo.is_a); } } @@ -104,7 +99,7 @@ template outputHTML() { break; default: { /+ debug +/ - if (doc_matters.opt.action.debug_do_html) { + if (doc.matters.opt.action.debug_do_html) { writeln(__FILE__, ":", __LINE__, ": ", obj.metainfo.is_of_type); } } @@ -116,14 +111,14 @@ template outputHTML() { case "para": switch (obj.metainfo.is_a) { case "heading": - doc_html ~= delimit ~ xhtml_format.heading_scroll(_txt, obj, doc_matters, suffix); + doc_html ~= delimit ~ xhtml_format.heading_scroll(_txt, obj, doc.matters, suffix); break; case "para": - doc_html ~= xhtml_format.para_scroll(_txt, obj, doc_matters, suffix); + doc_html ~= xhtml_format.para_scroll(_txt, obj, doc.matters, suffix); break; default: { /+ debug +/ - if (doc_matters.opt.action.debug_do_html) { + if (doc.matters.opt.action.debug_do_html) { writeln(__FILE__, ":", __LINE__, ": ", obj.metainfo.is_a); } } @@ -133,28 +128,28 @@ template outputHTML() { case "block": switch (obj.metainfo.is_a) { case "quote": - doc_html ~= xhtml_format.quote_scroll(_txt, obj, doc_matters); + doc_html ~= xhtml_format.quote_scroll(_txt, obj, doc.matters); break; case "group": - doc_html ~= xhtml_format.group_scroll(_txt, obj, doc_matters); + doc_html ~= xhtml_format.group_scroll(_txt, obj, doc.matters); break; case "block": - doc_html ~= xhtml_format.block_scroll(_txt, obj, doc_matters); + doc_html ~= xhtml_format.block_scroll(_txt, obj, doc.matters); break; case "poem": break; case "verse": - doc_html ~= xhtml_format.verse_scroll(_txt, obj, doc_matters, suffix); + doc_html ~= xhtml_format.verse_scroll(_txt, obj, doc.matters, suffix); break; case "code": - doc_html ~= xhtml_format.code(_txt, obj, doc_matters); + doc_html ~= xhtml_format.code(_txt, obj, doc.matters); break; case "table": - doc_html ~= xhtml_format.table(_txt, obj, doc_matters); + doc_html ~= xhtml_format.table(_txt, obj, doc.matters); break; default: { /+ debug +/ - if (doc_matters.opt.action.debug_do_html) { + if (doc.matters.opt.action.debug_do_html) { writeln(__FILE__, ":", __LINE__, ": ", obj.metainfo.is_a); } } @@ -163,7 +158,7 @@ template outputHTML() { break; default: { /+ debug +/ - if (doc_matters.opt.action.debug_do_html) { + if (doc.matters.opt.action.debug_do_html) { writeln(__FILE__, ":", __LINE__, ": ", obj.metainfo.is_of_type); } } @@ -176,29 +171,29 @@ template outputHTML() { case "para": switch (obj.metainfo.is_a) { case "heading": - doc_html ~= delimit ~ xhtml_format.heading_scroll(_txt, obj, doc_matters, suffix); + doc_html ~= delimit ~ xhtml_format.heading_scroll(_txt, obj, doc.matters, suffix); break; case "endnote": assert(section == "endnotes"); - doc_html ~= xhtml_format.para_scroll(_txt, obj, doc_matters, suffix); + doc_html ~= xhtml_format.para_scroll(_txt, obj, doc.matters, suffix); break; case "glossary": assert(section == "glossary"); - doc_html ~= xhtml_format.para_scroll(_txt, obj, doc_matters, suffix); + doc_html ~= xhtml_format.para_scroll(_txt, obj, doc.matters, suffix); break; case "bibliography": assert(section == "bibliography"); - doc_html ~= xhtml_format.para_scroll(_txt, obj, doc_matters, suffix); + doc_html ~= xhtml_format.para_scroll(_txt, obj, doc.matters, suffix); break; case "bookindex": assert(section == "bookindex"); - doc_html ~= xhtml_format.para_scroll(_txt, obj, doc_matters, suffix); + doc_html ~= xhtml_format.para_scroll(_txt, obj, doc.matters, suffix); break; case "blurb": assert(section == "blurb"); - doc_html ~= xhtml_format.para_scroll(_txt, obj, doc_matters, suffix); + doc_html ~= xhtml_format.para_scroll(_txt, obj, doc.matters, suffix); break; case "tail": assert(section == "tail"); - doc_html ~= xhtml_format.para_scroll(_txt, obj, doc_matters, suffix); + doc_html ~= xhtml_format.para_scroll(_txt, obj, doc.matters, suffix); break; default: { /+ debug +/ - if (doc_matters.opt.action.debug_do_html) { + if (doc.matters.opt.action.debug_do_html) { writeln(__FILE__, ":", __LINE__, ": ", obj.metainfo.is_a); } } @@ -207,7 +202,7 @@ template outputHTML() { break; default: { /+ debug +/ - if (doc_matters.opt.action.debug_do_html) { + if (doc.matters.opt.action.debug_do_html) { writeln(__FILE__, ":", __LINE__, ": ", obj.metainfo.is_of_type); } } @@ -218,7 +213,7 @@ template outputHTML() { break; default: { /+ debug +/ - if (doc_matters.opt.action.debug_do_html) { + if (doc.matters.opt.action.debug_do_html) { writeln(__FILE__, ":", __LINE__, ": ", obj.metainfo.is_of_part); writeln(__FILE__, ":", __LINE__, ": ", obj.metainfo.is_a); writeln(__FILE__, ":", __LINE__, ": ", obj.text); @@ -228,18 +223,18 @@ template outputHTML() { } } } - doc = xhtml_format.html_head(doc_matters, "scroll") + doc_out = xhtml_format.html_head(doc.matters, "scroll") ~ doc_html ~ xhtml_format.dom_close - ~ xhtml_format.tail(doc_matters); - scroll_write_output(doc, doc_matters); + ~ xhtml_format.tail(doc.matters); + scroll_write_output(doc_out, doc.matters); } - @trusted void scroll_write_output(D,M)( - D doc, + @trusted void scroll_write_output(O,M)( + O doc_out, M doc_matters, ) { debug(asserts) { - static assert(is(typeof(doc) == string[])); + static assert(is(typeof(doc_out) == string[])); } auto pth_html = spinePathsHTML!()(doc_matters.output_path, doc_matters.src.language); try { @@ -248,7 +243,7 @@ template outputHTML() { } { auto f = File(pth_html.fn_scroll(doc_matters.src.filename), "w"); - foreach (o; doc) { + foreach (o; doc_out) { f.writeln(o); } } @@ -271,10 +266,7 @@ template outputHTML() { writeln(" ", pth_html.fn_scroll(doc_matters.src.filename)); } } - void seg(D,M)( - const D doc_abstraction, - M doc_matters, - ) { + void seg(D)(D doc) { mixin spineRgxOut; mixin spineRgxXHTML; static auto rgx = RgxO(); @@ -282,15 +274,14 @@ template outputHTML() { auto xhtml_format = outputXHTMLs(); string[][string] doc_html; string[][string] doc_html_endnotes; - string[] doc; string segment_filename; string[] top_level_headings = ["","","",""]; string previous_seg_filename = ""; string suffix = ".html"; string previous_section = ""; string delimit = ""; - foreach (section; doc_matters.has.keys_seq.seg) { - foreach (obj; doc_abstraction[section]) { + foreach (section; doc.matters.has.keys_seq.seg) { + foreach (obj; doc.abstraction[section]) { delimit = xhtml_format.div_delimit(section, previous_section); string _txt = xhtml_format.special_characters_breaks_indents_bullets(obj); if (obj.metainfo.is_a == "heading") { @@ -318,33 +309,33 @@ template outputHTML() { top_level_headings[3] = ""; goto default; default: - Tuple!(string, string[]) t = xhtml_format.heading_seg(_txt, obj, doc_matters, suffix, "seg"); + Tuple!(string, string[]) t = xhtml_format.heading_seg(_txt, obj, doc.matters, suffix, "seg"); top_level_headings[obj.metainfo.heading_lev_markup] = t[0]; break; } break; case 4: segment_filename = obj.tags.segment_anchor_tag_epub; - doc_html[segment_filename] ~= xhtml_format.html_head(doc_matters, "seg"); - auto navigation_bar = xhtml_format.nav_pre_next_svg(obj, doc_matters); + doc_html[segment_filename] ~= xhtml_format.html_head(doc.matters, "seg"); + auto navigation_bar = xhtml_format.nav_pre_next_svg(obj, doc.matters); doc_html[segment_filename] ~= navigation_bar.toc_pre_next; previous_seg_filename = segment_filename; foreach (top_level_heading; top_level_headings) { doc_html[segment_filename] ~= top_level_heading; } - Tuple!(string, string[]) t = xhtml_format.heading_seg(_txt, obj, doc_matters, suffix, "seg"); + Tuple!(string, string[]) t = xhtml_format.heading_seg(_txt, obj, doc.matters, suffix, "seg"); doc_html[segment_filename] ~= t[0].to!string; - doc_html[segment_filename] ~= xhtml_format.lev4_heading_subtoc(obj, doc_matters); + doc_html[segment_filename] ~= xhtml_format.lev4_heading_subtoc(obj, doc.matters); doc_html_endnotes[segment_filename] ~= t[1]; break; case 5: .. case 7: - Tuple!(string, string[]) t = xhtml_format.heading_seg(_txt, obj, doc_matters, suffix, "seg"); + Tuple!(string, string[]) t = xhtml_format.heading_seg(_txt, obj, doc.matters, suffix, "seg"); doc_html[segment_filename] ~= t[0].to!string; doc_html_endnotes[segment_filename] ~= t[1]; break; case 8: .. case 9: { /+ debug +/ - if (doc_matters.opt.action.debug_do_html) { + if (doc.matters.opt.action.debug_do_html) { writeln(__FILE__, ":", __LINE__, ": ", obj.metainfo.is_a, ": ", obj.metainfo.heading_lev_markup); writeln(__FILE__, ":", __LINE__, ": ", obj.text); } @@ -352,7 +343,7 @@ template outputHTML() { break; default: { /+ debug +/ - if (doc_matters.opt.action.debug_do_html) { + if (doc.matters.opt.action.debug_do_html) { writeln(__FILE__, ":", __LINE__, ": ", obj.metainfo.is_a, ": ", obj.metainfo.heading_lev_markup); } } @@ -367,12 +358,12 @@ template outputHTML() { case "para": switch (obj.metainfo.is_a) { case "toc": - t = xhtml_format.para_seg(_txt, obj, doc_matters, suffix, "seg"); + t = xhtml_format.para_seg(_txt, obj, doc.matters, suffix, "seg"); doc_html[segment_filename] ~= t[0].to!string; break; default: { /+ debug +/ - if (doc_matters.opt.action.debug_do_html) { + if (doc.matters.opt.action.debug_do_html) { writeln(__FILE__, ":", __LINE__, ": ", obj.metainfo.is_a); } } @@ -381,7 +372,7 @@ template outputHTML() { break; default: { /+ debug +/ - if (doc_matters.opt.action.debug_do_html) { + if (doc.matters.opt.action.debug_do_html) { writeln(__FILE__, ":", __LINE__, ": ", obj.metainfo.is_a); } } @@ -393,13 +384,13 @@ template outputHTML() { case "para": switch (obj.metainfo.is_a) { case "para": - t = xhtml_format.para_seg(_txt, obj, doc_matters, suffix, "seg"); + t = xhtml_format.para_seg(_txt, obj, doc.matters, suffix, "seg"); doc_html[segment_filename] ~= t[0].to!string; doc_html_endnotes[segment_filename] ~= t[1]; break; default: { /+ debug +/ - if (doc_matters.opt.action.debug_do_html) { + if (doc.matters.opt.action.debug_do_html) { writeln(__FILE__, ":", __LINE__, ": ", obj.metainfo.is_a); } } @@ -409,24 +400,24 @@ template outputHTML() { case "block": switch (obj.metainfo.is_a) { case "quote": - t = xhtml_format.quote_seg(_txt, obj, doc_matters, suffix, "seg"); + t = xhtml_format.quote_seg(_txt, obj, doc.matters, suffix, "seg"); goto default; case "group": - t = xhtml_format.group_seg(_txt, obj, doc_matters, suffix, "seg"); + t = xhtml_format.group_seg(_txt, obj, doc.matters, suffix, "seg"); goto default; case "block": - t = xhtml_format.block_seg(_txt, obj, doc_matters, suffix, "seg"); + t = xhtml_format.block_seg(_txt, obj, doc.matters, suffix, "seg"); goto default; case "poem": break; case "verse": - t = xhtml_format.verse_seg(_txt, obj, doc_matters, suffix, "seg"); + t = xhtml_format.verse_seg(_txt, obj, doc.matters, suffix, "seg"); goto default; case "code": - doc_html[segment_filename] ~= xhtml_format.code(_txt, obj, doc_matters); + doc_html[segment_filename] ~= xhtml_format.code(_txt, obj, doc.matters); break; case "table": - doc_html[segment_filename] ~= xhtml_format.table(_txt, obj, doc_matters); + doc_html[segment_filename] ~= xhtml_format.table(_txt, obj, doc.matters); doc_html_endnotes[segment_filename] ~= ""; break; default: @@ -438,7 +429,7 @@ template outputHTML() { doc_html[segment_filename] ~= t[0].to!string; doc_html_endnotes[segment_filename] ~= t[1]; } else { /+ debug +/ - if (doc_matters.opt.action.debug_do_html) { + if (doc.matters.opt.action.debug_do_html) { writeln(__FILE__, ":", __LINE__, ": ", obj.metainfo.is_a); } } @@ -447,7 +438,7 @@ template outputHTML() { break; default: { /+ debug +/ - if (doc_matters.opt.action.debug_do_html) { + if (doc.matters.opt.action.debug_do_html) { writeln(__FILE__, ":", __LINE__, ": ", obj.metainfo.is_of_type); } } @@ -460,37 +451,37 @@ template outputHTML() { case "para": switch (obj.metainfo.is_a) { case "endnote": assert(section == "endnotes"); - t = xhtml_format.para_seg(_txt, obj, doc_matters, suffix, "seg"); + t = xhtml_format.para_seg(_txt, obj, doc.matters, suffix, "seg"); doc_html[segment_filename] ~= t[0]; break; case "glossary": assert(section == "glossary"); - t = xhtml_format.para_seg(_txt, obj, doc_matters, suffix, "seg"); + t = xhtml_format.para_seg(_txt, obj, doc.matters, suffix, "seg"); doc_html[segment_filename] ~= t[0]; doc_html_endnotes[segment_filename] ~= t[1]; break; case "bibliography": assert(section == "bibliography"); - t = xhtml_format.para_seg(_txt, obj, doc_matters, suffix, "seg"); + t = xhtml_format.para_seg(_txt, obj, doc.matters, suffix, "seg"); doc_html[segment_filename] ~= t[0]; doc_html_endnotes[segment_filename] ~= t[1]; break; case "bookindex": assert(section == "bookindex"); - t = xhtml_format.para_seg(_txt, obj, doc_matters, suffix, "seg"); + t = xhtml_format.para_seg(_txt, obj, doc.matters, suffix, "seg"); doc_html[segment_filename] ~= t[0]; doc_html_endnotes[segment_filename] ~= t[1]; break; case "blurb": assert(section == "blurb"); - t = xhtml_format.para_seg(_txt, obj, doc_matters, suffix, "seg"); + t = xhtml_format.para_seg(_txt, obj, doc.matters, suffix, "seg"); doc_html[segment_filename] ~= t[0]; doc_html_endnotes[segment_filename] ~= t[1]; break; case "tail": assert(section == "tail"); - t = xhtml_format.para_seg(_txt, obj, doc_matters, suffix, "seg"); + t = xhtml_format.para_seg(_txt, obj, doc.matters, suffix, "seg"); doc_html[segment_filename] ~= t[0]; doc_html_endnotes[segment_filename] ~= t[1]; break; default: { /+ debug +/ - if (doc_matters.opt.action.debug_do_html) { + if (doc.matters.opt.action.debug_do_html) { writeln(__FILE__, ":", __LINE__, ": ", obj.metainfo.is_a); } } @@ -499,7 +490,7 @@ template outputHTML() { break; default: { /+ debug +/ - if (doc_matters.opt.action.debug_do_html) { + if (doc.matters.opt.action.debug_do_html) { writeln(__FILE__, ":", __LINE__, ": ", obj.metainfo.is_of_type); } } @@ -510,7 +501,7 @@ template outputHTML() { break; default: { /+ debug +/ - if (doc_matters.opt.action.debug_do_html) { + if (doc.matters.opt.action.debug_do_html) { writeln(__FILE__, ":", __LINE__, ": ", obj.metainfo.is_of_part); } } @@ -519,7 +510,7 @@ template outputHTML() { } } } - seg_write_output(doc_html, doc_html_endnotes, doc_matters); + seg_write_output(doc_html, doc_html_endnotes, doc.matters); } @trusted void seg_write_output(D,E,M)( // @system? D doc_html, @@ -587,9 +578,7 @@ template outputHTML() { // Handle error } } - @trusted void images_cp(M)( // @system - M doc_matters, - ) { + @trusted void images_cp(M)(M doc_matters) { // @system { /+ (copy html images) +/ auto pth_html = spinePathsHTML!()(doc_matters.output_path, doc_matters.src.language); if (!exists(pth_html.image)) { diff --git a/src/sisudoc/io_out/html_snippet.d b/src/sisudoc/io_out/html_snippet.d index 480246a..7f1edea 100644 --- a/src/sisudoc/io_out/html_snippet.d +++ b/src/sisudoc/io_out/html_snippet.d @@ -6,7 +6,7 @@ - Author: Ralph Amissah [ralph.amissah@gmail.com] - - Copyright: (C) 2015 - 2024 Ralph Amissah, All Rights Reserved. + - Copyright: (C) 2015 - 2025 Ralph Amissah, All Rights Reserved. - License: AGPL 3 or later: @@ -50,16 +50,14 @@ module sisudoc.io_out.html_snippet; @safe: template htmlSnippet() { - import - std.file, - std.outbuffer, - std.format, - std.uri, - std.conv : to; - import - sisudoc.io_out.rgx, - sisudoc.meta.rgx_files, - sisudoc.io_out.rgx_xhtml; + import std.file; + import std.outbuffer; + import std.format; + import std.uri; + import std.conv : to; + import sisudoc.io_out.rgx; + import sisudoc.meta.rgx_files; + import sisudoc.io_out.rgx_xhtml; auto format_html_blank_page_guide_home()( string css_style, string home_url, diff --git a/src/sisudoc/io_out/hub.d b/src/sisudoc/io_out/hub.d index b68eb0d..8c41ce5 100644 --- a/src/sisudoc/io_out/hub.d +++ b/src/sisudoc/io_out/hub.d @@ -6,7 +6,7 @@ - Author: Ralph Amissah [ralph.amissah@gmail.com] - - Copyright: (C) 2015 - 2024 Ralph Amissah, All Rights Reserved. + - Copyright: (C) 2015 - 2025 Ralph Amissah, All Rights Reserved. - License: AGPL 3 or later: @@ -59,109 +59,98 @@ template outputHub() { sisudoc.io_out.xmls, sisudoc.io_out.create_zip_file, sisudoc.io_out.paths_output; - @system void outputHub(D,I)( - const D doc_abstraction, - I doc_matters - ) { + @system void outputHub(D)(D doc) { mixin Msg; - auto msg = Msg!()(doc_matters); + auto msg = Msg!()(doc.matters); enum outTask { source_or_pod, sqlite, sqlite_multi, latex, odt, epub, html_scroll, html_seg, html_stuff } - void Scheduled(D,I)(int sched, D doc_abstraction, I doc_matters) { - auto msg = Msg!()(doc_matters); + void Scheduled(D)(int sched, D doc) { + auto msg = Msg!()(doc.matters); if (sched == outTask.source_or_pod) { msg.v("spine (doc reform) source processing... "); - if (doc_matters.opt.action.pod) { - msg.v("spine (doc reform) source pod processing... "); - } + if (doc.matters.opt.action.pod) { msg.v("spine (doc reform) source pod processing... "); } import sisudoc.io_out.source_pod; - spinePod!()(doc_matters); - if (doc_matters.opt.action.source) { - msg.vv("spine (doc reform) source done"); - } - if (doc_matters.opt.action.pod) { - msg.vv("spine (doc reform) source pod done"); - } + spinePod!()(doc.matters); + if (doc.matters.opt.action.source) { msg.vv("spine (doc reform) source done"); } + if (doc.matters.opt.action.pod) { msg.vv("spine (doc reform) source pod done"); } } if (sched == outTask.epub) { msg.v("epub3 processing... "); import sisudoc.io_out.epub3; - doc_abstraction.outputEPub3!()(doc_matters); + doc.outputEPub3!(); msg.vv("epub3 done"); } if (sched == outTask.html_stuff) { - outputMetadata!()(doc_matters); + outputMetadata!()(doc.matters); msg.vv("html metadata done"); } if (sched == outTask.html_scroll) { msg.v("html scroll processing... "); import sisudoc.io_out.html; - outputHTML!().scroll(doc_abstraction, doc_matters); + outputHTML!().scroll(doc); msg.vv("html scroll done"); } if (sched == outTask.html_seg) { msg.v("html seg processing... "); import sisudoc.io_out.html; - outputHTML!().seg(doc_abstraction, doc_matters); + outputHTML!().seg(doc); msg.vv("html seg done"); } if (sched == outTask.html_stuff) { import sisudoc.io_out.html; - outputHTML!().css(doc_matters); - outputHTML!().images_cp(doc_matters); + outputHTML!().css(doc.matters); + outputHTML!().images_cp(doc.matters); msg.vv("html css & images done"); } if (sched == outTask.latex) { msg.v("latex processing... (available for downstream processing & pdf output"); import sisudoc.io_out.latex; import std.file; - if ((isValidPath(doc_matters.output_path ~ "/latex/sty")) - && (!(exists(doc_matters.output_path ~ "/latex/sty"))) + if ((isValidPath(doc.matters.output_path ~ "/latex/sty")) + && (!(exists(doc.matters.output_path ~ "/latex/sty"))) ) { outputLaTeXstyInit!()( - doc_matters.output_path, - doc_matters.opt.action.generated_by, - doc_matters.generator_program.name_version_and_compiler, - doc_matters.generator_program.time_output_generated, + doc.matters.output_path, + doc.matters.opt.action.generated_by, + doc.matters.generator_program.name_version_and_compiler, + doc.matters.generator_program.time_output_generated, ); } - outputLaTeX!()(doc_abstraction, doc_matters); + outputLaTeX!()(doc.abstraction, doc.matters); msg.vv("latex done"); } if (sched == outTask.odt) { msg.v("odf:odt processing... "); import sisudoc.io_out.odt; - outputODT!()(doc_abstraction, doc_matters); + outputODT!()(doc.abstraction, doc.matters); msg.vv("odf:odt done"); } if (sched == outTask.sqlite) { msg.v("sqlite processing... "); import sisudoc.io_out.sqlite; - doc_abstraction.SQLiteHubDiscreteBuildTablesAndPopulate!()(doc_matters); + doc.SQLiteHubDiscreteBuildTablesAndPopulate!(); msg.vv("sqlite done"); } } - if (doc_matters.opt.action.vox_gt0) { - writeln(" ", doc_matters.src.filename_base); - } - if (!(doc_matters.opt.action.parallelise_subprocesses)) { - foreach(schedule; doc_matters.opt.action.output_task_scheduler) { - Scheduled!()(schedule, doc_abstraction, doc_matters); + if (doc.matters.opt.action.vox_gt0) { writeln(doc.matters.src.filename_base); } + if (!(doc.matters.opt.action.parallelise_subprocesses)) { + foreach(schedule; doc.matters.opt.action.output_task_scheduler) { + Scheduled!()(schedule, doc); } } else { import std.parallelism; - foreach(schedule; parallel(doc_matters.opt.action.output_task_scheduler)) { - Scheduled!()(schedule, doc_abstraction, doc_matters); + foreach(schedule; parallel(doc.matters.opt.action.output_task_scheduler)) { + Scheduled!()(schedule, doc); } } - if (doc_matters.opt.action.sqlite_update) { + if (doc.matters.opt.action.sqlite_update) { msg.v("sqlite update processing..."); import sisudoc.io_out.sqlite; - doc_abstraction.SQLiteHubBuildTablesAndPopulate!()(doc_matters); + doc.SQLiteHubBuildTablesAndPopulate!(); msg.vv("sqlite update done"); - } else if (doc_matters.opt.action.sqlite_delete) { + } else if (doc.matters.opt.action.sqlite_delete) { msg.v("sqlite delete processing..."); import sisudoc.io_out.sqlite; - doc_abstraction.SQLiteHubBuildTablesAndPopulate!()(doc_matters); + doc.SQLiteHubBuildTablesAndPopulate!(); msg.vv("sqlite delete done"); } } diff --git a/src/sisudoc/io_out/latex.d b/src/sisudoc/io_out/latex.d index e1b5731..7df91c3 100644 --- a/src/sisudoc/io_out/latex.d +++ b/src/sisudoc/io_out/latex.d @@ -6,7 +6,7 @@ - Author: Ralph Amissah [ralph.amissah@gmail.com] - - Copyright: (C) 2015 - 2024 Ralph Amissah, All Rights Reserved. + - Copyright: (C) 2015 - 2025 Ralph Amissah, All Rights Reserved. - License: AGPL 3 or later: @@ -50,9 +50,8 @@ module sisudoc.io_out.latex; @safe: template paperLaTeX() { - import - std.format, - std.conv : to; + import std.format; + import std.conv : to; auto paperLaTeX() { string mm(uint mmi) { string _mm = format(q"┃%smm┃", mmi.to!string); @@ -319,15 +318,13 @@ template paperLaTeX() { } } template outputLaTeX() { - import - std.file, - std.outbuffer, - std.uri, - std.conv : to; - import - sisudoc.io_out, - sisudoc.io_out.rgx, - sisudoc.io_out.rgx_latex; + import std.file; + import std.outbuffer; + import std.uri; + import std.conv : to; + import sisudoc.io_out; + import sisudoc.io_out.rgx; + import sisudoc.io_out.rgx_latex; mixin spineRgxOut; static auto rgx = RgxO(); mixin spineRgxLSC; @@ -1487,9 +1484,8 @@ template outputLaTeXstyInit() { } } template outputLaTeXstyStatic() { - import - std.format, - std.conv : to; + import std.format; + import std.conv : to; string outputLaTeXstyStatic( bool generated_by, string name_version_and_compiler, @@ -1730,9 +1726,8 @@ template outputLaTeXstyStatic() { } } template outputLaTeXstyPaperSizeAndOrientation() { - import - std.format, - std.conv : to; + import std.format; + import std.conv : to; auto outputLaTeXstyPaperSizeAndOrientation(P)( P doc_sty_info, bool generated_by, diff --git a/src/sisudoc/io_out/metadata.d b/src/sisudoc/io_out/metadata.d index 95fc465..0d586d2 100644 --- a/src/sisudoc/io_out/metadata.d +++ b/src/sisudoc/io_out/metadata.d @@ -6,7 +6,7 @@ - Author: Ralph Amissah [ralph.amissah@gmail.com] - - Copyright: (C) 2015 - 2024 Ralph Amissah, All Rights Reserved. + - Copyright: (C) 2015 - 2025 Ralph Amissah, All Rights Reserved. - License: AGPL 3 or later: @@ -50,7 +50,7 @@ module sisudoc.io_out.metadata; // @safe: template outputMetadata() { - void outputMetadata(T)(T doc_matters) { + void outputMetadata(T)(T doc_matters) { string inline_search_form(M)( M doc_matters, ) { @@ -109,11 +109,10 @@ template outputMetadata() { } return o; } - import - std.digest.crc, - std.digest.sha, - std.file, - std.format; + import std.digest.crc; + import std.digest.sha; + import std.file; + import std.format; import sisudoc.io_out; mixin InternalMarkup; char[] metadata_; @@ -393,9 +392,7 @@ string theme_light_1 = format(q"┃ } catch (ErrnoException ex) { // Handle error } - if (doc_matters.opt.action.vox_gt0) { - writeln(" ", pth_html.fn_scroll("metadata." ~ doc_matters.src.filename)); - } + if (doc_matters.opt.action.vox_gt0) { writeln(" ", pth_html.fn_scroll("metadata." ~ doc_matters.src.filename)); } } static auto mkup = InlineMarkup(); import sisudoc.io_out.html_snippet; @@ -524,11 +521,6 @@ string theme_light_1 = format(q"┃ } } } - metadata_ ~= "<p class=\"lev2\"><tt>" - ~ doc_matters.doc_digest.markup_doc.toHexString - ~ "</tt> - " - ~ doc_matters.src.filename - ~ "</p>"; if (doc_matters.conf_make_meta.meta.classify_topic_register_arr.length > 0) { metadata_ ~= "<hr /><p class=\"lev0\">Topics:</p>"; string[] _top = ["", "", "", "", ""]; diff --git a/src/sisudoc/io_out/odt.d b/src/sisudoc/io_out/odt.d index 0450509..8740d44 100644 --- a/src/sisudoc/io_out/odt.d +++ b/src/sisudoc/io_out/odt.d @@ -6,7 +6,7 @@ - Author: Ralph Amissah [ralph.amissah@gmail.com] - - Copyright: (C) 2015 - 2024 Ralph Amissah, All Rights Reserved. + - Copyright: (C) 2015 - 2025 Ralph Amissah, All Rights Reserved. - License: AGPL 3 or later: diff --git a/src/sisudoc/io_out/package.d b/src/sisudoc/io_out/package.d index 5c73cb9..7cc69ff 100644 --- a/src/sisudoc/io_out/package.d +++ b/src/sisudoc/io_out/package.d @@ -6,7 +6,7 @@ - Author: Ralph Amissah [ralph.amissah@gmail.com] - - Copyright: (C) 2015 - 2024 Ralph Amissah, All Rights Reserved. + - Copyright: (C) 2015 - 2025 Ralph Amissah, All Rights Reserved. - License: AGPL 3 or later: @@ -48,22 +48,20 @@ +/ module sisudoc.io_out; -public import - std.algorithm, - std.array, - std.container, - std.exception, - std.path, - std.process, - std.range, - std.regex, - std.stdio, - std.string, - std.typecons, - // std.uni, - std.utf; -public import - sisudoc.share.defaults, - sisudoc.io_in.paths_source, - sisudoc.io_out.defaults, - sisudoc.io_out.paths_output; +public import std.algorithm; +public import std.array; +public import std.container; +public import std.exception; +public import std.path; +public import std.process; +public import std.range; +public import std.regex; +public import std.stdio; +public import std.string; +public import std.typecons; +// public import std.uni; +public import std.utf; +public import sisudoc.share.defaults; +public import sisudoc.io_in.paths_source; +public import sisudoc.io_out.defaults; +public import sisudoc.io_out.paths_output; diff --git a/src/sisudoc/io_out/paths_output.d b/src/sisudoc/io_out/paths_output.d index f134f41..a5b73a0 100644 --- a/src/sisudoc/io_out/paths_output.d +++ b/src/sisudoc/io_out/paths_output.d @@ -6,7 +6,7 @@ - Author: Ralph Amissah [ralph.amissah@gmail.com] - - Copyright: (C) 2015 - 2024 Ralph Amissah, All Rights Reserved. + - Copyright: (C) 2015 - 2025 Ralph Amissah, All Rights Reserved. - License: AGPL 3 or later: @@ -52,13 +52,11 @@ +/ module sisudoc.io_out.paths_output; @safe: -import - std.array, - std.path, - std.regex, - std.stdio; -import - sisudoc.meta.rgx_files; +import std.array; +import std.path; +import std.regex; +import std.stdio; +import sisudoc.meta.rgx_files; template spineOutPaths() { auto spineOutPaths()( string output_pth_root, diff --git a/src/sisudoc/io_out/rgx.d b/src/sisudoc/io_out/rgx.d index 474a120..9c70c1e 100644 --- a/src/sisudoc/io_out/rgx.d +++ b/src/sisudoc/io_out/rgx.d @@ -6,7 +6,7 @@ - Author: Ralph Amissah [ralph.amissah@gmail.com] - - Copyright: (C) 2015 - 2024 Ralph Amissah, All Rights Reserved. + - Copyright: (C) 2015 - 2025 Ralph Amissah, All Rights Reserved. - License: AGPL 3 or later: diff --git a/src/sisudoc/io_out/rgx_latex.d b/src/sisudoc/io_out/rgx_latex.d index 826455c..05c1adb 100644 --- a/src/sisudoc/io_out/rgx_latex.d +++ b/src/sisudoc/io_out/rgx_latex.d @@ -6,7 +6,7 @@ - Author: Ralph Amissah [ralph.amissah@gmail.com] - - Copyright: (C) 2015 - 2024 Ralph Amissah, All Rights Reserved. + - Copyright: (C) 2015 - 2025 Ralph Amissah, All Rights Reserved. - License: AGPL 3 or later: diff --git a/src/sisudoc/io_out/rgx_xhtml.d b/src/sisudoc/io_out/rgx_xhtml.d index 1c33b0e..58d6138 100644 --- a/src/sisudoc/io_out/rgx_xhtml.d +++ b/src/sisudoc/io_out/rgx_xhtml.d @@ -6,7 +6,7 @@ - Author: Ralph Amissah [ralph.amissah@gmail.com] - - Copyright: (C) 2015 - 2024 Ralph Amissah, All Rights Reserved. + - Copyright: (C) 2015 - 2025 Ralph Amissah, All Rights Reserved. - License: AGPL 3 or later: diff --git a/src/sisudoc/io_out/source_pod.d b/src/sisudoc/io_out/source_pod.d index 6b880d9..6ac2590 100644 --- a/src/sisudoc/io_out/source_pod.d +++ b/src/sisudoc/io_out/source_pod.d @@ -6,7 +6,7 @@ - Author: Ralph Amissah [ralph.amissah@gmail.com] - - Copyright: (C) 2015 - 2024 Ralph Amissah, All Rights Reserved. + - Copyright: (C) 2015 - 2025 Ralph Amissah, All Rights Reserved. - License: AGPL 3 or later: @@ -50,18 +50,15 @@ module sisudoc.io_out.source_pod; @system: // is not @safe: use: @system: or @trusted: template spinePod() { - import - sisudoc.meta.rgx_files, - sisudoc.io_out; - import - std.digest.sha, - std.file, - std.outbuffer, - std.zip, - std.conv : to; - import - sisudoc.io_out.create_zip_file, - sisudoc.io_out.xmls; + import std.digest.sha; + import std.file; + import std.outbuffer; + import std.zip; + import std.conv : to; + import sisudoc.meta.rgx_files; + import sisudoc.io_out; + import sisudoc.io_out.create_zip_file; + import sisudoc.io_out.xmls; void spinePod(T)(T doc_matters) { debug(asserts) { // static assert(is(typeof(doc_matters) == tuple)); @@ -73,33 +70,38 @@ template spinePod() { auto lang = Lang(); static auto rgx_files = RgxFiles(); assert (doc_matters.src.filename.match(rgx_files.src_fn)); - try { - { - pod_archive_directory_tree(doc_matters, pths_pod); - } - auto t = pod_zip_make_ready(doc_matters, pths_pod); - static assert(t.length==3); - auto zip = t[0]; - auto fn_pod = t[1]; - auto _digests = t[2]; - { - zipArchive(doc_matters, fn_pod, zip); - } { - zipArchiveDigest(doc_matters, fn_pod, _digests); + if (doc_matters.opt.action.source_or_pod) { + try { + { + podArchive_directory_tree(doc_matters, pths_pod); + } + { + struct STsrcDigests { + std.zip.ZipArchive zip; + string fn_pod; + string[string][string] digests; + } + STsrcDigests _st; + _st = pod_zipMakeReady(doc_matters, pths_pod, _st); + { + zipArchive(doc_matters, _st.fn_pod, _st.zip); + if (doc_matters.src.language == doc_matters.pod.manifest_list_of_languages[$-1]) { + zipArchiveDigest(doc_matters, _st.fn_pod, _st.digests); + } + } + } + } catch (ErrnoException ex) { + // Handle error } - } catch (ErrnoException ex) { - // Handle error } } - void pod_archive_directory_tree(M,P)(M doc_matters, P pths_pod) { // create directory structure + void podArchive_directory_tree(M,P)(M doc_matters, P pths_pod) { // create directory structure if (!exists(pths_pod.pod_dir_())) { // used both by pod zipped (& pod filesystem (unzipped) which makes its own recursive dirs) pths_pod.pod_dir_().mkdirRecurse; } if (doc_matters.opt.action.source_or_pod) { - if (doc_matters.opt.action.vox_gt0) { - writeln(" ", pths_pod.fn_pod_filelist(doc_matters.src.filename).filesystem_open_zpod); - } + // if (doc_matters.opt.action.vox_gt0) { writeln(" ", pths_pod.fn_pod_filelist(doc_matters.src.filename).filesystem_open_zpod); } if (!exists(pths_pod.text_root(doc_matters.src.filename).filesystem_open_zpod)) { pths_pod.text_root(doc_matters.src.filename).filesystem_open_zpod.mkdirRecurse; } @@ -132,11 +134,10 @@ template spinePod() { )); } } - auto pod_zip_make_ready(M,P)(M doc_matters, P pths_pod) { + auto pod_zipMakeReady(M,P,S)(M doc_matters, P pths_pod, S _st) { auto pth_dr_doc_src = doc_matters.src_path_info; - if (doc_matters.opt.action.debug_do_pod - && doc_matters.opt.action.vox_gt1) { - writeln(__LINE__, ": ", + if (doc_matters.opt.action.vox_gt2) { // correct + writeln(__LINE__, ":", __FILE__, ":\n", doc_matters.src.filename, " -> ", pths_pod.fn_doc(doc_matters.src.filename, doc_matters.src.language).filesystem_open_zpod ); @@ -146,7 +147,7 @@ template spinePod() { string[string][string] _digests; { // bundle images - get digest foreach (image; doc_matters.srcs.image_list) { - debug(podimages) { + if (doc_matters.opt.action.vox_gt2) { writeln( pth_dr_doc_src.image_root.to!string, "/", image, " -> ", pths_pod.image_root(doc_matters.src.filename).zpod, "/", image @@ -169,12 +170,11 @@ template spinePod() { if (doc_matters.opt.action.source_or_pod) { fn_src_in.copy(fn_src_out_filesystem); } - if (doc_matters.opt.action.pod) { - zip = pod_archive("file_path_bin", fn_src_in, fn_src_out_pod_zip_base, zip); + if (doc_matters.opt.action.source_or_pod) { + zip = podArchive("file_path_bin", fn_src_in, fn_src_out_pod_zip_base, zip); } } else { - if (doc_matters.opt.action.debug_do_pod - && doc_matters.opt.action.vox_gt1) { + if (doc_matters.opt.action.debug_do_pod && doc_matters.opt.action.vox_gt1) { writeln("WARNING (io) src out NOT found (image): ", fn_src_in); } } @@ -194,12 +194,11 @@ template spinePod() { if (doc_matters.opt.action.source_or_pod) { fn_src_in.copy(fn_src_out_filesystem); } - if (doc_matters.opt.action.pod) { - zip = pod_archive("file_path_text", fn_src_in, fn_src_out_pod_zip_base, zip); + if (doc_matters.opt.action.source_or_pod) { + zip = podArchive("file_path_text", fn_src_in, fn_src_out_pod_zip_base, zip); } } else { - if (doc_matters.opt.action.debug_do_pod - && doc_matters.opt.action.vox_gt1) { + if (doc_matters.opt.action.debug_do_pod && doc_matters.opt.action.vox_gt1) { writeln("WARNING (io) src out NOT found (document make): ", fn_src_in); } } @@ -223,8 +222,7 @@ template spinePod() { = File(pths_pod.fn_pod_filelist(doc_matters.src.filename).filesystem_open_zpod, "w"); Node _pmy; string _pm = "doc:\n filename: " ~ doc_matters.src.filename ~ "\n language: " ~ doc_matters.pod.manifest_list_of_languages.to!string ~ "\n"; - if (doc_matters.opt.action.debug_do_pod - && doc_matters.opt.action.vox_gt1) { + if (doc_matters.opt.action.debug_do_pod && doc_matters.opt.action.vox_gt1) { try { _pmy = Loader.fromString(_pm).load(); } catch (ErrnoException ex) { @@ -241,8 +239,8 @@ template spinePod() { if (doc_matters.opt.action.source_or_pod) { pod_filelist_yaml_string.writeln(_pm); } - if (doc_matters.opt.action.pod) { - zip = pod_archive("string", _pm, fn_src_out_pod_zip_base, zip); + if (doc_matters.opt.action.source_or_pod) { + zip = podArchive("string", _pm, fn_src_out_pod_zip_base, zip); } } } @@ -256,47 +254,58 @@ template spinePod() { = pths_pod.fn_doc(doc_matters.src.filename, doc_matters.src.language).zpod.to!string; // needed without root path: string[] filelist_src_out_pod_arr; string[] filelist_src_zpod_arr; - if (exists(fn_src_in)) { // what of language? - debug(io) { writeln("(io debug) src in found: ", fn_src_in); } - { // take DIGEST write to pod file digests.txt - auto data = (cast(byte[]) (fn_src_in).read); - _digests["en"]["sst"] ~= data.sha256Of.toHexString ~ "::" ~ data.length.to!string ~ " - " ~ doc_matters.src.filename; // FIX language issue - // writeln(data.sha256Of.toHexString, "::", data.length, " - ", doc_matters.src.filename); - } - filelist_src_out_pod_arr ~= fn_src_out_pod_zip_base; - filelist_src_zpod_arr ~= fn_src_out_inside_pod; - string _pod_to_markup_file = doc_matters.src.pod_name ~ "/" ~ "media/text/" ~ doc_matters.src.language ~ "/" ~ doc_matters.src.filename; - if (doc_matters.opt.action.source_or_pod) { - fn_src_in.copy(fn_src_out_filesystem); - } - if (doc_matters.opt.action.pod) { - auto _rgx = regex(r"(?P<path_to_pod>\S+?)(?P<podname>[a-z_-]+)/(?P<from_root>media/text/)(?P<language>\S+?)/(?P<filename>\S+?\.ss[mt])"); - if (auto _x = fn_src_in.match(_rgx)){ - if (doc_matters.src.lng == doc_matters.pod.manifest_list_of_languages[$-1]) { - string _path_to_pod = _x.captures["path_to_pod"]; - string _podname = _x.captures["podname"]; - string _root_to_lang = _x.captures["from_root"]; - string _language = _x.captures["language"]; - string _filename = _x.captures["filename"]; - foreach (_lang; doc_matters.pod.manifest_list_of_languages) { - string _pth_mkup_src_in = _path_to_pod ~ _podname ~ "/" ~ _root_to_lang ~ _lang ~ "/" ~ _filename; - string _pth_mkup_src_out = "pod/" ~ _root_to_lang ~ _lang ~ "/" ~ _filename; - zip = pod_archive("file_path_text", _pth_mkup_src_in, _pth_mkup_src_out, zip); + if (doc_matters.src.language == doc_matters.pod.manifest_list_of_languages[$-1]) { // wait until all language versions of .ssm parsed + foreach (_lang; doc_matters.pod.manifest_list_of_languages) { // do for all language versions + string fn_src_out_filesystem_lng + = pths_pod.fn_doc(doc_matters.src.filename, _lang).filesystem_open_zpod.to!string; + string _sstm = (doc_matters.pod.manifest_path ~ "/media/text/" ~ _lang ~ "/" ~ doc_matters.src.filename); + string _pth_file_sstm; + if (exists(_sstm)) { _pth_file_sstm = _sstm; + } else if (exists(fn_src_in)) { _pth_file_sstm = fn_src_in; + } + if (exists(_pth_file_sstm)) { // what of language? + debug(io) { writeln("(io debug) src in found: ", _pth_file_sstm); } + { // take DIGEST write to pod file digests.txt + auto data = (cast(byte[]) (_pth_file_sstm).read); + _digests[_lang]["sstm"] ~= data.sha256Of.toHexString ~ "::" ~ data.length.to!string ~ " - " ~ doc_matters.src.filename ~ " - [" ~ _lang ~ "]"; + // writeln(data.sha256Of.toHexString, "::", data.length, " - ", doc_matters.src.filename); + } + filelist_src_out_pod_arr ~= fn_src_out_pod_zip_base; + filelist_src_zpod_arr ~= fn_src_out_inside_pod; + string _pod_to_markup_file = doc_matters.src.pod_name ~ "/" ~ "media/text/" ~ _lang ~ "/" ~ doc_matters.src.filename; + if (doc_matters.opt.action.source_or_pod) { + _pth_file_sstm.copy(fn_src_out_filesystem_lng); + } + if (doc_matters.opt.action.source_or_pod) { + auto _rgx_sstm = regex(r"(?P<path_to_pod>\S+?)(?P<podname>[a-z_-]+)/(?P<from_root>media/text/)(?P<language>\S+?)/(?P<filename>\S+?\.ss[mt])"); + if (auto _x = _pth_file_sstm.match(_rgx_sstm)){ + if (doc_matters.src.lng == doc_matters.pod.manifest_list_of_languages[$-1]) { // again wait until all language versions of .ssm parsed + string _path_to_pod = _x.captures["path_to_pod"]; + string _podname = _x.captures["podname"]; + string _root_to_lang = _x.captures["from_root"]; + string _language = _x.captures["language"]; // .ssi inserts expected to have same name across languages + string _filename = _x.captures["filename"]; + foreach (_lang1; doc_matters.pod.manifest_list_of_languages) { // do for all language versions + string _pth_mkup_src_in = _path_to_pod ~ _podname ~ "/" ~ _root_to_lang ~ _lang1 ~ "/" ~ _filename; + string _pth_mkup_src_out = "pod/" ~ _root_to_lang ~ _lang1 ~ "/" ~ _filename; + // writeln("\nin: ", _pth_mkup_src_in, "\nout: ", _pth_mkup_src_out); // DEBUG, REMOVE + zip = podArchive("file_path_text", _pth_mkup_src_in, _pth_mkup_src_out, zip); + } + } + } else { + zip = podArchive("file_path_text", _pth_file_sstm, fn_src_out_pod_zip_base, zip); } } } else { - zip = pod_archive("file_path_text", fn_src_in, fn_src_out_pod_zip_base, zip); + if (doc_matters.opt.action.debug_do_pod && doc_matters.opt.action.vox_gt1) { + writeln("WARNING (io) src in NOT found (markup source): \n", _sstm, "or in", fn_src_in); + } } } - } else { - if (doc_matters.opt.action.debug_do_pod - && doc_matters.opt.action.vox_gt1) { - writeln("WARNING (io) src in NOT found (markup source): ", fn_src_in); - } } } { // bundle insert files (.ssi) - get digest if (doc_matters.srcs.file_insert_list.length > 0) { - auto _rgx = regex(r"(?P<path_to_pod>\S+?)(?P<podname>[a-z_-]+)/(?P<from_root>media/text/)(?P<language>\S+?)/(?P<filename>\S+?\.ss[i])"); + auto _rgx_ssi = regex(r"(?P<path_to_pod>\S+?)(?P<podname>[a-z_-]+)/(?P<from_root>media/text/)(?P<language>\S+?)/(?P<filename>\S+?\.ss[i])"); foreach (insert_file; doc_matters.srcs.file_insert_list) { debug(pod) { writeln( @@ -308,7 +317,7 @@ template spinePod() { ).zpod ); } - if (auto _x = insert_file.match(_rgx)){ + if (auto _x = insert_file.match(_rgx_ssi)){ if (doc_matters.src.lng == doc_matters.pod.manifest_list_of_languages[$-1]) { string _path_to_pod = _x.captures["path_to_pod"]; string _podname = _x.captures["podname"]; @@ -333,12 +342,11 @@ template spinePod() { ).filesystem_open_zpod.to!string; _pth_mkup_src_in.copy(fn_src_out_filesystem); // check why here, thought dealt with elsewhere } - if (doc_matters.opt.action.pod) { - zip = pod_archive("file_path_text", _pth_mkup_src_in, _pth_mkup_src_out, zip); + if (doc_matters.opt.action.source_or_pod) { + zip = podArchive("file_path_text", _pth_mkup_src_in, _pth_mkup_src_out, zip); } } else { - if (doc_matters.opt.action.debug_do_pod - && doc_matters.opt.action.vox_gt1) { + if (doc_matters.opt.action.debug_do_pod && doc_matters.opt.action.vox_gt1) { writeln("WARNING (io) src out NOT found (insert file): ", _pth_mkup_src_in); } } @@ -368,12 +376,11 @@ template spinePod() { if (doc_matters.opt.action.source_or_pod) { fn_src_in.copy(fn_src_out_filesystem); } - if (doc_matters.opt.action.pod) { - zip = pod_archive("file_path_text", fn_src_in, fn_src_out_pod_zip_base, zip); + if (doc_matters.opt.action.source_or_pod) { + zip = podArchive("file_path_text", fn_src_in, fn_src_out_pod_zip_base, zip); } } else { - if (doc_matters.opt.action.debug_do_pod - && doc_matters.opt.action.vox_gt1) { + if (doc_matters.opt.action.debug_do_pod && doc_matters.opt.action.vox_gt1) { writeln("WARNING (io) src out NOT found (insert file): ", fn_src_in); } } @@ -381,10 +388,14 @@ template spinePod() { } } } - auto t = tuple(zip, fn_pod, _digests); - return t; + { + _st.zip = zip; + _st.fn_pod = fn_pod; + _st.digests = _digests; + } + return _st; } - @system auto pod_archive(Z)( + @system auto podArchive(Z)( string _source_type, string _data_in, string _pth_out, @@ -425,6 +436,7 @@ template spinePod() { void zipArchiveDigest(M,F,D)(M doc_matters, F fn_pod, D _digests) { import sisudoc.io_out.paths_output; auto pths_pod = spinePathsPods!()(doc_matters); + char[] _zip_digest; try { if (!exists(pths_pod.pod_dir_())) { // used both by pod zipped (& pod filesystem (unzipped) which makes its own recursive dirs) @@ -434,23 +446,20 @@ template spinePod() { // Handle error } try { - writeln(pths_pod.pod_dir_(), "/", doc_matters.src.filename_base, ".digests.txt"); + // if (doc_matters.opt.action.vox_gt1) { writeln(" ", pths_pod.pod_dir_(), "/", doc_matters.src.filename_base, ".digests.txt"); } string _digest_fn = pths_pod.pod_dir_() ~ "/" ~ doc_matters.src.filename_base ~ ".digests.txt"; - writeln(_digest_fn); + // if (doc_matters.opt.action.vox_gt1) { writeln(_digest_fn); } auto f = File(_digest_fn, "w"); if (exists(fn_pod)) { try { - if (doc_matters.opt.action.vox_gt0 - && doc_matters.opt.action.pod) { - auto data = (cast(byte[]) (fn_pod).read); - if (doc_matters.opt.action.vox_gt1) { - writeln(doc_matters.src.filename, " > ", doc_matters.src.filename_base, ".zip"); - } - if (doc_matters.opt.action.pod) { - auto _zip_digest = (data.sha256Of.toHexString ~ "::" ~ data.length.to!string ~ " - " ~ doc_matters.src.filename_base ~ ".zip"); - writeln(_zip_digest); - f.writeln(_zip_digest); - } + auto data = (cast(byte[]) (fn_pod).read); + // if (doc_matters.opt.action.vox_gt1) { writeln(" ", doc_matters.src.filename, " > ", doc_matters.src.filename_base, ".zip"); } + if (doc_matters.opt.action.pod) { + _zip_digest = (data.sha256Of.toHexString ~ "::" ~ data.length.to!string ~ " - " ~ doc_matters.src.filename_base ~ ".zip"); + if (doc_matters.opt.action.vox_gt0) { writeln(" ", _zip_digest); } + if (doc_matters.opt.action.vox_gt0) { writeln(" ", pths_pod.pod_dir_(), "/", doc_matters.src.filename_base, "/"); } + if (doc_matters.opt.action.vox_gt0) { writeln(" ", _digest_fn); } + f.writeln(_zip_digest); } } catch (ErrnoException ex) { // Handle errors @@ -458,19 +467,19 @@ template spinePod() { } foreach (_lang; doc_matters.pod.manifest_list_of_languages) { if (_lang in _digests) { - if (("sst" in _digests[_lang]) && (_digests[_lang]["sst"].length > 0)) { - writeln(_digests[_lang]["sst"]); - f.writeln(_digests[_lang]["sst"]); + if (("sstm" in _digests[_lang]) && (_digests[_lang]["sstm"].length > 0)) { + // if (doc_matters.opt.action.vox_gt1) { writeln(_digests[_lang]["sstm"]); } + f.writeln(_digests[_lang]["sstm"]); } if (("ssi" in _digests[_lang]) && (_digests[_lang]["ssi"].length > 0)) { - writeln(_digests[_lang]["ssi"]); + // if (doc_matters.opt.action.vox_gt1) { writeln(_digests[_lang]["ssi"]); } f.writeln(_digests[_lang]["ssi"]); } } } if ("shared" in _digests) { if (("images" in _digests["shared"]) && (_digests["shared"]["images"].length > 0)) { - writeln(_digests["shared"]["images"]); + // if (doc_matters.opt.action.vox_gt1) { writeln(_digests["shared"]["images"]); } f.writeln(_digests["shared"]["images"]); } } diff --git a/src/sisudoc/io_out/sqlite.d b/src/sisudoc/io_out/sqlite.d index bee9cad..486b87e 100644 --- a/src/sisudoc/io_out/sqlite.d +++ b/src/sisudoc/io_out/sqlite.d @@ -6,7 +6,7 @@ - Author: Ralph Amissah [ralph.amissah@gmail.com] - - Copyright: (C) 2015 - 2024 Ralph Amissah, All Rights Reserved. + - Copyright: (C) 2015 - 2025 Ralph Amissah, All Rights Reserved. - License: AGPL 3 or later: @@ -48,13 +48,12 @@ +/ module sisudoc.io_out.sqlite; -import - sisudoc.io_out, - sisudoc.io_out.rgx, - sisudoc.io_out.rgx_xhtml; -import - std.file, - std.uri; +import sisudoc.io_out; +import sisudoc.io_out.rgx; +import sisudoc.io_out.rgx_xhtml; +import std.file; +import std.uri; +// import std.digest.sha; import std.conv : to; import std.typecons : Nullable; import d2sqlite3; @@ -66,11 +65,8 @@ static auto rgx_xhtml = RgxXHTML(); static auto mkup = InlineMarkup(); long _metadata_tid_lastrowid; template SQLiteHubBuildTablesAndPopulate() { - void SQLiteHubBuildTablesAndPopulate(D,M)( - const D doc_abstraction, - M doc_matters, - ) { - auto pth_sqlite = spinePathsSQLite!()(doc_matters.sqlite.filename, doc_matters.sqlite.path); + void SQLiteHubBuildTablesAndPopulate(D)(D doc) { + auto pth_sqlite = spinePathsSQLite!()(doc.matters.sqlite.filename, doc.matters.sqlite.path); if ((isValidPath(pth_sqlite.base) && exists(pth_sqlite.base) != 0 && pth_sqlite.base.isDir)) { } else { try { @@ -78,14 +74,13 @@ template SQLiteHubBuildTablesAndPopulate() { } catch (FileException ex) { } } template SQLiteDbStatementComposite() { - void SQLiteDbStatementComposite(Db,D,M)( - Db db, - const D doc_abstraction, - M doc_matters, + void SQLiteDbStatementComposite(Db,D)( + Db db, + D doc ) { string _db_statement; - if ((doc_matters.opt.action.sqlite_db_create)) { - auto pth_sqlite = spinePathsSQLite!()(doc_matters.sqlite.filename, doc_matters.sqlite.path); + if ((doc.matters.opt.action.sqlite_db_create)) { + auto pth_sqlite = spinePathsSQLite!()(doc.matters.sqlite.filename, doc.matters.sqlite.path); if ((isValidPath(pth_sqlite.base) && exists(pth_sqlite.base) != 0 && pth_sqlite.base.isDir)) { } else { try { @@ -93,38 +88,38 @@ template SQLiteHubBuildTablesAndPopulate() { } catch (FileException ex) { } } _db_statement ~= SQLiteTablesReCreate!()(); - SQLiteDbRun!()(db, _db_statement, doc_matters.opt.action, "TABLE RE-CREATE"); + SQLiteDbRun!()(db, _db_statement, doc.matters.opt.action, "TABLE RE-CREATE"); _db_statement = []; } - if (doc_matters.opt.action.sqlite_delete) { - _db_statement ~= SQLiteDeleteDocument!()(doc_matters); - SQLiteDbRun!()(db, _db_statement, doc_matters.opt.action, "DELETE Document"); + if (doc.matters.opt.action.sqlite_delete) { + _db_statement ~= SQLiteDeleteDocument!()(doc.matters); + SQLiteDbRun!()(db, _db_statement, doc.matters.opt.action, "DELETE Document"); _db_statement = []; } - if (doc_matters.opt.action.sqlite_update) { - _db_statement ~= SQLiteDeleteDocument!()(doc_matters); - SQLiteDbRun!()(db, _db_statement, doc_matters.opt.action, "DELETE Document"); + if (doc.matters.opt.action.sqlite_update) { + _db_statement ~= SQLiteDeleteDocument!()(doc.matters); + SQLiteDbRun!()(db, _db_statement, doc.matters.opt.action, "DELETE Document"); _db_statement = []; - _db_statement ~= SQLiteInsertMetadata!()(doc_matters); - SQLiteDbRun!()(db, _db_statement, doc_matters.opt.action, "INSERT MetaData"); + _db_statement ~= SQLiteInsertMetadata!()(doc.matters); + SQLiteDbRun!()(db, _db_statement, doc.matters.opt.action, "INSERT MetaData"); _db_statement = []; - /+ get tid (lastrowid or max) for use in doc_objects table +/ - _db_statement ~= doc_abstraction.SQLiteInsertDocObjectsLoop!()(doc_matters); - SQLiteDbRun!()(db, _db_statement, doc_matters.opt.action, "INSERT DocObjects"); + /+ get tid (lastrowid or max) for use in doc.objects table +/ + _db_statement ~= doc.SQLiteInsertDocObjectsLoop!(); + SQLiteDbRun!()(db, _db_statement, doc.matters.opt.action, "INSERT DocObjects"); _db_statement = []; - _db_statement ~= SQLiteInsertMetadataTopics!()(doc_matters); - SQLiteDbRun!()(db, _db_statement, doc_matters.opt.action, "INSERT MetaDataTopics"); + _db_statement ~= SQLiteInsertMetadataTopics!()(doc.matters); + SQLiteDbRun!()(db, _db_statement, doc.matters.opt.action, "INSERT MetaDataTopics"); _db_statement = []; } db.close; - if (doc_matters.opt.action.vox_gt0) { + if (doc.matters.opt.action.vox_gt0) { writeln(" ", pth_sqlite.sqlite_file); } } } try { auto db = Database(pth_sqlite.sqlite_file); - SQLiteDbStatementComposite!()(db, doc_abstraction, doc_matters); + SQLiteDbStatementComposite!()(db, doc); } catch (FileException e) { writeln("Failed (FileException): ", e.msg, " ", pth_sqlite.sqlite_file); @@ -152,33 +147,29 @@ template SQLiteHubBuildTablesAndPopulate() { } } template SQLiteHubDiscreteBuildTablesAndPopulate() { - void SQLiteHubDiscreteBuildTablesAndPopulate(D,M)( - const D doc_abstraction, - M doc_matters, - ) { - auto url_html = spineUrlsHTML!()(doc_matters.conf_make_meta.conf.w_srv_data_root_url_html, doc_matters.src.language); - auto pth_sqlite = spinePathsSQLiteDiscrete!()(doc_matters.output_path, doc_matters.src.language); // doc_matters.db_path + void SQLiteHubDiscreteBuildTablesAndPopulate(D)(D doc) { + auto url_html = spineUrlsHTML!()(doc.matters.conf_make_meta.conf.w_srv_data_root_url_html, doc.matters.src.language); + auto pth_sqlite = spinePathsSQLiteDiscrete!()(doc.matters.output_path, doc.matters.src.language); // doc.matters.db_path if ((isValidPath(pth_sqlite.base) && exists(pth_sqlite.base) != 0 && pth_sqlite.base.isDir)) { } else { try { pth_sqlite.base.mkdirRecurse; } catch (FileException ex) { } } - auto db = Database(pth_sqlite.sqlite_file(doc_matters.src.filename)); + auto db = Database(pth_sqlite.sqlite_file(doc.matters.src.filename)); template SQLiteDiscreteDbStatementComposite() { - void SQLiteDiscreteDbStatementComposite(Db,D,M)( - Db db, - const D doc_abstraction, - M doc_matters, + void SQLiteDiscreteDbStatementComposite(Db,D)( + Db db, + D doc ) { try { { string _db_statement; _db_statement ~= SQLiteTablesReCreate!()(); - _db_statement ~= SQLiteInsertMetadata!()(doc_matters); - _db_statement ~= SQLiteInsertMetadataTopics!()(doc_matters); - _db_statement ~= doc_abstraction.SQLiteInsertDocObjectsLoop!()(doc_matters); - SQLiteDbRun!()(db, _db_statement, doc_matters.opt.action, "table CREATE Tables, INSERT DocObjects"); + _db_statement ~= SQLiteInsertMetadata!()(doc.matters); + _db_statement ~= SQLiteInsertMetadataTopics!()(doc.matters); + _db_statement ~= doc.SQLiteInsertDocObjectsLoop!(); + SQLiteDbRun!()(db, _db_statement, doc.matters.opt.action, "table CREATE Tables, INSERT DocObjects"); } db.close; } @@ -204,12 +195,12 @@ template SQLiteHubDiscreteBuildTablesAndPopulate() { import core.runtime; core.runtime.Runtime.terminate(); } - if (doc_matters.opt.action.vox_gt0) { - writeln(" ", pth_sqlite.sqlite_file(doc_matters.src.filename)); + if (doc.matters.opt.action.vox_gt0) { + writeln(" ", pth_sqlite.sqlite_file(doc.matters.src.filename)); } } } - SQLiteDiscreteDbStatementComposite!()(db, doc_abstraction, doc_matters); + SQLiteDiscreteDbStatementComposite!()(db, doc); } } template SQLiteDbRun() { @@ -251,9 +242,7 @@ template SQLinsertDelimiter() { } } template SQLiteFormatAndLoadObject() { - auto SQLiteFormatAndLoadObject(M)( - M doc_matters, - ) { + auto SQLiteFormatAndLoadObject(M)(M doc_matters) { mixin spineRgxOut; mixin spineRgxXHTML; struct sqlite_format_and_load_objects { @@ -1143,9 +1132,7 @@ template SQLiteTablesReCreate() { } } template SQLiteDeleteDocument() { - string SQLiteDeleteDocument(M)( - M doc_matters, - ) { + string SQLiteDeleteDocument(M)(M doc_matters) { string _uid = doc_matters.src.doc_uid; string _delete_uid = format(q"┃ DELETE FROM metadata_and_text @@ -1160,9 +1147,7 @@ template SQLiteDeleteDocument() { } } template SQLiteInsertMetadata() { - string SQLiteInsertMetadata(M)( - M doc_matters, - ) { + string SQLiteInsertMetadata(M)(M doc_matters) { string _uid = SQLinsertDelimiter!()(doc_matters.src.doc_uid); string _insert_metadata = format(q"┃ INSERT INTO metadata_and_text ( @@ -1276,9 +1261,7 @@ template SQLiteInsertMetadata() { } } template SQLiteInsertMetadataTopics() { - string SQLiteInsertMetadataTopics(M)( - M doc_matters, - ) { + string SQLiteInsertMetadataTopics(M)(M doc_matters) { string _uid = SQLinsertDelimiter!()(doc_matters.src.doc_uid); string[] _insert_topics; foreach (topic_line; doc_matters.conf_make_meta.meta.classify_topic_register_expanded_arr) { @@ -1301,12 +1284,9 @@ template SQLiteInsertMetadataTopics() { } } template SQLiteInsertDocObjectsLoop() { - string SQLiteInsertDocObjectsLoop(D,M)( - const D doc_abstraction, - M doc_matters, - ) { - string _uid = SQLinsertDelimiter!()(doc_matters.src.doc_uid); - auto url_html = spineUrlsHTML!()(doc_matters.conf_make_meta.conf.w_srv_data_root_url_html, doc_matters.src.language); + string SQLiteInsertDocObjectsLoop(D)(D doc) { + string _uid = SQLinsertDelimiter!()(doc.matters.src.doc_uid); + auto url_html = spineUrlsHTML!()(doc.matters.conf_make_meta.conf.w_srv_data_root_url_html, doc.matters.src.language); string insertDocObjectsRow(O)(O obj) { string _insert_doc_objects_row = format(q"┃ INSERT INTO doc_objects ( @@ -1336,23 +1316,23 @@ template SQLiteInsertDocObjectsLoop() { ); return _insert_doc_objects_row; } - auto format_and_sqlite_load = SQLiteFormatAndLoadObject!()(doc_matters); + auto format_and_sqlite_load = SQLiteFormatAndLoadObject!()(doc.matters); string[string] obj_txt; string doc_text; string[] _insert_doc_objects; - foreach (part; doc_matters.has.keys_seq.sql) { - foreach (obj; doc_abstraction[part]) { + foreach (part; doc.matters.has.keys_seq.sql) { + foreach (obj; doc.abstraction[part]) { switch (obj.metainfo.is_of_part) { case "frontmatter": assert(part == "head", part); switch (obj.metainfo.is_of_type) { case "para": switch (obj.metainfo.is_a) { case "heading": - obj_txt = format_and_sqlite_load.heading(doc_matters, obj); + obj_txt = format_and_sqlite_load.heading(doc.matters, obj); break; default: { /+ debug +/ - if (doc_matters.opt.action.debug_do_sqlite) { + if (doc.matters.opt.action.debug_do_sqlite) { writeln(__FILE__, ":", __LINE__, ": ", obj.metainfo.is_a); } } @@ -1361,7 +1341,7 @@ template SQLiteInsertDocObjectsLoop() { break; default: { /+ debug +/ - if (doc_matters.opt.action.debug_do_sqlite) { + if (doc.matters.opt.action.debug_do_sqlite) { writeln(__FILE__, ":", __LINE__, ": ", obj.metainfo.is_of_type); } } @@ -1378,14 +1358,14 @@ template SQLiteInsertDocObjectsLoop() { writeln(__LINE__, ": ", obj.text); } } - obj_txt = format_and_sqlite_load.heading(doc_matters, obj); + obj_txt = format_and_sqlite_load.heading(doc.matters, obj); break; case "para": - obj_txt = format_and_sqlite_load.para(doc_matters, obj); + obj_txt = format_and_sqlite_load.para(doc.matters, obj); break; default: { /+ debug +/ - if (doc_matters.opt.action.debug_do_sqlite) { + if (doc.matters.opt.action.debug_do_sqlite) { writeln(__FILE__, ":", __LINE__, ": ", obj.metainfo.is_a); } } @@ -1395,28 +1375,28 @@ template SQLiteInsertDocObjectsLoop() { case "block": switch (obj.metainfo.is_a) { case "quote": - obj_txt = format_and_sqlite_load.quote(doc_matters, obj); + obj_txt = format_and_sqlite_load.quote(doc.matters, obj); break; case "group": - obj_txt = format_and_sqlite_load.group(doc_matters, obj); + obj_txt = format_and_sqlite_load.group(doc.matters, obj); break; case "block": - obj_txt = format_and_sqlite_load.block(doc_matters, obj); + obj_txt = format_and_sqlite_load.block(doc.matters, obj); break; case "poem": // double check on keeping both poem & verse break; case "verse": - obj_txt = format_and_sqlite_load.verse(doc_matters, obj); + obj_txt = format_and_sqlite_load.verse(doc.matters, obj); break; case "code": - obj_txt = format_and_sqlite_load.code(doc_matters, obj); + obj_txt = format_and_sqlite_load.code(doc.matters, obj); break; case "table": - obj_txt = format_and_sqlite_load.table(doc_matters, obj); + obj_txt = format_and_sqlite_load.table(doc.matters, obj); break; default: { /+ debug +/ - if (doc_matters.opt.action.debug_do_sqlite) { + if (doc.matters.opt.action.debug_do_sqlite) { writeln(__FILE__, ":", __LINE__, ": ", obj.metainfo.is_a); } } @@ -1425,7 +1405,7 @@ template SQLiteInsertDocObjectsLoop() { break; default: { /+ debug +/ - if (doc_matters.opt.action.debug_do_sqlite) { + if (doc.matters.opt.action.debug_do_sqlite) { writeln(__FILE__, ":", __LINE__, ": ", obj.metainfo.is_of_type); } } @@ -1438,23 +1418,23 @@ template SQLiteInsertDocObjectsLoop() { case "para": switch (obj.metainfo.is_a) { case "heading": - obj_txt = format_and_sqlite_load.heading(doc_matters, obj); + obj_txt = format_and_sqlite_load.heading(doc.matters, obj); break; case "glossary": assert(part == "glossary", part); - obj_txt = format_and_sqlite_load.para(doc_matters, obj); + obj_txt = format_and_sqlite_load.para(doc.matters, obj); break; case "bibliography": assert(part == "bibliography", part); - obj_txt = format_and_sqlite_load.para(doc_matters, obj); + obj_txt = format_and_sqlite_load.para(doc.matters, obj); break; case "bookindex": assert(part == "bookindex", part); - obj_txt = format_and_sqlite_load.para(doc_matters, obj); + obj_txt = format_and_sqlite_load.para(doc.matters, obj); break; case "blurb": assert(part == "blurb", part); - obj_txt = format_and_sqlite_load.para(doc_matters, obj); + obj_txt = format_and_sqlite_load.para(doc.matters, obj); break; default: { /+ debug +/ - if (doc_matters.opt.action.debug_do_sqlite) { + if (doc.matters.opt.action.debug_do_sqlite) { writeln(__FILE__, ":", __LINE__, ": ", obj.metainfo.is_a); } } @@ -1463,7 +1443,7 @@ template SQLiteInsertDocObjectsLoop() { break; default: { /+ debug +/ - if (doc_matters.opt.action.debug_do_sqlite) { + if (doc.matters.opt.action.debug_do_sqlite) { writeln(__FILE__, ":", __LINE__, ": ", obj.metainfo.is_of_type); } } @@ -1474,7 +1454,7 @@ template SQLiteInsertDocObjectsLoop() { break; default: { /+ debug +/ - if (doc_matters.opt.action.debug_do_sqlite) { + if (doc.matters.opt.action.debug_do_sqlite) { writeln(__FILE__, ":", __LINE__, ": ", obj.metainfo.is_of_part); // check where empty value could come from writeln(__FILE__, ":", __LINE__, ": ", obj.metainfo.is_a); writeln(__FILE__, ":", __LINE__, ": ", obj.text); // check where empty value could come from @@ -1483,9 +1463,9 @@ template SQLiteInsertDocObjectsLoop() { break; } if (obj.metainfo.is_a == "heading") { - if (doc_matters.opt.action.show_sqlite) { + if (doc.matters.opt.action.show_sqlite) { if (obj.metainfo.heading_lev_markup == 0) { - writeln(doc_matters.src.filename); + writeln(doc.matters.src.filename); } writeln( "markup: ", obj.metainfo.heading_lev_markup, diff --git a/src/sisudoc/io_out/xmls.d b/src/sisudoc/io_out/xmls.d index c268bb7..1091aa5 100644 --- a/src/sisudoc/io_out/xmls.d +++ b/src/sisudoc/io_out/xmls.d @@ -6,7 +6,7 @@ - Author: Ralph Amissah [ralph.amissah@gmail.com] - - Copyright: (C) 2015 - 2024 Ralph Amissah, All Rights Reserved. + - Copyright: (C) 2015 - 2025 Ralph Amissah, All Rights Reserved. - License: AGPL 3 or later: @@ -50,19 +50,17 @@ module sisudoc.io_out.xmls; @safe: template outputXHTMLs() { - import - std.file, - std.outbuffer, - std.uri, - std.conv : to; - import - sisudoc.io_out, - sisudoc.io_out.rgx, - sisudoc.meta.rgx_files, - sisudoc.io_out.rgx_xhtml, - sisudoc.io_out.create_zip_file, - sisudoc.io_out.xmls, - sisudoc.io_out.xmls_css; + import std.file; + import std.outbuffer; + import std.uri; + import std.conv : to; + import sisudoc.io_out; + import sisudoc.io_out.rgx; + import sisudoc.meta.rgx_files; + import sisudoc.io_out.rgx_xhtml; + import sisudoc.io_out.create_zip_file; + import sisudoc.io_out.xmls; + import sisudoc.io_out.xmls_css; mixin spineRgxOut; mixin spineRgxXHTML; struct outputXHTMLs { @@ -490,7 +488,7 @@ string tail(M)(M doc_matters) { <a href="https://sisudoc.org" class="lnkicon">≅ SiSU Spine á¨</a> (object numbering & object search) </p> <p class="small_center" id="sisu_spine"><a name="sisu_spine"></a> - (web 1993, object numbering 1997, object search 2002 ...) 2024 + (web 1993, object numbering 1997, object search 2002 ...) 2025 </p> </div> <a name="bottom" id="bottom"></a> diff --git a/src/sisudoc/io_out/xmls_css.d b/src/sisudoc/io_out/xmls_css.d index e9f38e6..aef861a 100644 --- a/src/sisudoc/io_out/xmls_css.d +++ b/src/sisudoc/io_out/xmls_css.d @@ -6,7 +6,7 @@ - Author: Ralph Amissah [ralph.amissah@gmail.com] - - Copyright: (C) 2015 - 2024 Ralph Amissah, All Rights Reserved. + - Copyright: (C) 2015 - 2025 Ralph Amissah, All Rights Reserved. - License: AGPL 3 or later: diff --git a/src/sisudoc/meta/conf_make_meta_json.d b/src/sisudoc/meta/conf_make_meta_json.d index 5330799..4e9e5cd 100644 --- a/src/sisudoc/meta/conf_make_meta_json.d +++ b/src/sisudoc/meta/conf_make_meta_json.d @@ -6,7 +6,7 @@ - Author: Ralph Amissah [ralph.amissah@gmail.com] - - Copyright: (C) 2015 - 2024 Ralph Amissah, All Rights Reserved. + - Copyright: (C) 2015 - 2025 Ralph Amissah, All Rights Reserved. - License: AGPL 3 or later: @@ -54,21 +54,19 @@ module sisudoc.meta.conf_make_meta_json; @safe: static template contentJSONtoSpineStruct() { - import - std.algorithm, - std.array, - std.exception, - std.regex, - std.stdio, - std.string, - std.typecons, - std.utf, - std.conv : to; - import - sisudoc.meta.conf_make_meta_structs, - sisudoc.meta.conf_make_meta_json, - sisudoc.meta.defaults, - sisudoc.meta.rgx; + import std.algorithm; + import std.array; + import std.exception; + import std.regex; + import std.stdio; + import std.string; + import std.typecons; + import std.utf; + import std.conv : to; + import sisudoc.meta.conf_make_meta_structs; + import sisudoc.meta.conf_make_meta_json; + import sisudoc.meta.defaults; + import sisudoc.meta.rgx; ConfComposite _struct_composite; auto contentJSONtoSpineStruct(C,J,M)(C _struct_composite, J _json, M _manifested, string _identifier) { mixin spineRgxIn; diff --git a/src/sisudoc/meta/conf_make_meta_structs.d b/src/sisudoc/meta/conf_make_meta_structs.d index 3ece2dc..9503c83 100644 --- a/src/sisudoc/meta/conf_make_meta_structs.d +++ b/src/sisudoc/meta/conf_make_meta_structs.d @@ -6,7 +6,7 @@ - Author: Ralph Amissah [ralph.amissah@gmail.com] - - Copyright: (C) 2015 - 2024 Ralph Amissah, All Rights Reserved. + - Copyright: (C) 2015 - 2025 Ralph Amissah, All Rights Reserved. - License: AGPL 3 or later: @@ -49,20 +49,18 @@ +/ module sisudoc.meta.conf_make_meta_structs; @safe: -import - std.exception, - std.json, - std.path, - std.regex, - std.stdio, - std.string, - std.typecons, - std.utf, - std.conv : to; -import - sisudoc.meta.defaults, - sisudoc.meta.rgx_yaml, - sisudoc.meta.rgx; +import std.exception; +import std.json; +import std.path; +import std.regex; +import std.stdio; +import std.string; +import std.typecons; +import std.utf; +import std.conv : to; +import sisudoc.meta.defaults; +import sisudoc.meta.rgx_yaml; +import sisudoc.meta.rgx; mixin spineRgxIn; static auto rgx = RgxI(); mixin spineRgxYamlTags; diff --git a/src/sisudoc/meta/conf_make_meta_yaml.d b/src/sisudoc/meta/conf_make_meta_yaml.d index 5712bcf..4b56b51 100644 --- a/src/sisudoc/meta/conf_make_meta_yaml.d +++ b/src/sisudoc/meta/conf_make_meta_yaml.d @@ -6,7 +6,7 @@ - Author: Ralph Amissah [ralph.amissah@gmail.com] - - Copyright: (C) 2015 - 2024 Ralph Amissah, All Rights Reserved. + - Copyright: (C) 2015 - 2025 Ralph Amissah, All Rights Reserved. - License: AGPL 3 or later: @@ -54,24 +54,22 @@ module sisudoc.meta.conf_make_meta_yaml; @safe: template contentYAMLtoSpineStruct() { - import - std.algorithm, - std.array, - std.exception, - std.path, - std.regex, - std.stdio, - std.string, - std.typecons, - std.utf, - std.conv : to; - import - sisudoc.meta.conf_make_meta_structs, - sisudoc.meta.defaults, - sisudoc.meta.rgx_yaml, - sisudoc.meta.rgx; + import std.algorithm; + import std.array; + import std.exception; + import std.path; + import std.regex; + import std.stdio; + import std.string; + import std.typecons; + import std.utf; + import std.conv : to; + import sisudoc.meta.conf_make_meta_structs; + import sisudoc.meta.defaults; + import sisudoc.meta.rgx_yaml; + import sisudoc.meta.rgx; ConfComposite _struct_composite; - @system auto contentYAMLtoSpineStruct(C,Y,M,O,Cfg)( + @system ConfComposite contentYAMLtoSpineStruct(C,Y,M,O,Cfg)( C _struct_composite, Y _yaml, M _manifested, @@ -91,8 +89,55 @@ template contentYAMLtoSpineStruct() { .strip; return _txt; } + @system string _get_yaml_node_string(Y)( + Y _yaml, + string _return, + string _title, + string _subtitle, + bool _munge=false + ) { + if ((_title in _yaml && _yaml[_title].type.sequence) + && (_yaml[_title].type.mapping + && _yaml[_title].tag.match(rgx_y.yaml_tag_is_map)) + ) { + if (_subtitle in _yaml[_title] + && _yaml[_title][_subtitle].type.string + && _yaml[_title][_subtitle].tag.match(rgx_y.yaml_tag_is_str) + ) { + _return = (!(_munge)) + ? _yaml[_title][_subtitle].get!string + : check_input_markup(_yaml[_title][_subtitle].get!string); + } + } + return _return; + } + @system int _get_yaml_node_int(Y)( + Y _yaml, + int _return, + string _title, + string _subtitle + ) { + if ((_title in _yaml && _yaml[_title].type.sequence) + && (_yaml[_title].type.mapping + && _yaml[_title].tag.match(rgx_y.yaml_tag_is_map)) + ) { + if (_subtitle in _yaml[_title] + && _yaml[_title][_subtitle].type.string + && _yaml[_title][_subtitle].tag.match(rgx_y.yaml_tag_is_int) + ) { + _return = _yaml[_title][_subtitle].get!int; + } else if (_subtitle in _yaml[_title] + && _yaml[_title][_subtitle].type.string + && _yaml[_title][_subtitle].tag.match(rgx_y.yaml_tag_is_str) + ) { + _return = _yaml[_title][_subtitle].get!int; + } + } + return _return; + } confCompositeMakeBuild _mk; if (_identifier != "header") { // called only once per run anyway + string _init_string; /+ conf ------------------------------------------------------------------- +/ /+ _cfg. build defaults (else program runtime defaults) @@ -101,145 +146,52 @@ template contentYAMLtoSpineStruct() { +/ { if (_opt_action.webserver_http.length > 0) { - _struct_composite.conf.w_srv_http - = _opt_action.webserver_http; + _struct_composite.conf.w_srv_http = _opt_action.webserver_http; } else { - _struct_composite.conf.w_srv_http - = (_cfg.http_request_type.empty) - ? "http" - : _cfg.http_request_type; - if (("webserv" in _yaml && _yaml["webserv"].type.sequence) - && (_yaml["webserv"].type.mapping - && _yaml["webserv"].tag.match(rgx_y.yaml_tag_is_map)) - ) { - if ("http" in _yaml["webserv"] - && _yaml["webserv"]["http"].type.string - && _yaml["webserv"]["http"].tag.match(rgx_y.yaml_tag_is_str) - ) { - _struct_composite.conf.w_srv_http - = _yaml["webserv"]["http"].get!string; - } - } + _init_string = (_cfg.http_request_type.empty) ? "http" : _cfg.http_request_type; + _struct_composite.conf.w_srv_http = _get_yaml_node_string(_yaml, _init_string, "webserv", "http"); } if (_opt_action.cgi_search_title.length > 0) { - _struct_composite.conf.w_srv_cgi_search_form_title - = _opt_action.cgi_search_title; + _struct_composite.conf.w_srv_cgi_search_form_title = _opt_action.cgi_search_title; } else { - _struct_composite.conf.w_srv_cgi_search_form_title - = (_cfg.cgi_search_form_title.empty) - ? "≅ SiSU spine search form" - : _cfg.cgi_search_form_title; - if (("webserv" in _yaml && _yaml["webserv"].type.sequence) - && (_yaml["webserv"].type.mapping - && _yaml["webserv"].tag.match(rgx_y.yaml_tag_is_map)) - ) { - if ("cgi_search_form_title" in _yaml["webserv"] - && _yaml["webserv"]["cgi_search_form_title"].type.string - && _yaml["webserv"]["cgi_search_form_title"].tag.match(rgx_y.yaml_tag_is_str) - ) { - _struct_composite.conf.w_srv_cgi_search_form_title - = _yaml["webserv"]["cgi_search_form_title"].get!string; - } - } + _init_string = (_cfg.cgi_search_form_title.empty) ? "≅ SiSU spine search form" : _cfg.cgi_search_form_title; + _struct_composite.conf.w_srv_cgi_search_form_title = _get_yaml_node_string(_yaml, _init_string, "webserv", "cgi_search_form_title"); } if (_opt_action.cgi_sqlite_search_filename.length > 0) { - _struct_composite.conf.w_srv_cgi_search_script - = _opt_action.cgi_sqlite_search_filename; + _struct_composite.conf.w_srv_cgi_search_script = _opt_action.cgi_sqlite_search_filename; } else { - _struct_composite.conf.w_srv_cgi_search_script - = (_cfg.cgi_filename.empty) - ? "spine_search" - : _cfg.cgi_filename; - if (("webserv" in _yaml && _yaml["webserv"].type.sequence) - && (_yaml["webserv"].type.mapping - && _yaml["webserv"].tag.match(rgx_y.yaml_tag_is_map)) - ) { - if ("cgi_search_script" in _yaml["webserv"] - && _yaml["webserv"]["cgi_search_script"].type.string - && _yaml["webserv"]["cgi_search_script"].tag.match(rgx_y.yaml_tag_is_str) - ) { - _struct_composite.conf.w_srv_cgi_search_script - = _yaml["webserv"]["cgi_search_script"].get!string; - } - } + _init_string = (_cfg.cgi_filename.empty) ? "spine_search" : _cfg.cgi_filename; + _struct_composite.conf.w_srv_cgi_search_script = _get_yaml_node_string(_yaml, _init_string, "webserv", "cgi_search_script"); } if (_opt_action.sqliteDB_filename.length > 0) { - _struct_composite.conf.w_srv_db_sqlite_filename - = _opt_action.sqliteDB_filename; + _struct_composite.conf.w_srv_db_sqlite_filename = _opt_action.sqliteDB_filename; } else { - _struct_composite.conf.w_srv_db_sqlite_filename - = (_cfg.db_sqlite_filename.empty) - ? "spine.search.db" - : _cfg.db_sqlite_filename; - if (("webserv" in _yaml && _yaml["webserv"].type.sequence) - && (_yaml["webserv"].type.mapping - && _yaml["webserv"].tag.match(rgx_y.yaml_tag_is_map)) - ) { - if ("db_sqlite_filename" in _yaml["webserv"] - && _yaml["webserv"]["db_sqlite_filename"].type.string - && _yaml["webserv"]["db_sqlite_filename"].tag.match(rgx_y.yaml_tag_is_str) - ) { - _struct_composite.conf.w_srv_db_sqlite_filename - = _yaml["webserv"]["db_sqlite_filename"].get!string; - } - } + _init_string = (_cfg.db_sqlite_filename.empty) ? "spine.search.db" : _cfg.db_sqlite_filename; + _struct_composite.conf.w_srv_db_sqlite_filename = _get_yaml_node_string(_yaml, _init_string, "webserv", "db_sqlite_filename"); } if (_opt_action.sqliteDB_path.length > 0) { - _struct_composite.conf.w_srv_db_sqlite_path - = _opt_action.sqliteDB_path; + _struct_composite.conf.w_srv_db_sqlite_path = _opt_action.sqliteDB_path; } else { - _struct_composite.conf.w_srv_db_sqlite_path - = (_cfg.db_sqlite_path.empty) - ? "/var/www/sqlite" - : _cfg.db_sqlite_path; - if (("webserv" in _yaml && _yaml["webserv"].type.sequence) - && (_yaml["webserv"].type.mapping - && _yaml["webserv"].tag.match(rgx_y.yaml_tag_is_map)) - ) { - if ("db_sqlite_path" in _yaml["webserv"] - && _yaml["webserv"]["db_sqlite_path"].type.string - && _yaml["webserv"]["db_sqlite_path"].tag.match(rgx_y.yaml_tag_is_str) - ) { - _struct_composite.conf.w_srv_db_sqlite_path - = _yaml["webserv"]["db_sqlite_path"].get!string; - } - } + _init_string = (_cfg.db_sqlite_path.empty) ? "/var/www/sqlite" : _cfg.db_sqlite_path; + _struct_composite.conf.w_srv_db_sqlite_path = _get_yaml_node_string(_yaml, _init_string, "webserv", "db_sqlite_path"); } if (_opt_action.cgi_url_action.length > 0) { _struct_composite.conf.w_srv_cgi_action = _opt_action.cgi_url_action; } else { - _struct_composite.conf.w_srv_cgi_action - = (_cfg.www_url_doc_root.empty) - ? "http://locahost" // "https://sisudoc.org" - : _cfg.www_url_doc_root; - if (("webserv" in _yaml && _yaml["webserv"].type.sequence) - && (_yaml["webserv"].type.mapping - && _yaml["webserv"].tag.match(rgx_y.yaml_tag_is_map)) - ) { - if ("cgi_action" in _yaml["webserv"] - && _yaml["webserv"]["cgi_action"].type.string - && _yaml["webserv"]["cgi_action"].tag.match(rgx_y.yaml_tag_is_str) - ) { - _struct_composite.conf.w_srv_cgi_action - = _yaml["webserv"]["cgi_action"].get!string; - } else if (_opt_action.cgi_sqlite_search_filename.length > 0) { - _struct_composite.conf.w_srv_cgi_action - = _struct_composite.conf.w_srv_cgi_bin_url ~ "/" ~ _opt_action.cgi_sqlite_search_filename; - } + _init_string = (_cfg.www_url_doc_root.empty) ? "http://locahost" : _cfg.www_url_doc_root; // "https://sisudoc.org" + _struct_composite.conf.w_srv_cgi_action = _get_yaml_node_string(_yaml, _init_string, "webserv", "cgi_action"); + if (_opt_action.cgi_sqlite_search_filename.length > 0) { + _struct_composite.conf.w_srv_cgi_action = _struct_composite.conf.w_srv_cgi_bin_url ~ "/" ~ _opt_action.cgi_sqlite_search_filename; // not yet right } } if (!(_struct_composite.conf.output_path)) { _struct_composite.conf.output_path = ((_manifested.output.path).asNormalizedPath).array; } { if (_opt_action.output_dir_set.length > 0) { - _struct_composite.conf.output_path - = (_opt_action.output_dir_set.asNormalizedPath).array; + _struct_composite.conf.output_path = (_opt_action.output_dir_set.asNormalizedPath).array; } else { - _struct_composite.conf.output_path - = (_cfg.processing_path_doc_root.empty) - ? "/srv/www/spine" - : _cfg.processing_path_doc_root; + _struct_composite.conf.output_path = (_cfg.processing_path_doc_root.empty) ? "/srv/www/spine" : _cfg.processing_path_doc_root; if (("webserv" in _yaml && _yaml["webserv"].type.sequence) && (_yaml["webserv"].type.mapping && _yaml["webserv"].tag.match(rgx_y.yaml_tag_is_map)) @@ -261,75 +213,23 @@ template contentYAMLtoSpineStruct() { } } if (_opt_action.webserver_host_doc_root.length > 0) { // same as output_path immediately above, resolve FIX REMOVE - _struct_composite.conf.w_srv_data_root_path - = _opt_action.webserver_host_doc_root; + _struct_composite.conf.w_srv_data_root_path = _opt_action.webserver_host_doc_root; } else { - _struct_composite.conf.w_srv_data_root_path - = (_cfg.processing_path_doc_root.empty) - ? "/var/www/spine" - : _cfg.processing_path_doc_root; - if (("webserv" in _yaml && _yaml["webserv"].type.sequence) - && (_yaml["webserv"].type.mapping - && _yaml["webserv"].tag.match(rgx_y.yaml_tag_is_map)) - ) { - if ("data_root_path" in _yaml["webserv"] - && _yaml["webserv"]["data_root_path"].type.string - && _yaml["webserv"]["data_root_path"].tag.match(rgx_y.yaml_tag_is_str) - ) { - _struct_composite.conf.w_srv_data_root_path - = _yaml["webserv"]["data_root_path"].get!string; - } - } + _init_string = (_cfg.processing_path_doc_root.empty) ? "/var/www/spine" : _cfg.processing_path_doc_root; + _struct_composite.conf.w_srv_data_root_path = _get_yaml_node_string(_yaml, _init_string, "webserv", "data_root_path"); } } if (_opt_action.cgi_bin_root.length > 0) { - _struct_composite.conf.w_srv_cgi_bin_path - = _opt_action.cgi_bin_root; + _struct_composite.conf.w_srv_cgi_bin_path = _opt_action.cgi_bin_root; } else { - _struct_composite.conf.w_srv_cgi_bin_path - = (_cfg.cgi_bin_root.empty) - ? "/var/www/cgi/cgi-bin" - : _cfg.cgi_bin_root; - if (("webserv" in _yaml && _yaml["webserv"].type.sequence) - && (_yaml["webserv"].type.mapping - && _yaml["webserv"].tag.match(rgx_y.yaml_tag_is_map)) - ) { - if ("cgi_bin_path" in _yaml["webserv"] - && _yaml["webserv"]["cgi_bin_path"].type.string - && _yaml["webserv"]["cgi_bin_path"].tag.match(rgx_y.yaml_tag_is_str) - ) { - _struct_composite.conf.w_srv_cgi_bin_path - = _yaml["webserv"]["cgi_bin_path"].get!string; - } - } - } - { _struct_composite.conf.w_srv_data_root_part - = ""; - if (("webserv" in _yaml && _yaml["webserv"].type.sequence) - && (_yaml["webserv"].type.mapping - && _yaml["webserv"].tag.match(rgx_y.yaml_tag_is_map)) - ) { - if ("data_root_part" in _yaml["webserv"] - && _yaml["webserv"]["data_root_part"].type.string - && _yaml["webserv"]["data_root_part"].tag.match(rgx_y.yaml_tag_is_str) - ) { - _struct_composite.conf.w_srv_data_root_part = _yaml["webserv"]["data_root_part"].get!string; - } - } - } - { _struct_composite.conf.w_srv_images_root_part - = "image"; - if (("webserv" in _yaml && _yaml["webserv"].type.sequence) - && (_yaml["webserv"].type.mapping - && _yaml["webserv"].tag.match(rgx_y.yaml_tag_is_map)) - ) { - if ("images_root_part" in _yaml["webserv"] - && _yaml["webserv"]["images_root_part"].type.string - && _yaml["webserv"]["images_root_part"].tag.match(rgx_y.yaml_tag_is_str) - ) { - _struct_composite.conf.w_srv_images_root_part = _yaml["webserv"]["images_root_part"].get!string; - } - } + _init_string = (_cfg.cgi_bin_root.empty) ? "/var/www/cgi/cgi-bin" : _cfg.cgi_bin_root; + _struct_composite.conf.w_srv_cgi_bin_path = _get_yaml_node_string(_yaml, _init_string, "webserv", "cgi_bin_path"); + } { + _init_string = ""; _init_string = _get_yaml_node_string(_yaml, _init_string, "webserv", "data_root_part"); + if (!(_init_string.empty)) { _struct_composite.conf.w_srv_data_root_part = _init_string; } + } { + _init_string = "image"; _init_string = _get_yaml_node_string(_yaml, _init_string, "webserv", "images_root_part"); + if (!(_init_string.empty)) { _struct_composite.conf.w_srv_images_root_part = _init_string; } } } if (("webserv" in _yaml @@ -337,106 +237,68 @@ template contentYAMLtoSpineStruct() { && (_yaml["webserv"].type.mapping && _yaml["webserv"].tag.match(rgx_y.yaml_tag_is_map)) ) { // cannot be used as is with opt_action FIX look at remaining, decide what to do later - if ("data_http" in _yaml["webserv"] - && _yaml["webserv"]["data_http"].type.string - && _yaml["webserv"]["data_http"].tag.match(rgx_y.yaml_tag_is_str) - ) { - _struct_composite.conf.w_srv_data_http = _yaml["webserv"]["data_http"].get!string; - } - // if (_opt_action.*.length > 0) { - if ("cgi_http" in _yaml["webserv"] - && _yaml["webserv"]["cgi_http"].type.string - && _yaml["webserv"]["cgi_http"].tag.match(rgx_y.yaml_tag_is_str) - ) { - _struct_composite.conf.w_srv_cgi_http = _yaml["webserv"]["cgi_http"].get!string; - } - // if (_opt_action.*.length > 0) { - if ("host" in _yaml["webserv"] - && _yaml["webserv"]["host"].type.string - && _yaml["webserv"]["host"].tag.match(rgx_y.yaml_tag_is_str) - ) { - _struct_composite.conf.w_srv_host = _yaml["webserv"]["host"].get!string; - } - if ("data_root_url" in _yaml["webserv"] - && _yaml["webserv"]["data_root_url"].type.string - && _yaml["webserv"]["data_root_url"].tag.match(rgx_y.yaml_tag_is_str) - ) { - _struct_composite.conf.w_srv_data_root_url = _yaml["webserv"]["data_root_url"].get!string; - _struct_composite.conf.w_srv_data_root_url_html = - _yaml["webserv"]["data_root_url"].get!string - ~ _struct_composite.conf.w_srv_data_root_part ~ "/" - ~ _manifested.src.language ~ "/" - ~ "html"; - } else { - _struct_composite.conf.w_srv_data_root_url = _struct_composite.conf.w_srv_data_root_part; - _struct_composite.conf.w_srv_data_root_url_html = - _struct_composite.conf.w_srv_data_root_part ~ "/" - ~ _manifested.src.language ~ "/" - ~ "html"; - } - if ("cgi_host" in _yaml["webserv"] - && _yaml["webserv"]["cgi_host"].type.string - && _yaml["webserv"]["cgi_host"].tag.match(rgx_y.yaml_tag_is_str) - ) { - _struct_composite.conf.w_srv_cgi_host = _yaml["webserv"]["cgi_host"].get!string; - } else { // composite construct - _struct_composite.conf.w_srv_cgi_host = _struct_composite.conf.w_srv_host; - } - if ("cgi_bin_subpath" in _yaml["webserv"] - && _yaml["webserv"]["cgi_bin_subpath"].type.string - && _yaml["webserv"]["cgi_bin_subpath"].tag.match(rgx_y.yaml_tag_is_str) - ) { - _struct_composite.conf.w_srv_cgi_bin_subpath = _yaml["webserv"]["cgi_bin_subpath"].get!string; - } - if ("cgi_port" in _yaml["webserv"] - && _yaml["webserv"]["cgi_port"].type.string - && _yaml["webserv"]["cgi_port"].tag.match(rgx_y.yaml_tag_is_str) - ) { - _struct_composite.conf.w_srv_cgi_port = _yaml["webserv"]["cgi_port"].get!string; - } - if ("cgi_user" in _yaml["webserv"] - && _yaml["webserv"]["cgi_user"].type.string - && _yaml["webserv"]["cgi_user"].tag.match(rgx_y.yaml_tag_is_str) - ) { - _struct_composite.conf.w_srv_cgi_user = _yaml["webserv"]["cgi_user"].get!string; - } - if ("cgi_bin_url" in _yaml["webserv"] - && _yaml["webserv"]["cgi_bin_url"].type.string - && _yaml["webserv"]["cgi_bin_url"].tag.match(rgx_y.yaml_tag_is_str) - ) { - _struct_composite.conf.w_srv_cgi_bin_url = _yaml["webserv"]["cgi_bin_url"].get!string; - } else { - _struct_composite.conf.w_srv_cgi_bin_url = - (_struct_composite.conf.w_srv_cgi_http.empty) - ? _struct_composite.conf.w_srv_http - :_struct_composite.conf.w_srv_cgi_http - ~ "://" - ~ (_struct_composite.conf.w_srv_cgi_host.empty) - ? _struct_composite.conf.w_srv_cgi_host - : _struct_composite.conf.w_srv_host - ~ _struct_composite.conf.w_srv_cgi_bin_subpath; - } - // if ("cgi_file_links" in _yaml["webserv"] - // && _yaml["webserv"]["cgi_file_links"].type.string - // && _yaml["webserv"]["cgi_file_links"].tag.match(rgx_y.yaml_tag_is_str) - // ) { - // _struct_composite.conf.w_srv_cgi_file_links = _yaml["webserv"]["cgi_file_links"].get!string; - // } - } - // make (in: conf, make, meta)? - if ("processing" in _yaml - && _yaml["processing"].type.sequence - ) { - if (_yaml["processing"].type.mapping - && _yaml["processing"].tag.match(rgx_y.yaml_tag_is_map) + { + _init_string = ""; _init_string = _get_yaml_node_string(_yaml, _init_string, "webserv", "data_http"); + if (!(_init_string.empty)) { _struct_composite.conf.w_srv_data_http = _init_string; } + } { + _init_string = ""; _init_string = _get_yaml_node_string(_yaml, _init_string, "webserv", "cgi_http"); + if (!(_init_string.empty)) { _struct_composite.conf.w_srv_cgi_http = _init_string; } + } { + _init_string = ""; _init_string = _get_yaml_node_string(_yaml, _init_string, "webserv", "host"); + if (!(_init_string.empty)) { _struct_composite.conf.w_srv_host = _init_string; } + } { + _init_string = ""; _init_string = _get_yaml_node_string(_yaml, _init_string, "webserv", "cgi_bin_subpath"); + if (!(_init_string.empty)) { _struct_composite.conf.w_srv_cgi_bin_subpath = _init_string; } + } { + _init_string = ""; _init_string = _get_yaml_node_string(_yaml, _init_string, "webserv", "cgi_port"); + if (!(_init_string.empty)) { _struct_composite.conf.w_srv_cgi_port = _init_string; } + } { + _init_string = ""; _init_string = _get_yaml_node_string(_yaml, _init_string, "webserv", "cgi_user"); + if (!(_init_string.empty)) { _struct_composite.conf.w_srv_cgi_user = _init_string; } + } + if ("data_root_url" in _yaml["webserv"] + && _yaml["webserv"]["data_root_url"].type.string + && _yaml["webserv"]["data_root_url"].tag.match(rgx_y.yaml_tag_is_str) ) { - if ("concord_max" in _yaml["processing"] - && _yaml["processing"]["concord_max"].type.string - && _yaml["processing"]["concord_max"].tag.match(rgx_y.yaml_tag_is_str) - ) { - _struct_composite.conf.processing_concord_max = _yaml["processing"]["concord_max"].get!string; - } + _struct_composite.conf.w_srv_data_root_url = _yaml["webserv"]["data_root_url"].get!string; + _struct_composite.conf.w_srv_data_root_url_html = + _yaml["webserv"]["data_root_url"].get!string + ~ _struct_composite.conf.w_srv_data_root_part ~ "/" + ~ _manifested.src.language ~ "/" + ~ "html"; + } else { + _struct_composite.conf.w_srv_data_root_url = _struct_composite.conf.w_srv_data_root_part; + _struct_composite.conf.w_srv_data_root_url_html = + _struct_composite.conf.w_srv_data_root_part ~ "/" + ~ _manifested.src.language ~ "/" + ~ "html"; + } { + _init_string = ""; _init_string = _get_yaml_node_string(_yaml, _init_string, "webserv", "cgi_host"); + _struct_composite.conf.w_srv_cgi_host = (!(_init_string.empty)) ? _init_string : _struct_composite.conf.w_srv_host; + } + if ("cgi_bin_url" in _yaml["webserv"] + && _yaml["webserv"]["cgi_bin_url"].type.string + && _yaml["webserv"]["cgi_bin_url"].tag.match(rgx_y.yaml_tag_is_str) + ) { + _struct_composite.conf.w_srv_cgi_bin_url = _yaml["webserv"]["cgi_bin_url"].get!string; + } else { + _struct_composite.conf.w_srv_cgi_bin_url = + (_struct_composite.conf.w_srv_cgi_http.empty) ? _struct_composite.conf.w_srv_http :_struct_composite.conf.w_srv_cgi_http + ~ "://" + ~ (_struct_composite.conf.w_srv_cgi_host.empty) ? _struct_composite.conf.w_srv_cgi_host : _struct_composite.conf.w_srv_host + ~ _struct_composite.conf.w_srv_cgi_bin_subpath; } + // if ("cgi_file_links" in _yaml["webserv"] + // && _yaml["webserv"]["cgi_file_links"].type.string + // && _yaml["webserv"]["cgi_file_links"].tag.match(rgx_y.yaml_tag_is_str) + // ) { + // _struct_composite.conf.w_srv_cgi_file_links = _yaml["webserv"]["cgi_file_links"].get!string; + // } + } + // make (in: conf, make, meta)? + { + _init_string = ""; _init_string = _get_yaml_node_string(_yaml, _init_string, "processing", "concord_max"); + if (!(_init_string.empty)) { _struct_composite.conf.processing_concord_max = _init_string; } } if ("flag" in _yaml && _yaml["flag"].type.sequence @@ -444,65 +306,36 @@ template contentYAMLtoSpineStruct() { if (_yaml["flag"].type.mapping && _yaml["flag"].tag.match(rgx_y.yaml_tag_is_map) ) { - if ("act0" in _yaml["flag"] - && _yaml["flag"]["act0"].type.string - && _yaml["flag"]["act0"].tag.match(rgx_y.yaml_tag_is_str) - ) { - _struct_composite.conf.flag_act0 = _yaml["flag"]["act0"].get!string; - } - if ("act1" in _yaml["flag"] - && _yaml["flag"]["act1"].type.string - && _yaml["flag"]["act1"].tag.match(rgx_y.yaml_tag_is_str) - ) { - _struct_composite.conf.flag_act1 = _yaml["flag"]["act1"].get!string; - } - if ("act2" in _yaml["flag"] - && _yaml["flag"]["act2"].type.string - && _yaml["flag"]["act2"].tag.match(rgx_y.yaml_tag_is_str) - ) { - _struct_composite.conf.flag_act2 = _yaml["flag"]["act2"].get!string; - } - if ("act3" in _yaml["flag"] - && _yaml["flag"]["act3"].type.string - && _yaml["flag"]["act3"].tag.match(rgx_y.yaml_tag_is_str) - ) { - _struct_composite.conf.flag_act3 = _yaml["flag"]["act3"].get!string; - } - if ("act4" in _yaml["flag"] - && _yaml["flag"]["act4"].type.string - && _yaml["flag"]["act4"].tag.match(rgx_y.yaml_tag_is_str) - ) { - _struct_composite.conf.flag_act4 = _yaml["flag"]["act4"].get!string; - } - if ("act5" in _yaml["flag"] - && _yaml["flag"]["act5"].type.string - && _yaml["flag"]["act5"].tag.match(rgx_y.yaml_tag_is_str) - ) { - _struct_composite.conf.flag_act5 = _yaml["flag"]["act5"].get!string; - } - if ("act6" in _yaml["flag"] - && _yaml["flag"]["act6"].type.string - && _yaml["flag"]["act6"].tag.match(rgx_y.yaml_tag_is_str) - ) { - _struct_composite.conf.flag_act6 = _yaml["flag"]["act6"].get!string; - } - if ("act7" in _yaml["flag"] - && _yaml["flag"]["act7"].type.string - && _yaml["flag"]["act7"].tag.match(rgx_y.yaml_tag_is_str) - ) { - _struct_composite.conf.flag_act7 = _yaml["flag"]["act7"].get!string; - } - if ("act8" in _yaml["flag"] - && _yaml["flag"]["act8"].type.string - && _yaml["flag"]["act8"].tag.match(rgx_y.yaml_tag_is_str) - ) { - _struct_composite.conf.flag_act8 = _yaml["flag"]["act8"].get!string; - } - if ("act9" in _yaml["flag"] - && _yaml["flag"]["act9"].type.string - && _yaml["flag"]["act9"].tag.match(rgx_y.yaml_tag_is_str) - ) { - _struct_composite.conf.flag_act9 = _yaml["flag"]["act9"].get!string; + { + _init_string = ""; _init_string = _get_yaml_node_string(_yaml, _init_string, "flag", "act0"); + if (!(_init_string.empty)) { _struct_composite.conf.flag_act0 = _init_string; } + } { + _init_string = ""; _init_string = _get_yaml_node_string(_yaml, _init_string, "flag", "act1"); + if (!(_init_string.empty)) { _struct_composite.conf.flag_act1 = _init_string; } + } { + _init_string = ""; _init_string = _get_yaml_node_string(_yaml, _init_string, "flag", "act2"); + if (!(_init_string.empty)) { _struct_composite.conf.flag_act2 = _init_string; } + } { + _init_string = ""; _init_string = _get_yaml_node_string(_yaml, _init_string, "flag", "act3"); + if (!(_init_string.empty)) { _struct_composite.conf.flag_act3 = _init_string; } + } { + _init_string = ""; _init_string = _get_yaml_node_string(_yaml, _init_string, "flag", "act4"); + if (!(_init_string.empty)) { _struct_composite.conf.flag_act4 = _init_string; } + } { + _init_string = ""; _init_string = _get_yaml_node_string(_yaml, _init_string, "flag", "act5"); + if (!(_init_string.empty)) { _struct_composite.conf.flag_act5 = _init_string; } + } { + _init_string = ""; _init_string = _get_yaml_node_string(_yaml, _init_string, "flag", "act6"); + if (!(_init_string.empty)) { _struct_composite.conf.flag_act6 = _init_string; } + } { + _init_string = ""; _init_string = _get_yaml_node_string(_yaml, _init_string, "flag", "act7"); + if (!(_init_string.empty)) { _struct_composite.conf.flag_act7 = _init_string; } + } { + _init_string = ""; _init_string = _get_yaml_node_string(_yaml, _init_string, "flag", "act8"); + if (!(_init_string.empty)) { _struct_composite.conf.flag_act8 = _init_string; } + } { + _init_string = ""; _init_string = _get_yaml_node_string(_yaml, _init_string, "flag", "act9"); + if (!(_init_string.empty)) { _struct_composite.conf.flag_act9 = _init_string; } } } } @@ -568,20 +401,11 @@ template contentYAMLtoSpineStruct() { } string _set_papersize; if (_opt_action.latex_papersize.length > 0) { - _set_papersize - = _opt_action.latex_papersize; + _set_papersize = _opt_action.latex_papersize; } else { - _set_papersize - = (_cfg.default_papersize.empty) - ? "a4,letter.portrait" - : _cfg.default_papersize; - if ("papersize" in _yaml["default"] - && _yaml["default"]["papersize"].type.string - && _yaml["default"]["papersize"].tag.match(rgx_y.yaml_tag_is_str) - ) { - _set_papersize - = _yaml["default"]["papersize"].get!string; - } + _set_papersize = (_cfg.default_papersize.empty) ? "a4,letter.portrait" : _cfg.default_papersize; + _init_string = _set_papersize; _init_string = _get_yaml_node_string(_yaml, _init_string, "default", "papersize"); + if (!(_init_string.empty)) { _set_papersize = _init_string; } } _struct_composite.conf.set_papersize = selected_papersize(_set_papersize); if ( @@ -590,29 +414,18 @@ template contentYAMLtoSpineStruct() { && _yaml["default"].type.mapping && _yaml["default"].tag.match(rgx_y.yaml_tag_is_map) ) { - if ("text_wrap" in _yaml["default"] - && _yaml["default"]["text_wrap"].type.string - && _yaml["default"]["text_wrap"].tag.match(rgx_y.yaml_tag_is_str) - ) { - _struct_composite.conf.set_text_wrap = _yaml["default"]["text_wrap"].get!string; - } - if ("emphasis" in _yaml["default"] - && _yaml["default"]["emphasis"].type.string - && _yaml["default"]["emphasis"].tag.match(rgx_y.yaml_tag_is_str) - ) { - _struct_composite.conf.set_emphasis = _yaml["default"]["emphasis"].get!string; - } - if ("language" in _yaml["default"] - && _yaml["default"]["language"].type.string - && _yaml["default"]["language"].tag.match(rgx_y.yaml_tag_is_str) - ) { - _struct_composite.conf.set_language = _yaml["default"]["language"].get!string; - } - if ("digest" in _yaml["default"] - && _yaml["default"]["digest"].type.string - && _yaml["default"]["digest"].tag.match(rgx_y.yaml_tag_is_str) - ) { - _struct_composite.conf.set_digest = _yaml["default"]["digest"].get!string; + { + _init_string = ""; _init_string = _get_yaml_node_string(_yaml, _init_string, "default", "text_wrap"); + if (!(_init_string.empty)) { _struct_composite.conf.set_text_wrap = _init_string; } + } { + _init_string = ""; _init_string = _get_yaml_node_string(_yaml, _init_string, "default", "emphasis"); + if (!(_init_string.empty)) { _struct_composite.conf.set_emphasis = _init_string; } + } { + _init_string = ""; _init_string = _get_yaml_node_string(_yaml, _init_string, "default", "language"); + if (!(_init_string.empty)) { _struct_composite.conf.set_language = _init_string; } + } { + _init_string = ""; _init_string = _get_yaml_node_string(_yaml, _init_string, "default", "digest"); + if (!(_init_string.empty)) { _struct_composite.conf.set_digest = _init_string; } } } if ("search" in _yaml @@ -621,33 +434,24 @@ template contentYAMLtoSpineStruct() { if (_yaml["search"].type.mapping && _yaml["search"].tag.match(rgx_y.yaml_tag_is_map) ) { - if ("flag" in _yaml["search"] - && _yaml["search"]["flag"].type.string - && _yaml["search"]["flag"].tag.match(rgx_y.yaml_tag_is_str) - ) { - _struct_composite.conf.search_flag = _yaml["search"]["flag"].get!string; - } - if ("action" in _yaml["search"] - && _yaml["search"]["action"].type.string - && _yaml["search"]["action"].tag.match(rgx_y.yaml_tag_is_str) - ) { - _struct_composite.conf.search_action = _yaml["search"]["action"].get!string; - } - if ("db" in _yaml["search"] - && _yaml["search"]["db"].type.string - && _yaml["search"]["db"].tag.match(rgx_y.yaml_tag_is_str) - ) { - _struct_composite.conf.search_db = _yaml["search"]["db"].get!string; - } - if ("title" in _yaml["search"] - && _yaml["search"]["title"].type.string - && _yaml["search"]["title"].tag.match(rgx_y.yaml_tag_is_str) - ) { - _struct_composite.conf.search_title = _yaml["search"]["title"].get!string; + { + _init_string = ""; _init_string = _get_yaml_node_string(_yaml, _init_string, "search", "flag"); + if (!(_init_string.empty)) { _struct_composite.conf.search_flag = _init_string; } + } { + _init_string = ""; _init_string = _get_yaml_node_string(_yaml, _init_string, "search", "action"); + if (!(_init_string.empty)) { _struct_composite.conf.search_action = _init_string; } + } { + _init_string = ""; _init_string = _get_yaml_node_string(_yaml, _init_string, "search", "db"); + if (!(_init_string.empty)) { _struct_composite.conf.search_db = _init_string; } + } { + _init_string = ""; _init_string = _get_yaml_node_string(_yaml, _init_string, "search", "title"); + if (!(_init_string.empty)) { _struct_composite.conf.search_title = _init_string; } } } } - } else { + } else { // !(_identifier != "header") + string _init_string; + int _init_int; /+ make ------------------------------------------------------------------- +/ if ("make" in _yaml && _yaml["make"].type.sequence @@ -655,41 +459,24 @@ template contentYAMLtoSpineStruct() { if (_yaml["make"].type.mapping && _yaml["make"].tag.match(rgx_y.yaml_tag_is_map) ) { - if ("doc_type" in _yaml["make"] - && _yaml["make"]["doc_type"].type.string - && _yaml["make"]["doc_type"].tag.match(rgx_y.yaml_tag_is_str) - ) { - _struct_composite.make_str.doc_type = _yaml["make"]["doc_type"].get!string; - } - if ("breaks" in _yaml["make"] - && _yaml["make"]["breaks"].type.string - && _yaml["make"]["breaks"].tag.match(rgx_y.yaml_tag_is_str) - ) { - _struct_composite.make_str.breaks = _yaml["make"]["breaks"].get!string; - } - if ("bold" in _yaml["make"] - && _yaml["make"]["bold"].type.string - && _yaml["make"]["bold"].tag.match(rgx_y.yaml_tag_is_str) - ) { - _struct_composite.make_str.bold = _yaml["make"]["bold"].get!string; - } - if ("cover_image" in _yaml["make"] - && _yaml["make"]["cover_image"].type.string - && _yaml["make"]["cover_image"].tag.match(rgx_y.yaml_tag_is_str) - ) { - _struct_composite.make_str.cover_image = _yaml["make"]["cover_image"].get!string; - } - if ("css" in _yaml["make"] - && _yaml["make"]["css"].type.string - && _yaml["make"]["css"].tag.match(rgx_y.yaml_tag_is_str) - ) { - _struct_composite.make_str.css = _yaml["make"]["css"].get!string; - } - if ("emphasis" in _yaml["make"] - && _yaml["make"]["emphasis"].type.string - && _yaml["make"]["emphasis"].tag.match(rgx_y.yaml_tag_is_str) - ) { - _struct_composite.make_str.emphasis = _yaml["make"]["emphasis"].get!string; + { + _init_string = ""; _init_string = _get_yaml_node_string(_yaml, _init_string, "make", "doc_type"); + if (!(_init_string.empty)) { _struct_composite.make_str.doc_type = _init_string; } + } { + _init_string = ""; _init_string = _get_yaml_node_string(_yaml, _init_string, "make", "breaks"); + if (!(_init_string.empty)) { _struct_composite.make_str.breaks = _init_string; } + } { + _init_string = ""; _init_string = _get_yaml_node_string(_yaml, _init_string, "make", "bold"); + if (!(_init_string.empty)) { _struct_composite.make_str.bold = _init_string; } + } { + _init_string = ""; _init_string = _get_yaml_node_string(_yaml, _init_string, "make", "cover_image"); + if (!(_init_string.empty)) { _struct_composite.make_str.cover_image = _init_string; } + } { + _init_string = ""; _init_string = _get_yaml_node_string(_yaml, _init_string, "make", "css"); + if (!(_init_string.empty)) { _struct_composite.make_str.css = _init_string; } + } { + _init_string = ""; _init_string = _get_yaml_node_string(_yaml, _init_string, "make", "emphasis"); + if (!(_init_string.empty)) { _struct_composite.make_str.emphasis = _init_string; } } if ("footer" in _yaml["make"] && _yaml["make"]["footer"].type.string @@ -781,16 +568,9 @@ template contentYAMLtoSpineStruct() { break; } } - if ("auto_num_depth" in _yaml["make"] - && _yaml["make"]["auto_num_depth"].type.string - && _yaml["make"]["auto_num_depth"].tag.match(rgx_y.yaml_tag_is_int) - ) { // not sure implemented for documents - _struct_composite.make_str.auto_num_depth = _yaml["make"]["auto_num_depth"].get!int; - } else if ("auto_num_depth" in _yaml["make"] - && _yaml["make"]["auto_num_depth"].type.string - && _yaml["make"]["auto_num_depth"].tag.match(rgx_y.yaml_tag_is_str) - ) { // not sure implemented for documents - _struct_composite.make_str.auto_num_depth = _yaml["make"]["auto_num_depth"].get!int; + { + _init_int = _get_yaml_node_int(_yaml, 99, "make", "auto_num_depth"); + if (!(_init_int == 99)) { _struct_composite.make_str.auto_num_depth = _init_int; } } if ("texpdf_font" in _yaml["make"] && _yaml["make"]["texpdf_font"].type.string @@ -823,29 +603,18 @@ template contentYAMLtoSpineStruct() { if (_yaml["creator"].type.mapping && _yaml["creator"].tag.match(rgx_y.yaml_tag_is_map) ) { - if ("author" in _yaml["creator"] - && _yaml["creator"]["author"].type.string - && _yaml["creator"]["author"].tag.match(rgx_y.yaml_tag_is_str) - ) { - _struct_composite.meta.creator_author = _yaml["creator"]["author"].get!string; - } - if ("email" in _yaml["creator"] - && _yaml["creator"]["email"].type.string - && _yaml["creator"]["email"].tag.match(rgx_y.yaml_tag_is_str) - ) { - _struct_composite.meta.creator_author_email = _yaml["creator"]["email"].get!string; - } - if ("illustrator" in _yaml["creator"] - && _yaml["creator"]["illustrator"].type.string - && _yaml["creator"]["illustrator"].tag.match(rgx_y.yaml_tag_is_str) - ) { - _struct_composite.meta.creator_illustrator = _yaml["creator"]["illustrator"].get!string; - } - if ("translator" in _yaml["creator"] - && _yaml["creator"]["translator"].type.string - && _yaml["creator"]["translator"].tag.match(rgx_y.yaml_tag_is_str) - ) { - _struct_composite.meta.creator_translator = _yaml["creator"]["translator"].get!string; + { + _init_string = ""; _init_string = _get_yaml_node_string(_yaml, _init_string, "creator", "author"); + if (!(_init_string.empty)) { _struct_composite.meta.creator_author = _init_string; } + } { + _init_string = ""; _init_string = _get_yaml_node_string(_yaml, _init_string, "creator", "email"); + if (!(_init_string.empty)) { _struct_composite.meta.creator_author_email = _init_string; } + } { + _init_string = ""; _init_string = _get_yaml_node_string(_yaml, _init_string, "creator", "illustrator"); + if (!(_init_string.empty)) { _struct_composite.meta.creator_illustrator = _init_string; } + } { + _init_string = ""; _init_string = _get_yaml_node_string(_yaml, _init_string, "creator", "translator"); + if (!(_init_string.empty)) { _struct_composite.meta.creator_translator = _init_string; } } } else if (_yaml["creator"].type.string && _yaml["creator"].tag.match(rgx_y.yaml_tag_is_str) @@ -901,43 +670,27 @@ template contentYAMLtoSpineStruct() { ) { _struct_composite.meta.title_main = _yaml["title"]["title"].get!string; } - if ("edition" in _yaml["title"] - && _yaml["title"]["edition"].type.string - && _yaml["title"]["edition"].tag.match(rgx_y.yaml_tag_is_str) - ) { - _struct_composite.meta.title_edition = _yaml["title"]["edition"].get!string; - } - if ("full" in _yaml["title"] - && _yaml["title"]["full"].type.string - && _yaml["title"]["full"].tag.match(rgx_y.yaml_tag_is_str) - ) { - _struct_composite.meta.title_full = _yaml["title"]["full"].get!string; - } - if ("language" in _yaml["title"] - && _yaml["title"]["language"].type.string - && _yaml["title"]["language"].tag.match(rgx_y.yaml_tag_is_str) - ) { - _struct_composite.meta.title_language = _yaml["title"]["language"].get!string; + { + _init_string = ""; _init_string = _get_yaml_node_string(_yaml, _init_string, "title", "edition"); + if (!(_init_string.empty)) { _struct_composite.meta.title_edition = _init_string; } + } { + _init_string = ""; _init_string = _get_yaml_node_string(_yaml, _init_string, "title", "full"); + if (!(_init_string.empty)) { _struct_composite.meta.title_full = _init_string; } + } { + _init_string = ""; _init_string = _get_yaml_node_string(_yaml, _init_string, "title", "language"); + if (!(_init_string.empty)) { _struct_composite.meta.title_language = _init_string; } + } { + _init_string = ""; _init_string = _get_yaml_node_string(_yaml, _init_string, "title", "note"); + if (!(_init_string.empty)) { _struct_composite.meta.title_note = _init_string; } } - if ("note" in _yaml["title"] - && _yaml["title"]["note"].type.string - && _yaml["title"]["note"].tag.match(rgx_y.yaml_tag_is_str) - ) { - _struct_composite.meta.title_note = _yaml["title"]["note"].get!string; + if ("subtitle" in _yaml["title"]) { + _init_string = ""; _init_string = _get_yaml_node_string(_yaml, _init_string, "title", "subtitle"); + if (!(_init_string.empty)) { _struct_composite.meta.title_subtitle = _init_string; } + } else if ("sub" in _yaml["title"]) { + _init_string = ""; _init_string = _get_yaml_node_string(_yaml, _init_string, "title", "sub"); + if (!(_init_string.empty)) { _struct_composite.meta.title_subtitle = _init_string; } } - if ("subtitle" in _yaml["title"] - && _yaml["title"]["subtitle"].type.string - && _yaml["title"]["subtitle"].tag.match(rgx_y.yaml_tag_is_str) - ) { - _struct_composite.meta.title_subtitle = _yaml["title"]["subtitle"].get!string; - } else if ("sub" in _yaml["title"] - && _yaml["title"]["sub"].type.string - && _yaml["title"]["sub"].tag.match(rgx_y.yaml_tag_is_str) - ) { - _struct_composite.meta.title_subtitle = _yaml["title"]["sub"].get!string; - } - } else if ( - _yaml["title"].type.string + } else if (_yaml["title"].type.string && _yaml["title"].tag.match(rgx_y.yaml_tag_is_str) ) { _struct_composite.meta.title_main = _yaml["title"].get!string; @@ -962,23 +715,15 @@ template contentYAMLtoSpineStruct() { if (_yaml["classify"].type.mapping && _yaml["classify"].tag.match(rgx_y.yaml_tag_is_map) ) { - if ("dewey" in _yaml["classify"] - && _yaml["classify"]["dewey"].type.string - && _yaml["classify"]["dewey"].tag.match(rgx_y.yaml_tag_is_str) - ) { - _struct_composite.meta.classify_dewey = _yaml["classify"]["dewey"].get!string; - } - if ("loc" in _yaml["classify"] - && _yaml["classify"]["loc"].type.string - && _yaml["classify"]["loc"].tag.match(rgx_y.yaml_tag_is_str) - ) { - _struct_composite.meta.classify_loc = _yaml["classify"]["loc"].get!string; - } - if ("keywords" in _yaml["classify"] - && _yaml["classify"]["keywords"].type.string - && _yaml["classify"]["keywords"].tag.match(rgx_y.yaml_tag_is_str) - ) { - _struct_composite.meta.classify_keywords = _yaml["classify"]["keywords"].get!string; + { + _init_string = ""; _init_string = _get_yaml_node_string(_yaml, _init_string, "classify", "dewey"); + if (!(_init_string.empty)) { _struct_composite.meta.classify_dewey = _init_string; } + } { + _init_string = ""; _init_string = _get_yaml_node_string(_yaml, _init_string, "classify", "loc"); + if (!(_init_string.empty)) { _struct_composite.meta.classify_loc = _init_string; } + } { + _init_string = ""; _init_string = _get_yaml_node_string(_yaml, _init_string, "classify", "keywords"); + if (!(_init_string.empty)) { _struct_composite.meta.classify_keywords = _init_string; } } if ("topic_register" in _yaml["classify"] && _yaml["classify"]["topic_register"].type.string @@ -1032,47 +777,27 @@ template contentYAMLtoSpineStruct() { if (_yaml["date"].type.mapping && _yaml["date"].tag.match(rgx_y.yaml_tag_is_map) ) { - if ("added_to_site" in _yaml["date"] - && _yaml["date"]["added_to_site"].type.string - && _yaml["date"]["added_to_site"].tag.match(rgx_y.yaml_tag_is_str) - ) { - _struct_composite.meta.date_added_to_site = _yaml["date"]["added_to_site"].get!string; - } - if ("available" in _yaml["date"] - && _yaml["date"]["available"].type.string - && _yaml["date"]["available"].tag.match(rgx_y.yaml_tag_is_str) - ) { - _struct_composite.meta.date_available = _yaml["date"]["available"].get!string; - } - if ("created" in _yaml["date"] - && _yaml["date"]["created"].type.string - && _yaml["date"]["created"].tag.match(rgx_y.yaml_tag_is_str) - ) { - _struct_composite.meta.date_created = _yaml["date"]["created"].get!string; - } - if ("issued" in _yaml["date"] - && _yaml["date"]["issued"].type.string - && _yaml["date"]["issued"].tag.match(rgx_y.yaml_tag_is_str) - ) { - _struct_composite.meta.date_issued = _yaml["date"]["issued"].get!string; - } - if ("modified" in _yaml["date"] - && _yaml["date"]["modified"].type.string - && _yaml["date"]["modified"].tag.match(rgx_y.yaml_tag_is_str) - ) { - _struct_composite.meta.date_modified = _yaml["date"]["modified"].get!string; - } - if ("published" in _yaml["date"] - && _yaml["date"]["published"].type.string - && _yaml["date"]["published"].tag.match(rgx_y.yaml_tag_is_str) - ) { - _struct_composite.meta.date_published = _yaml["date"]["published"].get!string; - } - if ("valid" in _yaml["date"] - && _yaml["date"]["valid"].type.string - && _yaml["date"]["valid"].tag.match(rgx_y.yaml_tag_is_str) - ) { - _struct_composite.meta.date_valid = _yaml["date"]["valid"].get!string; + { + _init_string = ""; _init_string = _get_yaml_node_string(_yaml, _init_string, "date", "added_to_site"); + if (!(_init_string.empty)) { _struct_composite.meta.date_added_to_site = _init_string; } + } { + _init_string = ""; _init_string = _get_yaml_node_string(_yaml, _init_string, "date", "available"); + if (!(_init_string.empty)) { _struct_composite.meta.date_available = _init_string; } + } { + _init_string = ""; _init_string = _get_yaml_node_string(_yaml, _init_string, "date", "created"); + if (!(_init_string.empty)) { _struct_composite.meta.date_created = _init_string; } + } { + _init_string = ""; _init_string = _get_yaml_node_string(_yaml, _init_string, "date", "issued"); + if (!(_init_string.empty)) { _struct_composite.meta.date_issued = _init_string; } + } { + _init_string = ""; _init_string = _get_yaml_node_string(_yaml, _init_string, "date", "modified"); + if (!(_init_string.empty)) { _struct_composite.meta.date_modified = _init_string; } + } { + _init_string = ""; _init_string = _get_yaml_node_string(_yaml, _init_string, "date", "published"); + if (!(_init_string.empty)) { _struct_composite.meta.date_published = _init_string; } + } { + _init_string = ""; _init_string = _get_yaml_node_string(_yaml, _init_string, "date", "valid"); + if (!(_init_string.empty)) { _struct_composite.meta.date_valid = _init_string; } } } } @@ -1088,23 +813,15 @@ template contentYAMLtoSpineStruct() { if (_yaml["notes"].type.mapping && _yaml["notes"].tag.match(rgx_y.yaml_tag_is_map) ) { - if ("abstract" in _yaml["notes"] - && _yaml["notes"]["abstract"].type.string - && _yaml["notes"]["abstract"].tag.match(rgx_y.yaml_tag_is_str) - ) { - _struct_composite.meta.notes_abstract = _yaml["notes"]["abstract"].get!string; - } - if ("description" in _yaml["notes"] - && _yaml["notes"]["description"].type.string - && _yaml["notes"]["description"].tag.match(rgx_y.yaml_tag_is_str) - ) { - _struct_composite.meta.notes_description = _yaml["notes"]["description"].get!string; - } - if ("summary" in _yaml["notes"] - && _yaml["notes"]["summary"].type.string - && _yaml["notes"]["summary"].tag.match(rgx_y.yaml_tag_is_str) - ) { - _struct_composite.meta.notes_summary = _yaml["notes"]["summary"].get!string; + { + _init_string = ""; _init_string = _get_yaml_node_string(_yaml, _init_string, "notes", "abstract"); + if (!(_init_string.empty)) { _struct_composite.meta.notes_abstract = _init_string; } + } { + _init_string = ""; _init_string = _get_yaml_node_string(_yaml, _init_string, "notes", "description"); + if (!(_init_string.empty)) { _struct_composite.meta.notes_description = _init_string; } + } { + _init_string = ""; _init_string = _get_yaml_node_string(_yaml, _init_string, "notes", "summary"); + if (!(_init_string.empty)) { _struct_composite.meta.notes_summary = _init_string; } } } } @@ -1114,29 +831,18 @@ template contentYAMLtoSpineStruct() { if (_yaml["original"].type.mapping && _yaml["original"].tag.match(rgx_y.yaml_tag_is_map) ) { - if ("language" in _yaml["original"] - && _yaml["original"]["language"].type.string - && _yaml["original"]["language"].tag.match(rgx_y.yaml_tag_is_str) - ) { - _struct_composite.meta.original_language = _yaml["original"]["language"].get!string; - } - if ("language_char" in _yaml["original"] - && _yaml["original"]["language_char"].type.string - && _yaml["original"]["language_char"].tag.match(rgx_y.yaml_tag_is_str) - ) { - _struct_composite.meta.original_language_char = _yaml["original"]["language_char"].get!string; - } - if ("source" in _yaml["original"] - && _yaml["original"]["source"].type.string - && _yaml["original"]["source"].tag.match(rgx_y.yaml_tag_is_str) - ) { - _struct_composite.meta.original_source = _yaml["original"]["source"].get!string; - } - if ("title" in _yaml["original"] - && _yaml["original"]["title"].type.string - && _yaml["original"]["title"].tag.match(rgx_y.yaml_tag_is_str) - ) { - _struct_composite.meta.original_title = _yaml["original"]["title"].get!string; + { + _init_string = ""; _init_string = _get_yaml_node_string(_yaml, _init_string, "original", "language"); + if (!(_init_string.empty)) { _struct_composite.meta.original_language = _init_string; } + } { + _init_string = ""; _init_string = _get_yaml_node_string(_yaml, _init_string, "original", "language_char"); + if (!(_init_string.empty)) { _struct_composite.meta.original_language_char = _init_string; } + } { + _init_string = ""; _init_string = _get_yaml_node_string(_yaml, _init_string, "original", "source"); + if (!(_init_string.empty)) { _struct_composite.meta.original_source = _init_string; } + } { + _init_string = ""; _init_string = _get_yaml_node_string(_yaml, _init_string, "original", "title"); + if (!(_init_string.empty)) { _struct_composite.meta.original_title = _init_string; } } } } @@ -1151,59 +857,34 @@ template contentYAMLtoSpineStruct() { if (_yaml["rights"].type.mapping && _yaml["rights"].tag.match(rgx_y.yaml_tag_is_map) ) { - if ("copyright" in _yaml["rights"] - && _yaml["rights"]["copyright"].type.string - && _yaml["rights"]["copyright"].tag.match(rgx_y.yaml_tag_is_str) - ) { - _struct_composite.meta.rights_copyright = check_input_markup(_yaml["rights"]["copyright"].get!string); - } - if ("copyright_text" in _yaml["rights"] - && _yaml["rights"]["copyright_text"].type.string - && _yaml["rights"]["copyright_text"].tag.match(rgx_y.yaml_tag_is_str) - ) { - _struct_composite.meta.rights_copyright_text = _yaml["rights"]["copyright_text"].get!string; - } - if ("copyright_audio" in _yaml["rights"] - && _yaml["rights"]["copyright_audio"].type.string - && _yaml["rights"]["copyright_audio"].tag.match(rgx_y.yaml_tag_is_str) - ) { - _struct_composite.meta.rights_copyright_audio = _yaml["rights"]["copyright_audio"].get!string; - } - if ("copyright_cover" in _yaml["rights"] - && _yaml["rights"]["copyright_cover"].type.string - && _yaml["rights"]["copyright_cover"].tag.match(rgx_y.yaml_tag_is_str) - ) { - _struct_composite.meta.rights_copyright_cover = _yaml["rights"]["copyright_cover"].get!string; - } - if ("copyright_illustrations" in _yaml["rights"] - && _yaml["rights"]["copyright_illustrations"].type.string - && _yaml["rights"]["copyright_illustrations"].tag.match(rgx_y.yaml_tag_is_str) - ) { - _struct_composite.meta.rights_copyright_illustrations = _yaml["rights"]["copyright_illustrations"].get!string; - } - if ("copyright_photographs" in _yaml["rights"] - && _yaml["rights"]["copyright_photographs"].type.string - && _yaml["rights"]["copyright_photographs"].tag.match(rgx_y.yaml_tag_is_str) - ) { - _struct_composite.meta.rights_copyright_photographs = _yaml["rights"]["copyright_photographs"].get!string; - } - if ("copyright_translation" in _yaml["rights"] - && _yaml["rights"]["copyright_translation"].type.string - && _yaml["rights"]["copyright_translation"].tag.match(rgx_y.yaml_tag_is_str) - ) { - _struct_composite.meta.rights_copyright_translation = _yaml["rights"]["copyright_translation"].get!string; - } - if ("copyright_video" in _yaml["rights"] - && _yaml["rights"]["copyright_video"].type.string - && _yaml["rights"]["copyright_video"].tag.match(rgx_y.yaml_tag_is_str) - ) { - _struct_composite.meta.rights_copyright_video = _yaml["rights"]["copyright_video"].get!string; - } - if ("license" in _yaml["rights"] - && _yaml["rights"]["license"].type.string - && _yaml["rights"]["license"].tag.match(rgx_y.yaml_tag_is_str) - ) { - _struct_composite.meta.rights_license = check_input_markup(_yaml["rights"]["license"].get!string); + { + _init_string = ""; _init_string = _get_yaml_node_string(_yaml, _init_string, "rights", "copyright", true); + if (!(_init_string.empty)) { _struct_composite.meta.rights_copyright = _init_string; } + } { + _init_string = ""; _init_string = _get_yaml_node_string(_yaml, _init_string, "rights", "copyright_text"); + if (!(_init_string.empty)) { _struct_composite.meta.rights_copyright_text = _init_string; } + } { + _init_string = ""; _init_string = _get_yaml_node_string(_yaml, _init_string, "rights", "copyright_audio"); + if (!(_init_string.empty)) { _struct_composite.meta.rights_copyright_audio = _init_string; } + } { + _init_string = ""; _init_string = _get_yaml_node_string(_yaml, _init_string, "rights", "copyright_cover"); + if (!(_init_string.empty)) { _struct_composite.meta.rights_copyright_cover = _init_string; } + } { + _init_string = ""; _init_string = _get_yaml_node_string(_yaml, _init_string, "rights", "copyright_illustrations"); + if (!(_init_string.empty)) { _struct_composite.meta.rights_copyright_illustrations = _init_string; } + } { + _init_string = ""; _init_string = _get_yaml_node_string(_yaml, _init_string, "rights", "copyright_photographs"); + if (!(_init_string.empty)) { _struct_composite.meta.rights_copyright_photographs = _init_string; } + } { + _init_string = ""; _init_string = _get_yaml_node_string(_yaml, _init_string, "rights", "copyright_translation"); + if (!(_init_string.empty)) { _struct_composite.meta.rights_copyright_translation = _init_string; } + } { + _init_string = ""; _init_string = _get_yaml_node_string(_yaml, _init_string, "rights", "copyright_video"); + if (!(_init_string.empty)) { _struct_composite.meta.rights_copyright_video = _init_string; } + } + { + _init_string = ""; _init_string = _get_yaml_node_string(_yaml, _init_string, "rights", "license", true); + if (!(_init_string.empty)) { _struct_composite.meta.rights_license = _init_string; } } } } @@ -1213,16 +894,15 @@ template contentYAMLtoSpineStruct() { } template configParseYAMLreturnSpineStruct() { import dyaml; - import - sisudoc.meta.conf_make_meta_structs, - sisudoc.meta.conf_make_meta_json; + import sisudoc.meta.conf_make_meta_structs; + import sisudoc.meta.conf_make_meta_json; mixin contentYAMLtoSpineStruct; - @system auto configParseYAMLreturnSpineStruct(T,CCm,M,O,Cfg)( - T _document_struct, - CCm _make_and_meta_struct, - M _manifested, - O _opt_action, - Cfg _cfg + @system ConfComposite configParseYAMLreturnSpineStruct(T,M,O,Cfg)( + T _document_struct, + ConfComposite _make_and_meta_struct, + M _manifested, + O _opt_action, + Cfg _cfg ){ Node _yaml; if (_document_struct.content.length > 0) { @@ -1245,32 +925,29 @@ template configParseYAMLreturnSpineStruct() { } } template docHeaderMakeAndMetaTupYamlExtractAndConvertToStruct() { - import - std.exception, - std.regex, - std.stdio, - std.traits, - std.typecons, - std.utf, - std.conv : to; - import - dyaml; - import - sisudoc.meta.conf_make_meta_structs, - sisudoc.meta.conf_make_meta_json, - sisudoc.meta.rgx_yaml, - sisudoc.meta.rgx; + import std.exception; + import std.regex; + import std.stdio; + // import std.traits; + import std.typecons; + import std.utf; + import std.conv : to; + import dyaml; + import sisudoc.meta.conf_make_meta_structs; + import sisudoc.meta.conf_make_meta_json; + import sisudoc.meta.rgx_yaml; + import sisudoc.meta.rgx; mixin spineRgxIn; mixin contentJSONtoSpineStruct; static auto rgx = RgxI(); mixin spineRgxYamlTags; static auto rgx_y = RgxYaml(); - @system auto docHeaderMakeAndMetaTupYamlExtractAndConvertToStruct(CCm,Src,M,O,Cfg)( - Src header_src, - CCm _make_and_meta_struct, - M _manifested, - O _opt_action, - Cfg _cfg, + @system ConfComposite docHeaderMakeAndMetaTupYamlExtractAndConvertToStruct(Src,M,O,Cfg)( + Src header_src, + ConfComposite _make_and_meta_struct, + M _manifested, + O _opt_action, + Cfg _cfg, ) { Node _yaml; try { diff --git a/src/sisudoc/meta/defaults.d b/src/sisudoc/meta/defaults.d index fe0cd1a..97b1d5f 100644 --- a/src/sisudoc/meta/defaults.d +++ b/src/sisudoc/meta/defaults.d @@ -6,7 +6,7 @@ - Author: Ralph Amissah [ralph.amissah@gmail.com] - - Copyright: (C) 2015 - 2024 Ralph Amissah, All Rights Reserved. + - Copyright: (C) 2015 - 2025 Ralph Amissah, All Rights Reserved. - License: AGPL 3 or later: diff --git a/src/sisudoc/meta/doc_debugs.d b/src/sisudoc/meta/doc_debugs.d index ae50256..b28ba2e 100644 --- a/src/sisudoc/meta/doc_debugs.d +++ b/src/sisudoc/meta/doc_debugs.d @@ -6,7 +6,7 @@ - Author: Ralph Amissah [ralph.amissah@gmail.com] - - Copyright: (C) 2015 - 2024 Ralph Amissah, All Rights Reserved. + - Copyright: (C) 2015 - 2025 Ralph Amissah, All Rights Reserved. - License: AGPL 3 or later: @@ -52,24 +52,22 @@ +/ module sisudoc.meta.doc_debugs; template spineDebugs() { - import - sisudoc.meta.defaults, - sisudoc.meta.rgx_files; - import - std.algorithm, - std.array, - std.container, - std.exception, - std.json, - std.stdio, - std.file, - std.path, - std.range, - std.regex, - std.string, - std.typecons, - std.utf, - std.conv : to; + import sisudoc.meta.defaults; + import sisudoc.meta.rgx_files; + import std.algorithm; + import std.array; + import std.container; + import std.exception; + import std.json; + import std.stdio; + import std.file; + import std.path; + import std.range; + import std.regex; + import std.string; + import std.typecons; + import std.utf; + import std.conv : to; auto spineDebugs(S,T)( const S contents, T doc_matters, diff --git a/src/sisudoc/meta/metadoc.d b/src/sisudoc/meta/metadoc.d index 25f28b6..ffe297e 100644 --- a/src/sisudoc/meta/metadoc.d +++ b/src/sisudoc/meta/metadoc.d @@ -6,7 +6,7 @@ - Author: Ralph Amissah [ralph.amissah@gmail.com] - - Copyright: (C) 2015 - 2024 Ralph Amissah, All Rights Reserved. + - Copyright: (C) 2015 - 2025 Ralph Amissah, All Rights Reserved. - License: AGPL 3 or later: @@ -50,31 +50,29 @@ module sisudoc.meta.metadoc; @safe: template spineAbstraction() { - import - std.datetime, - std.digest.crc, - std.digest.sha; - import - sisudoc.meta, - sisudoc.meta.metadoc_from_src, - sisudoc.meta.conf_make_meta_structs, - sisudoc.meta.conf_make_meta_json, - sisudoc.meta.defaults, - sisudoc.io_in.paths_source, - sisudoc.io_in.read_config_files, - sisudoc.io_in.read_source_files, - sisudoc.io_out.hub; + import std.datetime; + import std.digest.crc; + import std.digest.sha; + import sisudoc.meta; + import sisudoc.meta.metadoc_from_src; + import sisudoc.meta.conf_make_meta_structs; + import sisudoc.meta.conf_make_meta_json; + import sisudoc.meta.defaults; + import sisudoc.io_in.paths_source; + import sisudoc.io_in.read_config_files; + import sisudoc.io_in.read_source_files; + import sisudoc.io_out.hub; mixin spineBiblio; mixin outputHub; enum makeMeta { make, meta } enum docAbst { doc_abstract_obj, doc_has } - @system auto spineAbstraction(E,P,O,Cfg,M,S)( - E _env, - P program_info, - O _opt_action, - Cfg _cfg, - M _manifest, - S _make_and_meta_struct + @system auto spineAbstraction(E,P,O,Cfg,M)( + E _env, + P program_info, + O _opt_action, + Cfg _cfg, + M _manifest, + ConfComposite _make_and_meta_struct ){ { /+ document config/make file +/ auto _config_document_struct = readConfigDoc!()(_manifest, _env); @@ -144,7 +142,7 @@ template spineAbstraction() { if ((_opt_action.debug_do) || (_opt_action.debug_do_stages) ) { - writeln("step4 commence → (doc_matters) [", _manifest.src.filename, "]"); + writeln("step4 commence → (doc.matters) [", _manifest.src.filename, "]"); } struct ST_DocumentMatters { auto generator_program() { @@ -190,7 +188,7 @@ template spineAbstraction() { ~ ":" ~ _st.second.to!string; return _time; } - auto conf_make_meta() { + ConfComposite conf_make_meta() { return _make_and_meta_struct; } auto doc_digest() { @@ -294,7 +292,18 @@ template spineAbstraction() { ) { writeln("- step4 complete for [", _manifest.src.filename, "]"); } - auto t = tuple(doc_abstraction, doc_matters); - return t; + auto theDOC() { + struct ST_DOC { + const auto abstraction() { + return doc_abstraction; + } + auto matters() { + return doc_matters; + } + } + return ST_DOC(); + } + auto the_doc = theDOC(); + return the_doc; } } diff --git a/src/sisudoc/meta/metadoc_curate.d b/src/sisudoc/meta/metadoc_curate.d index 3b5654b..da20b3e 100644 --- a/src/sisudoc/meta/metadoc_curate.d +++ b/src/sisudoc/meta/metadoc_curate.d @@ -6,7 +6,7 @@ - Author: Ralph Amissah [ralph.amissah@gmail.com] - - Copyright: (C) 2015 - 2024 Ralph Amissah, All Rights Reserved. + - Copyright: (C) 2015 - 2025 Ralph Amissah, All Rights Reserved. - License: AGPL 3 or later: @@ -54,19 +54,17 @@ template spineMetaDocCurate() { T doc_matters, H hvst, ) { - import - sisudoc.meta.defaults, - sisudoc.meta.rgx; - import - std.array, - std.exception, - std.regex, - std.stdio, - std.string, - std.typecons, - std.uni, - std.utf, - std.conv : to; + import sisudoc.meta.defaults; + import sisudoc.meta.rgx; + import std.array; + import std.exception; + import std.regex; + import std.stdio; + import std.string; + import std.typecons; + import std.uni; + import std.utf; + import std.conv : to; mixin InternalMarkup; static auto mkup = InlineMarkup(); import sisudoc.io_out.paths_output; diff --git a/src/sisudoc/meta/metadoc_curate_authors.d b/src/sisudoc/meta/metadoc_curate_authors.d index cb2b1db..d8b5261 100644 --- a/src/sisudoc/meta/metadoc_curate_authors.d +++ b/src/sisudoc/meta/metadoc_curate_authors.d @@ -6,7 +6,7 @@ - Author: Ralph Amissah [ralph.amissah@gmail.com] - - Copyright: (C) 2015 - 2024 Ralph Amissah, All Rights Reserved. + - Copyright: (C) 2015 - 2025 Ralph Amissah, All Rights Reserved. - License: AGPL 3 or later: @@ -49,17 +49,15 @@ +/ module sisudoc.meta.metadoc_curate_authors; @safe: - import - std.algorithm, - std.array, - std.exception, - std.regex, - std.stdio, - std.string, - std.conv : to; - import - sisudoc.meta.defaults, - sisudoc.meta.rgx; + import std.algorithm; + import std.array; + import std.exception; + import std.regex; + import std.stdio; + import std.string; + import std.conv : to; + import sisudoc.meta.defaults; + import sisudoc.meta.rgx; mixin spineCurateMetadata; mixin InternalMarkup; template spineMetaDocCuratesAuthors() { diff --git a/src/sisudoc/meta/metadoc_curate_topics.d b/src/sisudoc/meta/metadoc_curate_topics.d index a30be73..3045dcb 100644 --- a/src/sisudoc/meta/metadoc_curate_topics.d +++ b/src/sisudoc/meta/metadoc_curate_topics.d @@ -6,7 +6,7 @@ - Author: Ralph Amissah [ralph.amissah@gmail.com] - - Copyright: (C) 2015 - 2024 Ralph Amissah, All Rights Reserved. + - Copyright: (C) 2015 - 2025 Ralph Amissah, All Rights Reserved. - License: AGPL 3 or later: @@ -49,17 +49,15 @@ +/ module sisudoc.meta.metadoc_curate_topics; @safe: - import - std.algorithm, - std.array, - std.exception, - std.regex, - std.stdio, - std.string, - std.conv : to; - import - sisudoc.meta.defaults, - sisudoc.meta.rgx; + import std.algorithm; + import std.array; + import std.exception; + import std.regex; + import std.stdio; + import std.string; + import std.conv : to; + import sisudoc.meta.defaults; + import sisudoc.meta.rgx; mixin spineCurateMetadata; mixin InternalMarkup; template spineMetaDocCuratesTopics() { diff --git a/src/sisudoc/meta/metadoc_from_src.d b/src/sisudoc/meta/metadoc_from_src.d index 70fec62..24ae935 100644 --- a/src/sisudoc/meta/metadoc_from_src.d +++ b/src/sisudoc/meta/metadoc_from_src.d @@ -6,7 +6,7 @@ - Author: Ralph Amissah [ralph.amissah@gmail.com] - - Copyright: (C) 2015 - 2024 Ralph Amissah, All Rights Reserved. + - Copyright: (C) 2015 - 2025 Ralph Amissah, All Rights Reserved. - License: AGPL 3 or later: @@ -54,19 +54,17 @@ module sisudoc.meta.metadoc_from_src; @safe: template docAbstraction() { // ↓ abstraction imports - import - std.algorithm, - std.container, - std.digest.sha, - std.file, - std.json, - std.path; - import - sisudoc.meta, - sisudoc.meta.defaults, - sisudoc.meta.rgx, - sisudoc.meta.metadoc_object_setter, - sisudoc.meta.rgx; + import std.algorithm; + import std.container; + import std.digest.sha; + import std.file; + import std.json; + import std.path; + import sisudoc.meta; + import sisudoc.meta.defaults; + import sisudoc.meta.rgx; + import sisudoc.meta.metadoc_object_setter; + import sisudoc.meta.rgx; public import sisudoc.meta.metadoc_from_src_functions; mixin docAbstractionFunctions; @system auto docAbstraction(CMM,Opt,Mf) ( @@ -99,8 +97,8 @@ template docAbstraction() { anchor_tag = ""; } mixin spineNode; - auto node_para_int_ = node_metadata_para_int; - auto node_para_str_ = node_metadata_para_str; + int[string] node_para_int_ = node_metadata_para_int; + string[string] node_para_str_ = node_metadata_para_str; ObjGenericComposite comp_obj_; line_occur = [ "heading" : 0, @@ -214,8 +212,8 @@ template docAbstraction() { } if (conf_make_meta.make.substitute) { foreach(substitution_pair; conf_make_meta.make.substitute) { - writeln("regex to match: ", substitution_pair[Substitute.match]); - writeln("substitution to make: ", substitution_pair[Substitute.markup]); + writeln("regex to match: ", substitution_pair[Substitute.match]); + writeln("substitution to make: ", substitution_pair[Substitute.markup]); } } if (conf_make_meta.make.bold) { @@ -231,7 +229,7 @@ template docAbstraction() { writeln("substitution to make: ", conf_make_meta.make.italics[Substitute.markup]); } } - auto loopMarkupSrcByLine( + _loopMarkupSrcByLineStruct loopMarkupSrcByLine( char[][] markup_sourcefile_content, string[string] an_object, uint[string] pith, @@ -340,7 +338,7 @@ template docAbstraction() { ._doc_header_and_make_substitutions_(conf_make_meta) ._doc_header_and_make_substitutions_fontface_(conf_make_meta); { - auto _get = line.txt_by_line_block_quote(an_object, pith); + ST_txt_by_line_block_generic _get = line.txt_by_line_block_quote(an_object, pith); { an_object = _get.this_object; pith = _get.pith; @@ -353,7 +351,7 @@ template docAbstraction() { ._doc_header_and_make_substitutions_fontface_(conf_make_meta) .replaceAll(rgx.para_delimiter, mkup.br_line_spaced ~ "$1"); { - auto _get = line.txt_by_line_block_group(an_object, pith); + ST_txt_by_line_block_generic _get = line.txt_by_line_block_group(an_object, pith); { an_object = _get.this_object; pith = _get.pith; @@ -369,7 +367,7 @@ template docAbstraction() { .replaceAll(rgx.spaces_keep, (m.captures[1]).translate([ ' ' : mkup.nbsp ])); } { - auto _get = line.txt_by_line_block_block(an_object, pith); + ST_txt_by_line_block_generic _get = line.txt_by_line_block_block(an_object, pith); { an_object = _get.this_object; pith = _get.pith; @@ -378,7 +376,7 @@ template docAbstraction() { continue; } else if (pith["block_is"] == eN.blk_is.poem) { { - auto _get = line.txt_by_line_block_poem(an_object, pith, cntr, object_number_poem, conf_make_meta, tag_in_seg); + ST_txt_by_line_block_poem _get = line.txt_by_line_block_poem(an_object, pith, cntr, object_number_poem, conf_make_meta, tag_in_seg); { an_object = _get.this_object; pith = _get.pith; @@ -412,7 +410,7 @@ template docAbstraction() { object_number_poem["start"] = obj_cite_digits.object_number.to!string; } { - auto _get = line.txt_by_line_block_start(pith, dochas, object_number_poem); + ST_txt_by_line_block_start _get = line.txt_by_line_block_start(pith, dochas, object_number_poem); { pith = _get.pith; dochas = _get.dochas; @@ -442,7 +440,7 @@ template docAbstraction() { || line.matchFirst(rgx.book_index_item_open) || pith["section"] == eN.sect.book_index) { { // book_index - auto _get = line.flow_book_index_(an_object, book_idx_tmp, pith, opt_action); + ST_flow_book_index _get = line.flow_book_index_(an_object, book_idx_tmp, pith, opt_action); { an_object = _get.this_object; pith = _get.pith; @@ -464,7 +462,7 @@ template docAbstraction() { comp_obj_comment.text = an_object[an_object_key].strip; the_document_body_section ~= comp_obj_comment; { - auto _get = txt_by_line_common_reset_(line_occur, an_object, pith); + ST_txt_by_line_common_reset _get = txt_by_line_common_reset_(line_occur, an_object, pith); { line_occur = _get.line_occur; an_object = _get.this_object; @@ -481,7 +479,7 @@ template docAbstraction() { && (pith["make_headings"] == eN.bi.off)) { // heading found { - auto _get = line.flow_heading_found_(heading_match_str, conf_make_meta.make.headings, heading_match_rgx, pith); + ST_flow_heading_found _get = line.flow_heading_found_(heading_match_str, conf_make_meta.make.headings, heading_match_rgx, pith); { heading_match_str = _get.heading_match_str; heading_match_rgx = _get.heading_match_rgx; @@ -496,7 +494,7 @@ template docAbstraction() { ) { // heading make set { - auto _get = line.flow_heading_make_set_(line_occur, heading_match_rgx, pith); + ST_flow_heading_make_set _get = line.flow_heading_make_set_(line_occur, heading_match_rgx, pith); { line = _get.line; an_object = _get.this_object; @@ -534,7 +532,7 @@ template docAbstraction() { ._doc_header_and_make_substitutions_(conf_make_meta) ._doc_header_and_make_substitutions_fontface_(conf_make_meta); { - auto _get = line.flow_para_match_(an_object, an_object_key, indent, bullet, pith, line_occur); + ST_flow_para_match _get = line.flow_para_match_(an_object, an_object_key, indent, bullet, pith, line_occur); { an_object = _get.this_object; an_object_key = _get.this_object_key; @@ -563,7 +561,7 @@ template docAbstraction() { } else if (pith["block_state"] == eN.blk_state.closing) { // line empty, with blocks flag { - auto _get = line.flow_block_flag_line_empty_( + ST_flow_block_flag_line_empty _get = line.flow_block_flag_line_empty_( an_object, bookindex_extract_hash, the_document_body_section, @@ -679,7 +677,7 @@ template docAbstraction() { _anchor_tag = obj_cite_digits.identifier; // (incrementally build toc) table of contents here! { - auto _get = obj_im.flow_table_of_contents_gather_headings( + ST_flow_table_of_contents_gather_headings _get = obj_im.flow_table_of_contents_gather_headings( an_object, conf_make_meta, tag_in_seg, @@ -700,7 +698,7 @@ template docAbstraction() { if (an_object["lev_markup_number"].to!int <= 4) { segnames["epub"] ~= tag_in_seg["seg_lv1to4"]; } - auto comp_obj_ = node_construct.node_emitter_heading( + ObjGenericComposite comp_obj_ = node_construct.node_emitter_heading( an_object, tag_in_seg, lev_anchor_tag, @@ -721,7 +719,7 @@ template docAbstraction() { the_document_body_section ~= comp_obj_; debug(objectrelated1) { writeln(line); } // check { - auto _get = txt_by_line_common_reset_(line_occur, an_object, pith); + ST_txt_by_line_common_reset _get = txt_by_line_common_reset_(line_occur, an_object, pith); { line_occur = _get.line_occur; an_object = _get.this_object; @@ -742,7 +740,7 @@ template docAbstraction() { an_object["bookindex_nugget"] = ("bookindex_nugget" in an_object) ? an_object["bookindex_nugget"] : ""; bookindex_unordered_hashes = bookindex_extract_hash.bookindex_nugget_hash(an_object["bookindex_nugget"], obj_cite_digits, tag_in_seg); an_object["is"] = "para"; - auto comp_obj_ = node_construct.node_location_emitter( + ObjGenericComposite comp_obj_ = node_construct.node_location_emitter( content_non_header, tag_in_seg, lev_anchor_tag, @@ -774,7 +772,7 @@ template docAbstraction() { the_document_body_section ~= comp_obj_; tag_assoc = an_object.inline_para_link_anchor(tag_in_seg, tag_assoc); { - auto _get = txt_by_line_common_reset_(line_occur, an_object, pith); + ST_txt_by_line_common_reset _get = txt_by_line_common_reset_(line_occur, an_object, pith); { line_occur = _get.line_occur; an_object = _get.this_object; @@ -848,7 +846,7 @@ template docAbstraction() { return ret; } { // loopMarkupSrcByLine - auto _doc_by_line = loopMarkupSrcByLine(markup_sourcefile_content, an_object, pith); + _loopMarkupSrcByLineStruct _doc_by_line = loopMarkupSrcByLine(markup_sourcefile_content, an_object, pith); the_document_toc_section = _doc_by_line.toc; the_document_body_section = _doc_by_line.body; the_document_glossary_section = _doc_by_line.glossary; @@ -1496,7 +1494,7 @@ template docAbstraction() { return tag_assoc; } } - auto doc_has() { + DocHas_ doc_has() { return DocHas_(); } // the doc to be returned diff --git a/src/sisudoc/meta/metadoc_from_src_functions.d b/src/sisudoc/meta/metadoc_from_src_functions.d index 953e75a..3ae10d1 100644 --- a/src/sisudoc/meta/metadoc_from_src_functions.d +++ b/src/sisudoc/meta/metadoc_from_src_functions.d @@ -6,7 +6,7 @@ - Author: Ralph Amissah [ralph.amissah@gmail.com] - - Copyright: (C) 2015 - 2024 Ralph Amissah, All Rights Reserved. + - Copyright: (C) 2015 - 2025 Ralph Amissah, All Rights Reserved. - License: AGPL 3 or later: @@ -453,6 +453,62 @@ template docAbstractionFunctions() { pith["block_is"] = eN.blk_is.table; pith["block_state"] = eN.blk_state.on; pith["block_delim"] = eN.blk_delim.curly_special; + } else if (auto m = line.matchFirst(rgx.block_quotemarks_code_open)) { + dochas["codeblock"]++; + an_object["lang"] = ""; + an_object["attrib"] = (m["attrib"]) ? m["attrib"].to!string : ""; + an_object["syntax"] = (m["syntax"]) ? m["syntax"].to!string : ""; + debug(codequotemarks) { writefln( "* [code quotemarks] %s", line); } + pith["block_is"] = eN.blk_is.code; + pith["block_state"] = eN.blk_state.on; + pith["block_delim"] = eN.blk_delim.quotemarks; // + } else if (auto m = line.matchFirst(rgx.block_quotemarks_poem_open)) { + dochas["poem"]++; + an_object["syntax"] = ""; + an_object["attrib"] = (m["attrib"]) ? m["attrib"].to!string : ""; + an_object["lang"] = (m["lang"]) ? m["lang"].to!string : ""; + debug(poem) { writefln( "* [poem quotemarks] %s", line); } + object_number_poem["start"] = obj_cite_digits.object_number.to!string; + pith["block_is"] = eN.blk_is.poem; + pith["block_state"] = eN.blk_state.on; + pith["block_delim"] = eN.blk_delim.quotemarks; // + pith["verse_new"] = eN.bi.on; + } else if (auto m = line.matchFirst(rgx.block_quotemarks_group_open)) { + dochas["group"]++; + an_object["syntax"] = ""; + an_object["attrib"] = (m["attrib"]) ? m["attrib"].to!string : ""; + an_object["lang"] = (m["lang"]) ? m["lang"].to!string : ""; + debug(group) { writefln( "* [group quotemarks] %s", line); } + pith["block_is"] = eN.blk_is.group; + pith["block_state"] = eN.blk_state.on; + pith["block_delim"] = eN.blk_delim.quotemarks; + } else if (auto m = line.matchFirst(rgx.block_quotemarks_block_open)) { + dochas["block"]++; + an_object["syntax"] = ""; + an_object["attrib"] = (m["attrib"]) ? m["attrib"].to!string : ""; + an_object["lang"] = (m["lang"]) ? m["lang"].to!string : ""; + debug(block) { writefln( "* [block quotemarks] %s", line); } + pith["block_is"] = eN.blk_is.block; + pith["block_state"] = eN.blk_state.on; + pith["block_delim"] = eN.blk_delim.quotemarks; + } else if (auto m = line.matchFirst(rgx.block_quotemarks_quote_open)) { + dochas["quote"]++; + an_object["syntax"] = ""; + an_object["attrib"] = m["attrib"].to!string; + an_object["lang"] = m["lang"].to!string; + debug(quote) { writefln( "* [quote quotemarks] %s", line); // quote (quotemarks) open + } + pith["block_is"] = eN.blk_is.quote; + pith["block_state"] = eN.blk_state.on; + pith["block_delim"] = eN.blk_delim.quotemarks; + } else if (auto m = line.matchFirst(rgx.block_quotemarks_table_open)) { // quotemarks table open + debug(table) { writefln( "* [table quotemarks] %s", line); } + dochas["table"] ++; + an_object["table_head"] = m["attrib"].to!string; + an_object["block_type"] = "quotemarks"; + pith["block_is"] = eN.blk_is.table; + pith["block_state"] = eN.blk_state.on; + pith["block_delim"] = eN.blk_delim.quotemarks; } else if (auto m = line.matchFirst(rgx.block_tic_code_open)) { dochas["codeblock"]++; an_object["lang"] = ""; @@ -536,6 +592,17 @@ template docAbstractionFunctions() { debug(group) { writeln(line); } an_object[an_object_key] ~= line ~= "\n"; } + } else if (pith["block_delim"] == eN.blk_delim.quotemarks) { + if (line.matchFirst(rgx.block_quotemarks_close)) { + debug(group) { writeln(line); } + an_object[an_object_key] = an_object[an_object_key].stripRight; + pith["block_is"] = eN.blk_is.group; + pith["block_state"] = eN.blk_state.closing; + pith["block_delim"] = eN.blk_delim.off; + } else { + debug(group) { writeln(line); } + an_object[an_object_key] ~= line ~= "\n"; + } } else if (pith["block_delim"] == eN.blk_delim.tic) { if (line.matchFirst(rgx.block_tic_close)) { debug(group) { writeln(line); } @@ -574,6 +641,17 @@ template docAbstractionFunctions() { debug(block) { writeln(line); } an_object[an_object_key] ~= line ~= "\n"; } + } else if (pith["block_delim"] == eN.blk_delim.quotemarks) { + if (line.matchFirst(rgx.block_quotemarks_close)) { + debug(block) { writeln(line); } + an_object[an_object_key] = an_object[an_object_key].stripRight; + pith["block_is"] = eN.blk_is.block; + pith["block_state"] = eN.blk_state.closing; + pith["block_delim"] = eN.blk_delim.off; + } else { + debug(block) { writeln(line); } + an_object[an_object_key] ~= line ~= "\n"; + } } else if (pith["block_delim"] == eN.blk_delim.tic) { if (line.matchFirst(rgx.block_tic_close)) { debug(block) { writeln(line); } @@ -698,6 +776,94 @@ template docAbstractionFunctions() { ++cntr; } } + } else if (pith["block_delim"] == eN.blk_delim.quotemarks) { + if (auto m = line.matchFirst(rgx.block_quotemarks_close)) { + an_object[an_object_key] = "verse"; + debug(poem) { writefln( "* [poem quotemarks] %s", line); } + if (processing.length > 0) { + an_object[an_object_key] = processing["verse"]; + } + if (an_object.length > 0) { + debug(poem) { writeln(__LINE__); writeln(obj_cite_digits.object_number, line); } + processing.remove("verse"); + an_object["is"] = "verse"; + ST_txtAndAnchorTagPlusHasFootnotesUrlsImages substantive_obj_misc_struct + = obj_im.obj_inline_markup_and_anchor_tags_and_misc(an_object, an_object_key, conf_make_meta, No._new_doc); + an_object["substantive"] = substantive_obj_misc_struct.obj_txt; + anchor_tag = substantive_obj_misc_struct.anchor_tag; + comp_obj_ = set_object_generic("body", "body", "block", "verse", an_object["substantive"], obj_cite_digits.object_number); + comp_obj_.metainfo.identifier = obj_cite_digits.identifier; + comp_obj_.metainfo.object_number_off = obj_cite_digits.off; + comp_obj_.metainfo.o_n_book_index = obj_cite_digits.bkidx; + comp_obj_.metainfo.object_number_type = obj_cite_digits.type; + comp_obj_.tags.html_segment_anchor_tag_is = tag_in_seg["seg_lv4"]; + comp_obj_.tags.epub_segment_anchor_tag_is = tag_in_seg["seg_lv1to4"]; + comp_obj_.has.inline_notes_reg = substantive_obj_misc_struct.has_notes_reg; + comp_obj_.has.inline_notes_star = substantive_obj_misc_struct.has_notes_star; + comp_obj_.has.inline_links = substantive_obj_misc_struct.has_links; + the_document_body_section ~= comp_obj_; + tag_assoc = an_object.inline_para_link_anchor(tag_in_seg, tag_assoc); + object_number_poem["end"] = obj_cite_digits.object_number.to!string; + object_reset(an_object); + processing.remove("verse"); + ++cntr; + } + pith["block_is"] = eN.blk_is.poem; + pith["block_state"] = eN.blk_state.closing; + pith["block_delim"] = eN.blk_delim.off; + } else { + processing["verse"] ~= line ~= "\n"; + if (pith["verse_new"] == eN.bi.on) { + obj_cite_digits = ocn_emit(pith["ocn"]); + pith["verse_new"] = eN.bi.off; + } else if (line.matchFirst(rgx.newline_eol_delimiter_only)) { + processing["verse"] = processing["verse"].stripRight; + pith["verse_new"] = eN.bi.on; + verse_line = eN.bi.off; + } + if (pith["verse_new"] == eN.bi.on) { + verse_line = 1; + an_object[an_object_key] = processing["verse"]; + debug(poem) { writefln( + "* %s tic\n%s", + obj_cite_digits.object_number, + an_object[an_object_key] + ); + } + processing.remove("verse"); + an_object["is"] = "verse"; + auto comp_obj_location + = node_construct.node_location_emitter( + content_non_header, + tag_in_seg, + lev_anchor_tag, + tag_assoc, + obj_cite_digits, + cntr, + heading_ptr-1, + an_object["is"] + ); + ST_txtAndAnchorTagPlusHasFootnotesUrlsImages substantive_obj_misc_struct + = obj_im.obj_inline_markup_and_anchor_tags_and_misc(an_object, an_object_key, conf_make_meta, No._new_doc); + an_object["substantive"] = substantive_obj_misc_struct.obj_txt; + anchor_tag = substantive_obj_misc_struct.anchor_tag; + comp_obj_ = set_object_generic("body", "body", "block", "verse", an_object["substantive"], obj_cite_digits.object_number); + comp_obj_.metainfo.identifier = obj_cite_digits.identifier; + comp_obj_.metainfo.object_number_off = obj_cite_digits.off; + comp_obj_.metainfo.o_n_book_index = obj_cite_digits.bkidx; + comp_obj_.metainfo.object_number_type = obj_cite_digits.type; + comp_obj_.tags.html_segment_anchor_tag_is = tag_in_seg["seg_lv4"]; + comp_obj_.tags.epub_segment_anchor_tag_is = tag_in_seg["seg_lv1to4"]; + comp_obj_.has.inline_notes_reg = substantive_obj_misc_struct.has_notes_reg; + comp_obj_.has.inline_notes_star = substantive_obj_misc_struct.has_notes_star; + comp_obj_.has.inline_links = substantive_obj_misc_struct.has_links; + the_document_body_section ~= comp_obj_; + tag_assoc = an_object.inline_para_link_anchor(tag_in_seg, tag_assoc); + object_reset(an_object); + processing.remove("verse"); + ++cntr; + } + } } else if (pith["block_delim"] == eN.blk_delim.tic) { if (auto m = line.matchFirst(rgx.block_tic_close)) { an_object[an_object_key] = "verse"; @@ -816,6 +982,19 @@ template docAbstractionFunctions() { debug(codecurly) { writeln(line); } an_object[an_object_key] ~= line ~= "\n"; } + } else if (pith["block_delim"] == eN.blk_delim.quotemarks) { + if (line.matchFirst(rgx.block_quotemarks_close)) { + debug(codequotemarks) { writeln(line); } + an_object[an_object_key] = an_object[an_object_key] + .replaceFirst(rgx.newline_eol_delimiter_only, "") + .stripRight; + pith["block_is"] = eN.blk_is.code; + pith["block_state"] = eN.blk_state.closing; + pith["block_delim"] = eN.blk_delim.off; + } else { + debug(codequotemarks) { writeln(line); } + an_object[an_object_key] ~= line ~= "\n"; + } } else if (pith["block_delim"] == eN.blk_delim.tic) { if (line.matchFirst(rgx.block_tic_close)) { debug(codetic) { writeln(line); } @@ -884,6 +1063,16 @@ template docAbstractionFunctions() { debug(table) { writeln(line); } an_object[an_object_key] ~= line ~= "\n"; } + } else if (pith["block_delim"] == eN.blk_delim.quotemarks) { + if (line.matchFirst(rgx.block_quotemarks_close)) { + debug(table) { writeln(line); } + pith["block_is"] = eN.blk_is.table; + pith["block_state"] = eN.blk_state.closing; + pith["block_delim"] = eN.blk_delim.off; + } else { + debug(table) { writeln(line); } + an_object[an_object_key] ~= line ~= "\n"; + } } else if (pith["block_delim"] == eN.blk_delim.tic) { if (line.matchFirst(rgx.block_tic_close)) { debug(table) { writeln(line); } @@ -927,6 +1116,17 @@ template docAbstractionFunctions() { debug(quote) { writeln(line); } an_object[an_object_key] ~= line ~= "\n"; } + } else if (pith["block_delim"] == eN.blk_delim.quotemarks) { + if (line.matchFirst(rgx.block_quotemarks_close)) { + debug(quote) { writeln(line); } + an_object[an_object_key] = an_object[an_object_key].stripRight; + pith["block_is"] = eN.blk_is.quote; + pith["block_state"] = eN.blk_state.closing; + pith["block_delim"] = eN.blk_delim.off; + } else { + debug(quote) { writeln(line); } + an_object[an_object_key] ~= line ~= "\n"; + } } else if (pith["block_delim"] == eN.blk_delim.tic) { if (line.matchFirst(rgx.block_tic_close)) { debug(quote) { writeln(line); } @@ -3631,7 +3831,7 @@ template docAbstractionFunctions() { } } else { // para { - auto _get = line.flow_para_match_(an_object, an_object_key, indent, bullet, pith, line_occur); + ST_flow_para_match _get = line.flow_para_match_(an_object, an_object_key, indent, bullet, pith, line_occur); { an_object = _get.this_object; an_object_key = _get.this_object_key; @@ -3924,7 +4124,7 @@ template docAbstractionFunctions() { tag_assoc[comp_obj_.tags.segment_anchor_tag_epub]["seg_lv1to4"] = comp_obj_.tags.segment_anchor_tag_epub; } else if (!(line.empty)) { { - auto _get = line.flow_para_match_(an_object, an_object_key, indent, bullet, pith, line_occur); + ST_flow_para_match _get = line.flow_para_match_(an_object, an_object_key, indent, bullet, pith, line_occur); { an_object = _get.this_object; an_object_key = _get.this_object_key; diff --git a/src/sisudoc/meta/metadoc_object_setter.d b/src/sisudoc/meta/metadoc_object_setter.d index 8b2daf0..e0e896e 100644 --- a/src/sisudoc/meta/metadoc_object_setter.d +++ b/src/sisudoc/meta/metadoc_object_setter.d @@ -6,7 +6,7 @@ - Author: Ralph Amissah [ralph.amissah@gmail.com] - - Copyright: (C) 2015 - 2024 Ralph Amissah, All Rights Reserved. + - Copyright: (C) 2015 - 2025 Ralph Amissah, All Rights Reserved. - License: AGPL 3 or later: @@ -420,6 +420,7 @@ template ObjectSetter() { tic, curly_special, tic_special, + quotemarks, } } return _e(); diff --git a/src/sisudoc/meta/metadoc_show_config.d b/src/sisudoc/meta/metadoc_show_config.d index 76a0394..5bbeea6 100644 --- a/src/sisudoc/meta/metadoc_show_config.d +++ b/src/sisudoc/meta/metadoc_show_config.d @@ -6,7 +6,7 @@ - Author: Ralph Amissah [ralph.amissah@gmail.com] - - Copyright: (C) 2015 - 2024 Ralph Amissah, All Rights Reserved. + - Copyright: (C) 2015 - 2025 Ralph Amissah, All Rights Reserved. - License: AGPL 3 or later: @@ -54,21 +54,19 @@ template spineShowSiteConfig() { O opt_action, T config, ) { - import - sisudoc.meta.defaults, - sisudoc.meta.rgx; - import - std.array, - std.digest.crc, - std.digest.sha, - std.exception, - std.regex, - std.stdio, - std.string, - std.typecons, - std.uni, - std.utf, - std.conv : to; + import sisudoc.meta.defaults; + import sisudoc.meta.rgx; + import std.array; + import std.digest.crc; + import std.digest.sha; + import std.exception; + import std.regex; + import std.stdio; + import std.string; + import std.typecons; + import std.uni; + import std.utf; + import std.conv : to; mixin InternalMarkup; auto markup = InlineMarkup(); auto char_repeat_number = 66; @@ -139,24 +137,20 @@ template spineShowSiteConfig() { } } template spineShowConfig() { - void spineShowConfig(T)( - T doc_matters, - ) { - import - sisudoc.meta.defaults, - sisudoc.meta.rgx; - import - std.array, - std.digest.crc, - std.digest.sha, - std.exception, - std.regex, - std.stdio, - std.string, - std.typecons, - std.uni, - std.utf, - std.conv : to; + void spineShowConfig(T)(T doc_matters) { + import sisudoc.meta.defaults; + import sisudoc.meta.rgx; + import std.array; + import std.digest.crc; + import std.digest.sha; + import std.exception; + import std.regex; + import std.stdio; + import std.string; + import std.typecons; + import std.uni; + import std.utf; + import std.conv : to; mixin InternalMarkup; auto markup = InlineMarkup(); auto min_repeat_number = 66; diff --git a/src/sisudoc/meta/metadoc_show_make.d b/src/sisudoc/meta/metadoc_show_make.d index ddbb687..57721cf 100644 --- a/src/sisudoc/meta/metadoc_show_make.d +++ b/src/sisudoc/meta/metadoc_show_make.d @@ -6,7 +6,7 @@ - Author: Ralph Amissah [ralph.amissah@gmail.com] - - Copyright: (C) 2015 - 2024 Ralph Amissah, All Rights Reserved. + - Copyright: (C) 2015 - 2025 Ralph Amissah, All Rights Reserved. - License: AGPL 3 or later: @@ -50,24 +50,20 @@ module sisudoc.meta.metadoc_show_make; @safe: template spineShowMake() { - void spineShowMake(T)( - T doc_matters, - ) { - import - sisudoc.meta.defaults, - sisudoc.meta.rgx; - import - std.array, - std.digest.crc, - std.digest.sha, - std.exception, - std.regex, - std.stdio, - std.string, - std.typecons, - std.uni, - std.utf, - std.conv : to; + void spineShowMake(T)(T doc_matters) { + import sisudoc.meta.defaults; + import sisudoc.meta.rgx; + import std.array; + import std.digest.crc; + import std.digest.sha; + import std.exception; + import std.regex; + import std.stdio; + import std.string; + import std.typecons; + import std.uni; + import std.utf; + import std.conv : to; mixin InternalMarkup; auto markup = InlineMarkup(); auto min_repeat_number = 66; diff --git a/src/sisudoc/meta/metadoc_show_metadata.d b/src/sisudoc/meta/metadoc_show_metadata.d index 31ff1ea..331ab7f 100644 --- a/src/sisudoc/meta/metadoc_show_metadata.d +++ b/src/sisudoc/meta/metadoc_show_metadata.d @@ -6,7 +6,7 @@ - Author: Ralph Amissah [ralph.amissah@gmail.com] - - Copyright: (C) 2015 - 2024 Ralph Amissah, All Rights Reserved. + - Copyright: (C) 2015 - 2025 Ralph Amissah, All Rights Reserved. - License: AGPL 3 or later: @@ -50,24 +50,20 @@ module sisudoc.meta.metadoc_show_metadata; @safe: template spineShowMetaData() { - void spineShowMetaData(T)( - T doc_matters, - ) { - import - sisudoc.meta.defaults, - sisudoc.meta.rgx; - import - std.array, - std.digest.crc, - std.digest.sha, - std.exception, - std.regex, - std.stdio, - std.string, - std.typecons, - std.uni, - std.utf, - std.conv : to; + void spineShowMetaData(T)(T doc_matters) { + import sisudoc.meta.defaults; + import sisudoc.meta.rgx; + import std.array; + import std.digest.crc; + import std.digest.sha; + import std.exception; + import std.regex; + import std.stdio; + import std.string; + import std.typecons; + import std.uni; + import std.utf; + import std.conv : to; mixin InternalMarkup; auto markup = InlineMarkup(); auto min_repeat_number = 66; diff --git a/src/sisudoc/meta/metadoc_show_summary.d b/src/sisudoc/meta/metadoc_show_summary.d index 92d476c..923473c 100644 --- a/src/sisudoc/meta/metadoc_show_summary.d +++ b/src/sisudoc/meta/metadoc_show_summary.d @@ -6,7 +6,7 @@ - Author: Ralph Amissah [ralph.amissah@gmail.com] - - Copyright: (C) 2015 - 2024 Ralph Amissah, All Rights Reserved. + - Copyright: (C) 2015 - 2025 Ralph Amissah, All Rights Reserved. - License: AGPL 3 or later: @@ -50,25 +50,21 @@ module sisudoc.meta.metadoc_show_summary; @safe: template spineMetaDocSummary() { - void spineMetaDocSummary(S,T)( - const S doc_abstraction, - T doc_matters, - ) { - import - sisudoc.meta.defaults, - sisudoc.meta.rgx; - import - std.array, - std.digest.crc, - std.digest.sha, - std.exception, - std.regex, - std.stdio, - std.string, - std.typecons, - std.uni, - std.utf, - std.conv : to; + void spineMetaDocSummary(D)(D doc) { + auto doc_matters = doc.matters; + import sisudoc.meta.defaults; + import sisudoc.meta.rgx; + import std.array; + import std.digest.crc; + import std.digest.sha; + import std.exception; + import std.regex; + import std.stdio; + import std.string; + import std.typecons; + import std.uni; + import std.utf; + import std.conv : to; mixin InternalMarkup; auto markup = InlineMarkup(); auto min_repeat_number = 66; @@ -85,7 +81,7 @@ template spineMetaDocSummary() { "last_object_number_book_index" : "0", ]; foreach (k; doc_matters.has.keys_seq.seg) { - foreach (obj; doc_abstraction[k]) { + foreach (obj; doc.abstraction[k]) { if (obj.metainfo.is_of_part != "empty") { if (!empty(obj.metainfo.object_number)) { if (k == "body") { @@ -116,9 +112,9 @@ template spineMetaDocSummary() { doc_matters.src.language, markup.repeat_character_by_number_provided("-", char_repeat_number), "- toc arr length:", - to!int(doc_abstraction["toc"].length), - "- doc_abstraction arr length:", - to!int(doc_abstraction["body"].length), + to!int(doc.abstraction["toc"].length), + "- doc.abstraction arr length:", + to!int(doc.abstraction["body"].length), " doc body last obj on.#:", to!int(check["last_object_number_body"]), " - number of tables:", @@ -134,26 +130,26 @@ template spineMetaDocSummary() { " - number of images:", doc_matters.has.images, "- endnotes length:", // subtract headings - (doc_abstraction["endnotes"].length > 2) - ? (to!int(doc_abstraction["endnotes"].length - 2)) + (doc.abstraction["endnotes"].length > 2) + ? (to!int(doc.abstraction["endnotes"].length - 2)) : 0, "- glossary length:", - (doc_abstraction["glossary"].length > 1) - ? (to!int(doc_abstraction["glossary"].length)) + (doc.abstraction["glossary"].length > 1) + ? (to!int(doc.abstraction["glossary"].length)) : 0, "- biblio length:", - (doc_abstraction["bibliography"].length > 1) - ? (to!int(doc_abstraction["bibliography"].length)) + (doc.abstraction["bibliography"].length > 1) + ? (to!int(doc.abstraction["bibliography"].length)) : 0, "- bookindex length:", - (doc_abstraction["bookindex"].length > 1) - ? (to!int(doc_abstraction["bookindex"].length)) + (doc.abstraction["bookindex"].length > 1) + ? (to!int(doc.abstraction["bookindex"].length)) : 0, " book idx last obj on.#:", to!int(check["last_object_number_book_index"]), "- blurb length:", - (doc_abstraction["blurb"].length > 1) - ? (to!int(doc_abstraction["blurb"].length)) + (doc.abstraction["blurb"].length > 1) + ? (to!int(doc.abstraction["blurb"].length)) : 0, "* last obj on.#:", to!int(check["last_object_number"]), diff --git a/src/sisudoc/meta/package.d b/src/sisudoc/meta/package.d index 1926eb6..911952b 100644 --- a/src/sisudoc/meta/package.d +++ b/src/sisudoc/meta/package.d @@ -6,7 +6,7 @@ - Author: Ralph Amissah [ralph.amissah@gmail.com] - - Copyright: (C) 2015 - 2024 Ralph Amissah, All Rights Reserved. + - Copyright: (C) 2015 - 2025 Ralph Amissah, All Rights Reserved. - License: AGPL 3 or later: @@ -48,17 +48,15 @@ +/ module sisudoc.meta; -public import - sisudoc.meta.defaults; +public import sisudoc.meta.defaults; /+ std +/ -public import - std.array, - std.exception, - std.range, - std.regex, - std.stdio, - std.string, - std.typecons, - // std.uni, - std.utf, - std.conv : to; +public import std.array; +public import std.exception; +public import std.range; +public import std.regex; +public import std.stdio; +public import std.string; +public import std.typecons; +// public import std.uni; +public import std.utf; +public import std.conv : to; diff --git a/src/sisudoc/meta/rgx.d b/src/sisudoc/meta/rgx.d index 0b5f9f0..259ab82 100644 --- a/src/sisudoc/meta/rgx.d +++ b/src/sisudoc/meta/rgx.d @@ -6,7 +6,7 @@ - Author: Ralph Amissah [ralph.amissah@gmail.com] - - Copyright: (C) 2015 - 2024 Ralph Amissah, All Rights Reserved. + - Copyright: (C) 2015 - 2025 Ralph Amissah, All Rights Reserved. - License: AGPL 3 or later: @@ -108,8 +108,8 @@ static template spineRgxIn() { static para_attribs = ctRegex!(`^_(?:(?:[0-9])(?:_([0-9]))?|(?:[1-9])?[*]) `); static para_inline_link_anchor = ctRegex!(`\*[~](?P<anchor>[a-z0-9_.-]+)(?= |$)`,"i"); /+ blocked markup +/ - static block_open = ctRegex!("^((code(?:[.][a-z][0-9a-z#+_]+)?|(?:poem|group|block|quote)(?:[.][a-z][0-9a-z_]+)?|table)(?:[(][ a-zA-Z0-9;:,]*[)])?[{][ ]*$)|^`{3} (code(?:[.][a-z][0-9a-z#+_]+)?|(?:poem|group|block|quote)(?:[.][a-z][0-9a-z_]+)?|table)(?:[(][ a-zA-Z0-9;:,]*[)])?|^[{]table[(](?:h;)?(?P<columns>(?:[ ,]+[0-9]+)+)[)][}]"); - static block_poem_open = ctRegex!("^((poem(?:[(][ a-zA-Z0-9;:,]*[)])?[{][ ]*$)|`{3} poem(?:[(][ a-zA-Z0-9;:,]*[)])?)"); + static block_open = ctRegex!("^((code(?:[.][a-z][0-9a-z#+_]+)?|(?:poem|group|block|quote)(?:[.][a-z][0-9a-z_]+)?|table)(?:[(][ a-zA-Z0-9;:,]*[)])?[{][ ]*$)|^[`']{3} (code(?:[.][a-z][0-9a-z#+_]+)?|(?:poem|group|block|quote)(?:[.][a-z][0-9a-z_]+)?|table)(?:[(][ a-zA-Z0-9;:,]*[)])?|^[{]table[(](?:h;)?(?P<columns>(?:[ ,]+[0-9]+)+)[)][}]"); + static block_poem_open = ctRegex!("^((poem(?:[(][ a-zA-Z0-9;:,]*[)])?[{][ ]*$)|[`']{3} poem(?:[(][ a-zA-Z0-9;:,]*[)])?)"); /+ blocked markup tics +/ static block_tic_code_open = ctRegex!("^`{3} code(?:[.](?P<syntax>[a-z][0-9a-z#+_]+))?(?:[(](?P<attrib>[ a-zA-Z0-9;:,]*)[)])?"); static block_tic_poem_open = ctRegex!("^`{3} poem(?:[.](?P<lang>[a-z][0-9a-z_]+))?(?:[(](?P<attrib>[ a-zA-Z0-9;:,]*)[)])?"); @@ -118,6 +118,14 @@ static template spineRgxIn() { static block_tic_quote_open = ctRegex!("^`{3} quote(?:[.](?P<lang>[a-z][0-9a-z_]+))?(?:[(](?P<attrib>[ a-zA-Z0-9;:,]*)[)])?"); static block_tic_table_open = ctRegex!("^`{3} table(?:[(](?P<attrib>[ a-zA-Z0-9;:,]*)[)])?"); // ctRegex!("^`{3} table(?:\(.*?\))?"); static block_tic_close = ctRegex!("^(`{3})$","m"); + /+ blocked markup tics +/ + static block_quotemarks_code_open = ctRegex!(`^'{3} code(?:[.](?P<syntax>[a-z][0-9a-z#+_]+))?(?:[(](?P<attrib>[ a-zA-Z0-9;:,]*)[)])?`); + static block_quotemarks_poem_open = ctRegex!(`^'{3} poem(?:[.](?P<lang>[a-z][0-9a-z_]+))?(?:[(](?P<attrib>[ a-zA-Z0-9;:,]*)[)])?`); + static block_quotemarks_group_open = ctRegex!(`^'{3} group(?:[.](?P<lang>[a-z][0-9a-z_]+))?(?:[(](?P<attrib>[ a-zA-Z0-9;:,]*)[)])?`); + static block_quotemarks_block_open = ctRegex!(`^'{3} block(?:[.](?P<lang>[a-z][0-9a-z_]+))?(?:[(](?P<attrib>[ a-zA-Z0-9;:,]*)[)])?`); + static block_quotemarks_quote_open = ctRegex!(`^'{3} quote(?:[.](?P<lang>[a-z][0-9a-z_]+))?(?:[(](?P<attrib>[ a-zA-Z0-9;:,]*)[)])?`); + static block_quotemarks_table_open = ctRegex!(`^'{3} table(?:[(](?P<attrib>[ a-zA-Z0-9;:,]*)[)])?`); // ctRegex!("^'{3} table(?:\(.*?\))?"); + static block_quotemarks_close = ctRegex!(`^('{3})$`,"m"); /+ blocked markup curly +/ static block_curly_code_open = ctRegex!(`^(?:code(?:[.](?P<syntax>[a-z][0-9a-z_]+))?(?:[(](?P<attrib>[ a-zA-Z0-9;:,]*)[)])?[{][ ]*$)`); static block_curly_code_close = ctRegex!(`^([}]code)`); diff --git a/src/sisudoc/meta/rgx_files.d b/src/sisudoc/meta/rgx_files.d index 05db651..299c2a4 100644 --- a/src/sisudoc/meta/rgx_files.d +++ b/src/sisudoc/meta/rgx_files.d @@ -6,7 +6,7 @@ - Author: Ralph Amissah [ralph.amissah@gmail.com] - - Copyright: (C) 2015 - 2024 Ralph Amissah, All Rights Reserved. + - Copyright: (C) 2015 - 2025 Ralph Amissah, All Rights Reserved. - License: AGPL 3 or later: diff --git a/src/sisudoc/meta/rgx_yaml_tags.d b/src/sisudoc/meta/rgx_yaml.d index 6266bac..ee57469 100644 --- a/src/sisudoc/meta/rgx_yaml_tags.d +++ b/src/sisudoc/meta/rgx_yaml.d @@ -6,7 +6,7 @@ - Author: Ralph Amissah [ralph.amissah@gmail.com] - - Copyright: (C) 2015 - 2024 Ralph Amissah, All Rights Reserved. + - Copyright: (C) 2015 - 2025 Ralph Amissah, All Rights Reserved. - License: AGPL 3 or later: diff --git a/src/sisudoc/share/defaults.d b/src/sisudoc/share/defaults.d index f6303c8..502aca0 100644 --- a/src/sisudoc/share/defaults.d +++ b/src/sisudoc/share/defaults.d @@ -6,7 +6,7 @@ - Author: Ralph Amissah [ralph.amissah@gmail.com] - - Copyright: (C) 2015 - 2024 Ralph Amissah, All Rights Reserved. + - Copyright: (C) 2015 - 2025 Ralph Amissah, All Rights Reserved. - License: AGPL 3 or later: diff --git a/src/sisudoc/spine.d b/src/sisudoc/spine.d index b79bc54..75cd9d5 100755 --- a/src/sisudoc/spine.d +++ b/src/sisudoc/spine.d @@ -1,4 +1,3 @@ -#!/usr/bin/env rdmd /+ - Name: SisuDoc Spine, Doc Reform [a part of] - Description: documents, structuring, processing, publishing, search @@ -7,7 +6,7 @@ - Author: Ralph Amissah [ralph.amissah@gmail.com] - - Copyright: (C) 2015 - 2024 Ralph Amissah, All Rights Reserved. + - Copyright: (C) 2015 - 2025 Ralph Amissah, All Rights Reserved. - License: AGPL 3 or later: @@ -55,32 +54,30 @@ description "A SiSU inspired document parser written in D." homepage "https://sisudoc.org" +/ @safe: -import - std.algorithm, - std.datetime, - std.getopt, - std.file, - std.path, - std.process; -import - sisudoc.conf.compile_time_info, - sisudoc.meta, - sisudoc.meta.metadoc, - sisudoc.meta.metadoc_curate, - sisudoc.meta.metadoc_curate_authors, - sisudoc.meta.metadoc_curate_topics, - sisudoc.meta.metadoc_from_src, - sisudoc.meta.conf_make_meta_structs, - sisudoc.meta.conf_make_meta_json, - sisudoc.meta.defaults, - sisudoc.meta.doc_debugs, - sisudoc.meta.rgx, - sisudoc.meta.rgx_yaml, - sisudoc.meta.rgx_files, - sisudoc.io_in.paths_source, - sisudoc.io_in.read_config_files, - sisudoc.io_in.read_source_files, - sisudoc.io_out.hub; +import std.algorithm; +import std.datetime; +import std.getopt; +import std.file; +import std.path; +import std.process; +import sisudoc.conf.compile_time_info; +import sisudoc.meta; +import sisudoc.meta.metadoc; +import sisudoc.meta.metadoc_curate; +import sisudoc.meta.metadoc_curate_authors; +import sisudoc.meta.metadoc_curate_topics; +import sisudoc.meta.metadoc_from_src; +import sisudoc.meta.conf_make_meta_structs; +import sisudoc.meta.conf_make_meta_json; +import sisudoc.meta.defaults; +import sisudoc.meta.doc_debugs; +import sisudoc.meta.rgx; +import sisudoc.meta.rgx_yaml; +import sisudoc.meta.rgx_files; +import sisudoc.io_in.paths_source; +import sisudoc.io_in.read_config_files; +import sisudoc.io_in.read_source_files; +import sisudoc.io_out.hub; mixin(import("version.txt")); mixin(import("configuration.txt")); mixin CompileTimeInfo; @@ -656,11 +653,19 @@ string program_name = "spine"; bool _is; if (opts["serial"] == true) { _is = false; - } else if (sqlite_shared_db_action) { + } else if ( + sqlite_shared_db_action + || source_or_pod + ) { _is = false; } else if (opts["parallel"] == true) { _is = true; - if (sqlite_shared_db_action) { _is = false; } + if ( + sqlite_shared_db_action + || source_or_pod + ) { + _is = false; + } } else if ( opts["abstraction"] || concordance @@ -670,7 +675,6 @@ string program_name = "spine"; || odt || latex || manifest - || source_or_pod || sqlite_discrete ) { _is = true; @@ -1030,12 +1034,7 @@ string program_name = "spine"; foreach(manifest; parallel(_manifests[1..$])) { if (!empty(manifest.src.filename)) { scope(success) { - if (_opt_action.vox_gt0) { - writefln( - "%s", - "-- ~ document complete, ok ~ ------------------------------------", - ); - } + if (_opt_action.vox_gt0) { writeln("-- ~ document complete, ok ~ ------------------------------------"); } } scope(failure) { debug(checkdoc) { @@ -1057,66 +1056,59 @@ string program_name = "spine"; ) { writeln("--->\nstepX commence → (document abstraction) [", manifest.src.filename, "]"); } - auto t = spineAbstraction!()(_env, program_info, _opt_action, _cfg, manifest, _make_and_meta_struct); - static assert(t.length==2); - auto doc_abstraction = t[dAM.abstraction]; - auto doc_matters = t[dAM.matters]; - if ((doc_matters.opt.action.debug_do) + auto doc = spineAbstraction!()(_env, program_info, _opt_action, _cfg, manifest, _make_and_meta_struct); + if ((doc.matters.opt.action.debug_do) || (_opt_action.debug_do_stages) ) { writeln("- stepX complete for [", manifest.src.filename, "]"); } /+ ↓ debugs +/ - if (doc_matters.opt.action.show_summary) { + if (doc.matters.opt.action.show_summary) { import sisudoc.meta.metadoc_show_summary; - spineMetaDocSummary!()(doc_abstraction, doc_matters); + spineMetaDocSummary!()(doc); } /+ ↓ debugs +/ - if (doc_matters.opt.action.show_metadata) { + if (doc.matters.opt.action.show_metadata) { import sisudoc.meta.metadoc_show_metadata; - spineShowMetaData!()(doc_matters); + spineShowMetaData!()(doc.matters); } /+ ↓ debugs +/ - if (doc_matters.opt.action.show_make) { + if (doc.matters.opt.action.show_make) { import sisudoc.meta.metadoc_show_make; - spineShowMake!()(doc_matters); + spineShowMake!()(doc.matters); } /+ ↓ debugs +/ - if (doc_matters.opt.action.show_config) { + if (doc.matters.opt.action.show_config) { import sisudoc.meta.metadoc_show_config; - spineShowConfig!()(doc_matters); + spineShowConfig!()(doc.matters); } - if (doc_matters.opt.action.curate) { - auto _hvst = spineMetaDocCurate!()(doc_matters, hvst); + if (doc.matters.opt.action.curate) { + auto _hvst = spineMetaDocCurate!()(doc.matters, hvst); if ( _hvst.title.length > 0 && _hvst.author_surname_fn.length > 0 ) { hvst.curates ~= _hvst; } else { - if ((doc_matters.opt.action.debug_do) + if ((doc.matters.opt.action.debug_do) || (_opt_action.debug_do_curate) - || (doc_matters.opt.action.vox_gt2) + || (doc.matters.opt.action.vox_gt2) ) { writeln("WARNING curate: document header yaml does not contain information related to: title or author: ", _hvst.path_html_segtoc); } } } /+ ↓ debugs +/ - if (doc_matters.opt.action.debug_do) { - spineDebugs!()(doc_abstraction, doc_matters); + if (doc.matters.opt.action.debug_do) { + spineDebugs!()(doc.abstraction, doc.matters); } /+ ↓ output hub +/ - if (!(doc_matters.opt.action.skip_output)) { - if ((_opt_action.debug_do) - || (_opt_action.debug_do_stages) - ) { + if (!(doc.matters.opt.action.skip_output)) { + if ((_opt_action.debug_do) || (_opt_action.debug_do_stages)) { writeln("step5 commence → (process outputs) [", manifest.src.filename, "]"); } - doc_abstraction.outputHub!()(doc_matters); - if ((_opt_action.debug_do) - || (_opt_action.debug_do_stages) - ) { + doc.outputHub!(); + if ((_opt_action.debug_do) || (_opt_action.debug_do_stages)) { writeln("- step5 complete for [", manifest.src.filename, "]"); } } @@ -1138,17 +1130,10 @@ string program_name = "spine"; } } else { // note cannot parallelise sqlite shared db foreach(manifest; _manifests[1..$]) { - if (_opt_action.vox_gt2) { - writeln("parallelisation off: actions include sqlite shared db"); - } + if (_opt_action.vox_gt2) { writeln("parallelisation off: actions include sqlite shared db"); } if (!empty(manifest.src.filename)) { scope(success) { - if (_opt_action.vox_gt0) { - writefln( - "%s", - "-- ~ document complete, ok ~ ------------------------------------", - ); - } + if (_opt_action.vox_gt0) { writeln("-- ~ document complete, ok ~ ------------------------------------"); } } scope(failure) { debug(checkdoc) { @@ -1170,66 +1155,59 @@ string program_name = "spine"; ) { writeln("--->\nstepX commence → (document abstraction) [", manifest.src.filename, "]"); } - auto t = spineAbstraction!()(_env, program_info, _opt_action, _cfg, manifest, _make_and_meta_struct); - static assert(t.length==2); - auto doc_abstraction = t[dAM.abstraction]; - auto doc_matters = t[dAM.matters]; - if ((doc_matters.opt.action.debug_do) + auto doc = spineAbstraction!()(_env, program_info, _opt_action, _cfg, manifest, _make_and_meta_struct); + if ((doc.matters.opt.action.debug_do) || (_opt_action.debug_do_stages) ) { writeln("- stepX complete for [", manifest.src.filename, "]"); } /+ ↓ debugs +/ - if (doc_matters.opt.action.show_summary) { + if (doc.matters.opt.action.show_summary) { import sisudoc.meta.metadoc_show_summary; - spineMetaDocSummary!()(doc_abstraction, doc_matters); + spineMetaDocSummary!()(doc); } /+ ↓ debugs +/ - if (doc_matters.opt.action.show_metadata) { + if (doc.matters.opt.action.show_metadata) { import sisudoc.meta.metadoc_show_metadata; - spineShowMetaData!()(doc_matters); + spineShowMetaData!()(doc.matters); } /+ ↓ debugs +/ - if (doc_matters.opt.action.show_make) { + if (doc.matters.opt.action.show_make) { import sisudoc.meta.metadoc_show_make; - spineShowMake!()(doc_matters); + spineShowMake!()(doc.matters); } /+ ↓ debugs +/ - if (doc_matters.opt.action.show_config) { + if (doc.matters.opt.action.show_config) { import sisudoc.meta.metadoc_show_config; - spineShowConfig!()(doc_matters); + spineShowConfig!()(doc.matters); } - if (doc_matters.opt.action.curate) { - auto _hvst = spineMetaDocCurate!()(doc_matters, hvst); + if (doc.matters.opt.action.curate) { + auto _hvst = spineMetaDocCurate!()(doc.matters, hvst); if ( _hvst.title.length > 0 && _hvst.author_surname_fn.length > 0 ) { hvst.curates ~= _hvst; } else { - if ((doc_matters.opt.action.debug_do) + if ((doc.matters.opt.action.debug_do) || (_opt_action.debug_do_curate) - || (doc_matters.opt.action.vox_gt2) + || (doc.matters.opt.action.vox_gt2) ) { writeln("WARNING curate: document header yaml does not contain information related to: title or author: ", _hvst.path_html_segtoc); } } } /+ ↓ debugs +/ - if (doc_matters.opt.action.debug_do) { - spineDebugs!()(doc_abstraction, doc_matters); + if (doc.matters.opt.action.debug_do) { + spineDebugs!()(doc.abstraction, doc.matters); } /+ ↓ output hub +/ - if (!(doc_matters.opt.action.skip_output)) { - if ((_opt_action.debug_do) - || (_opt_action.debug_do_stages) - ) { + if (!(doc.matters.opt.action.skip_output)) { + if ((_opt_action.debug_do) || (_opt_action.debug_do_stages)) { writeln("step5 commence → (process outputs) [", manifest.src.filename, "]"); } - doc_abstraction.outputHub!()(doc_matters); - if ((_opt_action.debug_do) - || (_opt_action.debug_do_stages) - ) { + doc.outputHub!(); + if ((_opt_action.debug_do) || (_opt_action.debug_do_stages)) { writeln("- step5 complete for [", manifest.src.filename, "]"); } } diff --git a/sundry/editor-syntax-etc/emacs/README b/sundry/editor-syntax-etc/emacs/README new file mode 100644 index 0000000..6dabf72 --- /dev/null +++ b/sundry/editor-syntax-etc/emacs/README @@ -0,0 +1,4 @@ +; put this into your .emacs file, then use the mode file: + +(load-file "~/emacs/el/sisu-spine-mode.el") +(add-to-list 'auto-mode-alist '("\\.sst$" . sisu-spine-mode)) diff --git a/sundry/editor-syntax-etc/emacs/sisu-spine-mode-autoloads.el b/sundry/editor-syntax-etc/emacs/sisu-spine-mode-autoloads.el new file mode 100644 index 0000000..4cc6332 --- /dev/null +++ b/sundry/editor-syntax-etc/emacs/sisu-spine-mode-autoloads.el @@ -0,0 +1,10 @@ +(add-to-list 'load-path (or (file-name-directory #$) (car load-path))) +(autoload 'sisu-spine-mode "sisu-spine-mode" "\ +Major mode for editing SiSU (spine) markup files. +SiSU (https://www.sisudoc.org/) document structuring, publishing +and search. + +\(fn)" t nil) +(add-to-list 'auto-mode-alist '("\\.sst\\'" . sisu-spine-mode)) +(add-to-list 'auto-mode-alist '("\\.ssm\\'" . sisu-spine-mode)) +(add-to-list 'auto-mode-alist '("\\.ssi\\'" . sisu-spine-mode)) diff --git a/sundry/editor-syntax-etc/emacs/sisu-spine-mode.el b/sundry/editor-syntax-etc/emacs/sisu-spine-mode.el new file mode 100644 index 0000000..f2e29ed --- /dev/null +++ b/sundry/editor-syntax-etc/emacs/sisu-spine-mode.el @@ -0,0 +1,502 @@ +;;; sisu-spine-mode.el --- Major mode for SiSU (spine parser) markup text + +;; Copyright (C) 2011, 2025 Free Software Foundation, Inc. + +;; Author: Ralph Amissah & Ambrose Kofi Laing +;; Maintainer: Ralph Amissah <ralph.amissah@gmail.com> +;; Keywords: text, syntax, processes, tools +;; Version: 8.0.0 +;; URL: https://git.sisudoc.org/projects/sisudoc-spine/tree/sundry/editor-syntax-etc/emacs/sisu-spine-mode.el +;; https://sisudoc.org/ +;; originally looked at (based on) doc-mode, with kind permission of the author +;; Author: SUN, Tong <suntong001@users.sf.net>, (c)2001-6, all right reserved +;; Version: $Date: 2006/01/19 03:13:41 $ $Revision: 1.14 $ +;; Home URL: https://xpt.sourceforge.net/ +;; with contributions from Kevin Ryde and Stefan Monnier + +;; This program is free software; you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation; either version 3, or (at your option) +;; any later version. +;; +;; This program is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. +;; +;; You should have received a copy of the GNU General Public License +;; along with this program. If not, see <https://www.gnu.org/licenses/>. + +;; Viva Software Libre! +;; Support the free software movement! +;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;;; Commentary: + +;; SiSU (https://www.sisudoc.org/) is a document structuring and +;; publishing framework. This package provides an Emacs major mode +;; for SiSU markup, as used by the spine parser (in D) which has a different +;; header (based on yaml) from the original sisu parser (in Ruby) which has +;; bespoke headers. + +;; When this package is installed, files ending in ".sst" are automatically +;; associated with sisu-spine-mode. If a file doesn't have a +;; .sst extension, add a first line: +;; # -*- sisuSpine -*- + +;; The documentation for the "Structure Of The Hierarchy Text" can be +;; found in the sisustring for the sisu-spine-mode function. + +;;; Code: + +;; Variables: + +(defgroup sisu-faces nil + "AsciiSisu highlighting" + :group 'sisus) + +;; == Colors +; color n is more prominent than color n+1 + +(defface sisu-title-1-face + `((((class color) + (background dark)) + (:foreground "brown3" :bold t :height 1.2 :inherit variable-pitch)) + (((class color) + (background light)) + (:foreground "brown3" :bold t :height 1.2 :inherit variable-pitch)) + (t (:weight bold :inherit variable-pitch))) + "Face for AsciiSisu titles at level 1." + :group 'sisu-faces) + +(defface sisu-title-2-face + `((((class color) + (background dark)) + (:foreground "yellow4" :bold t :height 1.1 :inherit variable-pitch)) + (((class color) + (background light)) + (:foreground "yellow4" :bold t :height 1.1 :inherit variable-pitch)) + (t (:weight bold :inherit variable-pitch))) + "Face for AsciiSisu titles at level 2." + :group 'sisu-faces) + +(defface sisu-title-3-face + `((((class color) + (background dark)) + (:foreground "sienna3" :bold t)) + (((class color) + (background light)) + (:foreground "sienna3" :bold t)) + (t (:weight bold))) + "Face for AsciiSisu titles at level 3." + :group 'sisu-faces) + +(defface sisu-title-4-face + `((((class color) + (background dark)) + (:foreground "burlywood3")) + (((class color) + (background light)) + (:foreground "burlywood3")) + (t ())) + "Face for AsciiSisu titles at level 4." + :group 'sisu-faces) + +(defface info-node + '((((class color) (background light)) (:foreground "brown" :bold t :italic t)) + (((class color) (background dark)) (:foreground "white" :bold t :italic t)) + (t (:bold t :italic t))) + "Face for Info node names." + :group 'sisu-faces) + +(defvar sisu-title-1 'sisu-title-1-face) +(defvar sisu-title-2 'sisu-title-2-face) +(defvar sisu-title-3 'sisu-title-3-face) +(defvar sisu-title-4 'sisu-title-4-face) + +(defvar sisu-general-font-lock-red1 font-lock-warning-face) +(defvar sisu-general-font-lock-red2 font-lock-comment-face) +(defvar sisu-general-font-lock-red3 font-lock-string-face) + +(defvar sisu-general-font-lock-green1 font-lock-type-face) +(defvar sisu-general-font-lock-green2 font-lock-constant-face) + +(defvar sisu-general-font-lock-blue1 font-lock-keyword-face) +(defvar sisu-general-font-lock-blue2 font-lock-function-name-face) +(defvar sisu-general-font-lock-blue3 font-lock-builtin-face) + +(defvar sisu-general-font-lock-yellow1 font-lock-variable-name-face) +(defvar sisu-general-font-lock-yellow2 font-lock-comment-face) + +;; == sisu-spine-mode settings + +(defvar sisu-spine-mode-hook nil + "Normal hook run when entering Sisu Text mode.") + +(defvar sisu-spine-mode-abbrev-table nil + "Abbrev table in use in Sisu-spine-mode buffers.") +(define-abbrev-table 'sisu-spine-mode-abbrev-table ()) + +(defconst sisu-font-lock-keywords + (eval-when-compile + (list + ;;grouped text --------- + ;(cons "^```[ ]code\\(.\\|\n\\)+?\n```\n" 'sisu-general-font-lock-red2) + (cons "^```[ ]+code.*?$\\|^```$" 'sisu-general-font-lock-red2) + (cons "^```[ ]+table.*?$\\|^```$" 'sisu-general-font-lock-red2) + (cons "^```[ ]+group$\\|^```$" 'sisu-general-font-lock-red2) + (cons "^```[ ]+block$\\|^```$" 'sisu-general-font-lock-red2) + (cons "^```[ ]+poem$\\|^```$" 'sisu-general-font-lock-red2) + (cons "^```[ ]+alt$\\|^```$" 'sisu-general-font-lock-red2) + ;;grouped text --------- + ;(cons "^'''[ ]code\\(.\\|\n\\)+?\n'''\n" 'sisu-general-font-lock-red2) + (cons "^'''[ ]+code.*?$\\|^'''$" 'sisu-general-font-lock-red2) + (cons "^'''[ ]+table.*?$\\|^'''$" 'sisu-general-font-lock-red2) + (cons "^'''[ ]+group$\\|^'''$" 'sisu-general-font-lock-red2) + (cons "^'''[ ]+block$\\|^'''$" 'sisu-general-font-lock-red2) + (cons "^'''[ ]+poem$\\|^'''$" 'sisu-general-font-lock-red2) + (cons "^'''[ ]+alt$\\|^'''$" 'sisu-general-font-lock-red2) + ;;grouped text --------- + (cons "^group{\\|^}group" 'sisu-general-font-lock-red2) + (cons "^block{\\|^}block" 'sisu-general-font-lock-red2) + (cons "^code{\\|^}code" 'sisu-general-font-lock-red2) + (cons "^poem{\\|^}poem" 'sisu-general-font-lock-red2) + (cons "^alt{\\|^}alt" 'sisu-general-font-lock-red2) + (cons "^table{.+\\|^}table" 'sisu-general-font-lock-red2) + (cons "^{table[^}]+}" 'sisu-general-font-lock-red2) + + (list + (concat + "^\`\\{3\\}[ ]+code.*?$" + "\\(.\\|\n\\)+?" + "\`\\{3\\}$" + ) + '(1 sisu-general-font-lock-red2 t) + '(2 nil t) + '(3 sisu-general-font-lock-red2 t) + ) + (list + (concat + "^\`\\{3\\}[ ]+table.*?$" + "\\(.\\|\n\\)+?" + "\`\\{3\\}$" + ) + '(1 sisu-general-font-lock-red2 t) + '(2 nil t) + '(3 sisu-general-font-lock-red2 t) + ) + (list + (concat + "^\`\\{3\\}[ ]+\\(group\\|block\\|alt\\|poem\\)$" + "\\(.\\|\n\\)+?" + "^\`\\{3\\}$" + ) + '(1 sisu-general-font-lock-red2 t) + '(2 nil t) + '(3 sisu-general-font-lock-red2 t) + ) + + ;; footnote/endnote ---- + ;(cons "\~{.+?}\~" 'sisu-general-font-lock-green1) + (cons "\~{\\*\\*\\|\~{\\*\\|\~{\\|}\~" 'sisu-general-font-lock-red2) + (cons "\~\\[\\+\\|\~\\[\\*\\|\~\\[\\|\\]\~" 'sisu-general-font-lock-red2) + (cons "\~\\^ \\|^\\^\~ " 'sisu-general-font-lock-red2) + (list + (concat + "\\(\*\~\\)" + "\\([^ \r\t\n]+\\)" + ) + '(1 sisu-general-font-lock-red1 t) + '(2 sisu-general-font-lock-blue2 t) + ) + + ;; emphasis (can be program configured to be bold italics or underscore) + (list + (concat + "\\([*]{\\)" + "\\([^}]+\\)" + "\\(}[*]\\)" + ) + '(1 sisu-general-font-lock-red1 t) + '(2 sisu-general-font-lock-red1 t) + '(3 sisu-general-font-lock-red1 t) + ) + + ;; bold ---------------- + (list + (concat + "\\([!]{\\)" + "\\([^}]+\\)" + "\\(}[!]\\)" + ) + '(1 sisu-general-font-lock-red1 t) + '(2 sisu-general-font-lock-red1 t) + '(3 sisu-general-font-lock-red1 t) + ) + (cons "\\*[^ ]+\\*" 'sisu-general-font-lock-red1) + (cons "^!_ .+" 'sisu-general-font-lock-red1) + + ;; italics ------------- + (list + (concat + "\\([/]{\\)" + "\\([^}]+\\)" + "\\(}[/]\\)" + ) + '(1 sisu-general-font-lock-red1 t) + '(2 sisu-general-font-lock-blue1 t) + '(3 sisu-general-font-lock-red1 t) + ) + + ;; underscore ---------- + (list + (concat + "\\([_]{\\)" + "\\([^}]+\\)" + "\\(\}[_]\\)" + ) + '(1 sisu-general-font-lock-red1 t) + '(2 sisu-general-font-lock-red1 t) + '(3 sisu-general-font-lock-red1 t) + ) + + ;; monospace ----------- + (list + (concat + "\\([#]{\\)" + "\\([^}]+\\)" + "\\(}[#]\\)" + ) + '(1 sisu-general-font-lock-red1 t) + '(2 sisu-general-font-lock-red1 t) + '(3 sisu-general-font-lock-red1 t) + ) + + ;; citation ------------ + (list + (concat + "\\([\"]{\\)" + "\\([^}]+\\)" + "\\(}[\"]\\)" + ) + '(1 sisu-general-font-lock-red1 t) + '(2 sisu-general-font-lock-red1 t) + '(3 sisu-general-font-lock-red1 t) + ) + + ;; inserted text ------- + (list + (concat + "\\([\+]{\\)" + "\\([^}]+\\)" + "\\(}[\+]\\)" + ) + '(1 sisu-general-font-lock-red1 t) + '(2 sisu-general-font-lock-red1 t) + '(3 sisu-general-font-lock-red1 t) + ) + + ;; strike through ------ + (list + (concat + "\\(\\-{\\)" + "\\([^}]+\\)" + "\\(}\\-\\)" + ) + '(1 sisu-general-font-lock-red1 t) + '(2 sisu-general-font-lock-red1 t) + '(3 sisu-general-font-lock-red1 t) + ) + + ;; superscript --------- + (list + (concat + "\\(\\^{\\)" + "\\([^}]+\\)" + "\\(}\\^\\)" + ) + '(1 sisu-general-font-lock-red1 t) + '(2 sisu-general-font-lock-red1 t) + '(3 sisu-general-font-lock-red1 t) + ) + + ;; subscript ----------- + (list + (concat + "\\([,]{\\)" + "\\([^}]+\\)" + "\\(}[,]\\)" + ) + '(1 sisu-general-font-lock-red1 t) + '(2 sisu-general-font-lock-red1 t) + '(3 sisu-general-font-lock-red1 t) + ) + + ;; numbered list + (cons "^# \\|^_# " 'sisu-general-font-lock-red1) + + ;; bullet text + (cons "^_\\*[1-9] \\|^_\\* " 'sisu-general-font-lock-red1) + + ;; indented text + (cons "^_[1-9] " 'sisu-general-font-lock-red1) + (cons "^_[1-9]! " 'sisu-general-font-lock-red1) + + ;; hanging indented text [proposed enable when implemented] + (cons "^__[1-9] " 'sisu-general-font-lock-red1) + (cons "^_[0-9]_[0-9] " 'sisu-general-font-lock-red1) + (cons "^__[1-9]! " 'sisu-general-font-lock-red1) + (cons "^_[0-9]_[0-9]! " 'sisu-general-font-lock-red1) + + ;; url + (cons "\\(^\\|[ ]\\)https?:[/][/][^ \t\n\r<]+" 'sisu-general-font-lock-blue2) + + ;; Comment Lines + (cons "^% .*" 'sisu-general-font-lock-blue1) + + ;; page break + (cons "^\\(-\\\\\\\\-\\|=\\\\\\\\=\\|-\\.\\.-\\)" 'sisu-general-font-lock-red2) + + ;; line break + (cons " \\\\\\\\ " 'sisu-general-font-lock-red1) + + ;; line break (depreciated) + (cons "<br>" 'sisu-general-font-lock-red1) + + ;; Section titles + (list "^\\(\\([1-4]\\|:?[A-D]\\)\\~\\)\\(.*\\)" + '(1 sisu-title-1 t) + '(3 sisu-title-2 t) + ) + + ;; hyper-links + (list + (concat + "\\({~^\\|{\\)" + "\\([^}{]+\\)" + "\\(}https?:[/][/][^ \r\n\t<]+\\)" + ) + '(1 sisu-general-font-lock-blue2 t) + '(2 sisu-general-font-lock-red1 t) + '(3 sisu-general-font-lock-blue2 t) + ) + + ;; book index + (list + (concat + "^\\(\={\\)" + "\\([^}{]+\\)" + "\\(}\\)$" + ) + '(1 sisu-general-font-lock-green1 t) + '(2 nil t) + '(3 sisu-general-font-lock-green1 t) + ) + + ;(cons "^\={.+}" 'sisu-general-font-lock-green1) + + ;; numbers + (cons "\\<[.0-9]+\\>" 'sisu-general-font-lock-green2) + + ;; bullets sisu_normal (nearly copied regexp) + (cons "^_\\([1-9*]\\|[1-9]\\*\\) " 'sisu-general-font-lock-blue2) + + ;; image links + (list + (concat + "\\({\\)" + "\\([^}{]+\\)" + "\\(}image\\)" + ) + '(1 sisu-general-font-lock-blue2 t) + '(2 sisu-general-font-lock-red1 t) + '(3 sisu-general-font-lock-blue2 t) + ) + + ;; insert file links + (list + (concat + "\\(<< \\)" + "\\([^ \r\t\n]+\\.ss\\)" + "\\(i\\|t\\)" + ) + '(1 sisu-general-font-lock-blue2 t) + '(2 sisu-general-font-lock-blue2 t) + '(3 sisu-general-font-lock-blue2 t) + ) + + ;; raw keywords + (list + (concat + "^\\(\\(" + "creator\\|" + "title\\|" + "date\\|" + "rights\\|" + "publisher\\|" + "classify\\|" + "identifier\\|" + "original\\|" + "notes\\|" + "links\\|" + "make\\|" + "\\):\\)\\(.*\\)" + ) + '(1 sisu-title-2 keep) + '(3 sisu-title-3 keep) + ) + ) + ) + "Default expressions to highlight in AsciiSisu mode." +) + +;; outline mode evil "folding" if available +;; (define-key evil-normal-state-map ",0" 'show-all) +;; (define-key evil-normal-state-map ",-" 'hide-body) +;; (define-key evil-normal-state-map ",+" 'show-subtree) +;; (define-key evil-normal-state-map ",=" 'show-subtree) + +;; + +;; Sisu & Autoload: + +;;;###autoload +(define-derived-mode sisu-spine-mode text-mode "SiSU" + "Major mode for editing SiSU files. +SiSU document structuring, publishing in multiple formats and search. +URL `https://www.sisudoc.org/'" + (modify-syntax-entry ?\' ".") + ;;(flyspell-mode nil) + + (make-local-variable 'paragraph-start) + (setq paragraph-start (concat "$\\|>" page-delimiter)) + (make-local-variable 'paragraph-separate) + (setq paragraph-separate paragraph-start) + (make-local-variable 'paragraph-ignore-fill-prefix) + (setq paragraph-ignore-fill-prefix t) + + (set (make-local-variable 'outline-regexp) + "^\\(\\([1-4]\\|:?[A-D]\\)\\~\\|\\@[a-z]+:\\( \\|$\\)\\)") + + (make-local-variable 'require-final-newline) + (setq require-final-newline t) + + (make-local-variable 'font-lock-defaults) + (setq font-lock-defaults + '(sisu-font-lock-keywords + nil ; KEYWORDS-ONLY: no + nil ; CASE-FOLD: no + ((?_ . "w")) ; SYNTAX-ALIST + )) + ;; Enable outlining. + ;; TODO with outlining make sure linum (line numbering) is off, + ;; else performance penalty, sucks bigtime + (outline-minor-mode 1)) + +;;;###autoload (add-to-list 'auto-mode-alist '("\\.ss[imt]\\'" . sisu-spine-mode)) + +(provide 'sisu-spine-mode) + +;; + +;;; sisu-spine-mode.el ends here diff --git a/sundry/editor-syntax-etc/vim/colors/def-sisu.vim b/sundry/editor-syntax-etc/vim/colors/def-sisu.vim new file mode 100644 index 0000000..2c260bb --- /dev/null +++ b/sundry/editor-syntax-etc/vim/colors/def-sisu.vim @@ -0,0 +1,224 @@ +" Vim color file +" Name: def-sisu +" Maintainer: Ralph Amissah <ralph@amissah.com> +" Last Change: 2013-02-14 +" URL: <https://git.sisudoc.org/projects/sisudoc-spine/tree/sundry/editor-syntax-etc/vim/colors/def-sisu.vim> +" <https://sisudoc.org/> +" Note: primarily 16 color cterm improved by tweaking of .Xdefaults +" (with occasional other colors selected from 256 color palate) +" .Xdefaults tweaking to make identical to def (256) provided, +" along with an alternative possibility using colors beyond +" 256 color palate +:hi clear +if exists("syntax_on") + syntax reset +endif +:set t_Co=256 +:set background=dark +:let colors_name = "def-sisu" +" ------- +" terminal def +" ------- +:hi Normal ctermbg=0 ctermfg=7 +":hi Cursor ctermbg=5 ctermfg=0 +:hi lCursor cterm=reverse +:hi StatusLine cterm=bold,reverse +:hi StatusLineNC cterm=reverse +:hi Search cterm=none ctermbg=57 ctermfg=0 +:hi IncSearch cterm=none ctermbg=154 ctermfg=0 +:hi SpecialKey ctermfg=4 +:hi Visual cterm=reverse +:hi VisualNOS cterm=bold,underline +:hi MoreMsg ctermfg=2 +:hi ModeMsg cterm=bold +:hi Question ctermfg=2 +:hi Title cterm=bold ctermfg=3 +:hi NonText cterm=bold ctermfg=4 +:hi LineNr cterm=bold ctermbg=0 ctermfg=0* +:hi CursorLineNr cterm=bold ctermbg=166 ctermfg=0 +:hi Directory ctermfg=4 +:hi WildMenu ctermbg=3 ctermfg=0 +:hi VertSplit cterm=reverse +:hi Folded cterm=none ctermbg=0 ctermfg=8 +:hi FoldColumn ctermbg=7 ctermfg=4 +:hi DiffAdd cterm=none ctermbg=2 ctermfg=0 +:hi DiffChange cterm=none ctermbg=7 ctermfg=0 +:hi DiffDelete cterm=none ctermbg=7 ctermfg=0 +:hi DiffText cterm=none ctermbg=6 ctermfg=0 +:hi String cterm=none ctermfg=3 +:hi Comment cterm=none ctermbg=0 ctermfg=4 +:hi Constant ctermfg=1 +:hi Special ctermfg=6 +:hi Identifier ctermfg=6 +:hi Statement ctermfg=6 +:hi Operator ctermfg=1 +:hi PreProc ctermbg=7 ctermfg=1 +:hi Type ctermfg=2 +:hi Delimiter cterm=none ctermfg=1 +:hi Ignore cterm=bold ctermfg=7 +:hi Todo ctermbg=3 ctermfg=0 +:hi Underlined cterm=underline +:hi Include ctermfg=1 +:hi Define ctermfg=3 +:hi Function ctermfg=6 +:hi Structure ctermfg=2 +:hi MatchParen cterm=bold ctermbg=4 ctermfg=7 +:hi CursorLine cterm=bold +:hi CursorColumn ctermbg=17 +:hi ColorColumn ctermbg=17 +:hi SpellBad cterm=underline ctermbg=0 ctermfg=5 +:hi SpellCap cterm=underline ctermbg=0 ctermfg=5 +:hi SpellLocal cterm=underline ctermbg=0 ctermfg=5 +:hi SpellRare cterm=underline ctermbg=0 ctermfg=5 +:hi TrailingWhitespace ctermbg=1 +:hi ExtraWhitespace ctermbg=1 +:hi WarningMsg ctermfg=1 +:hi ErrorMsg cterm=bold ctermbg=1 ctermfg=7 +:hi Error cterm=bold ctermbg=1 ctermfg=7 +" ------- +" gui def +" ------- +:hi Normal guibg=#000000 guifg=#D3D3D3 +:hi Cursor guibg=#CC9966 guifg=#000000 +:hi lCursor gui=reverse +:hi StatusLine gui=bold,reverse +:hi StatusLineNC gui=reverse +:hi Search gui=none guibg=#5F00FF guifg=#000000 +:hi IncSearch gui=none guibg=#AFFF00 guifg=#000000 +:hi SpecialKey guifg=#5971AD +:hi Visual gui=reverse +:hi VisualNOS gui=bold,underline +:hi MoreMsg guifg=#4E9A06 +:hi ModeMsg gui=bold +:hi Question guifg=#4E9A06 +:hi Title gui=bold guifg=#C4A000 +:hi NonText gui=bold guifg=#5971AD +:hi LineNr gui=bold guibg=#000000 guifg=#808080 +:hi CursorLineNr gui=bold guibg=#D75F00 guifg=#000000 +:hi Directory guifg=#5971AD +:hi WildMenu guibg=#C4A000 guifg=#000000 +:hi VertSplit gui=reverse +:hi Folded gui=none guibg=#000000 guifg=#808080 +:hi FoldColumn guibg=#D3D3D3 guifg=#5971AD +:hi DiffAdd gui=none guibg=#4E9A06 guifg=#000000 +:hi DiffChange gui=none guibg=#D3D3D3 guifg=#000000 +:hi DiffDelete gui=none guibg=#D3D3D3 guifg=#000000 +:hi DiffText gui=none guibg=#06989A guifg=#000000 +:hi String gui=none guifg=#C4A000 +:hi Comment gui=none guibg=#000000 guifg=#5971AD +:hi Constant guifg=#CC0000 +:hi Special guifg=#06989A +:hi Identifier guifg=#06989A +:hi Statement guifg=#06989A +:hi Operator guifg=#CC0000 +:hi PreProc guibg=#D3D3D3 guifg=#CC0000 +:hi Type guifg=#4E9A06 +:hi Delimiter gui=none guifg=#CC0000 +:hi Ignore gui=bold guifg=#D3D3D3 +:hi Todo guibg=#C4A000 guifg=#000000 +:hi Underlined gui=underline +:hi Include guifg=#CC0000 +:hi Define guifg=#C4A000 +:hi Function guifg=#06989A +:hi Structure guifg=#4E9A06 +:hi MatchParen gui=bold guibg=#5971AD guifg=#D3D3D3 +:hi CursorLine gui=bold +:hi CursorColumn guibg=#00005F +:hi ColorColumn guibg=#00005F +:hi SpellBad gui=underline guibg=#000000 guifg=#75507B +:hi SpellCap gui=underline guibg=#000000 guifg=#75507B +:hi SpellLocal gui=underline guibg=#000000 guifg=#75507B +:hi SpellRare gui=underline guibg=#000000 guifg=#75507B +:hi TrailingWhitespace guibg=#080000 +:hi ExtraWhitespace guibg=#CC0000 +:hi WarningMsg guifg=#CC0000 +:hi ErrorMsg gui=bold guibg=#CC0000 guifg=#D3D3D3 +:hi Error gui=bold guibg=#CC0000 guifg=#D3D3D3 +" ------- +"256 color .Xdefaults vim: cterm giu +"<https://vim.wikia.com/wiki/Xterm256_color_names_for_console_Vim> +"<https://guns.github.com/xterm-color-table.vim/images/xterm-color-table-with-visible-rgb.png> +" ------- +" 256 color .Xdefaults vim: cterm giu def +" ------- +" 16 color standard altered 256 altered beyond 256 +" black/dark grey +" 0 [ 0:#000000] #000000 +" 8 [ 8:#808080] [59:#5F5F5F] #555555 +" red +" 1 [ 1:#800000] 160:#DF0000 #CC0000 +" 9 [ 9:#FF0000] #EF2929 +" green +" 2 [ 2:#008000] 112:#87DF00 #4E9A06 +" 10 [10:#00FF00] 154:#AFFF00 #8AE234 +" yellow/orange +" 3 [ 3:#808000] 178:#DFAF00 #C4A000 +" 11 [11:#FFFF00] 184:#DFDF00 #FC9E4F +" blue +" 4 [ 4:#000080] 24:#005F87 #5971AD +" 12 [12:#0000FF] 73:#5FAFAF #729FCF +" magenta +" 5 [ 5:#800080] 90:#870087 #75507B +" 13 [13:#FF00FF] 126:#AF0087 #AD7FA8 +" cyan +" 6 [ 6:#008080] 37:#00AFAF #06989A +" 14 [14:#00FFFF] 87:#5FFFFF #34E2E2 +" white +" 7 [ 7:#C0C0C0] #D3D3D3 +" 15 [15:#FFFFFF] #EEEEEE +" -------- +" .Xdefaults (rxvt urxvt setting beyond 256 colors, vim colorscheme "def" gui settings) +" (vim colorscheme "def" cterm matches "def" gui if .Xdefaults set thus) +" -------- +" ! black +" Rxvt.color0 : #000000 +" Rxvt.color8 : #555555 +" ! red +" Rxvt.color1 : #CC0000 +" Rxvt.color9 : #EF2929 +" ! green +" Rxvt.color2 : #4E9A06 +" Rxvt.color10 : #8AE234 +" ! yellow +" Rxvt.color3 : #C4A000 +" Rxvt.color11 : #FCE94F +" ! blue +" Rxvt.color4 : #5971AD +" Rxvt.color12 : #729FCF +" ! magenta +" Rxvt.color5 : #75507B +" Rxvt.color13 : #AD7FA8 +" ! cyan +" Rxvt.color6 : #06989A +" Rxvt.color14 : #34E2E2 +" ! white +" Rxvt.color7 : #D3D7CF +" Rxvt.color15 : #EEEEEE +" -------- +" .Xdefaults 256 (rxvt urxvt setting, vim colorscheme "def256" cterm & gui settings) +" (vim colorscheme "def" cterm matches "def256" if .Xdefaults set thus) +" -------- +" ! black +" Rxvt.color0 : #000000 +" Rxvt.color8 : #808080 +" ! red +" Rxvt.color1 : #DF0000 +" Rxvt.color9 : #FF0000 +" ! green +" Rxvt.color2 : #87DF00 +" Rxvt.color10 : #AFFF00 +" ! yellow +" Rxvt.color3 : #DFAF00 +" Rxvt.color11 : #FFFF00 +" ! blue +" Rxvt.color4 : #5F87DF +" Rxvt.color12 : #87DFFF +" ! magenta +" Rxvt.color5 : #8700DF +" Rxvt.color13 : #87DFFF +" ! cyan +" Rxvt.color6 : #00DFDF +" Rxvt.color14 : #5F5FDF +" ! white +" Rxvt.color7 : #C0C0C0 +" Rxvt.color15 : #FFFFFF diff --git a/sundry/editor-syntax-etc/vim/colors/def.vim b/sundry/editor-syntax-etc/vim/colors/def.vim new file mode 100644 index 0000000..adc9dd9 --- /dev/null +++ b/sundry/editor-syntax-etc/vim/colors/def.vim @@ -0,0 +1,142 @@ +"%% Vim color file +" Name: def +" Maintainer: Ralph Amissah <ralph@amissah.com> +" Last Change: 2013-02-14, 2016-07-28, 2022-09-05 +" URL: <https://git.sisudoc.org/projects/sisudoc-spine/tree/sundry/editor-syntax-etc/vim/colors/def.vim> +" <https://sisudoc.org/> +" Note: primarily 16 color cterm improved by tweaking of .Xdefaults +" (with occasional other colors selected from 256 color palate) +" .Xdefaults tweaking to make identical to def (256) provided, +" along with an alternative possibility using colors beyond +" 256 color palate +: hi clear +: if exists("syntax_on") | syntax reset | endif +: let colors_name = "def" +: set t_Co=256 +: set background=dark +" ------- +" terminal def +" ------- +: hi Normal ctermfg=7 ctermbg=236 +: hi Cursor ctermfg=0 ctermbg=166 +: hi lCursor cterm=reverse +: hi CursorLine cterm=bold,underline "ctermul=166 "bg:236,59 +: hi CursorLineNr cterm=bold ctermfg=0 ctermbg=166 +: hi LineNr cterm=bold ctermfg=59 ctermbg=16 +: hi StatusLine cterm=bold,reverse +: hi StatusLineNC cterm=reverse +: hi StatusLineTerm cterm=bold ctermfg=15 ctermbg=2 +: hi StatusLineTermNC ctermfg=15 ctermbg=2 +: hi ColorColumn cterm=none ctermfg=231 ctermbg=236 "bg:233,59,242,67 +" hi ColorColumn cterm=inverse +" hi ColorColumn ctermfg=16 ctermbg=235 +" hi ColorColumn ctermfg=5 ctermbg=90 +: hi Folded cterm=none ctermfg=67 ctermbg=16 "fg:248,59,242,3,2,67 +" hi Folded cterm=none ctermfg=59 ctermbg=16 "fg:248,59,242,3 +: hi FoldColumn ctermfg=4 ctermbg=69 +: hi Search cterm=none ctermfg=0 ctermbg=57 "bg:57,11 +: hi IncSearch cterm=none ctermfg=0 ctermbg=154 +: hi SpecialKey ctermfg=4 +: hi Visual cterm=reverse +: hi VisualNOS cterm=bold,underline +: hi MoreMsg ctermfg=2 +: hi ModeMsg cterm=bold +: hi Question ctermfg=2 +: hi Title cterm=bold ctermfg=3 +: hi NonText cterm=bold ctermfg=4 +: hi Directory ctermfg=4 +: hi WildMenu ctermfg=0 ctermbg=3 +: hi VertSplit cterm=reverse +: hi DiffAdd cterm=none ctermfg=0 ctermbg=2 +: hi DiffChange cterm=none ctermfg=0 ctermbg=7 +: hi DiffDelete cterm=none ctermfg=0 ctermbg=7 +: hi DiffText cterm=none ctermfg=0 ctermbg=6 +: hi String cterm=none ctermfg=3 +: hi Comment cterm=none ctermfg=4 +: hi Constant ctermfg=1 +: hi Special ctermfg=6 "fg:67,140,5 +: hi Identifier cterm=none ctermfg=2 "bg:172,4,2 (default usually bold; choose orange, blue or lime green) +: hi Statement ctermfg=4 +: hi Operator ctermfg=2 +: hi PreProc ctermfg=1 "fg:2,5,140 +: hi Type ctermfg=3 "fg:67,2 +: hi Include ctermfg=1 "fg:124,140,5 +: hi Delimiter cterm=none ctermfg=2 +: hi Ignore cterm=bold ctermfg=7 +: hi Todo ctermfg=0 ctermbg=3 +: hi Underlined cterm=underline "ctermul=166 "fg:4,6 +: hi Define ctermfg=3 +: hi Function ctermfg=6 +: hi Structure ctermfg=2 +: hi MatchParen cterm=bold ctermfg=7 ctermbg=4 +: hi SpellBad cterm=underline ctermfg=5 ctermbg=0 +: hi SpellCap cterm=underline ctermfg=5 ctermbg=0 +: hi SpellLocal cterm=underline ctermfg=5 ctermbg=0 +: hi SpellRare cterm=underline ctermfg=5 ctermbg=0 +: hi TrailingWhitespace ctermbg=1 +: hi ExtraWhitespace ctermbg=1 +: hi WarningMsg ctermfg=1 +: hi ErrorMsg cterm=bold ctermfg=7 ctermbg=1 +: hi Error cterm=bold ctermfg=7 ctermbg=1 +: if &diff +: highlight! link DiffText MatchParen +: endif +" ------- +" gui def +" ------- +: hi Normal guifg=#D3D3D3 guibg=#000000 +: hi Cursor guifg=#000000 guibg=#CC9966 +: hi lCursor gui=reverse +: hi CursorLine gui=bold +: hi CursorLineNr gui=bold guifg=#000000 guibg=#D75F00 +: hi CursorColumn guibg=#00005F +: hi LineNr gui=bold guifg=#808080 guibg=#000000 +: hi StatusLine gui=bold,reverse +: hi StatusLineNC gui=reverse +: hi Search gui=none guifg=#000000 guibg=#5F00FF +: hi IncSearch gui=none guifg=#000000 guibg=#AFFF00 +: hi SpecialKey guifg=#5971AD +: hi Visual gui=reverse +: hi VisualNOS gui=bold,underline +: hi MoreMsg guifg=#4E9A06 +: hi ModeMsg gui=bold +: hi Question guifg=#4E9A06 +: hi Title gui=bold guifg=#C4A000 +: hi NonText gui=bold guifg=#5971AD +: hi Directory guifg=#5971AD +: hi WildMenu guifg=#000000 guibg=#C4A000 +: hi VertSplit gui=reverse +: hi Folded gui=none guifg=#808080 guibg=#000000 +: hi FoldColumn guifg=#5971AD guibg=#D3D3D3 +: hi DiffAdd gui=none guifg=#000000 guibg=#4E9A06 +: hi DiffChange gui=none guifg=#000000 guibg=#D3D3D3 +: hi DiffDelete gui=none guifg=#000000 guibg=#D3D3D3 +: hi DiffText gui=none guifg=#000000 guibg=#06989A +: hi String gui=none guifg=#C4A000 +: hi Comment gui=none guifg=#5971AD guibg=#000000 +: hi Constant guifg=#CC0000 +: hi Special guifg=#06989A +: hi Identifier guifg=#06989A +: hi Statement guifg=#4E9A06 +: hi Operator guifg=#4E9A06 +: hi PreProc guifg=#CC0000 +: hi Type gui=bold guifg=#C4A000 +: hi Delimiter gui=none guifg=#4E9A06 +: hi Ignore gui=bold guifg=#D3D3D3 +: hi Todo guifg=#000000 guibg=#C4A000 +: hi Underlined gui=underline +: hi Include guifg=#CC0000 +: hi Define guifg=#C4A000 +: hi Function guifg=#06989A +: hi Structure guifg=#4E9A06 +: hi MatchParen gui=bold guifg=#D3D3D3 guibg=#5971AD +: hi ColorColumn guibg=#00005F +: hi SpellBad gui=underline guifg=#75507B guibg=#000000 +: hi SpellCap gui=underline guifg=#75507B guibg=#000000 +: hi SpellLocal gui=underline guifg=#75507B guibg=#000000 +: hi SpellRare gui=underline guifg=#75507B guibg=#000000 +: hi TrailingWhitespace guibg=#080000 +: hi ExtraWhitespace guibg=#CC0000 +: hi WarningMsg guifg=#CC0000 +: hi ErrorMsg gui=bold guifg=#D3D3D3 guibg=#CC0000 +: hi Error gui=bold guifg=#D3D3D3 guibg=#CC0000 diff --git a/sundry/editor-syntax-etc/vim/colors/frugal-cterm-sisu.vim b/sundry/editor-syntax-etc/vim/colors/frugal-cterm-sisu.vim new file mode 100644 index 0000000..f631f63 --- /dev/null +++ b/sundry/editor-syntax-etc/vim/colors/frugal-cterm-sisu.vim @@ -0,0 +1,67 @@ +" Vim color file +" Name: frugal-cterm-sisu +" Maintainer: Ralph Amissah <ralph@amissah.com> +" Last Change: 2013-02-09 +" URL: <https://git.sisudoc.org/projects/sisudoc-spine/tree/sundry/editor-syntax-etc/vim/colors/frugal-cterm-sisu.vim> +" <https://sisudoc.org/> +" Note: 8 color cterm, related colorschemes 8 & sparse +:set background=dark +:hi clear +if exists("syntax_on") + syntax reset +endif +:let colors_name = "frugal-cterm-sisu" +" 0 = black, 1 = red, 2 = green, 3 = yellow/orange, 4 = blue, 5 = magenta, 6 = cyan, 7 = white +:hi Normal ctermbg=0 ctermfg=7 +:hi Cursor cterm=reverse +:hi lCursor cterm=reverse +:hi StatusLine cterm=bold,reverse +:hi StatusLineNC cterm=reverse +:hi Search cterm=none ctermbg=2 ctermfg=0 +:hi IncSearch cterm=bold ctermbg=2 ctermfg=7 +:hi SpecialKey ctermfg=4 +:hi Visual cterm=reverse +:hi VisualNOS cterm=bold,underline +:hi MoreMsg ctermfg=2 +:hi ModeMsg cterm=bold +:hi Question ctermfg=2 +:hi Title cterm=bold ctermfg=3 +:hi NonText cterm=bold ctermfg=4 +:hi LineNr cterm=bold ctermbg=0 ctermfg=0* +:hi Directory ctermfg=4 +:hi WildMenu ctermbg=3 ctermfg=0 +:hi VertSplit cterm=reverse +:hi Folded cterm=none ctermbg=0 ctermfg=7 +:hi FoldColumn ctermbg=7 ctermfg=4 +:hi DiffChange cterm=none ctermbg=7 ctermfg=0 +:hi DiffText cterm=none ctermbg=6 ctermfg=0 +:hi DiffAdd cterm=none ctermbg=2 ctermfg=0 +:hi DiffDelete cterm=none ctermbg=7 ctermfg=0 +:hi String cterm=none ctermfg=3 +:hi Comment cterm=none ctermbg=0 ctermfg=7 +:hi Constant ctermfg=1 +:hi Special ctermfg=6 +:hi Identifier ctermfg=6 +:hi Statement ctermfg=6 +:hi Operator ctermfg=1 +:hi PreProc ctermbg=7 ctermfg=1 +:hi Type ctermfg=2 +:hi Delimiter cterm=none ctermfg=1 +:hi Ignore cterm=bold ctermfg=7 +:hi Todo ctermbg=3 ctermfg=0 +:hi Underlined cterm=underline +:hi Include ctermfg=1 +:hi Define ctermfg=3 +:hi Function ctermfg=6 +:hi Structure ctermfg=2 +:hi MatchParen cterm=bold ctermbg=4 ctermfg=7 +:hi CursorLine cterm=bold,underline +:hi CursorColumn cterm=bold +:hi ColorColumn ctermbg=8 +:hi SpellBad cterm=none ctermbg=7 ctermfg=0 +:hi SpellCap cterm=none ctermbg=7 ctermfg=0 +:hi SpellLocal cterm=none ctermbg=7 ctermfg=0 +:hi SpellRare cterm=none ctermbg=7 ctermfg=0 +:hi WarningMsg ctermfg=1 +:hi ErrorMsg cterm=bold ctermbg=1 ctermfg=7 +:hi Error cterm=bold ctermbg=1 ctermfg=7 diff --git a/sundry/editor-syntax-etc/vim/colors/redo.vim b/sundry/editor-syntax-etc/vim/colors/redo.vim new file mode 100644 index 0000000..184961ca --- /dev/null +++ b/sundry/editor-syntax-etc/vim/colors/redo.vim @@ -0,0 +1,78 @@ +"%% Vim color file +" Name: redo +" Maintainer: Ralph Amissah <ralph@amissah.com> +" Last Change: 2013-02-14, 2016-07-28, 2022-09-05 +" URL: <> +" Note: this is a redo of def + +: hi clear +: if exists("syntax_on") | syntax reset | endif +: let colors_name = "redo" +: set t_Co=256 +: set background=dark +" ------- +" terminal def +" ------- +: hi Normal ctermfg=7 ctermbg=234 +: hi Cursor ctermfg=0 ctermbg=166 +: hi lCursor cterm=reverse +: hi CursorLine cterm=bold,underline "ctermul=242 "bg:236,59 +: hi CursorLineNr cterm=bold ctermfg=0 ctermbg=166 +: hi LineNr cterm=none ctermfg=248 ctermbg=236 +: hi StatusLine cterm=bold,reverse +: hi StatusLineNC cterm=reverse +: hi StatusLineTerm cterm=bold ctermfg=15 ctermbg=2 +: hi StatusLineTermNC ctermfg=15 ctermbg=2 +: hi ColorColumn ctermfg=231 ctermbg=236 "bg:233,59,236 +" hi ColorColumn cterm=inverse +" hi ColorColumn ctermfg=16 ctermbg=235 +" hi ColorColumn ctermfg=5 ctermbg=90 +: hi Folded cterm=none ctermfg=248 ctermbg=0 "fg:248,59,242,3 +: hi FoldColumn ctermfg=4 ctermbg=69 +: hi Search cterm=none ctermfg=0 ctermbg=57 "bg:57,11 +: hi IncSearch cterm=none ctermfg=0 ctermbg=154 +: hi SpecialKey ctermfg=4 +: hi Visual cterm=reverse +: hi VisualNOS cterm=bold,underline +: hi MoreMsg ctermfg=2 +: hi ModeMsg cterm=bold +: hi Question ctermfg=2 +: hi Title cterm=bold ctermfg=3 +: hi NonText cterm=bold ctermfg=4 +: hi Directory ctermfg=4 +: hi WildMenu ctermfg=0 ctermbg=3 +: hi VertSplit cterm=reverse +: hi DiffAdd cterm=none ctermfg=0 ctermbg=2 +: hi DiffChange cterm=none ctermfg=0 ctermbg=7 +: hi DiffDelete cterm=none ctermfg=0 ctermbg=7 +: hi DiffText cterm=none ctermfg=0 ctermbg=6 +: hi String cterm=none ctermfg=3 +: hi Comment cterm=none ctermfg=244 +: hi Constant ctermfg=124 +: hi Special ctermfg=67 "fg:67,140,5 +: hi Identifier cterm=none ctermfg=172 "bg:172,4,2 (default usually bold; choose orange, blue or lime green) +: hi Statement ctermfg=130 +: hi Operator ctermfg=2 +: hi PreProc ctermfg=196 "fg:2,5,140,1,166,196 +: hi Type ctermfg=67 "fg:67,2 +: hi Include ctermfg=124 "fg:124,140,5 +: hi Delimiter cterm=none ctermfg=2 +: hi Ignore cterm=bold ctermfg=7 +: hi Todo ctermfg=0 ctermbg=3 +: hi Underlined cterm=underline ctermfg=4 "ctermul=6 "fg:4,6 +: hi Define ctermfg=3 +: hi Function ctermfg=6 +: hi Structure ctermfg=2 +: hi MatchParen cterm=bold ctermfg=7 ctermbg=4 +: hi SpellBad cterm=underline ctermfg=5 ctermbg=0 +: hi SpellCap cterm=underline ctermfg=5 ctermbg=0 +: hi SpellLocal cterm=underline ctermfg=5 ctermbg=0 +: hi SpellRare cterm=underline ctermfg=5 ctermbg=0 +: hi TrailingWhitespace ctermbg=1 +: hi ExtraWhitespace ctermbg=1 +: hi WarningMsg ctermfg=1 +: hi ErrorMsg cterm=bold ctermfg=7 ctermbg=1 +: hi Error cterm=bold ctermfg=7 ctermbg=1 +: if &diff +: highlight! link DiffText MatchParen +: endif diff --git a/sundry/editor-syntax-etc/vim/colors/shift.vim b/sundry/editor-syntax-etc/vim/colors/shift.vim new file mode 100644 index 0000000..2174630 --- /dev/null +++ b/sundry/editor-syntax-etc/vim/colors/shift.vim @@ -0,0 +1,78 @@ +"%% Vim color file +" Name: shift +" Maintainer: Ralph Amissah <ralph@amissah.com> +" Last Change: 2013-02-14, 2016-07-28, 2022-09-09 +" URL: <> +" Note: this is a shift in redo which as a redo of def + +: hi clear +: if exists("syntax_on") | syntax reset | endif +: let colors_name = "shift" +: set t_Co=256 +: set background=dark +" ------- +" terminal def +" ------- +: hi Normal ctermfg=7 ctermbg=234 +: hi Cursor ctermfg=0 ctermbg=166 +: hi lCursor cterm=reverse +: hi CursorLine cterm=bold,underline ctermul=166 "bg:236,59 +: hi CursorLineNr cterm=bold ctermfg=0 ctermbg=166 +: hi LineNr cterm=none ctermfg=248 ctermbg=236 +: hi StatusLine cterm=bold,reverse +: hi StatusLineNC cterm=reverse +: hi StatusLineTerm cterm=bold ctermfg=15 ctermbg=2 +: hi StatusLineTermNC ctermfg=15 ctermbg=2 +: hi ColorColumn cterm=none ctermfg=7 ctermbg=236 "bg:233,59 +" hi ColorColumn cterm=inverse +" hi ColorColumn ctermfg=16 ctermbg=235 +" hi ColorColumn ctermfg=5 ctermbg=90 +: hi Folded cterm=none ctermfg=242 ctermbg=16 "fg:248,59,242,3 +: hi FoldColumn ctermfg=4 ctermbg=69 +: hi Search cterm=none ctermfg=0 ctermbg=57 "bg:57,11 +: hi IncSearch cterm=none ctermfg=0 ctermbg=154 +: hi SpecialKey ctermfg=4 +: hi Visual cterm=reverse +: hi VisualNOS cterm=bold,underline +: hi MoreMsg ctermfg=2 +: hi ModeMsg cterm=bold +: hi Question ctermfg=2 +: hi Title cterm=bold ctermfg=3 +: hi NonText cterm=bold ctermfg=4 +: hi Directory ctermfg=4 +: hi WildMenu ctermfg=0 ctermbg=3 +: hi VertSplit cterm=reverse +: hi DiffAdd cterm=none ctermfg=0 ctermbg=2 +: hi DiffChange cterm=none ctermfg=0 ctermbg=7 +: hi DiffDelete cterm=none ctermfg=0 ctermbg=7 +: hi DiffText cterm=none ctermfg=0 ctermbg=6 +: hi String cterm=none ctermfg=3 +: hi Comment cterm=none ctermfg=244 +: hi Constant ctermfg=124 +: hi Special ctermfg=67 "fg:67,140,5 +: hi Identifier cterm=none ctermfg=4 "bg:172,4,2 (default usually bold; choose orange, blue or lime green) +: hi Statement ctermfg=130 +: hi Operator ctermfg=2 +: hi PreProc ctermfg=196 "fg:2,5,140,1,166,196 +: hi Type ctermfg=67 "fg:67,2 +: hi Include ctermfg=124 "fg:124,140,5 +: hi Delimiter cterm=none ctermfg=2 +: hi Ignore cterm=bold ctermfg=7 +: hi Todo ctermfg=0 ctermbg=3 +: hi Underlined cterm=underline ctermfg=6 ctermul=6 "fg:4,6 +: hi Define ctermfg=3 +: hi Function ctermfg=6 +: hi Structure ctermfg=2 +: hi MatchParen cterm=bold ctermfg=7 ctermbg=4 +: hi SpellBad cterm=underline ctermfg=5 ctermbg=0 +: hi SpellCap cterm=underline ctermfg=5 ctermbg=0 +: hi SpellLocal cterm=underline ctermfg=5 ctermbg=0 +: hi SpellRare cterm=underline ctermfg=5 ctermbg=0 +: hi TrailingWhitespace ctermbg=1 +: hi ExtraWhitespace ctermbg=1 +: hi WarningMsg ctermfg=1 +: hi ErrorMsg cterm=bold ctermfg=7 ctermbg=1 +: hi Error cterm=bold ctermfg=7 ctermbg=1 +: if &diff +: highlight! link DiffText MatchParen +: endif diff --git a/sundry/editor-syntax-etc/vim/colors/slate.vim b/sundry/editor-syntax-etc/vim/colors/slate.vim new file mode 100644 index 0000000..6801e2a --- /dev/null +++ b/sundry/editor-syntax-etc/vim/colors/slate.vim @@ -0,0 +1,82 @@ +"%% SiSU Vim color file +" Name: Slate +" Maintainer: Ralph Amissah <ralph@amissah.com> +" Last Change: 2013-02-09, 2022-09-05 +" URL: <https://git.sisudoc.org/projects/sisudoc-spine/tree/sundry/editor-syntax-etc/vim/colors/slate.vim> +" <https://sisudoc.org/> +" <https://sisudoc.org/> +" Notes: cterm now uses frugal-sisu 8 colors for term +" (for gui originally looked at desert Hans Fugal <hans@fugal.net> +" <http://hans.fugal.net/vim/colors/desert.vim> (April/May 2003)) +: hi clear +: if exists("syntax_on") +: syntax reset +: endif +: let colors_name = "slate" +: set background=dark +" ------- +" 0 = black, 1 = red, 2 = green, 3 = yellow/orange, 4 = blue, 5 = magenta, 6 = cyan, 7 = white +" ------- +: hi Normal ctermbg=0 ctermfg=7 guibg=grey15 guifg=white +: hi Cursor term=reverse cterm=reverse guibg=khaki guifg=slategrey +: hi lCursor term=reverse cterm=reverse +: hi StatusLine term=reverse cterm=bold,reverse gui=none guibg=#c2bfa5 guifg=black +: hi StatusLineNC term=reverse cterm=reverse gui=none guibg=#c2bfa5 guifg=grey40 +: hi Search term=reverse cterm=none ctermbg=2 ctermfg=0 guibg=peru guifg=wheat +: hi IncSearch term=reverse cterm=bold ctermbg=2 ctermfg=7 guibg=black guifg=green +: hi SpecialKey term=bold ctermfg=4 guifg=yellowgreen +: hi Visual term=reverse cterm=reverse gui=none guibg=olivedrab guifg=khaki +: hi VisualNOS term=bold,underline cterm=bold,underline +: hi MoreMsg term=bold ctermfg=2 guifg=SeaGreen +: hi ModeMsg term=bold cterm=bold guifg=goldenrod +: hi Question term=standout ctermfg=2 guifg=springgreen +: hi Title term=bold cterm=bold ctermfg=3 gui=bold guifg=gold +: hi NonText term=bold cterm=bold ctermfg=4 guibg=grey15 guifg=RoyalBlue +: hi LineNr term=underline cterm=bold ctermbg=0 ctermfg=0* guifg=grey50 +: hi Directory term=bold ctermfg=4 +: hi WildMenu term=standout ctermbg=3 ctermfg=0 guibg=darkyellow guifg=black +: hi VertSplit term=reverse cterm=reverse gui=none guibg=#c2bfa5 guifg=grey40 +: hi Folded term=standout cterm=none ctermbg=0 ctermfg=7 guibg=black guifg=grey40 +: hi FoldColumn term=standout ctermbg=7 ctermfg=4 guibg=black guifg=grey20 +: hi DiffChange cterm=none ctermbg=7 ctermfg=0 guibg=darkgrey guifg=white +: hi DiffText cterm=none ctermbg=6 ctermfg=0 guibg=darkcyan guifg=white +: hi DiffAdd cterm=none ctermbg=2 ctermfg=0 guibg=darkgreen guifg=white +: hi DiffDelete cterm=none ctermbg=7 ctermfg=0 guibg=darkgrey guifg=black +: hi String cterm=none ctermfg=3 guifg=SkyBlue +: hi Comment term=bold cterm=none ctermbg=0 ctermfg=7 guifg=grey40 +: hi Constant term=underline ctermfg=1 guifg=#ffa0a0 +: hi Special term=bold ctermfg=6 guifg=darkkhaki +: hi Identifier term=underline ctermfg=6 guifg=salmon +: hi Statement term=bold ctermfg=6 guifg=CornflowerBlue +: hi Operator term=bold ctermfg=1 guifg=red +: hi PreProc term=underline ctermbg=7 ctermfg=1 guibg=white guifg=red +: hi Type term=underline ctermfg=2 guifg=CornflowerBlue +: hi Delimiter term=none cterm=none ctermfg=1 +: hi Ignore cterm=bold ctermfg=7 guifg=grey40 +: hi Todo term=standout ctermbg=3 ctermfg=0 guibg=yellow2 guifg=orangered +: hi Underlined term=underline cterm=underline +: hi Include ctermfg=1 guifg=red +: hi Define ctermfg=3 gui=bold guifg=gold +: hi Function ctermfg=6 guifg=navajowhite +: hi Structure ctermfg=2 guifg=green +: hi MatchParen cterm=bold ctermbg=4 ctermfg=7 +: hi CursorLine cterm=bold,underline guibg=black +: hi CursorColumn cterm=bold guibg=black +: hi SpellBad term=underline,standout cterm=none ctermbg=7 ctermfg=0 guibg=darkmagenta guifg=white +: hi SpellCap term=underline,standout cterm=none ctermbg=7 ctermfg=0 +: hi SpellLocal term=underline,standout cterm=none ctermbg=7 ctermfg=0 guibg=darkmagenta guifg=white +: hi SpellRare term=underline,standout cterm=none ctermbg=7 ctermfg=0 +: hi WarningMsg term=standout ctermfg=1 guibg=darkmagenta guifg=salmon +: hi ErrorMsg term=standout cterm=bold ctermbg=1 ctermfg=7 guibg=darkmagenta guifg=white +: hi Error term=reverse cterm=bold ctermbg=1 ctermfg=7 guibg=darkmagenta guifg=white +: if &diff +: highlight! link DiffText MatchParen +: endif +: hi Black ctermbg=grey ctermfg=black guibg=grey guifg=black +: hi Red ctermbg=black ctermfg=red guibg=black guifg=red +: hi Magenta ctermbg=black ctermfg=magenta guibg=black guifg=magenta +: hi Blue ctermbg=black ctermfg=blue guibg=black guifg=blue +: hi Cyan ctermbg=black ctermfg=cyan guibg=black guifg=cyan +: hi Green ctermbg=black ctermfg=green guibg=black guifg=green +: hi Yellow ctermbg=black ctermfg=yellow guibg=black guifg=yellow +: hi White ctermbg=black ctermfg=white guibg=black guifg=white diff --git a/sundry/editor-syntax-etc/vim/filetype.vim b/sundry/editor-syntax-etc/vim/filetype.vim new file mode 100644 index 0000000..48f8967 --- /dev/null +++ b/sundry/editor-syntax-etc/vim/filetype.vim @@ -0,0 +1,8 @@ +" SiSU filetype file +if exists("did_load_filetypes") + finish +endif +augroup filetypedetect + au! BufNewFile,BufRead *.sst,*.ssm,*.ssi,*.-sst setf sisu-spine + au! BufNewFile,BufRead *._sst,*.sst.meta,*.-sst.meta,*._sst.meta setf sisu-spine +augroup END diff --git a/sundry/editor-syntax-etc/vim/ftplugin/sisu-spine.vim b/sundry/editor-syntax-etc/vim/ftplugin/sisu-spine.vim new file mode 100644 index 0000000..43c7e53 --- /dev/null +++ b/sundry/editor-syntax-etc/vim/ftplugin/sisu-spine.vim @@ -0,0 +1,224 @@ +"%% SiSU Vim ftplugin +" SiSU Maintainer: Ralph Amissah <ralph@amissah.com> +" SiSU Markup: SiSU (sisu-3.3) 2012-08-18 +" an ftplugin setting defaults for editing sisu markup files +:syntax on +:filetype off +":filetype on +:filetype indent on +:autocmd FileType sisu :set nonumber +:set encoding=utf-8 fileencodings= +:set ff=unix +:set autowrite " Automatically save before commands like :next and :make +:set nocompatible +:set tabstop=2 +:set expandtab +:set shiftwidth=2 +:set autoindent +:set showcmd " Show (partial) command in status line. +:set showmatch " Show matching brackets. +:set ignorecase " Do case insensitive matching +:set smartcase +:set incsearch +:set hlsearch +:set gdefault +:set guioptions=agr " add 'm' for menu +:map <silent> <C-m> :if &guioptions =~# 'm' <Bar> + \set guioptions-=m <Bar> + \set guioptions-=T <Bar> + \else <Bar> + \set guioptions+=m <Bar> + \set guioptions-=T <Bar> + \endif<CR> +:set paste +""% statusline +"set statusline= " +"set fillchars=stl:―,stlnc:—,vert:│,fold:Û°,diff:· +"" [ buffer number ] +"set statusline +=%#Normal#[ " +"set statusline +=%#Identifier#%n " buffer number +"set statusline +=%#PreProc#%M " modified flag +"set statusline +=%#Normal#] " +"" [ file name (& modified?) ] +"set statusline +=%#Normal#\ [ " +"set statusline +=%#Statement#%<%F%* " full path +""set statusline +=%#Statement#%<%t " full path +"set statusline +=%#PreProc#%M " modified flag +"set statusline +=%#Normal#] " +"" [ column : line number / number of lines in file, percentage of file ] [%v:%l/%L\ %p%%] +"set statusline +=%#Normal#\ [ " +"set statusline +=%#Identifier#%v " column & line +"set statusline +=%#Normal#: " +"set statusline +=%#Identifier#%l " column & line +"set statusline +=%#SpecialKey#/%L\ " total lines +"set statusline +=%#Identifier#%p " percentage of file +"set statusline +=%#SpecialKey#%% " +"set statusline +=%#Normal#] " " +"" [ file format : file type ] +"set statusline +=%#Normal#\ [ " +"set statusline +=%#SpecialKey#%{&fenc} " file format +"set statusline +=%#Normal#: " +"set statusline +=%#SpecialKey#%{&ff} " file format +"set statusline +=%#Normal#: " +"set statusline +=%#SpecialKey#%y " file type +"set statusline +=%#Normal#] " +"" [ character under cursor ] +"set statusline +=%#Normal#\ [ " +"set statusline +=%#String#0x%04B " character under cursor +"set statusline +=%#Normal#]\ " +"" [ syntastic ] +"set statusline +=%#warningmsg# +"set statusline +=%{SyntasticStatuslineFlag()}\ " +""set statusline+=%* +"" Status line background +"set statusline +=%#Folded#\ " +"" misc +"set laststatus=2 " status line always on +"% textwrap +:set whichwrap=<,>,h,l,[,] +:set nolinebreak " only affects display not buffer +:set wrap +:set wrapmargin=0 +"% map +":let mapleader = "," " consider +:map <leader>paste :set invpaste<cr> +"% wrap/formatting paragraph according to the current 'textwidth' with ^\ (control-\): +:imap <C-\> <C-O>gqap +:nmap <C-\> gqap +:vmap <C-\> gq +"% save file, go to next file in buffer +:map <leader>nf :w <enter> :n <enter> +"% vimdiff q exits +:if &diff +: cmap q qa +:endif +"% directory files, placed in vertical split window +:map <leader>ls :vs<cr> :Explore<cr> +:map <leader>dir :vs<cr> :Explore<cr> +"% remapping lines make cursor jump a line at a time within wrapped text +:nnoremap j gj +:nnoremap k gk +:vnoremap j gj +:vnoremap k gk +:nnoremap <Down> gj +:nnoremap <Up> gk +:vnoremap <Down> gj +:vnoremap <Up> gk +:inoremap <Down> <C-o>gj +:inoremap <Up> <C-o>gk +"% search and replace +:map <leader>rd :.,$s///c "search and replace down +:map <leader>rg :%s///c "search and replace whole file +:map <leader>rr :rubyd gsub!(//,"") +"% pwd t64 working directory set to that of the file you're editing +"changes pwd to directory of file in current buffer +:function! CHANGE_CURR_DIR() +: let _dir = expand("%:p:h") +: exec "cd " . _dir +: unlet _dir +:endfunction +"% Change to the directory the file in your current buffer is in +:if has("autocmd") + autocmd BufEnter * :lcd %:p:h +:endif +"% autocompletefilenames To search for files in the current directory +:set path=,, +"auto-completion for file to edit in current dir, used in normal mode +:map <leader>e :e <c-r>=expand("%:p:h") . "/" <cr> +:map <leader>pwd :exe 'cd ' . expand ("%:p:h")<cr> +"% searchhighlight t93: Toggle search highlight <C-n> +:function! ToggleHLSearched() +: if &hls +: set nohls +: else +: set hls +: endif +:endfun +:nmap <silent> <C-n> :silent call ToggleHLSearched()<cr> +"%% SiSU vim folds +"% foldsearchx FoldSearch (opens result of search all else closed) t77 +:map <leader>fs :set foldmethod=expr foldcolumn=2 foldlevel=0 <cr> +:map <leader>ff :F<cr> +:map <leader>fe :F<cr> zE +"% foldtoggle Fold Toggle mapped to <space> +:fun! ToggleFold() +: if foldlevel('.') == 0 +: normal! l +: else +: if foldclosed('.') < 0 +: foldclose +: else +: foldopen +: endif +: endif +" Clear status line +: echo +:endfun +" Map this function to Space key. +:noremap <space> :call ToggleFold()<cr> +"% foldtype Fold? set foldtext +:set foldtext=v:folddashes.substitute(getline(v:foldstart),'\\=','','g',) +:set foldexpr=getline(v:lnum-1)!~@/&&getline(v:lnum)!~@/&&getline(v:lnum+1)!~@/ +"% foldsearch t77: Fold on search result +:function! FoldMake(search) +: set fdm=manual +: normal zE +: normal G$ +: let folded = 0 "flag to set when a fold is found +: let flags = "w" "allow wrapping in the search +: let line1 = 0 "set marker for beginning of fold +: while search(a:search, flags) > 0 +: let line2 = line(".") +: if (line2 -1 > line1) +: "echo line1 . ":" . (line2-1) +: "echo "a fold goes here." +: execute ":" . line1 . "," . (line2-1) . "fold" +: let folded = 1 "at least one fold has been found +: endif +: let line1 = line2 "update marker +: let flags = "W" "turn off wrapping +: endwhile +" create the last fold which goes to the end of the file. +: normal $G +: let line2 = line(".") +: if (line2 > line1 && folded == 1) +: execute ":". line1 . "," . line2 . "fold" +: endif +: normal 1G +:endfunction +"% folds Fold Patterns +:command! -nargs=+ -complete=command FMake call FoldMake(<q-args>) +: if ( &filetype == "ruby" ) +: command! F FMake ^# ==\?\|^\s*\(\(def\|class\|module\)\s\|\(public\|protected\|private\|__END__\)\s*$\)\|\(^\s*\|\s\+\)#%\s +: command! Fa FMake \(^# ==\?\|^\s*\(\(\(def\|class\|module\)\s\)\|\(\(public\|protected\|private\|__END__\)\(\s*$\)\)\)\)\|^[0-9]\~\|\([#%]\|^["]\)\{1,4\}\s*%\|{\({\|!!\) +: command! FD FMake \(^# ==\?\|^\s*\(\(def\|class\|module\)\s\)\)\|^\s*\([#%"0-9]\{0,4\}\~\(%\+\s\|!!\)\|#\s\+=\+\s\+\) +: else +"% folds :F Fold Patterns SiSU Markup :F +: command! F FMake ^\([1-8]\|:\?[A-C]\)\~\|\(^%\|\(^\|\s\+\)[#"]\)%\{1,2\}\(\s\|$\)\|^<<\s*| +: command! Fa FMake ^\([1-8]\|:\?[A-C]\)\~\|\(^%\|\(^\|\s\+\)[#"]\)%\{1,2\}\(\s\|$\)\|^<<\s*|\|^\(Book\|Part\|Chapter\|Section\|Article\|BOOK\|PART\|CHAPTER\|SECTION\|ARTICLE\)\s +: command! F0 FMake ^\(\s*0\~\|@\S\+:[+-]\?\s\+\) +: command! FA FMake ^:\?A\~ +: command! FB FMake ^:\?[AB]\~ +: command! FC FMake ^:\?[A-C]\~ +: command! F1 FMake ^\(:\?[A-C]\|1\)\~ +: command! F2 FMake ^\(:\?[A-C]\|[12]\)\~ +: command! F3 FMake ^\(:\?[A-C]\|[1-3]\)\~ +: command! F4 FMake ^[1-4]\~ +: command! F5 FMake ^[4-5]\~ +: command! F6 FMake ^[4-6]\~ +: command! Fc FMake ^[%]\+\s\+ +: endif +"% folds Fold Patterns misc +":command! Fp FMake ^\s*[A-Za-z0-9#] +:command! Fp FMake ^\s*\S +:command! Fo FMake ^[%\"]\s*[{>] +"% linenumbering, on, relative, off +:map <Leader>nn :set <c-r>={'00':'','01':'r','10':'nor'}[&rnu.&nu]<CR>nu<CR> +"% cursorline +:map <leader>cu :if &cursorcolumn <Bar> + \set nocursorline nocursorcolumn <Bar> + \else <Bar> + \set cursorline cursorcolumn <Bar> + \endif<cr> +:map <leader>cu- :set nocursorline nocursorcolumn<cr> +:map <leader>cu+ :set cursorline cursorcolumn<cr> diff --git a/sundry/editor-syntax-etc/vim/ftplugin/sisu.vim b/sundry/editor-syntax-etc/vim/ftplugin/sisu.vim new file mode 100644 index 0000000..43c7e53 --- /dev/null +++ b/sundry/editor-syntax-etc/vim/ftplugin/sisu.vim @@ -0,0 +1,224 @@ +"%% SiSU Vim ftplugin +" SiSU Maintainer: Ralph Amissah <ralph@amissah.com> +" SiSU Markup: SiSU (sisu-3.3) 2012-08-18 +" an ftplugin setting defaults for editing sisu markup files +:syntax on +:filetype off +":filetype on +:filetype indent on +:autocmd FileType sisu :set nonumber +:set encoding=utf-8 fileencodings= +:set ff=unix +:set autowrite " Automatically save before commands like :next and :make +:set nocompatible +:set tabstop=2 +:set expandtab +:set shiftwidth=2 +:set autoindent +:set showcmd " Show (partial) command in status line. +:set showmatch " Show matching brackets. +:set ignorecase " Do case insensitive matching +:set smartcase +:set incsearch +:set hlsearch +:set gdefault +:set guioptions=agr " add 'm' for menu +:map <silent> <C-m> :if &guioptions =~# 'm' <Bar> + \set guioptions-=m <Bar> + \set guioptions-=T <Bar> + \else <Bar> + \set guioptions+=m <Bar> + \set guioptions-=T <Bar> + \endif<CR> +:set paste +""% statusline +"set statusline= " +"set fillchars=stl:―,stlnc:—,vert:│,fold:Û°,diff:· +"" [ buffer number ] +"set statusline +=%#Normal#[ " +"set statusline +=%#Identifier#%n " buffer number +"set statusline +=%#PreProc#%M " modified flag +"set statusline +=%#Normal#] " +"" [ file name (& modified?) ] +"set statusline +=%#Normal#\ [ " +"set statusline +=%#Statement#%<%F%* " full path +""set statusline +=%#Statement#%<%t " full path +"set statusline +=%#PreProc#%M " modified flag +"set statusline +=%#Normal#] " +"" [ column : line number / number of lines in file, percentage of file ] [%v:%l/%L\ %p%%] +"set statusline +=%#Normal#\ [ " +"set statusline +=%#Identifier#%v " column & line +"set statusline +=%#Normal#: " +"set statusline +=%#Identifier#%l " column & line +"set statusline +=%#SpecialKey#/%L\ " total lines +"set statusline +=%#Identifier#%p " percentage of file +"set statusline +=%#SpecialKey#%% " +"set statusline +=%#Normal#] " " +"" [ file format : file type ] +"set statusline +=%#Normal#\ [ " +"set statusline +=%#SpecialKey#%{&fenc} " file format +"set statusline +=%#Normal#: " +"set statusline +=%#SpecialKey#%{&ff} " file format +"set statusline +=%#Normal#: " +"set statusline +=%#SpecialKey#%y " file type +"set statusline +=%#Normal#] " +"" [ character under cursor ] +"set statusline +=%#Normal#\ [ " +"set statusline +=%#String#0x%04B " character under cursor +"set statusline +=%#Normal#]\ " +"" [ syntastic ] +"set statusline +=%#warningmsg# +"set statusline +=%{SyntasticStatuslineFlag()}\ " +""set statusline+=%* +"" Status line background +"set statusline +=%#Folded#\ " +"" misc +"set laststatus=2 " status line always on +"% textwrap +:set whichwrap=<,>,h,l,[,] +:set nolinebreak " only affects display not buffer +:set wrap +:set wrapmargin=0 +"% map +":let mapleader = "," " consider +:map <leader>paste :set invpaste<cr> +"% wrap/formatting paragraph according to the current 'textwidth' with ^\ (control-\): +:imap <C-\> <C-O>gqap +:nmap <C-\> gqap +:vmap <C-\> gq +"% save file, go to next file in buffer +:map <leader>nf :w <enter> :n <enter> +"% vimdiff q exits +:if &diff +: cmap q qa +:endif +"% directory files, placed in vertical split window +:map <leader>ls :vs<cr> :Explore<cr> +:map <leader>dir :vs<cr> :Explore<cr> +"% remapping lines make cursor jump a line at a time within wrapped text +:nnoremap j gj +:nnoremap k gk +:vnoremap j gj +:vnoremap k gk +:nnoremap <Down> gj +:nnoremap <Up> gk +:vnoremap <Down> gj +:vnoremap <Up> gk +:inoremap <Down> <C-o>gj +:inoremap <Up> <C-o>gk +"% search and replace +:map <leader>rd :.,$s///c "search and replace down +:map <leader>rg :%s///c "search and replace whole file +:map <leader>rr :rubyd gsub!(//,"") +"% pwd t64 working directory set to that of the file you're editing +"changes pwd to directory of file in current buffer +:function! CHANGE_CURR_DIR() +: let _dir = expand("%:p:h") +: exec "cd " . _dir +: unlet _dir +:endfunction +"% Change to the directory the file in your current buffer is in +:if has("autocmd") + autocmd BufEnter * :lcd %:p:h +:endif +"% autocompletefilenames To search for files in the current directory +:set path=,, +"auto-completion for file to edit in current dir, used in normal mode +:map <leader>e :e <c-r>=expand("%:p:h") . "/" <cr> +:map <leader>pwd :exe 'cd ' . expand ("%:p:h")<cr> +"% searchhighlight t93: Toggle search highlight <C-n> +:function! ToggleHLSearched() +: if &hls +: set nohls +: else +: set hls +: endif +:endfun +:nmap <silent> <C-n> :silent call ToggleHLSearched()<cr> +"%% SiSU vim folds +"% foldsearchx FoldSearch (opens result of search all else closed) t77 +:map <leader>fs :set foldmethod=expr foldcolumn=2 foldlevel=0 <cr> +:map <leader>ff :F<cr> +:map <leader>fe :F<cr> zE +"% foldtoggle Fold Toggle mapped to <space> +:fun! ToggleFold() +: if foldlevel('.') == 0 +: normal! l +: else +: if foldclosed('.') < 0 +: foldclose +: else +: foldopen +: endif +: endif +" Clear status line +: echo +:endfun +" Map this function to Space key. +:noremap <space> :call ToggleFold()<cr> +"% foldtype Fold? set foldtext +:set foldtext=v:folddashes.substitute(getline(v:foldstart),'\\=','','g',) +:set foldexpr=getline(v:lnum-1)!~@/&&getline(v:lnum)!~@/&&getline(v:lnum+1)!~@/ +"% foldsearch t77: Fold on search result +:function! FoldMake(search) +: set fdm=manual +: normal zE +: normal G$ +: let folded = 0 "flag to set when a fold is found +: let flags = "w" "allow wrapping in the search +: let line1 = 0 "set marker for beginning of fold +: while search(a:search, flags) > 0 +: let line2 = line(".") +: if (line2 -1 > line1) +: "echo line1 . ":" . (line2-1) +: "echo "a fold goes here." +: execute ":" . line1 . "," . (line2-1) . "fold" +: let folded = 1 "at least one fold has been found +: endif +: let line1 = line2 "update marker +: let flags = "W" "turn off wrapping +: endwhile +" create the last fold which goes to the end of the file. +: normal $G +: let line2 = line(".") +: if (line2 > line1 && folded == 1) +: execute ":". line1 . "," . line2 . "fold" +: endif +: normal 1G +:endfunction +"% folds Fold Patterns +:command! -nargs=+ -complete=command FMake call FoldMake(<q-args>) +: if ( &filetype == "ruby" ) +: command! F FMake ^# ==\?\|^\s*\(\(def\|class\|module\)\s\|\(public\|protected\|private\|__END__\)\s*$\)\|\(^\s*\|\s\+\)#%\s +: command! Fa FMake \(^# ==\?\|^\s*\(\(\(def\|class\|module\)\s\)\|\(\(public\|protected\|private\|__END__\)\(\s*$\)\)\)\)\|^[0-9]\~\|\([#%]\|^["]\)\{1,4\}\s*%\|{\({\|!!\) +: command! FD FMake \(^# ==\?\|^\s*\(\(def\|class\|module\)\s\)\)\|^\s*\([#%"0-9]\{0,4\}\~\(%\+\s\|!!\)\|#\s\+=\+\s\+\) +: else +"% folds :F Fold Patterns SiSU Markup :F +: command! F FMake ^\([1-8]\|:\?[A-C]\)\~\|\(^%\|\(^\|\s\+\)[#"]\)%\{1,2\}\(\s\|$\)\|^<<\s*| +: command! Fa FMake ^\([1-8]\|:\?[A-C]\)\~\|\(^%\|\(^\|\s\+\)[#"]\)%\{1,2\}\(\s\|$\)\|^<<\s*|\|^\(Book\|Part\|Chapter\|Section\|Article\|BOOK\|PART\|CHAPTER\|SECTION\|ARTICLE\)\s +: command! F0 FMake ^\(\s*0\~\|@\S\+:[+-]\?\s\+\) +: command! FA FMake ^:\?A\~ +: command! FB FMake ^:\?[AB]\~ +: command! FC FMake ^:\?[A-C]\~ +: command! F1 FMake ^\(:\?[A-C]\|1\)\~ +: command! F2 FMake ^\(:\?[A-C]\|[12]\)\~ +: command! F3 FMake ^\(:\?[A-C]\|[1-3]\)\~ +: command! F4 FMake ^[1-4]\~ +: command! F5 FMake ^[4-5]\~ +: command! F6 FMake ^[4-6]\~ +: command! Fc FMake ^[%]\+\s\+ +: endif +"% folds Fold Patterns misc +":command! Fp FMake ^\s*[A-Za-z0-9#] +:command! Fp FMake ^\s*\S +:command! Fo FMake ^[%\"]\s*[{>] +"% linenumbering, on, relative, off +:map <Leader>nn :set <c-r>={'00':'','01':'r','10':'nor'}[&rnu.&nu]<CR>nu<CR> +"% cursorline +:map <leader>cu :if &cursorcolumn <Bar> + \set nocursorline nocursorcolumn <Bar> + \else <Bar> + \set cursorline cursorcolumn <Bar> + \endif<cr> +:map <leader>cu- :set nocursorline nocursorcolumn<cr> +:map <leader>cu+ :set cursorline cursorcolumn<cr> diff --git a/sundry/editor-syntax-etc/vim/syntax/sisu-spine.vim b/sundry/editor-syntax-etc/vim/syntax/sisu-spine.vim new file mode 100644 index 0000000..2de0095 --- /dev/null +++ b/sundry/editor-syntax-etc/vim/syntax/sisu-spine.vim @@ -0,0 +1,284 @@ +" SiSU Vim syntax file (sisu-spine) +" SiSU Maintainer: Ralph Amissah <ralph.amissah@gmail.com> +" SiSU Markup: SiSU (sisu-5.6.7) +" sisu-spine Markup: sisu-spine +" Last Change: 2017-06-22, 2025-02-21 +" URL: <https://git.sisudoc.org/projects/sisudoc-spine/tree/sundry/editor-syntax-etc/vim/syntax/sisu-spine.vim> +" <https://git.sisudoc.org/projects/sisudoc-spine/tree/sundry/editor-syntax-etc/vim/syntax/sisu.vim> +" <https://sisudoc.org/> +"(originally looked at Ruby Vim by Mirko Nasato) + +if version < 600 + syntax clear +elseif exists("b:current_syntax") + finish +else +endif +let s:cpo_save = &cpo +set cpo&vim + +"% "Errors: +syn match sisu_error contains=sisu_link,sisu_error_wspace "<![^ei]\S\+!>" + +"% "Markers Identifiers: +if !exists("sisu_no_identifiers") + syn match sisu_mark_endnote "\~^" + syn match sisu_break contains=@NoSpell " \\\\\( \|$\)\|<br>\|<br />" + syn match sisu_control contains=@NoSpell "^\(-\\\\-\|=\\\\=\|-\.\.-\|<:p[bn]>\)\s*$" + syn match sisu_control contains=@NoSpell "^<:\(bo\|---\)>\s*$" + syn match sisu_marktail contains=@NoSpell "^--[+~-]#\s*$" + syn match sisu_marktail "[~-]#" + syn match sisu_control "\"" + syn match sisu_underline "\(^\| \)_[a-zA-Z0-9]\+_\([ .,]\|$\)" + syn match sisu_number contains=@NoSpell "[0-9a-f]\{32\}\|[0-9a-f]\{64\}" + syn match sisu_link contains=@NoSpell "\(_\?https\?://\|\.\.\/\)\S\+" + syn match sisu_link " \*\~\S\+" + syn match sisu_require contains=@NoSpell "^<<\s*[a-zA-Z0-9^./_-]\+\.ss[it]$" + syn match sisu_structure "^:A\~$" + +"% "Document Sub Headers: + syn match sisu_sub_header_title "^\s\+:\(subtitle\|short\|edition\|language\|lang_char\|note\):\s" "group=sisu_header_content + syn match sisu_sub_header_creator "^\s\+:\(author\|editor\|contributor\|illustrator\|photographer\|translator\|digitized_by\|prepared_by\|audio\|video\):\s" " &hon &institution + syn match sisu_sub_header_rights "^\s\+:\(copyright\|text\|translation\|illustrations\|photographs\|preparation\|digitization\|audio\|video\|license\|all\):\s" " access_rights license + syn match sisu_sub_header_classify "^\s\+:\(topic_register\|keywords\|subject\|dewey\|loc\):\s" + syn match sisu_sub_header_identifier "^\s\+:\(oclc\|isbn\):\s" + syn match sisu_sub_header_date "^\s\+:\(added_to_site\|available\|created\|issued\|modified\|published\|valid\|translated\|original_publication\):\s" + syn match sisu_sub_header_original "^\s\+:\(publisher\|date\|language\|lang_char\|institution\|nationality\|source\):\s" + syn match sisu_sub_header_make "^\s\+:\(headings\|num_top\|breaks\|language\|italics\|bold\|emphasis\|substitute\|omit\|plaintext_wrap\|texpdf_font_mono\|texpdf_font\|stamp\|promo\|ad\|manpage\|home_button_text\|home_button_image\|cover_image\|footer\):\s" + syn match sisu_sub_header_notes "^\s\+:\(description\|abstract\|comment\|coverage\|relation\|source\|history\|type\|format\|prefix\|prefix_[ab]\|suffix\):\s" + syn match sisu_within_index_ignore "\S\+[:;]\(\s\+\|$\)" + syn match sisu_within_index "[:|;]\|+\d\+" + +"% "semantic markers: (ignore) + syn match sisu_sem_marker ";{\|};[a-z._]*[a-z]" + syn match sisu_sem_marker_block "\([a-z][a-z._]*\|\):{\|}:[a-z._]*[a-z]" + syn match sisu_sem_ex_marker ";\[\|\];[a-z._]*[a-z]" + syn match sisu_sem_ex_marker_block "\([a-z][a-z._]*\|\):\[\|\]:[a-z._]*[a-z]" + syn match sisu_sem_block contains=sisu_error,sisu_error_wspace,sisu_content_alt,sisu_link,sisu_linked,sisu_break,sisu_sem_block,sisu_sem_content,sisu_sem_marker_block,sisu_sem_marker,sisu_sem_ex_marker_block,sisu_sem_ex_marker,sisu_mark_endnote,sisu_content_endnote "\([a-z]*\):{[^}].\{-}}:\1" + syn match sisu_sem_content contains=sisu_error,sisu_error_wspace,sisu_content_alt,sisu_link,sisu_linked,sisu_break,sisu_sem_marker_block,sisu_sem_marker,sisu_sem_ex_marker_block,sisu_sem_ex_marker ";{[^}].\{-}};[a-z]\+" + syn match sisu_sem_ex_block contains=sisu_error,sisu_error_wspace,sisu_content_alt,sisu_link,sisu_linked,sisu_break,sisu_sem_block,sisu_sem_content,sisu_sem_marker_block,sisu_sem_marker,sisu_sem_ex_marker_block,sisu_sem_ex_marker,sisu_mark_endnote,sisu_content_endnote "\([a-z]*\):\[[^}].\{-}\]:\1" + syn match sisu_sem_ex_content contains=sisu_error,sisu_error_wspace,sisu_content_alt,sisu_link,sisu_linked,sisu_break,sisu_sem_marker_block,sisu_sem_marker,sisu_sem_ex_marker_block,sisu_sem_ex_marker ";\[[^}].\{-}\];[a-z]\+" +endif + +"% "URLs Numbers And ASCII Codes: +syn match sisu_number "\<\(0x\x\+\|0b[01]\+\|0\o\+\|0\.\d\+\|0\|[1-9][\.0-9_]*\)\>" +syn match sisu_number "?\(\\M-\\C-\|\\c\|\\C-\|\\M-\)\=\(\\\o\{3}\|\\x\x\{2}\|\\\=\w\)" + +"% "Tuned Error: (is error if not already matched) +syn match sisu_error contains=sisu_error "[\~/\*!_]{\|}[\~/\*!_]" +syn match sisu_error contains=sisu_error "<a href\|</a>]" + +"% "Simple Paired Enclosed Markup: +"url/link +syn region sisu_link contains=sisu_error,sisu_error_wspace matchgroup=sisu_action start="^<<\s*|[a-zA-Z0-9^._-]\+|@|[a-zA-Z0-9^._-]\+|"rs=s+2 end="$" + +"% "Document Header: +" title +syn region sisu_header_content contains=sisu_error,sisu_comment,sisu_break,sisu_link,sisu_sub_header_title matchgroup=sisu_header start="^[@]title:[+-]\?\(\s\|\n\)"rs=e-1 end="\n$" +" creator +syn region sisu_header_content contains=sisu_error,sisu_comment,sisu_break,sisu_link,sisu_sub_header_creator matchgroup=sisu_header start="^[@]creator:[+-]\?\(\s\|\n\)"rs=e-1 end="\n$" +" dates +syn region sisu_header_content contains=sisu_error,sisu_comment,sisu_break,sisu_link,sisu_sub_header_date matchgroup=sisu_header start="^[@]date:[+-]\?\(\s\|\n\)"rs=e-1 end="\n$" +" publisher +syn region sisu_header_content contains=sisu_error,sisu_comment,sisu_break,sisu_link,sisu_sub_header_publisher matchgroup=sisu_header start="^[@]publisher:[+-]\?\(\s\|\n\)"rs=e-1 end="\n$" +" rights +syn region sisu_header_content contains=sisu_error,sisu_comment,sisu_break,sisu_link,sisu_sub_header_rights matchgroup=sisu_header start="^[@]rights:[+-]\?\(\s\|\n\)"rs=e-1 end="\n$" +" classify document +syn region sisu_header_content contains=sisu_error,sisu_comment,sisu_break,sisu_link,sisu_sub_header_classify matchgroup=sisu_header start="^[@]classify:[+-]\?\(\s\|\n\)"rs=e-1 end="\n$" +" identifier document +syn region sisu_header_content contains=sisu_error,sisu_comment,sisu_break,sisu_link,sisu_sub_header_identifier matchgroup=sisu_header start="^[@]identifier:[+-]\?\(\s\|\n\)"rs=e-1 end="\n$" +" original language (depreciated) +syn region sisu_header_content contains=sisu_error,sisu_comment,sisu_break,sisu_link,sisu_sub_header_original matchgroup=sisu_header start="^[@]original:[+-]\?\(\s\|\n\)"rs=e-1 end="\n$" +" notes +syn region sisu_header_content contains=sisu_error,sisu_comment,sisu_break,sisu_link,sisu_sub_header_notes matchgroup=sisu_header start="^[@]notes:[+-]\?\(\s\|\n\)"rs=e-1 end="\n$" +" links of interest +syn region sisu_header_content contains=sisu_error,sisu_comment,sisu_break,sisu_linked,sisu_sub_header_links matchgroup=sisu_header start="^[@]links:[+-]\?\(\s\|\n\)"rs=e-1 end="\n$" +" make, processing instructions +syn region sisu_header_content contains=sisu_error,sisu_comment,sisu_break,sisu_link,sisu_sub_header_make matchgroup=sisu_header start="^[@]make:[+-]\?\(\s\|\n\)"rs=e-1 end="\n$" + +"% "Headings: +syn region sisu_heading contains=sisu_mark_endnote,sisu_content_endnote,sisu_marktail,sisu_strikeout,sisu_number,sisu_bold,sisu_control,sisu_identifier,sisu_ocn,sisu_error,sisu_error_wspace matchgroup=sisu_structure start="^\([1-4]\|:\?[A-D]\)\~\(\S\+\|[^-]\)" end="$" + +"% "Block Group Text: +" table +syn region sisu_content_alt contains=sisu_strikeout,sisu_number,sisu_bold,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_contain start="^table{.\+" end="}table" +" table +syn region sisu_content_alt contains=sisu_strikeout,sisu_number,sisu_bold,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_contain start="^```\s\+table" end="^```\(\s\|$\)" +syn region sisu_content_alt contains=sisu_strikeout,sisu_number,sisu_bold,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_contain start="^'''\s\+table" end="^'''\(\s\|$\)" +syn region sisu_content_alt contains=sisu_strikeout,sisu_number,sisu_bold,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_contain start="^{\(t\|table\)\(\~h\)\?\(\sc[0-9]\+;\)\?[0-9; ]*}" end="\n$" +" block, group, poem, alt +syn region sisu_content_alt contains=sisu_mark_endnote,sisu_content_endnote,sisu_link,sisu_mark,sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_contain start="^\z(block\|group\|poem\|alt\){" end="^}\z1" +syn region sisu_content_alt contains=sisu_mark_endnote,sisu_content_endnote,sisu_link,sisu_mark,sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_contain start="^```\s\+\(block\|group\|poem\|alt\)" end="^```\(\s\|$\)" +syn region sisu_content_alt contains=sisu_mark_endnote,sisu_content_endnote,sisu_link,sisu_mark,sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_contain start="^'''\s\+\(block\|group\|poem\|alt\)" end="^'''\(\s\|$\)" +" box +syn region sisu_content_alt contains=sisu_mark_endnote,sisu_content_endnote,sisu_link,sisu_mark,sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_contain start="^box\(\.[a-z]\+\)\?{" end="^}box" +syn region sisu_content_alt contains=sisu_mark_endnote,sisu_content_endnote,sisu_link,sisu_mark,sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_contain start="^```\s\+\box\(\.[a-z]\+\)\?" end="^```\(\s\|$\)" +syn region sisu_content_alt contains=sisu_mark_endnote,sisu_content_endnote,sisu_link,sisu_mark,sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_contain start="^'''\s\+\box\(\.[a-z]\+\)\?" end="^'''\(\s\|$\)" +" code +syn region sisu_content_alt contains=sisu_error,@NoSpell matchgroup=sisu_contain start="^code\(\.[a-z][0-9a-z_]\+\)\?{" end="^}code" +syn region sisu_content_alt contains=sisu_error,@NoSpell matchgroup=sisu_contain start="^```\s\+code\(\.[a-z][0-9a-z_]\+\)\?" end="^```\(\s\|$\)" +syn region sisu_content_alt contains=sisu_error,@NoSpell matchgroup=sisu_contain start="^'''\s\+code\(\.[a-z][0-9a-z_]\+\)\?" end="^'''\(\s\|$\)" +" quote +syn region sisu_normal contains=sisu_fontface,sisu_bold,sisu_control,sisu_identifier,sisu_content_endnote,sisu_mark_endnote,sisu_link,sisu_sem_block,sisu_sem_content,sisu_sem_marker_block,sisu_sem_marker,sisu_sem_ex_marker_block,sisu_sem_ex_marker,sisu_linked,sisu_error,sisu_error_wspace matchgroup=sisu_contain start="^```\s\+quote" end="^```\(\s\|$\)" +syn region sisu_normal contains=sisu_fontface,sisu_bold,sisu_control,sisu_identifier,sisu_content_endnote,sisu_mark_endnote,sisu_link,sisu_sem_block,sisu_sem_content,sisu_sem_marker_block,sisu_sem_marker,sisu_sem_ex_marker_block,sisu_sem_ex_marker,sisu_linked,sisu_error,sisu_error_wspace matchgroup=sisu_contain start="^'''\s\+quote" end="^'''\(\s\|$\)" + +"% "Endnotes: +" regular endnote or asterisk or plus sign endnote +syn region sisu_content_endnote contains=sisu_link,sisu_strikeout,sisu_underline,sisu_number,sisu_bold,sisu_control,sisu_identifier,sisu_error,sisu_error_wspace,sisu_mark,sisu_break,sisu_sem_block,sisu_sem_content,sisu_sem_marker_block,sisu_sem_marker,sisu_sem_ex_marker_block,sisu_sem_ex_marker matchgroup=sisu_mark_endnote start="\~{[*+]*" end="}\~" skip="\n" +" numbered asterisk or plus sign endnote +syn region sisu_content_endnote contains=sisu_link,sisu_strikeout,sisu_underline,sisu_number,sisu_bold,sisu_control,sisu_identifier,sisu_error,sisu_error_wspace,sisu_mark,sisu_break,sisu_sem_block,sisu_sem_content,sisu_sem_marker matchgroup=sisu_mark_endnote start="\~\[[*+]*" end="\]\~" skip="\n" +" endnote content marker (for binary content marking) +syn region sisu_content_endnote contains=sisu_strikeout,sisu_number,sisu_bold,sisu_control,sisu_link,sisu_identifier,sisu_error,sisu_error_wspace,sisu_mark,sisu_break matchgroup=sisu_mark_endnote start="\^\~" end="\n$" + +"% "Links And Images: +" image with url link (and possibly footnote of url) +syn region sisu_linked contains=sisu_fontface,sisu_strikeout,sisu_number,sisu_bold,sisu_control,sisu_identifier,sisu_sem_block,sisu_sem_content,sisu_sem_marker_block,sisu_sem_marker,sisu_sem_ex_marker_block,sisu_sem_ex_marker,sisu_sem_block,sisu_error matchgroup=sisu_link start="{\(\~^\s\)\?" end="}\(https\?:/\/\|:\|\.\.\/\|#\)\S\+" oneline +" sisu outputs, short notation +syn region sisu_linked contains=sisu_fontface,sisu_strikeout,sisu_number,sisu_bold,sisu_control,sisu_identifier,sisu_sem_block,sisu_sem_content,sisu_sem_marker_block,sisu_sem_marker,sisu_sem_ex_marker_block,sisu_sem_ex_marker,sisu_sem_block,sisu_error matchgroup=sisu_link start="{\(\~^\s\)\?" end="\[[1-5][sS]*\]}\S\+\.ss[tm]" oneline +" image +syn region sisu_linked contains=sisu_fontface,sisu_strikeout,sisu_number,sisu_bold,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_link start="{" end="}image" oneline + +"% "Some Line Operations: +" bold line +syn region sisu_bold contains=sisu_strikeout,sisu_identifier,sisu_content_endnote,sisu_mark_endnote,sisu_error,sisu_error_wspace matchgroup=sisu_markpara start="^!_ " end=" \\\\\|$" +" indent and bullet paragraph +syn region sisu_normal contains=sisu_fontface,sisu_bold,sisu_control,sisu_identifier,sisu_content_endnote,sisu_mark_endnote,sisu_link,sisu_sem_block,sisu_sem_content,sisu_sem_marker_block,sisu_sem_marker,sisu_sem_ex_marker_block,sisu_sem_ex_marker,sisu_linked,sisu_error,sisu_error_wspace matchgroup=sisu_markpara start="^_\([1-9*]\|[1-9]\*\) " end="$" +" indent and bullet (bold start) paragraph +syn region sisu_bold contains=sisu_fontface,sisu_bold,sisu_control,sisu_identifier,sisu_content_endnote,sisu_mark_endnote,sisu_link,sisu_sem_block,sisu_sem_content,sisu_sem_marker_block,sisu_sem_marker,sisu_sem_ex_marker_block,sisu_sem_ex_marker,sisu_linked,sisu_error,sisu_error_wspace matchgroup=sisu_markpara start="^_\([1-9*]\|[1-9]\*\)!_\? " end=" \\\\\|$" +" hanging indent paragraph [proposed] +syn region sisu_normal contains=sisu_fontface,sisu_bold,sisu_control,sisu_identifier,sisu_content_endnote,sisu_mark_endnote,sisu_link,sisu_sem_block,sisu_sem_content,sisu_sem_marker_block,sisu_sem_marker,sisu_sem_ex_marker_block,sisu_sem_ex_marker,sisu_linked,sisu_error,sisu_error_wspace matchgroup=sisu_markpara start="^_[0-9]\?_[0-9] " end="$" +" hanging indent (bold start/ definition) paragraph [proposed] +syn region sisu_bold contains=sisu_fontface,sisu_bold,sisu_control,sisu_identifier,sisu_content_endnote,sisu_mark_endnote,sisu_link,sisu_sem_block,sisu_sem_content,sisu_sem_marker_block,sisu_sem_marker,sisu_sem_ex_marker_block,sisu_sem_ex_marker,sisu_linked,sisu_error,sisu_error_wspace matchgroup=sisu_markpara start="^_[0-9]\?_[0-9]!_\? " end=" \\\\\|$" +" list numbering +syn region sisu_normal contains=sisu_strikeout,sisu_identifier,sisu_content_endnote,sisu_mark_endnote,sisu_link,sisu_linked,sisu_error,sisu_error_wspace matchgroup=sisu_markpara start="^\(#[ 1]\|_# \)" end="$" + +"% "Font Face Curly Brackets: +"syn region sisu_identifier contains=sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_sem start="\S\+:{" end="}:[^<>,.!?:; ]\+" oneline +" book index: +syn region sisu_index contains=sisu_within_index_ignore,sisu_within_index matchgroup=sisu_index_block start="^={" end="}" +" emphasis: +syn region sisu_bold contains=sisu_strikeout,sisu_number,sisu_bold,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_fontface start="\*{" end="}\*" +" bold: +syn region sisu_bold contains=sisu_strikeout,sisu_number,sisu_bold,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_fontface start="!{" end="}!" +" underscore: +syn region sisu_underline contains=sisu_strikeout,sisu_number,sisu_bold,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_fontface start="_{" end="}_" +" italics: +syn region sisu_identifier contains=sisu_strikeout,sisu_number,sisu_bold,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_fontface start="/{" end="}/" +" added: +syn region sisu_underline contains=sisu_strikeout,sisu_number,sisu_bold,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_fontface start="+{" end="}+" +" superscript: +syn region sisu_identifier contains=sisu_strikeout,sisu_number,sisu_bold,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_fontface start="\^{" end="}\^" +" subscript: +syn region sisu_identifier contains=sisu_strikeout,sisu_number,sisu_bold,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_fontface start=",{" end="}," +" monospace: +syn region sisu_identifier contains=sisu_strikeout,sisu_number,sisu_bold,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_fontface start="#{" end="}#" +" strikethrough: +syn region sisu_strikeout contains=sisu_error matchgroup=sisu_fontface start="-{" end="}-" + +"% "Single Words Bold Italicise Etc: (depreciated) +syn region sisu_bold contains=sisu_error matchgroup=sisu_bold start="\([ (]\|^\)\*[^\|{\n\~\\]"hs=e-1 end="\*"he=e-0 skip="[a-zA-Z0-9']" oneline +syn region sisu_identifier contains=sisu_error matchgroup=sisu_content_alt start="\([ ]\|^\)/[^{ \|\n\\]"hs=e-1 end="/\[ \.\]" skip="[a-zA-Z0-9']" oneline +"misc +syn region sisu_identifier contains=sisu_error matchgroup=sisu_fontface start="\^[^ {\|\n\\]"rs=s+1 end="\^[ ,.;:'})\\\n]" skip="[a-zA-Z0-9']" oneline + +"% "Expensive Mode: +if !exists("sisu_no_expensive") +else " not Expensive + syn region sisu_content_alt matchgroup=sisu_control start="^\s*def\s" matchgroup=NONE end="[?!]\|\>" skip="\.\|\(::\)" oneline +endif " Expensive? + +"% "Headers And Headings: (Document Instructions) +syn match sisu_control contains=sisu_error,sisu_error_wspace "4\~! \S\+" +syn region sisu_markpara contains=sisu_error,sisu_error_wspace start="^=begin" end="^=end.*$" + +"% "Errors: +syn match sisu_error_wspace contains=sisu_error_wspace "^\s\+[^:]" +syn match sisu_error_wspace contains=sisu_error_wspace "\s\s\+" +syn match sisu_error_wspace contains=sisu_error_wspace "\s\+$" +syn match sisu_error contains=sisu_error_wspace "\t\+" +syn match sisu_error contains=sisu_error,sisu_error_wspace "\([^ (][_\\]\||[^ (}]\)https\?:\S\+" +syn match sisu_error contains=sisu_error "_\?https\?:\S\+[}><]" +syn match sisu_error contains=sisu_error "\([!*/_\+,^]\){\([^(\}\1)]\)\{-}\n$" +syn match sisu_error contains=sisu_error "^[\~]{[^{]\{-}\n$" +syn match sisu_error contains=sisu_error "\s\+.{{" +syn match sisu_error contains=sisu_error "^\~\s*$" +syn match sisu_error contains=sisu_error "^0\~.*" +syn match sisu_error contains=sisu_error "^[1-9]\~\s*$" +syn match sisu_error contains=sisu_error "^[1-9]\~\S\+\s*$" +syn match sisu_error contains=sisu_error "[^{]\~\^[^ \)]" +syn match sisu_error contains=sisu_error "\~\^\s\+\.\s*" +syn match sisu_error contains=sisu_error "{\~^\S\+" +syn match sisu_error contains=sisu_error "[_/\*!^]{[ .,:;?><]*}[_/\*!^]" +syn match sisu_error contains=sisu_error "[^ (\"'(\[][_/\*!]{\|}[_/\*!][a-zA-Z0-9)\]\"']" +syn match sisu_error contains=sisu_error "<dir>" +"errors for filetype sisu, though not error in 'metaverse': +syn match sisu_error contains=sisu_error,sisu_match,sisu_strikeout,sisu_contain,sisu_content_alt,sisu_mark,sisu_break,sisu_number "<[a-zA-Z\/]\+>" +syn match sisu_error "/\?<\([biu]\)>[^(</\1>)]\{-}\n$" + +"% "Error Exceptions: +syn match sisu_control "\n$" "contains=ALL +"syn match sisu_control " //" +syn match sisu_error "%{" +syn match sisu_error "<br>_\?https\?:\S\+\|_\?https\?:\S\+<br>" +syn match sisu_error "[><]_\?https\?:\S\+\|_\?https\?:\S\+[><]" +syn match sisu_comment "^%\{1,2\}.\+" + +"% "Definitions Default Highlighting: +hi def link sisu_normal Normal +hi def link sisu_bold Statement +hi def link sisu_header PreProc +hi def link sisu_header_content Normal +hi def link sisu_sub_header_title Statement +hi def link sisu_sub_header_creator Statement +hi def link sisu_sub_header_date Statement +hi def link sisu_sub_header_publisher Statement +hi def link sisu_sub_header_rights Statement +hi def link sisu_sub_header_classify Statement +hi def link sisu_sub_header_identifier Statement +hi def link sisu_sub_header_original Statement +hi def link sisu_sub_header_links Statement +hi def link sisu_sub_header_notes Statement +hi def link sisu_sub_header_make Statement +hi def link sisu_heading Title +hi def link sisu_structure Operator +hi def link sisu_contain Include +hi def link sisu_mark_endnote Delimiter +hi def link sisu_require NonText +hi def link sisu_link NonText +hi def link sisu_linked String +hi def link sisu_fontface Delimiter +hi def link sisu_strikeout DiffDelete +hi def link sisu_content_alt Special +hi def link sisu_sem_content SpecialKey +hi def link sisu_sem_block Special +hi def link sisu_sem_marker Visual +"hi def link sisu_sem_marker Structure +hi def link sisu_sem_marker_block MatchParen +hi def link sisu_sem_ex_marker FoldColumn +hi def link sisu_sem_ex_marker_block Folded +hi def link sisu_sem_ex_content Comment +"hi def link sisu_sem_ex_content SpecialKey +hi def link sisu_sem_ex_block Comment +hi def link sisu_index SpecialKey +hi def link sisu_index_block Visual +hi def link sisu_content_endnote Special +hi def link sisu_control Delimiter +hi def link sisu_within_index Delimiter +hi def link sisu_within_index_ignore SpecialKey +hi def link sisu_ocn Include +hi def link sisu_number Number +hi def link sisu_identifier Function +hi def link sisu_underline Underlined +hi def link sisu_markpara Include +hi def link sisu_marktail Include +hi def link sisu_mark Identifier +hi def link sisu_break Structure +hi def link sisu_html Type +hi def link sisu_action Identifier +hi def link sisu_comment Comment +hi def link sisu_error_sem_marker Error +hi def link sisu_error_wspace Error +hi def link sisu_error Error +let b:current_syntax = "sisu" +let &cpo = s:cpo_save +unlet s:cpo_save diff --git a/sundry/editor-syntax-etc/vim/syntax/sisu.vim b/sundry/editor-syntax-etc/vim/syntax/sisu.vim new file mode 100644 index 0000000..21fd3bc --- /dev/null +++ b/sundry/editor-syntax-etc/vim/syntax/sisu.vim @@ -0,0 +1,277 @@ +" SiSU Vim syntax file +" SiSU Maintainer: Ralph Amissah <ralph.amissah@gmail.com> +" SiSU Markup: SiSU (sisu-5.6.7) +" Last Change: 2017-06-22 +" URL: <https://git.sisudoc.org/projects/sisudoc-spine/tree/sundry/editor-syntax-etc/vim/syntax/sisu.vim> +" <https://sisudoc.org/> +"(originally looked at Ruby Vim by Mirko Nasato) + +if version < 600 + syntax clear +elseif exists("b:current_syntax") + finish +else +endif +let s:cpo_save = &cpo +set cpo&vim + +"% "Errors: +syn match sisu_error contains=sisu_link,sisu_error_wspace "<![^ei]\S\+!>" + +"% "Markers Identifiers: +if !exists("sisu_no_identifiers") + syn match sisu_mark_endnote "\~^" + syn match sisu_break contains=@NoSpell " \\\\\( \|$\)\|<br>\|<br />" + syn match sisu_control contains=@NoSpell "^\(-\\\\-\|=\\\\=\|-\.\.-\|<:p[bn]>\)\s*$" + syn match sisu_control contains=@NoSpell "^<:\(bo\|---\)>\s*$" + syn match sisu_marktail contains=@NoSpell "^--[+~-]#\s*$" + syn match sisu_marktail "[~-]#" + syn match sisu_control "\"" + syn match sisu_underline "\(^\| \)_[a-zA-Z0-9]\+_\([ .,]\|$\)" + syn match sisu_number contains=@NoSpell "[0-9a-f]\{32\}\|[0-9a-f]\{64\}" + syn match sisu_link contains=@NoSpell "\(_\?https\?://\|\.\.\/\)\S\+" + syn match sisu_link " \*\~\S\+" + syn match sisu_require contains=@NoSpell "^<<\s*[a-zA-Z0-9^./_-]\+\.ss[it]$" + syn match sisu_structure "^:A\~$" + +"% "Document Sub Headers: + syn match sisu_sub_header_title "^\s\+:\(subtitle\|short\|edition\|language\|lang_char\|note\):\s" "group=sisu_header_content + syn match sisu_sub_header_creator "^\s\+:\(author\|editor\|contributor\|illustrator\|photographer\|translator\|digitized_by\|prepared_by\|audio\|video\):\s" " &hon &institution + syn match sisu_sub_header_rights "^\s\+:\(copyright\|text\|translation\|illustrations\|photographs\|preparation\|digitization\|audio\|video\|license\|all\):\s" " access_rights license + syn match sisu_sub_header_classify "^\s\+:\(topic_register\|keywords\|subject\|dewey\|loc\):\s" + syn match sisu_sub_header_identifier "^\s\+:\(oclc\|isbn\):\s" + syn match sisu_sub_header_date "^\s\+:\(added_to_site\|available\|created\|issued\|modified\|published\|valid\|translated\|original_publication\):\s" + syn match sisu_sub_header_original "^\s\+:\(publisher\|date\|language\|lang_char\|institution\|nationality\|source\):\s" + syn match sisu_sub_header_make "^\s\+:\(headings\|num_top\|breaks\|language\|italics\|bold\|emphasis\|substitute\|omit\|plaintext_wrap\|texpdf_font_mono\|texpdf_font\|stamp\|promo\|ad\|manpage\|home_button_text\|home_button_image\|cover_image\|footer\):\s" + syn match sisu_sub_header_notes "^\s\+:\(description\|abstract\|comment\|coverage\|relation\|source\|history\|type\|format\|prefix\|prefix_[ab]\|suffix\):\s" + syn match sisu_within_index_ignore "\S\+[:;]\(\s\+\|$\)" + syn match sisu_within_index "[:|;]\|+\d\+" + +"% "semantic markers: (ignore) + syn match sisu_sem_marker ";{\|};[a-z._]*[a-z]" + syn match sisu_sem_marker_block "\([a-z][a-z._]*\|\):{\|}:[a-z._]*[a-z]" + syn match sisu_sem_ex_marker ";\[\|\];[a-z._]*[a-z]" + syn match sisu_sem_ex_marker_block "\([a-z][a-z._]*\|\):\[\|\]:[a-z._]*[a-z]" + syn match sisu_sem_block contains=sisu_error,sisu_error_wspace,sisu_content_alt,sisu_link,sisu_linked,sisu_break,sisu_sem_block,sisu_sem_content,sisu_sem_marker_block,sisu_sem_marker,sisu_sem_ex_marker_block,sisu_sem_ex_marker,sisu_mark_endnote,sisu_content_endnote "\([a-z]*\):{[^}].\{-}}:\1" + syn match sisu_sem_content contains=sisu_error,sisu_error_wspace,sisu_content_alt,sisu_link,sisu_linked,sisu_break,sisu_sem_marker_block,sisu_sem_marker,sisu_sem_ex_marker_block,sisu_sem_ex_marker ";{[^}].\{-}};[a-z]\+" + syn match sisu_sem_ex_block contains=sisu_error,sisu_error_wspace,sisu_content_alt,sisu_link,sisu_linked,sisu_break,sisu_sem_block,sisu_sem_content,sisu_sem_marker_block,sisu_sem_marker,sisu_sem_ex_marker_block,sisu_sem_ex_marker,sisu_mark_endnote,sisu_content_endnote "\([a-z]*\):\[[^}].\{-}\]:\1" + syn match sisu_sem_ex_content contains=sisu_error,sisu_error_wspace,sisu_content_alt,sisu_link,sisu_linked,sisu_break,sisu_sem_marker_block,sisu_sem_marker,sisu_sem_ex_marker_block,sisu_sem_ex_marker ";\[[^}].\{-}\];[a-z]\+" +endif + +"% "URLs Numbers And ASCII Codes: +syn match sisu_number "\<\(0x\x\+\|0b[01]\+\|0\o\+\|0\.\d\+\|0\|[1-9][\.0-9_]*\)\>" +syn match sisu_number "?\(\\M-\\C-\|\\c\|\\C-\|\\M-\)\=\(\\\o\{3}\|\\x\x\{2}\|\\\=\w\)" + +"% "Tuned Error: (is error if not already matched) +syn match sisu_error contains=sisu_error "[\~/\*!_]{\|}[\~/\*!_]" +syn match sisu_error contains=sisu_error "<a href\|</a>]" + +"% "Simple Paired Enclosed Markup: +"url/link +syn region sisu_link contains=sisu_error,sisu_error_wspace matchgroup=sisu_action start="^<<\s*|[a-zA-Z0-9^._-]\+|@|[a-zA-Z0-9^._-]\+|"rs=s+2 end="$" + +"% "Document Header: +" title +syn region sisu_header_content contains=sisu_error,sisu_comment,sisu_break,sisu_link,sisu_sub_header_title matchgroup=sisu_header start="^[@]title:[+-]\?\(\s\|\n\)"rs=e-1 end="\n$" +" creator +syn region sisu_header_content contains=sisu_error,sisu_comment,sisu_break,sisu_link,sisu_sub_header_creator matchgroup=sisu_header start="^[@]creator:[+-]\?\(\s\|\n\)"rs=e-1 end="\n$" +" dates +syn region sisu_header_content contains=sisu_error,sisu_comment,sisu_break,sisu_link,sisu_sub_header_date matchgroup=sisu_header start="^[@]date:[+-]\?\(\s\|\n\)"rs=e-1 end="\n$" +" publisher +syn region sisu_header_content contains=sisu_error,sisu_comment,sisu_break,sisu_link,sisu_sub_header_publisher matchgroup=sisu_header start="^[@]publisher:[+-]\?\(\s\|\n\)"rs=e-1 end="\n$" +" rights +syn region sisu_header_content contains=sisu_error,sisu_comment,sisu_break,sisu_link,sisu_sub_header_rights matchgroup=sisu_header start="^[@]rights:[+-]\?\(\s\|\n\)"rs=e-1 end="\n$" +" classify document +syn region sisu_header_content contains=sisu_error,sisu_comment,sisu_break,sisu_link,sisu_sub_header_classify matchgroup=sisu_header start="^[@]classify:[+-]\?\(\s\|\n\)"rs=e-1 end="\n$" +" identifier document +syn region sisu_header_content contains=sisu_error,sisu_comment,sisu_break,sisu_link,sisu_sub_header_identifier matchgroup=sisu_header start="^[@]identifier:[+-]\?\(\s\|\n\)"rs=e-1 end="\n$" +" original language (depreciated) +syn region sisu_header_content contains=sisu_error,sisu_comment,sisu_break,sisu_link,sisu_sub_header_original matchgroup=sisu_header start="^[@]original:[+-]\?\(\s\|\n\)"rs=e-1 end="\n$" +" notes +syn region sisu_header_content contains=sisu_error,sisu_comment,sisu_break,sisu_link,sisu_sub_header_notes matchgroup=sisu_header start="^[@]notes:[+-]\?\(\s\|\n\)"rs=e-1 end="\n$" +" links of interest +syn region sisu_header_content contains=sisu_error,sisu_comment,sisu_break,sisu_linked,sisu_sub_header_links matchgroup=sisu_header start="^[@]links:[+-]\?\(\s\|\n\)"rs=e-1 end="\n$" +" make, processing instructions +syn region sisu_header_content contains=sisu_error,sisu_comment,sisu_break,sisu_link,sisu_sub_header_make matchgroup=sisu_header start="^[@]make:[+-]\?\(\s\|\n\)"rs=e-1 end="\n$" + +"% "Headings: +syn region sisu_heading contains=sisu_mark_endnote,sisu_content_endnote,sisu_marktail,sisu_strikeout,sisu_number,sisu_bold,sisu_control,sisu_identifier,sisu_ocn,sisu_error,sisu_error_wspace matchgroup=sisu_structure start="^\([1-4]\|:\?[A-D]\)\~\(\S\+\|[^-]\)" end="$" + +"% "Block Group Text: +" table +syn region sisu_content_alt contains=sisu_strikeout,sisu_number,sisu_bold,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_contain start="^table{.\+" end="}table" +" table +syn region sisu_content_alt contains=sisu_strikeout,sisu_number,sisu_bold,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_contain start="^```\s\+table" end="^```\(\s\|$\)" +syn region sisu_content_alt contains=sisu_strikeout,sisu_number,sisu_bold,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_contain start="^{\(t\|table\)\(\~h\)\?\(\sc[0-9]\+;\)\?[0-9; ]*}" end="\n$" +" block, group, poem, alt +syn region sisu_content_alt contains=sisu_mark_endnote,sisu_content_endnote,sisu_link,sisu_mark,sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_contain start="^\z(block\|group\|poem\|alt\){" end="^}\z1" +syn region sisu_content_alt contains=sisu_mark_endnote,sisu_content_endnote,sisu_link,sisu_mark,sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_contain start="^```\s\+\(block\|group\|poem\|alt\)" end="^```\(\s\|$\)" +" box +syn region sisu_content_alt contains=sisu_mark_endnote,sisu_content_endnote,sisu_link,sisu_mark,sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_contain start="^box\(\.[a-z]\+\)\?{" end="^}box" +syn region sisu_content_alt contains=sisu_mark_endnote,sisu_content_endnote,sisu_link,sisu_mark,sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_contain start="^```\s\+\box\(\.[a-z]\+\)\?" end="^```\(\s\|$\)" +" code +syn region sisu_content_alt contains=sisu_error,@NoSpell matchgroup=sisu_contain start="^code\(\.[a-z][0-9a-z_]\+\)\?{" end="^}code" +syn region sisu_content_alt contains=sisu_error,@NoSpell matchgroup=sisu_contain start="^```\s\+code\(\.[a-z][0-9a-z_]\+\)\?" end="^```\(\s\|$\)" +" quote +syn region sisu_normal contains=sisu_fontface,sisu_bold,sisu_control,sisu_identifier,sisu_content_endnote,sisu_mark_endnote,sisu_link,sisu_sem_block,sisu_sem_content,sisu_sem_marker_block,sisu_sem_marker,sisu_sem_ex_marker_block,sisu_sem_ex_marker,sisu_linked,sisu_error,sisu_error_wspace matchgroup=sisu_contain start="^```\s\+quote" end="^```\(\s\|$\)" + +"% "Endnotes: +" regular endnote or asterisk or plus sign endnote +syn region sisu_content_endnote contains=sisu_link,sisu_strikeout,sisu_underline,sisu_number,sisu_bold,sisu_control,sisu_identifier,sisu_error,sisu_error_wspace,sisu_mark,sisu_break,sisu_sem_block,sisu_sem_content,sisu_sem_marker_block,sisu_sem_marker,sisu_sem_ex_marker_block,sisu_sem_ex_marker matchgroup=sisu_mark_endnote start="\~{[*+]*" end="}\~" skip="\n" +" numbered asterisk or plus sign endnote +syn region sisu_content_endnote contains=sisu_link,sisu_strikeout,sisu_underline,sisu_number,sisu_bold,sisu_control,sisu_identifier,sisu_error,sisu_error_wspace,sisu_mark,sisu_break,sisu_sem_block,sisu_sem_content,sisu_sem_marker matchgroup=sisu_mark_endnote start="\~\[[*+]*" end="\]\~" skip="\n" +" endnote content marker (for binary content marking) +syn region sisu_content_endnote contains=sisu_strikeout,sisu_number,sisu_bold,sisu_control,sisu_link,sisu_identifier,sisu_error,sisu_error_wspace,sisu_mark,sisu_break matchgroup=sisu_mark_endnote start="\^\~" end="\n$" + +"% "Links And Images: +" image with url link (and possibly footnote of url) +syn region sisu_linked contains=sisu_fontface,sisu_strikeout,sisu_number,sisu_bold,sisu_control,sisu_identifier,sisu_sem_block,sisu_sem_content,sisu_sem_marker_block,sisu_sem_marker,sisu_sem_ex_marker_block,sisu_sem_ex_marker,sisu_sem_block,sisu_error matchgroup=sisu_link start="{\(\~^\s\)\?" end="}\(https\?:/\/\|:\|\.\.\/\|#\)\S\+" oneline +" sisu outputs, short notation +syn region sisu_linked contains=sisu_fontface,sisu_strikeout,sisu_number,sisu_bold,sisu_control,sisu_identifier,sisu_sem_block,sisu_sem_content,sisu_sem_marker_block,sisu_sem_marker,sisu_sem_ex_marker_block,sisu_sem_ex_marker,sisu_sem_block,sisu_error matchgroup=sisu_link start="{\(\~^\s\)\?" end="\[[1-5][sS]*\]}\S\+\.ss[tm]" oneline +" image +syn region sisu_linked contains=sisu_fontface,sisu_strikeout,sisu_number,sisu_bold,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_link start="{" end="}image" oneline + +"% "Some Line Operations: +" bold line +syn region sisu_bold contains=sisu_strikeout,sisu_identifier,sisu_content_endnote,sisu_mark_endnote,sisu_error,sisu_error_wspace matchgroup=sisu_markpara start="^!_ " end=" \\\\\|$" +" indent and bullet paragraph +syn region sisu_normal contains=sisu_fontface,sisu_bold,sisu_control,sisu_identifier,sisu_content_endnote,sisu_mark_endnote,sisu_link,sisu_sem_block,sisu_sem_content,sisu_sem_marker_block,sisu_sem_marker,sisu_sem_ex_marker_block,sisu_sem_ex_marker,sisu_linked,sisu_error,sisu_error_wspace matchgroup=sisu_markpara start="^_\([1-9*]\|[1-9]\*\) " end="$" +" indent and bullet (bold start) paragraph +syn region sisu_bold contains=sisu_fontface,sisu_bold,sisu_control,sisu_identifier,sisu_content_endnote,sisu_mark_endnote,sisu_link,sisu_sem_block,sisu_sem_content,sisu_sem_marker_block,sisu_sem_marker,sisu_sem_ex_marker_block,sisu_sem_ex_marker,sisu_linked,sisu_error,sisu_error_wspace matchgroup=sisu_markpara start="^_\([1-9*]\|[1-9]\*\)!_\? " end=" \\\\\|$" +" hanging indent paragraph [proposed] +syn region sisu_normal contains=sisu_fontface,sisu_bold,sisu_control,sisu_identifier,sisu_content_endnote,sisu_mark_endnote,sisu_link,sisu_sem_block,sisu_sem_content,sisu_sem_marker_block,sisu_sem_marker,sisu_sem_ex_marker_block,sisu_sem_ex_marker,sisu_linked,sisu_error,sisu_error_wspace matchgroup=sisu_markpara start="^_[0-9]\?_[0-9] " end="$" +" hanging indent (bold start/ definition) paragraph [proposed] +syn region sisu_bold contains=sisu_fontface,sisu_bold,sisu_control,sisu_identifier,sisu_content_endnote,sisu_mark_endnote,sisu_link,sisu_sem_block,sisu_sem_content,sisu_sem_marker_block,sisu_sem_marker,sisu_sem_ex_marker_block,sisu_sem_ex_marker,sisu_linked,sisu_error,sisu_error_wspace matchgroup=sisu_markpara start="^_[0-9]\?_[0-9]!_\? " end=" \\\\\|$" +" list numbering +syn region sisu_normal contains=sisu_strikeout,sisu_identifier,sisu_content_endnote,sisu_mark_endnote,sisu_link,sisu_linked,sisu_error,sisu_error_wspace matchgroup=sisu_markpara start="^\(#[ 1]\|_# \)" end="$" + +"% "Font Face Curly Brackets: +"syn region sisu_identifier contains=sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_sem start="\S\+:{" end="}:[^<>,.!?:; ]\+" oneline +" book index: +syn region sisu_index contains=sisu_within_index_ignore,sisu_within_index matchgroup=sisu_index_block start="^={" end="}" +" emphasis: +syn region sisu_bold contains=sisu_strikeout,sisu_number,sisu_bold,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_fontface start="\*{" end="}\*" +" bold: +syn region sisu_bold contains=sisu_strikeout,sisu_number,sisu_bold,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_fontface start="!{" end="}!" +" underscore: +syn region sisu_underline contains=sisu_strikeout,sisu_number,sisu_bold,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_fontface start="_{" end="}_" +" italics: +syn region sisu_identifier contains=sisu_strikeout,sisu_number,sisu_bold,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_fontface start="/{" end="}/" +" added: +syn region sisu_underline contains=sisu_strikeout,sisu_number,sisu_bold,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_fontface start="+{" end="}+" +" superscript: +syn region sisu_identifier contains=sisu_strikeout,sisu_number,sisu_bold,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_fontface start="\^{" end="}\^" +" subscript: +syn region sisu_identifier contains=sisu_strikeout,sisu_number,sisu_bold,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_fontface start=",{" end="}," +" monospace: +syn region sisu_identifier contains=sisu_strikeout,sisu_number,sisu_bold,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_fontface start="#{" end="}#" +" strikethrough: +syn region sisu_strikeout contains=sisu_error matchgroup=sisu_fontface start="-{" end="}-" + +"% "Single Words Bold Italicise Etc: (depreciated) +syn region sisu_bold contains=sisu_error matchgroup=sisu_bold start="\([ (]\|^\)\*[^\|{\n\~\\]"hs=e-1 end="\*"he=e-0 skip="[a-zA-Z0-9']" oneline +syn region sisu_identifier contains=sisu_error matchgroup=sisu_content_alt start="\([ ]\|^\)/[^{ \|\n\\]"hs=e-1 end="/\[ \.\]" skip="[a-zA-Z0-9']" oneline +"misc +syn region sisu_identifier contains=sisu_error matchgroup=sisu_fontface start="\^[^ {\|\n\\]"rs=s+1 end="\^[ ,.;:'})\\\n]" skip="[a-zA-Z0-9']" oneline + +"% "Expensive Mode: +if !exists("sisu_no_expensive") +else " not Expensive + syn region sisu_content_alt matchgroup=sisu_control start="^\s*def\s" matchgroup=NONE end="[?!]\|\>" skip="\.\|\(::\)" oneline +endif " Expensive? + +"% "Headers And Headings: (Document Instructions) +syn match sisu_control contains=sisu_error,sisu_error_wspace "4\~! \S\+" +syn region sisu_markpara contains=sisu_error,sisu_error_wspace start="^=begin" end="^=end.*$" + +"% "Errors: +syn match sisu_error_wspace contains=sisu_error_wspace "^\s\+[^:]" +syn match sisu_error_wspace contains=sisu_error_wspace "\s\s\+" +syn match sisu_error_wspace contains=sisu_error_wspace "\s\+$" +syn match sisu_error contains=sisu_error_wspace "\t\+" +syn match sisu_error contains=sisu_error,sisu_error_wspace "\([^ (][_\\]\||[^ (}]\)https\?:\S\+" +syn match sisu_error contains=sisu_error "_\?https\?:\S\+[}><]" +syn match sisu_error contains=sisu_error "\([!*/_\+,^]\){\([^(\}\1)]\)\{-}\n$" +syn match sisu_error contains=sisu_error "^[\~]{[^{]\{-}\n$" +syn match sisu_error contains=sisu_error "\s\+.{{" +syn match sisu_error contains=sisu_error "^\~\s*$" +syn match sisu_error contains=sisu_error "^0\~.*" +syn match sisu_error contains=sisu_error "^[1-9]\~\s*$" +syn match sisu_error contains=sisu_error "^[1-9]\~\S\+\s*$" +syn match sisu_error contains=sisu_error "[^{]\~\^[^ \)]" +syn match sisu_error contains=sisu_error "\~\^\s\+\.\s*" +syn match sisu_error contains=sisu_error "{\~^\S\+" +syn match sisu_error contains=sisu_error "[_/\*!^]{[ .,:;?><]*}[_/\*!^]" +syn match sisu_error contains=sisu_error "[^ (\"'(\[][_/\*!]{\|}[_/\*!][a-zA-Z0-9)\]\"']" +syn match sisu_error contains=sisu_error "<dir>" +"errors for filetype sisu, though not error in 'metaverse': +syn match sisu_error contains=sisu_error,sisu_match,sisu_strikeout,sisu_contain,sisu_content_alt,sisu_mark,sisu_break,sisu_number "<[a-zA-Z\/]\+>" +syn match sisu_error "/\?<\([biu]\)>[^(</\1>)]\{-}\n$" + +"% "Error Exceptions: +syn match sisu_control "\n$" "contains=ALL +"syn match sisu_control " //" +syn match sisu_error "%{" +syn match sisu_error "<br>_\?https\?:\S\+\|_\?https\?:\S\+<br>" +syn match sisu_error "[><]_\?https\?:\S\+\|_\?https\?:\S\+[><]" +syn match sisu_comment "^%\{1,2\}.\+" + +"% "Definitions Default Highlighting: +hi def link sisu_normal Normal +hi def link sisu_bold Statement +hi def link sisu_header PreProc +hi def link sisu_header_content Normal +hi def link sisu_sub_header_title Statement +hi def link sisu_sub_header_creator Statement +hi def link sisu_sub_header_date Statement +hi def link sisu_sub_header_publisher Statement +hi def link sisu_sub_header_rights Statement +hi def link sisu_sub_header_classify Statement +hi def link sisu_sub_header_identifier Statement +hi def link sisu_sub_header_original Statement +hi def link sisu_sub_header_links Statement +hi def link sisu_sub_header_notes Statement +hi def link sisu_sub_header_make Statement +hi def link sisu_heading Title +hi def link sisu_structure Operator +hi def link sisu_contain Include +hi def link sisu_mark_endnote Delimiter +hi def link sisu_require NonText +hi def link sisu_link NonText +hi def link sisu_linked String +hi def link sisu_fontface Delimiter +hi def link sisu_strikeout DiffDelete +hi def link sisu_content_alt Special +hi def link sisu_sem_content SpecialKey +hi def link sisu_sem_block Special +hi def link sisu_sem_marker Visual +"hi def link sisu_sem_marker Structure +hi def link sisu_sem_marker_block MatchParen +hi def link sisu_sem_ex_marker FoldColumn +hi def link sisu_sem_ex_marker_block Folded +hi def link sisu_sem_ex_content Comment +"hi def link sisu_sem_ex_content SpecialKey +hi def link sisu_sem_ex_block Comment +hi def link sisu_index SpecialKey +hi def link sisu_index_block Visual +hi def link sisu_content_endnote Special +hi def link sisu_control Delimiter +hi def link sisu_within_index Delimiter +hi def link sisu_within_index_ignore SpecialKey +hi def link sisu_ocn Include +hi def link sisu_number Number +hi def link sisu_identifier Function +hi def link sisu_underline Underlined +hi def link sisu_markpara Include +hi def link sisu_marktail Include +hi def link sisu_mark Identifier +hi def link sisu_break Structure +hi def link sisu_html Type +hi def link sisu_action Identifier +hi def link sisu_comment Comment +hi def link sisu_error_sem_marker Error +hi def link sisu_error_wspace Error +hi def link sisu_error Error +let b:current_syntax = "sisu" +let &cpo = s:cpo_save +unlet s:cpo_save diff --git a/sundry/editor-syntax-etc/vim/vim-sisu.yaml b/sundry/editor-syntax-etc/vim/vim-sisu.yaml new file mode 100644 index 0000000..ca665bc --- /dev/null +++ b/sundry/editor-syntax-etc/vim/vim-sisu.yaml @@ -0,0 +1,7 @@ +#vim-addons: debian vim-addon-manager +addon: sisu +description: SiSU documents - structuring, publishing in multiple formats and search +basedir: /usr/share/vim-scripts/ +files: + - ftplugin/sisu.vim + - syntax/sisu.vim diff --git a/views/version.txt b/views/version.txt index fecec3f..9782cfa 100644 --- a/views/version.txt +++ b/views/version.txt @@ -4,7 +4,7 @@ struct Version { int minor; int patch; } -enum _ver = Version(0, 17, 0); +enum _ver = Version(0, 18, 0); version (Posix) { version (DigitalMars) { } else version (LDC) { |