@kensio/pinyinjs 1.7.4 → 1.7.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +128 -123
- package/data/full.entries +2595 -2595
- package/data/manifest.json +5 -5
- package/data/script.map +66 -3
- package/dist/accuracy/score-case.d.ts +23 -0
- package/dist/accuracy/score-case.d.ts.map +1 -0
- package/dist/accuracy/score-case.js +63 -0
- package/dist/accuracy/score-case.js.map +1 -0
- package/dist/accuracy/score.d.ts +1 -8
- package/dist/accuracy/score.d.ts.map +1 -1
- package/dist/accuracy/score.js +1 -55
- package/dist/accuracy/score.js.map +1 -1
- package/dist/cli/arguments.d.ts +4 -290
- package/dist/cli/arguments.d.ts.map +1 -1
- package/dist/cli/arguments.js +5 -357
- package/dist/cli/arguments.js.map +1 -1
- package/dist/cli/check-command.d.ts +9 -0
- package/dist/cli/check-command.d.ts.map +1 -0
- package/dist/cli/check-command.js +95 -0
- package/dist/cli/check-command.js.map +1 -0
- package/dist/cli/cli-input.d.ts +49 -0
- package/dist/cli/cli-input.d.ts.map +1 -0
- package/dist/cli/cli-input.js +31 -0
- package/dist/cli/cli-input.js.map +1 -0
- package/dist/cli/command.d.ts +97 -0
- package/dist/cli/command.d.ts.map +1 -0
- package/dist/cli/command.js +40 -0
- package/dist/cli/command.js.map +1 -0
- package/dist/cli/commands.d.ts +7 -110
- package/dist/cli/commands.d.ts.map +1 -1
- package/dist/cli/commands.js +14 -991
- package/dist/cli/commands.js.map +1 -1
- package/dist/cli/convert-command.d.ts +6 -0
- package/dist/cli/convert-command.d.ts.map +1 -0
- package/dist/cli/convert-command.js +52 -0
- package/dist/cli/convert-command.js.map +1 -0
- package/dist/cli/environment.d.ts +1 -1
- package/dist/cli/environment.d.ts.map +1 -1
- package/dist/cli/explain-command.d.ts +6 -0
- package/dist/cli/explain-command.d.ts.map +1 -0
- package/dist/cli/explain-command.js +40 -0
- package/dist/cli/explain-command.js.map +1 -0
- package/dist/cli/explain-syllable.d.ts +10 -0
- package/dist/cli/explain-syllable.d.ts.map +1 -0
- package/dist/cli/explain-syllable.js +70 -0
- package/dist/cli/explain-syllable.js.map +1 -0
- package/dist/cli/flag-help.d.ts +18 -0
- package/dist/cli/flag-help.d.ts.map +1 -0
- package/dist/cli/flag-help.js +78 -0
- package/dist/cli/flag-help.js.map +1 -0
- package/dist/cli/flag-lists.d.ts +49 -0
- package/dist/cli/flag-lists.d.ts.map +1 -0
- package/dist/cli/flag-lists.js +58 -0
- package/dist/cli/flag-lists.js.map +1 -0
- package/dist/cli/flag-values.d.ts +44 -0
- package/dist/cli/flag-values.d.ts.map +1 -0
- package/dist/cli/flag-values.js +56 -0
- package/dist/cli/flag-values.js.map +1 -0
- package/dist/cli/flags.d.ts +193 -0
- package/dist/cli/flags.d.ts.map +1 -0
- package/dist/cli/flags.js +133 -0
- package/dist/cli/flags.js.map +1 -0
- package/dist/cli/format-options.d.ts +29 -0
- package/dist/cli/format-options.d.ts.map +1 -0
- package/dist/cli/format-options.js +72 -0
- package/dist/cli/format-options.js.map +1 -0
- package/dist/cli/global-help.d.ts +23 -0
- package/dist/cli/global-help.d.ts.map +1 -0
- package/dist/cli/global-help.js +40 -0
- package/dist/cli/global-help.js.map +1 -0
- package/dist/cli/help.d.ts +1 -1
- package/dist/cli/help.d.ts.map +1 -1
- package/dist/cli/help.js +5 -99
- package/dist/cli/help.js.map +1 -1
- package/dist/cli/html-commands.d.ts +13 -0
- package/dist/cli/html-commands.d.ts.map +1 -0
- package/dist/cli/html-commands.js +49 -0
- package/dist/cli/html-commands.js.map +1 -0
- package/dist/cli/info-command.d.ts +7 -0
- package/dist/cli/info-command.d.ts.map +1 -0
- package/dist/cli/info-command.js +39 -0
- package/dist/cli/info-command.js.map +1 -0
- package/dist/cli/lookup-commands.d.ts +10 -0
- package/dist/cli/lookup-commands.d.ts.map +1 -0
- package/dist/cli/lookup-commands.js +101 -0
- package/dist/cli/lookup-commands.js.map +1 -0
- package/dist/cli/match-command.d.ts +11 -0
- package/dist/cli/match-command.d.ts.map +1 -0
- package/dist/cli/match-command.js +76 -0
- package/dist/cli/match-command.js.map +1 -0
- package/dist/cli/number-command.d.ts +12 -0
- package/dist/cli/number-command.d.ts.map +1 -0
- package/dist/cli/number-command.js +89 -0
- package/dist/cli/number-command.js.map +1 -0
- package/dist/cli/options.d.ts +30 -0
- package/dist/cli/options.d.ts.map +1 -0
- package/dist/cli/options.js +54 -0
- package/dist/cli/options.js.map +1 -0
- package/dist/cli/run-command.d.ts +24 -0
- package/dist/cli/run-command.d.ts.map +1 -0
- package/dist/cli/run-command.js +40 -0
- package/dist/cli/run-command.js.map +1 -0
- package/dist/cli/run.d.ts +4 -42
- package/dist/cli/run.d.ts.map +1 -1
- package/dist/cli/run.js +6 -61
- package/dist/cli/run.js.map +1 -1
- package/dist/cli/script-command.d.ts +10 -0
- package/dist/cli/script-command.d.ts.map +1 -0
- package/dist/cli/script-command.js +58 -0
- package/dist/cli/script-command.js.map +1 -0
- package/dist/cli/segment-command.d.ts +11 -0
- package/dist/cli/segment-command.d.ts.map +1 -0
- package/dist/cli/segment-command.js +53 -0
- package/dist/cli/segment-command.js.map +1 -0
- package/dist/cli/slug-command.d.ts +10 -0
- package/dist/cli/slug-command.d.ts.map +1 -0
- package/dist/cli/slug-command.js +28 -0
- package/dist/cli/slug-command.js.map +1 -0
- package/dist/cli/syllable-command.d.ts +14 -0
- package/dist/cli/syllable-command.d.ts.map +1 -0
- package/dist/cli/syllable-command.js +82 -0
- package/dist/cli/syllable-command.js.map +1 -0
- package/dist/cli/system-table.d.ts +12 -0
- package/dist/cli/system-table.d.ts.map +1 -0
- package/dist/cli/system-table.js +48 -0
- package/dist/cli/system-table.js.map +1 -0
- package/dist/cli/systems.d.ts +57 -0
- package/dist/cli/systems.d.ts.map +1 -0
- package/dist/cli/systems.js +27 -0
- package/dist/cli/systems.js.map +1 -0
- package/dist/cli/transcribe-command.d.ts +18 -0
- package/dist/cli/transcribe-command.d.ts.map +1 -0
- package/dist/cli/transcribe-command.js +86 -0
- package/dist/cli/transcribe-command.js.map +1 -0
- package/dist/cli/transcribe-reading.d.ts +15 -0
- package/dist/cli/transcribe-reading.d.ts.map +1 -0
- package/dist/cli/transcribe-reading.js +90 -0
- package/dist/cli/transcribe-reading.js.map +1 -0
- package/dist/cli/transcribe-rows.d.ts +26 -0
- package/dist/cli/transcribe-rows.d.ts.map +1 -0
- package/dist/cli/transcribe-rows.js +30 -0
- package/dist/cli/transcribe-rows.js.map +1 -0
- package/dist/cli/usage-error.d.ts +9 -0
- package/dist/cli/usage-error.d.ts.map +1 -0
- package/dist/cli/usage-error.js +9 -0
- package/dist/cli/usage-error.js.map +1 -0
- package/dist/decode/alternatives.d.ts +16 -0
- package/dist/decode/alternatives.d.ts.map +1 -0
- package/dist/decode/alternatives.js +31 -0
- package/dist/decode/alternatives.js.map +1 -0
- package/dist/decode/chang-context.d.ts +27 -0
- package/dist/decode/chang-context.d.ts.map +1 -0
- package/dist/decode/chang-context.js +66 -0
- package/dist/decode/chang-context.js.map +1 -0
- package/dist/decode/chang-rule.d.ts +37 -0
- package/dist/decode/chang-rule.d.ts.map +1 -0
- package/dist/decode/chang-rule.js +169 -0
- package/dist/decode/chang-rule.js.map +1 -0
- package/dist/decode/confidence.d.ts +11 -3
- package/dist/decode/confidence.d.ts.map +1 -1
- package/dist/decode/confidence.js +14 -121
- package/dist/decode/confidence.js.map +1 -1
- package/dist/decode/convert-options.d.ts +116 -0
- package/dist/decode/convert-options.d.ts.map +1 -0
- package/dist/decode/convert-options.js +2 -0
- package/dist/decode/convert-options.js.map +1 -0
- package/dist/decode/convert-pipeline.d.ts +18 -0
- package/dist/decode/convert-pipeline.d.ts.map +1 -0
- package/dist/decode/convert-pipeline.js +67 -0
- package/dist/decode/convert-pipeline.js.map +1 -0
- package/dist/decode/convert.d.ts +9 -118
- package/dist/decode/convert.d.ts.map +1 -1
- package/dist/decode/convert.js +5 -453
- package/dist/decode/convert.js.map +1 -1
- package/dist/decode/de-rule.d.ts +54 -0
- package/dist/decode/de-rule.d.ts.map +1 -0
- package/dist/decode/de-rule.js +113 -0
- package/dist/decode/de-rule.js.map +1 -0
- package/dist/decode/decode.d.ts +2 -15
- package/dist/decode/decode.d.ts.map +1 -1
- package/dist/decode/decode.js +2 -121
- package/dist/decode/decode.js.map +1 -1
- package/dist/decode/decoders.d.ts +32 -0
- package/dist/decode/decoders.d.ts.map +1 -0
- package/dist/decode/decoders.js +29 -0
- package/dist/decode/decoders.js.map +1 -0
- package/dist/decode/edge-context.d.ts +38 -0
- package/dist/decode/edge-context.d.ts.map +1 -0
- package/dist/decode/edge-context.js +57 -0
- package/dist/decode/edge-context.js.map +1 -0
- package/dist/decode/hint-lattice.d.ts +45 -0
- package/dist/decode/hint-lattice.d.ts.map +1 -0
- package/dist/decode/hint-lattice.js +154 -0
- package/dist/decode/hint-lattice.js.map +1 -0
- package/dist/decode/hints.d.ts +2 -45
- package/dist/decode/hints.d.ts.map +1 -1
- package/dist/decode/hints.js +1 -139
- package/dist/decode/hints.js.map +1 -1
- package/dist/decode/jiao-rule.d.ts +64 -0
- package/dist/decode/jiao-rule.d.ts.map +1 -0
- package/dist/decode/jiao-rule.js +115 -0
- package/dist/decode/jiao-rule.js.map +1 -0
- package/dist/decode/lattice-costs.d.ts +55 -0
- package/dist/decode/lattice-costs.d.ts.map +1 -0
- package/dist/decode/lattice-costs.js +90 -0
- package/dist/decode/lattice-costs.js.map +1 -0
- package/dist/decode/lattice-edges.d.ts +29 -0
- package/dist/decode/lattice-edges.d.ts.map +1 -0
- package/dist/decode/lattice-edges.js +78 -0
- package/dist/decode/lattice-edges.js.map +1 -0
- package/dist/decode/lattice-slice.d.ts +37 -0
- package/dist/decode/lattice-slice.d.ts.map +1 -0
- package/dist/decode/lattice-slice.js +43 -0
- package/dist/decode/lattice-slice.js.map +1 -0
- package/dist/decode/lattice-types.d.ts +101 -0
- package/dist/decode/lattice-types.d.ts.map +1 -0
- package/dist/decode/lattice-types.js +63 -0
- package/dist/decode/lattice-types.js.map +1 -0
- package/dist/decode/lattice.d.ts +2 -59
- package/dist/decode/lattice.d.ts.map +1 -1
- package/dist/decode/lattice.js +2 -118
- package/dist/decode/lattice.js.map +1 -1
- package/dist/decode/number-pieces.d.ts +62 -0
- package/dist/decode/number-pieces.d.ts.map +1 -0
- package/dist/decode/number-pieces.js +106 -0
- package/dist/decode/number-pieces.js.map +1 -0
- package/dist/decode/numbers.d.ts +53 -0
- package/dist/decode/numbers.d.ts.map +1 -0
- package/dist/decode/numbers.js +69 -0
- package/dist/decode/numbers.js.map +1 -0
- package/dist/decode/pieces.d.ts +78 -0
- package/dist/decode/pieces.d.ts.map +1 -0
- package/dist/decode/pieces.js +136 -0
- package/dist/decode/pieces.js.map +1 -0
- package/dist/decode/polyphone-rules.d.ts +11 -0
- package/dist/decode/polyphone-rules.d.ts.map +1 -0
- package/dist/decode/polyphone-rules.js +11 -0
- package/dist/decode/polyphone-rules.js.map +1 -0
- package/dist/decode/reading-rules.d.ts +3 -126
- package/dist/decode/reading-rules.d.ts.map +1 -1
- package/dist/decode/reading-rules.js +8 -434
- package/dist/decode/reading-rules.js.map +1 -1
- package/dist/decode/rules.d.ts +1 -17
- package/dist/decode/rules.d.ts.map +1 -1
- package/dist/decode/rules.js +1 -43
- package/dist/decode/rules.js.map +1 -1
- package/dist/decode/run-lattice.d.ts +52 -0
- package/dist/decode/run-lattice.d.ts.map +1 -0
- package/dist/decode/run-lattice.js +91 -0
- package/dist/decode/run-lattice.js.map +1 -0
- package/dist/decode/run-words.d.ts +17 -0
- package/dist/decode/run-words.d.ts.map +1 -0
- package/dist/decode/run-words.js +29 -0
- package/dist/decode/run-words.js.map +1 -0
- package/dist/decode/sandhi-input.d.ts +30 -0
- package/dist/decode/sandhi-input.d.ts.map +1 -0
- package/dist/decode/sandhi-input.js +35 -0
- package/dist/decode/sandhi-input.js.map +1 -0
- package/dist/decode/sandhi-tones.d.ts +97 -0
- package/dist/decode/sandhi-tones.d.ts.map +1 -0
- package/dist/decode/sandhi-tones.js +139 -0
- package/dist/decode/sandhi-tones.js.map +1 -0
- package/dist/decode/sandhi.d.ts +10 -7
- package/dist/decode/sandhi.d.ts.map +1 -1
- package/dist/decode/sandhi.js +11 -88
- package/dist/decode/sandhi.js.map +1 -1
- package/dist/decode/script-types.d.ts +76 -0
- package/dist/decode/script-types.d.ts.map +1 -0
- package/dist/decode/script-types.js +35 -0
- package/dist/decode/script-types.js.map +1 -0
- package/dist/decode/script-words.d.ts +32 -0
- package/dist/decode/script-words.d.ts.map +1 -0
- package/dist/decode/script-words.js +77 -0
- package/dist/decode/script-words.js.map +1 -0
- package/dist/decode/script.d.ts +3 -73
- package/dist/decode/script.d.ts.map +1 -1
- package/dist/decode/script.js +3 -109
- package/dist/decode/script.js.map +1 -1
- package/dist/decode/tan-rule.d.ts +68 -0
- package/dist/decode/tan-rule.d.ts.map +1 -0
- package/dist/decode/tan-rule.js +131 -0
- package/dist/decode/tan-rule.js.map +1 -0
- package/dist/decode/write-run.d.ts +21 -0
- package/dist/decode/write-run.d.ts.map +1 -0
- package/dist/decode/write-run.js +42 -0
- package/dist/decode/write-run.js.map +1 -0
- package/dist/dictionary/artifact-claims.d.ts +25 -0
- package/dist/dictionary/artifact-claims.d.ts.map +1 -0
- package/dist/dictionary/artifact-claims.js +47 -0
- package/dist/dictionary/artifact-claims.js.map +1 -0
- package/dist/dictionary/artifact-format.d.ts +86 -0
- package/dist/dictionary/artifact-format.d.ts.map +1 -0
- package/dist/dictionary/artifact-format.js +91 -0
- package/dist/dictionary/artifact-format.js.map +1 -0
- package/dist/dictionary/artifact-read.d.ts +34 -0
- package/dist/dictionary/artifact-read.d.ts.map +1 -0
- package/dist/dictionary/artifact-read.js +114 -0
- package/dist/dictionary/artifact-read.js.map +1 -0
- package/dist/dictionary/artifact.d.ts +4 -63
- package/dist/dictionary/artifact.d.ts.map +1 -1
- package/dist/dictionary/artifact.js +12 -229
- package/dist/dictionary/artifact.js.map +1 -1
- package/dist/dictionary/assertions.d.ts +5 -57
- package/dist/dictionary/assertions.d.ts.map +1 -1
- package/dist/dictionary/assertions.js +4 -317
- package/dist/dictionary/assertions.js.map +1 -1
- package/dist/dictionary/build-assertions.d.ts +12 -0
- package/dist/dictionary/build-assertions.d.ts.map +1 -0
- package/dist/dictionary/build-assertions.js +13 -0
- package/dist/dictionary/build-assertions.js.map +1 -0
- package/dist/dictionary/built-dictionary.d.ts +46 -0
- package/dist/dictionary/built-dictionary.d.ts.map +1 -0
- package/dist/dictionary/built-dictionary.js +97 -0
- package/dist/dictionary/built-dictionary.js.map +1 -0
- package/dist/dictionary/cedict-senses.d.ts +87 -0
- package/dist/dictionary/cedict-senses.d.ts.map +1 -0
- package/dist/dictionary/cedict-senses.js +126 -0
- package/dist/dictionary/cedict-senses.js.map +1 -0
- package/dist/dictionary/character-defaults.d.ts +26 -0
- package/dist/dictionary/character-defaults.d.ts.map +1 -0
- package/dist/dictionary/character-defaults.js +67 -0
- package/dist/dictionary/character-defaults.js.map +1 -0
- package/dist/dictionary/character-readings.d.ts +10 -0
- package/dist/dictionary/character-readings.d.ts.map +1 -0
- package/dist/dictionary/character-readings.js +25 -0
- package/dist/dictionary/character-readings.js.map +1 -0
- package/dist/dictionary/constituent-repair.d.ts +36 -0
- package/dist/dictionary/constituent-repair.d.ts.map +1 -0
- package/dist/dictionary/constituent-repair.js +117 -0
- package/dist/dictionary/constituent-repair.js.map +1 -0
- package/dist/dictionary/dictionary-entry.d.ts +37 -0
- package/dist/dictionary/dictionary-entry.d.ts.map +1 -0
- package/dist/dictionary/dictionary-entry.js +41 -0
- package/dist/dictionary/dictionary-entry.js.map +1 -0
- package/dist/dictionary/dictionary-readings.d.ts +56 -0
- package/dist/dictionary/dictionary-readings.d.ts.map +1 -0
- package/dist/dictionary/dictionary-readings.js +93 -0
- package/dist/dictionary/dictionary-readings.js.map +1 -0
- package/dist/dictionary/dictionary.d.ts +6 -60
- package/dist/dictionary/dictionary.d.ts.map +1 -1
- package/dist/dictionary/dictionary.js +9 -169
- package/dist/dictionary/dictionary.js.map +1 -1
- package/dist/dictionary/entry-invariants.d.ts +3 -0
- package/dist/dictionary/entry-invariants.d.ts.map +1 -0
- package/dist/dictionary/entry-invariants.js +67 -0
- package/dist/dictionary/entry-invariants.js.map +1 -0
- package/dist/dictionary/entry-lines.d.ts +35 -0
- package/dist/dictionary/entry-lines.d.ts.map +1 -0
- package/dist/dictionary/entry-lines.js +70 -0
- package/dist/dictionary/entry-lines.js.map +1 -0
- package/dist/dictionary/erhua-repair.d.ts +26 -0
- package/dist/dictionary/erhua-repair.d.ts.map +1 -0
- package/dist/dictionary/erhua-repair.js +49 -0
- package/dist/dictionary/erhua-repair.js.map +1 -0
- package/dist/dictionary/frequency-tones.d.ts +74 -0
- package/dist/dictionary/frequency-tones.d.ts.map +1 -0
- package/dist/dictionary/frequency-tones.js +128 -0
- package/dist/dictionary/frequency-tones.js.map +1 -0
- package/dist/dictionary/inventory-invariants.d.ts +3 -0
- package/dist/dictionary/inventory-invariants.d.ts.map +1 -0
- package/dist/dictionary/inventory-invariants.js +54 -0
- package/dist/dictionary/inventory-invariants.js.map +1 -0
- package/dist/dictionary/locale-candidates.d.ts +40 -0
- package/dist/dictionary/locale-candidates.d.ts.map +1 -0
- package/dist/dictionary/locale-candidates.js +77 -0
- package/dist/dictionary/locale-candidates.js.map +1 -0
- package/dist/dictionary/locale-segments.d.ts +47 -0
- package/dist/dictionary/locale-segments.d.ts.map +1 -0
- package/dist/dictionary/locale-segments.js +141 -0
- package/dist/dictionary/locale-segments.js.map +1 -0
- package/dist/dictionary/locale.d.ts +1 -21
- package/dist/dictionary/locale.d.ts.map +1 -1
- package/dist/dictionary/locale.js +9 -198
- package/dist/dictionary/locale.js.map +1 -1
- package/dist/dictionary/merge-types.d.ts +127 -0
- package/dist/dictionary/merge-types.d.ts.map +1 -0
- package/dist/dictionary/merge-types.js +35 -0
- package/dist/dictionary/merge-types.js.map +1 -0
- package/dist/dictionary/merge-walk.d.ts +27 -0
- package/dist/dictionary/merge-walk.d.ts.map +1 -0
- package/dist/dictionary/merge-walk.js +49 -0
- package/dist/dictionary/merge-walk.js.map +1 -0
- package/dist/dictionary/merge-word.d.ts +7 -0
- package/dist/dictionary/merge-word.d.ts.map +1 -0
- package/dist/dictionary/merge-word.js +91 -0
- package/dist/dictionary/merge-word.js.map +1 -0
- package/dist/dictionary/merge.d.ts +5 -62
- package/dist/dictionary/merge.d.ts.map +1 -1
- package/dist/dictionary/merge.js +32 -725
- package/dist/dictionary/merge.js.map +1 -1
- package/dist/dictionary/proper-noun.d.ts +28 -0
- package/dist/dictionary/proper-noun.d.ts.map +1 -0
- package/dist/dictionary/proper-noun.js +43 -0
- package/dist/dictionary/proper-noun.js.map +1 -0
- package/dist/dictionary/reading-agreement.d.ts +71 -0
- package/dist/dictionary/reading-agreement.d.ts.map +1 -0
- package/dist/dictionary/reading-agreement.js +156 -0
- package/dist/dictionary/reading-agreement.js.map +1 -0
- package/dist/dictionary/script-conversion.d.ts +28 -0
- package/dist/dictionary/script-conversion.d.ts.map +1 -0
- package/dist/dictionary/script-conversion.js +58 -0
- package/dist/dictionary/script-conversion.js.map +1 -0
- package/dist/dictionary/script-pairings.d.ts +74 -0
- package/dist/dictionary/script-pairings.d.ts.map +1 -0
- package/dist/dictionary/script-pairings.js +120 -0
- package/dist/dictionary/script-pairings.js.map +1 -0
- package/dist/dictionary/script-tables.d.ts.map +1 -1
- package/dist/dictionary/script-tables.js +2 -165
- package/dist/dictionary/script-tables.js.map +1 -1
- package/dist/dictionary/taiwan-reading.d.ts +8 -0
- package/dist/dictionary/taiwan-reading.d.ts.map +1 -0
- package/dist/dictionary/taiwan-reading.js +38 -0
- package/dist/dictionary/taiwan-reading.js.map +1 -0
- package/dist/dictionary/tone-invariants.d.ts +3 -0
- package/dist/dictionary/tone-invariants.d.ts.map +1 -0
- package/dist/dictionary/tone-invariants.js +64 -0
- package/dist/dictionary/tone-invariants.js.map +1 -0
- package/dist/dictionary/traditional-form.d.ts +21 -0
- package/dist/dictionary/traditional-form.d.ts.map +1 -0
- package/dist/dictionary/traditional-form.js +59 -0
- package/dist/dictionary/traditional-form.js.map +1 -0
- package/dist/dictionary/traditional-ranking.d.ts +22 -0
- package/dist/dictionary/traditional-ranking.d.ts.map +1 -0
- package/dist/dictionary/traditional-ranking.js +74 -0
- package/dist/dictionary/traditional-ranking.js.map +1 -0
- package/dist/dictionary/traditional-table.d.ts +51 -0
- package/dist/dictionary/traditional-table.d.ts.map +1 -0
- package/dist/dictionary/traditional-table.js +98 -0
- package/dist/dictionary/traditional-table.js.map +1 -0
- package/dist/dictionary/traditional.d.ts +3 -56
- package/dist/dictionary/traditional.d.ts.map +1 -1
- package/dist/dictionary/traditional.js +3 -186
- package/dist/dictionary/traditional.js.map +1 -1
- package/dist/dictionary/variant-counts.d.ts +39 -0
- package/dist/dictionary/variant-counts.d.ts.map +1 -0
- package/dist/dictionary/variant-counts.js +38 -0
- package/dist/dictionary/variant-counts.js.map +1 -0
- package/dist/dictionary/word-reading.d.ts +26 -0
- package/dist/dictionary/word-reading.d.ts.map +1 -0
- package/dist/dictionary/word-reading.js +76 -0
- package/dist/dictionary/word-reading.js.map +1 -0
- package/dist/dictionary/word-readings.d.ts +15 -0
- package/dist/dictionary/word-readings.d.ts.map +1 -0
- package/dist/dictionary/word-readings.js +41 -0
- package/dist/dictionary/word-readings.js.map +1 -0
- package/dist/format/annotate.d.ts +90 -0
- package/dist/format/annotate.d.ts.map +1 -0
- package/dist/format/annotate.js +168 -0
- package/dist/format/annotate.js.map +1 -0
- package/dist/format/html.d.ts +15 -46
- package/dist/format/html.d.ts.map +1 -1
- package/dist/format/html.js +3 -162
- package/dist/format/html.js.map +1 -1
- package/dist/format/slug-hash.d.ts +51 -0
- package/dist/format/slug-hash.d.ts.map +1 -0
- package/dist/format/slug-hash.js +74 -0
- package/dist/format/slug-hash.js.map +1 -0
- package/dist/format/slug-options.d.ts +98 -0
- package/dist/format/slug-options.d.ts.map +1 -0
- package/dist/format/slug-options.js +2 -0
- package/dist/format/slug-options.js.map +1 -0
- package/dist/format/slug-words.d.ts +27 -0
- package/dist/format/slug-words.d.ts.map +1 -0
- package/dist/format/slug-words.js +0 -0
- package/dist/format/slug-words.js.map +1 -0
- package/dist/format/slug.d.ts +3 -128
- package/dist/format/slug.d.ts.map +1 -1
- package/dist/format/slug.js +0 -0
- package/dist/format/slug.js.map +1 -1
- package/dist/grade/check-readings.d.ts +41 -0
- package/dist/grade/check-readings.d.ts.map +1 -0
- package/dist/grade/check-readings.js +36 -0
- package/dist/grade/check-readings.js.map +1 -0
- package/dist/grade/check.d.ts +4 -4
- package/dist/grade/check.d.ts.map +1 -1
- package/dist/grade/check.js +5 -270
- package/dist/grade/check.js.map +1 -1
- package/dist/grade/pair-syllables.d.ts +48 -0
- package/dist/grade/pair-syllables.d.ts.map +1 -0
- package/dist/grade/pair-syllables.js +71 -0
- package/dist/grade/pair-syllables.js.map +1 -0
- package/dist/grade/reading-syllables.d.ts +62 -0
- package/dist/grade/reading-syllables.d.ts.map +1 -0
- package/dist/grade/reading-syllables.js +58 -0
- package/dist/grade/reading-syllables.js.map +1 -0
- package/dist/grade/reading-tolerance.d.ts +72 -0
- package/dist/grade/reading-tolerance.d.ts.map +1 -0
- package/dist/grade/reading-tolerance.js +107 -0
- package/dist/grade/reading-tolerance.js.map +1 -0
- package/dist/grade/typed-reading.d.ts +28 -0
- package/dist/grade/typed-reading.d.ts.map +1 -0
- package/dist/grade/typed-reading.js +36 -0
- package/dist/grade/typed-reading.js.map +1 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/numerals/numeral-parse.d.ts +32 -0
- package/dist/numerals/numeral-parse.d.ts.map +1 -0
- package/dist/numerals/numeral-parse.js +44 -0
- package/dist/numerals/numeral-parse.js.map +1 -0
- package/dist/numerals/numeral-shapes.d.ts +89 -0
- package/dist/numerals/numeral-shapes.d.ts.map +1 -0
- package/dist/numerals/numeral-shapes.js +99 -0
- package/dist/numerals/numeral-shapes.js.map +1 -0
- package/dist/numerals/numerals.d.ts.map +1 -1
- package/dist/numerals/numerals.js +2 -36
- package/dist/numerals/numerals.js.map +1 -1
- package/dist/numerals/read-numeral.d.ts +76 -0
- package/dist/numerals/read-numeral.d.ts.map +1 -0
- package/dist/numerals/read-numeral.js +88 -0
- package/dist/numerals/read-numeral.js.map +1 -0
- package/dist/numerals/text.d.ts +3 -37
- package/dist/numerals/text.d.ts.map +1 -1
- package/dist/numerals/text.js +3 -254
- package/dist/numerals/text.js.map +1 -1
- package/dist/numerals/time.d.ts +34 -0
- package/dist/numerals/time.d.ts.map +1 -0
- package/dist/numerals/time.js +93 -0
- package/dist/numerals/time.js.map +1 -0
- package/dist/orthography/address-grouping.d.ts +34 -0
- package/dist/orthography/address-grouping.d.ts.map +1 -0
- package/dist/orthography/address-grouping.js +52 -0
- package/dist/orthography/address-grouping.js.map +1 -0
- package/dist/orthography/grouping.d.ts +3 -87
- package/dist/orthography/grouping.d.ts.map +1 -1
- package/dist/orthography/grouping.js +4 -270
- package/dist/orthography/grouping.js.map +1 -1
- package/dist/orthography/place-grouping.d.ts +39 -0
- package/dist/orthography/place-grouping.d.ts.map +1 -0
- package/dist/orthography/place-grouping.js +83 -0
- package/dist/orthography/place-grouping.js.map +1 -0
- package/dist/orthography/word-grouping.d.ts +48 -0
- package/dist/orthography/word-grouping.d.ts.map +1 -0
- package/dist/orthography/word-grouping.js +147 -0
- package/dist/orthography/word-grouping.js.map +1 -0
- package/dist/script/conversion-format.d.ts +22 -0
- package/dist/script/conversion-format.d.ts.map +1 -0
- package/dist/script/conversion-format.js +22 -0
- package/dist/script/conversion-format.js.map +1 -0
- package/dist/script/conversion-read.d.ts +9 -0
- package/dist/script/conversion-read.d.ts.map +1 -0
- package/dist/script/conversion-read.js +69 -0
- package/dist/script/conversion-read.js.map +1 -0
- package/dist/script/conversion-write.d.ts +14 -0
- package/dist/script/conversion-write.d.ts.map +1 -0
- package/dist/script/conversion-write.js +34 -0
- package/dist/script/conversion-write.js.map +1 -0
- package/dist/script/conversion.d.ts +10 -16
- package/dist/script/conversion.d.ts.map +1 -1
- package/dist/script/conversion.js +2 -115
- package/dist/script/conversion.js.map +1 -1
- package/dist/search/candidate-narrowing.d.ts +56 -0
- package/dist/search/candidate-narrowing.d.ts.map +1 -0
- package/dist/search/candidate-narrowing.js +55 -0
- package/dist/search/candidate-narrowing.js.map +1 -0
- package/dist/search/candidate-query.d.ts +25 -0
- package/dist/search/candidate-query.d.ts.map +1 -0
- package/dist/search/candidate-query.js +28 -0
- package/dist/search/candidate-query.js.map +1 -0
- package/dist/search/candidate-writings.d.ts +24 -0
- package/dist/search/candidate-writings.d.ts.map +1 -0
- package/dist/search/candidate-writings.js +114 -0
- package/dist/search/candidate-writings.js.map +1 -0
- package/dist/search/candidates.d.ts +7 -41
- package/dist/search/candidates.d.ts.map +1 -1
- package/dist/search/candidates.js +10 -164
- package/dist/search/candidates.js.map +1 -1
- package/dist/search/match-chunks.d.ts +19 -0
- package/dist/search/match-chunks.d.ts.map +1 -0
- package/dist/search/match-chunks.js +30 -0
- package/dist/search/match-chunks.js.map +1 -0
- package/dist/search/match-ranking.d.ts +39 -0
- package/dist/search/match-ranking.d.ts.map +1 -0
- package/dist/search/match-ranking.js +51 -0
- package/dist/search/match-ranking.js.map +1 -0
- package/dist/search/match-readings.d.ts +43 -0
- package/dist/search/match-readings.d.ts.map +1 -0
- package/dist/search/match-readings.js +83 -0
- package/dist/search/match-readings.js.map +1 -0
- package/dist/search/match-scoring.d.ts +146 -0
- package/dist/search/match-scoring.d.ts.map +1 -0
- package/dist/search/match-scoring.js +114 -0
- package/dist/search/match-scoring.js.map +1 -0
- package/dist/search/match-search.d.ts +28 -0
- package/dist/search/match-search.d.ts.map +1 -0
- package/dist/search/match-search.js +128 -0
- package/dist/search/match-search.js.map +1 -0
- package/dist/search/match.d.ts +5 -36
- package/dist/search/match.d.ts.map +1 -1
- package/dist/search/match.js +2 -379
- package/dist/search/match.js.map +1 -1
- package/dist/search/reverse-index-build.d.ts +30 -0
- package/dist/search/reverse-index-build.d.ts.map +1 -0
- package/dist/search/reverse-index-build.js +72 -0
- package/dist/search/reverse-index-build.js.map +1 -0
- package/dist/search/reverse-index-format.d.ts +60 -0
- package/dist/search/reverse-index-format.d.ts.map +1 -0
- package/dist/search/reverse-index-format.js +54 -0
- package/dist/search/reverse-index-format.js.map +1 -0
- package/dist/search/reverse-index-groups.d.ts +37 -0
- package/dist/search/reverse-index-groups.d.ts.map +1 -0
- package/dist/search/reverse-index-groups.js +71 -0
- package/dist/search/reverse-index-groups.js.map +1 -0
- package/dist/search/reverse-index-passes.d.ts +78 -0
- package/dist/search/reverse-index-passes.d.ts.map +1 -0
- package/dist/search/reverse-index-passes.js +59 -0
- package/dist/search/reverse-index-passes.js.map +1 -0
- package/dist/search/reverse-index-state.d.ts +36 -0
- package/dist/search/reverse-index-state.d.ts.map +1 -0
- package/dist/search/reverse-index-state.js +95 -0
- package/dist/search/reverse-index-state.js.map +1 -0
- package/dist/search/reverse-index.d.ts +8 -67
- package/dist/search/reverse-index.d.ts.map +1 -1
- package/dist/search/reverse-index.js +4 -255
- package/dist/search/reverse-index.js.map +1 -1
- package/dist/sources/unihan-readings.d.ts +58 -0
- package/dist/sources/unihan-readings.d.ts.map +1 -0
- package/dist/sources/unihan-readings.js +95 -0
- package/dist/sources/unihan-readings.js.map +1 -0
- package/dist/sources/unihan.d.ts +6 -9
- package/dist/sources/unihan.d.ts.map +1 -1
- package/dist/sources/unihan.js +2 -85
- package/dist/sources/unihan.js.map +1 -1
- package/dist/syllable/final-tables.d.ts +23 -0
- package/dist/syllable/final-tables.d.ts.map +1 -0
- package/dist/syllable/final-tables.js +50 -0
- package/dist/syllable/final-tables.js.map +1 -0
- package/dist/syllable/inventory.d.ts +8 -42
- package/dist/syllable/inventory.d.ts.map +1 -1
- package/dist/syllable/inventory.js +9 -918
- package/dist/syllable/inventory.js.map +1 -1
- package/dist/syllable/spellings.d.ts +40 -0
- package/dist/syllable/spellings.d.ts.map +1 -0
- package/dist/syllable/spellings.js +469 -0
- package/dist/syllable/spellings.js.map +1 -0
- package/dist/syllable/syllable-parts.d.ts +31 -0
- package/dist/syllable/syllable-parts.d.ts.map +1 -0
- package/dist/syllable/syllable-parts.js +105 -0
- package/dist/syllable/syllable-parts.js.map +1 -0
- package/dist/syllable/syllable.d.ts +1 -14
- package/dist/syllable/syllable.d.ts.map +1 -1
- package/dist/syllable/syllable.js +3 -144
- package/dist/syllable/syllable.js.map +1 -1
- package/dist/syllable/written-tones.d.ts +6 -0
- package/dist/syllable/written-tones.d.ts.map +1 -0
- package/dist/syllable/written-tones.js +453 -0
- package/dist/syllable/written-tones.js.map +1 -0
- package/dist/transcription/bopomofo-parse.d.ts +42 -0
- package/dist/transcription/bopomofo-parse.d.ts.map +1 -0
- package/dist/transcription/bopomofo-parse.js +92 -0
- package/dist/transcription/bopomofo-parse.js.map +1 -0
- package/dist/transcription/bopomofo-reverse.d.ts +31 -0
- package/dist/transcription/bopomofo-reverse.d.ts.map +1 -0
- package/dist/transcription/bopomofo-reverse.js +48 -0
- package/dist/transcription/bopomofo-reverse.js.map +1 -0
- package/dist/transcription/bopomofo-symbols.d.ts +36 -0
- package/dist/transcription/bopomofo-symbols.d.ts.map +1 -0
- package/dist/transcription/bopomofo-symbols.js +41 -0
- package/dist/transcription/bopomofo-symbols.js.map +1 -0
- package/dist/transcription/bopomofo-tables.d.ts +87 -0
- package/dist/transcription/bopomofo-tables.d.ts.map +1 -0
- package/dist/transcription/bopomofo-tables.js +180 -0
- package/dist/transcription/bopomofo-tables.js.map +1 -0
- package/dist/transcription/bopomofo.d.ts +14 -32
- package/dist/transcription/bopomofo.d.ts.map +1 -1
- package/dist/transcription/bopomofo.js +5 -343
- package/dist/transcription/bopomofo.js.map +1 -1
- package/dist/transcription/gwoyeu-first-second.d.ts +36 -0
- package/dist/transcription/gwoyeu-first-second.d.ts.map +1 -0
- package/dist/transcription/gwoyeu-first-second.js +75 -0
- package/dist/transcription/gwoyeu-first-second.js.map +1 -0
- package/dist/transcription/gwoyeu-spelling.d.ts +38 -0
- package/dist/transcription/gwoyeu-spelling.d.ts.map +1 -0
- package/dist/transcription/gwoyeu-spelling.js +124 -0
- package/dist/transcription/gwoyeu-spelling.js.map +1 -0
- package/dist/transcription/gwoyeu-tables.d.ts +93 -0
- package/dist/transcription/gwoyeu-tables.d.ts.map +1 -0
- package/dist/transcription/gwoyeu-tables.js +205 -0
- package/dist/transcription/gwoyeu-tables.js.map +1 -0
- package/dist/transcription/gwoyeu-tonal-forms.d.ts +49 -0
- package/dist/transcription/gwoyeu-tonal-forms.d.ts.map +1 -0
- package/dist/transcription/gwoyeu-tonal-forms.js +89 -0
- package/dist/transcription/gwoyeu-tonal-forms.js.map +1 -0
- package/dist/transcription/gwoyeu-vowels.d.ts +51 -0
- package/dist/transcription/gwoyeu-vowels.d.ts.map +1 -0
- package/dist/transcription/gwoyeu-vowels.js +58 -0
- package/dist/transcription/gwoyeu-vowels.js.map +1 -0
- package/dist/transcription/gwoyeu.d.ts +1 -26
- package/dist/transcription/gwoyeu.d.ts.map +1 -1
- package/dist/transcription/gwoyeu.js +2 -540
- package/dist/transcription/gwoyeu.js.map +1 -1
- package/dist/transcription/ipa-symbols.d.ts +67 -0
- package/dist/transcription/ipa-symbols.d.ts.map +1 -0
- package/dist/transcription/ipa-symbols.js +135 -0
- package/dist/transcription/ipa-symbols.js.map +1 -0
- package/dist/transcription/ipa.d.ts +2 -10
- package/dist/transcription/ipa.d.ts.map +1 -1
- package/dist/transcription/ipa.js +2 -134
- package/dist/transcription/ipa.js.map +1 -1
- package/dist/transcription/wade-giles-index.d.ts +35 -0
- package/dist/transcription/wade-giles-index.d.ts.map +1 -0
- package/dist/transcription/wade-giles-index.js +110 -0
- package/dist/transcription/wade-giles-index.js.map +1 -0
- package/dist/transcription/wade-giles-parse.d.ts +36 -0
- package/dist/transcription/wade-giles-parse.d.ts.map +1 -0
- package/dist/transcription/wade-giles-parse.js +84 -0
- package/dist/transcription/wade-giles-parse.js.map +1 -0
- package/dist/transcription/wade-giles-spelling.d.ts +61 -0
- package/dist/transcription/wade-giles-spelling.d.ts.map +1 -0
- package/dist/transcription/wade-giles-spelling.js +107 -0
- package/dist/transcription/wade-giles-spelling.js.map +1 -0
- package/dist/transcription/wade-giles-syllable.d.ts +29 -0
- package/dist/transcription/wade-giles-syllable.d.ts.map +1 -0
- package/dist/transcription/wade-giles-syllable.js +90 -0
- package/dist/transcription/wade-giles-syllable.js.map +1 -0
- package/dist/transcription/wade-giles-tables.d.ts +80 -0
- package/dist/transcription/wade-giles-tables.d.ts.map +1 -0
- package/dist/transcription/wade-giles-tables.js +178 -0
- package/dist/transcription/wade-giles-tables.js.map +1 -0
- package/dist/transcription/wade-giles.d.ts +9 -60
- package/dist/transcription/wade-giles.d.ts.map +1 -1
- package/dist/transcription/wade-giles.js +6 -543
- package/dist/transcription/wade-giles.js.map +1 -1
- package/dist/transcription/yale-tables.d.ts +54 -0
- package/dist/transcription/yale-tables.d.ts.map +1 -0
- package/dist/transcription/yale-tables.js +125 -0
- package/dist/transcription/yale-tables.js.map +1 -0
- package/dist/transcription/yale.d.ts.map +1 -1
- package/dist/transcription/yale.js +1 -124
- package/dist/transcription/yale.js.map +1 -1
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"grouping.js","sourceRoot":"","sources":["../../src/orthography/grouping.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"grouping.js","sourceRoot":"","sources":["../../src/orthography/grouping.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAE5E,OAAO,EACL,cAAc,EACd,UAAU,EACV,gBAAgB,GACjB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACL,cAAc,EACd,UAAU,EACV,gBAAgB,GACjB,MAAM,oBAAoB,CAAC;AAE5B;;GAEG;AACH,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;AAEhD;;;;;;;GAOG;AACH,SAAS,YAAY,CAAC,IAAiB;IACrC,OAAO,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,YAAY,KAAK,GAAG,CAAC;AACxE,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,GAAG,GAAG,CAAC;AAEvB,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAEpE,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,MAAM,CAAC,MAAM,gBAAgB,GAAiB;IAC5C,IAAI,EAAE,kBAAkB;IACxB,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE,CACf,aAAa,CACX,KAAK,EACL,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,YAAY,CAAC,IAAI,CAAC,CACzE;CACJ,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAiB;IACpC,IAAI,EAAE,UAAU;IAChB,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE,CACf,aAAa,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,YAAY,KAAK,UAAU,CAAC;CACnE,CAAC;AACF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,cAAc,GAA4B;IACrD,gBAAgB;IAChB,QAAQ;IACR,cAAc;IACd,UAAU;IACV,gBAAgB;IAChB,cAAc;IACd,kBAAkB;IAClB,kBAAkB;IAClB,aAAa;CACd,CAAC;AAEF;;GAEG;AACH,MAAM,UAAU,aAAa,CAC3B,KAA6B,EAC7B,UAAsB,EACtB,KAAK,GAA4B,cAAc;IAE/C,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;IAC5C,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Joining a place name to the generic that names its kind.
|
|
3
|
+
*
|
|
4
|
+
* 北京市 is one orthographic word and 北京 市 is two, and which it is depends
|
|
5
|
+
* on the generic rather than on the tag jieba gave the whole.
|
|
6
|
+
*/
|
|
7
|
+
import type { DecodedWord } from "../decode/word.js";
|
|
8
|
+
import { type GroupingRule } from "./rule.js";
|
|
9
|
+
/**
|
|
10
|
+
* Fold every word a predicate accepts into the word before it.
|
|
11
|
+
*/
|
|
12
|
+
export declare function joinBackwards(words: readonly DecodedWord[], isAttached: (word: DecodedWord, head: DecodedWord) => boolean): readonly DecodedWord[];
|
|
13
|
+
/**
|
|
14
|
+
* 了, 着 and 过 attach to the verb in front of them.
|
|
15
|
+
*
|
|
16
|
+
* GB/T 16159: 他看了 is `tā kànle`, not `tā kàn le`. Safe as a rule because it
|
|
17
|
+
* only ever joins what the decode had already separated — the dictionary has no
|
|
18
|
+
* entry for 看了, so nothing the dictionary asserted is being overridden. The
|
|
19
|
+
* readings do not change either way, so the worst case is untidy spacing.
|
|
20
|
+
*/
|
|
21
|
+
/**
|
|
22
|
+
* A place name's generic half is written separately, and capitalised.
|
|
23
|
+
*
|
|
24
|
+
* GB/T 16159 专名和通名分写: 南京市 is `Nánjīng Shì`, 西湖区 is `Xīhú Qū`.
|
|
25
|
+
*
|
|
26
|
+
* Two conditions keep it from running away, both of them measured against the
|
|
27
|
+
* whole dictionary rather than guessed. The word must be tagged a place name,
|
|
28
|
+
* and **the part before the generic must itself be a word** — without the
|
|
29
|
+
* second, 上山下乡 and 三街六市 are tagged `ns` and come apart as
|
|
30
|
+
* `Shàngshānxià Xiāng` and `Sānjiēliù Shì`. Together they fire on 4,798 of the
|
|
31
|
+
* dictionary's 8,781 candidates and hold back 427.
|
|
32
|
+
*
|
|
33
|
+
* The rule deliberately never touches a two-character name, so 上海 stays
|
|
34
|
+
* `Shànghǎi` and 长城 stays `Chángchéng`: there, the generic character is part
|
|
35
|
+
* of the proper name rather than a description of it, and no rule can tell the
|
|
36
|
+
* two apart — 黄河 is `Huáng Hé` and 青海 is `Qīnghǎi`.
|
|
37
|
+
*/
|
|
38
|
+
export declare const PLACE_GENERICS: GroupingRule;
|
|
39
|
+
//# sourceMappingURL=place-grouping.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"place-grouping.d.ts","sourceRoot":"","sources":["../../src/orthography/place-grouping.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAErD,OAAO,EAAE,KAAK,YAAY,EAAiB,MAAM,WAAW,CAAC;AAuB7D;;GAEG;AACH,wBAAgB,aAAa,CAC3B,KAAK,EAAE,SAAS,WAAW,EAAE,EAC7B,UAAU,EAAE,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,WAAW,KAAK,OAAO,GAC5D,SAAS,WAAW,EAAE,CAWxB;AAED;;;;;;;GAOG;AAEH;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,cAAc,EAAE,YAsB5B,CAAC"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import { toCharacters } from "../script/characters.js";
|
|
2
|
+
import { join, splitAt } from "./rule.js";
|
|
3
|
+
/**
|
|
4
|
+
* The generic half of an administrative place name.
|
|
5
|
+
*
|
|
6
|
+
* Both scripts, since a 繁體 name is a key in its own right and never converted
|
|
7
|
+
* before lookup.
|
|
8
|
+
*/
|
|
9
|
+
const ADMINISTRATIVE_GENERICS = new Set([
|
|
10
|
+
"市",
|
|
11
|
+
"省",
|
|
12
|
+
"县",
|
|
13
|
+
"縣",
|
|
14
|
+
"区",
|
|
15
|
+
"區",
|
|
16
|
+
"镇",
|
|
17
|
+
"鎮",
|
|
18
|
+
"乡",
|
|
19
|
+
"鄉",
|
|
20
|
+
"村",
|
|
21
|
+
"州",
|
|
22
|
+
]);
|
|
23
|
+
/**
|
|
24
|
+
* Fold every word a predicate accepts into the word before it.
|
|
25
|
+
*/
|
|
26
|
+
export function joinBackwards(words, isAttached) {
|
|
27
|
+
const grouped = [];
|
|
28
|
+
for (const word of words) {
|
|
29
|
+
const head = grouped.at(-1);
|
|
30
|
+
if (head !== undefined && isAttached(word, head)) {
|
|
31
|
+
grouped[grouped.length - 1] = join(head, word);
|
|
32
|
+
continue;
|
|
33
|
+
}
|
|
34
|
+
grouped.push(word);
|
|
35
|
+
}
|
|
36
|
+
return grouped;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* 了, 着 and 过 attach to the verb in front of them.
|
|
40
|
+
*
|
|
41
|
+
* GB/T 16159: 他看了 is `tā kànle`, not `tā kàn le`. Safe as a rule because it
|
|
42
|
+
* only ever joins what the decode had already separated — the dictionary has no
|
|
43
|
+
* entry for 看了, so nothing the dictionary asserted is being overridden. The
|
|
44
|
+
* readings do not change either way, so the worst case is untidy spacing.
|
|
45
|
+
*/
|
|
46
|
+
/**
|
|
47
|
+
* A place name's generic half is written separately, and capitalised.
|
|
48
|
+
*
|
|
49
|
+
* GB/T 16159 专名和通名分写: 南京市 is `Nánjīng Shì`, 西湖区 is `Xīhú Qū`.
|
|
50
|
+
*
|
|
51
|
+
* Two conditions keep it from running away, both of them measured against the
|
|
52
|
+
* whole dictionary rather than guessed. The word must be tagged a place name,
|
|
53
|
+
* and **the part before the generic must itself be a word** — without the
|
|
54
|
+
* second, 上山下乡 and 三街六市 are tagged `ns` and come apart as
|
|
55
|
+
* `Shàngshānxià Xiāng` and `Sānjiēliù Shì`. Together they fire on 4,798 of the
|
|
56
|
+
* dictionary's 8,781 candidates and hold back 427.
|
|
57
|
+
*
|
|
58
|
+
* The rule deliberately never touches a two-character name, so 上海 stays
|
|
59
|
+
* `Shànghǎi` and 长城 stays `Chángchéng`: there, the generic character is part
|
|
60
|
+
* of the proper name rather than a description of it, and no rule can tell the
|
|
61
|
+
* two apart — 黄河 is `Huáng Hé` and 青海 is `Qīnghǎi`.
|
|
62
|
+
*/
|
|
63
|
+
export const PLACE_GENERICS = {
|
|
64
|
+
name: "place-generics",
|
|
65
|
+
apply: (words, dictionary) => words.flatMap((word) => {
|
|
66
|
+
const characters = toCharacters(word.text);
|
|
67
|
+
const generic = characters.at(-1) ?? "";
|
|
68
|
+
if (word.partOfSpeech !== "ns" ||
|
|
69
|
+
characters.length < 3 ||
|
|
70
|
+
!ADMINISTRATIVE_GENERICS.has(generic) ||
|
|
71
|
+
dictionary.lookup(characters.slice(0, -1).join("")) === undefined) {
|
|
72
|
+
return [word];
|
|
73
|
+
}
|
|
74
|
+
const split = splitAt(word, characters.length - 1);
|
|
75
|
+
if (split === undefined) {
|
|
76
|
+
return [word];
|
|
77
|
+
}
|
|
78
|
+
// Both halves are capitalised: 通名 is part of the name, not a common
|
|
79
|
+
// noun trailing it.
|
|
80
|
+
return split.map((part) => ({ ...part, isProperNoun: true }));
|
|
81
|
+
}),
|
|
82
|
+
};
|
|
83
|
+
//# sourceMappingURL=place-grouping.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"place-grouping.js","sourceRoot":"","sources":["../../src/orthography/place-grouping.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAqB,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAE7D;;;;;GAKG;AACH,MAAM,uBAAuB,GAAG,IAAI,GAAG,CAAC;IACtC,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;CACJ,CAAC,CAAC;AAEH;;GAEG;AACH,MAAM,UAAU,aAAa,CAC3B,KAA6B,EAC7B,UAA6D;IAE7D,MAAM,OAAO,GAAkB,EAAE,CAAC;IAClC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,IAAI,GAAG,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5B,IAAI,IAAI,KAAK,SAAS,IAAI,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC;YACjD,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YAC/C,SAAS;QACX,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACrB,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;;;;;GAOG;AAEH;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,CAAC,MAAM,cAAc,GAAiB;IAC1C,IAAI,EAAE,gBAAgB;IACtB,KAAK,EAAE,CAAC,KAAK,EAAE,UAAU,EAAE,EAAE,CAC3B,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;QACrB,MAAM,UAAU,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC3C,MAAM,OAAO,GAAG,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QACxC,IACE,IAAI,CAAC,YAAY,KAAK,IAAI;YAC1B,UAAU,CAAC,MAAM,GAAG,CAAC;YACrB,CAAC,uBAAuB,CAAC,GAAG,CAAC,OAAO,CAAC;YACrC,UAAU,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,SAAS,EACjE,CAAC;YACD,OAAO,CAAC,IAAI,CAAC,CAAC;QAChB,CAAC;QACD,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,EAAE,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACnD,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,OAAO,CAAC,IAAI,CAAC,CAAC;QAChB,CAAC;QACD,oEAAoE;QACpE,oBAAoB;QACpB,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IAChE,CAAC,CAAC;CACL,CAAC"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
export { ADDRESS_PREFIX } from "./address-grouping.js";
|
|
2
|
+
import { type GroupingRule } from "./rule.js";
|
|
3
|
+
/**
|
|
4
|
+
* Write the words GB/T 16159 spaces in a way no rule reaches.
|
|
5
|
+
*
|
|
6
|
+
* Matches longest-first at each word boundary, and only where the entry ends on
|
|
7
|
+
* a word boundary too: a table entry is a claim about a whole word or several,
|
|
8
|
+
* not about the middle of one.
|
|
9
|
+
*/
|
|
10
|
+
export declare const SPACED_WORD_LIST: GroupingRule;
|
|
11
|
+
/**
|
|
12
|
+
* The parts of a proper name are written apart: 齐白石 is `Qí Báishí`.
|
|
13
|
+
*
|
|
14
|
+
* GB/T 16159 5.1 writes 姓 apart from 名 and a proper noun apart from its
|
|
15
|
+
* generic, each part capitalised. Both halves of that clause are this rule,
|
|
16
|
+
* because the evidence for them is the same evidence.
|
|
17
|
+
*
|
|
18
|
+
* 齐白石 and 北京大学 are dictionary entries, so the decoder produces **one**
|
|
19
|
+
* word each — and reading them as one word is what makes them read correctly at
|
|
20
|
+
* all. That makes this a *split*, and splitting contradicts the dictionary's own
|
|
21
|
+
* claim that the characters belong together. It needs a condition strong enough
|
|
22
|
+
* to survive the whole dictionary, and the obvious ones are not: a surname list
|
|
23
|
+
* takes 马克思, 高尔基, 巴赫 and 牛顿 apart, none of which is a Chinese name,
|
|
24
|
+
* and a list of generics cannot say where 上海浦东发展银行 divides.
|
|
25
|
+
*
|
|
26
|
+
* **The condition is CC-CEDICT's own capitalisation**, which states the
|
|
27
|
+
* boundaries outright: 齐白石 is `[Qi2 Bai2 shi2]`, 司马迁 `[Si1 ma3 Qian1]`,
|
|
28
|
+
* 上海交通大学 `[Shang4 hai3 Jiao1 tong1 Da4 xue2]`, and 马克思 `[Ma3 ke4 si1]`
|
|
29
|
+
* with no second capital at all. So a compound surname is recognised without a
|
|
30
|
+
* list of compound surnames, a generic without a list of generics, and a
|
|
31
|
+
* transliteration is excluded without a list of transliterations. It is the same
|
|
32
|
+
* source and the same signal the proper-noun veto already trusts — see "jieba's
|
|
33
|
+
* 专名 tags need a second opinion" in ROADMAP.md — extended from *whether* a
|
|
34
|
+
* word is a proper noun to *where* its parts divide.
|
|
35
|
+
*
|
|
36
|
+
* **Every stated boundary is cut, not only the first**, which is what separates
|
|
37
|
+
* an organisation from a person: 48% of `nt` entries carrying a boundary carry
|
|
38
|
+
* more than one, against 1.6% of `nr`. One cut would leave 上海交通大学 as
|
|
39
|
+
* `Shànghǎi Jiāotōngdàxué`.
|
|
40
|
+
*
|
|
41
|
+
* A tag is still required, because the mark is not confined to what 5.1 covers:
|
|
42
|
+
* 5,341 `ns` entries carry one, where `PLACE_GENERICS` already applies a
|
|
43
|
+
* measured condition, and `nz` carries 346 of which 第二次世界大战
|
|
44
|
+
* `[Di4 er4 Ci4 Shi4 jie4 Da4 zhan4]` divides in the wrong place. Both are
|
|
45
|
+
* measured out in `docs/orthography/`.
|
|
46
|
+
*/
|
|
47
|
+
export declare const NAME_PARTS: GroupingRule;
|
|
48
|
+
//# sourceMappingURL=word-grouping.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"word-grouping.d.ts","sourceRoot":"","sources":["../../src/orthography/word-grouping.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAEvD,OAAO,EAAY,KAAK,YAAY,EAAE,MAAM,WAAW,CAAC;AAiFxD;;;;;;GAMG;AACH,eAAO,MAAM,gBAAgB,EAAE,YAmB9B,CAAC;AAIF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,eAAO,MAAM,UAAU,EAAE,YAgBxB,CAAC"}
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
export { ADDRESS_PREFIX } from "./address-grouping.js";
|
|
2
|
+
import { characterCount, toCharacters } from "../script/characters.js";
|
|
3
|
+
import { divideAt } from "./rule.js";
|
|
4
|
+
import { LONGEST_SPACED_WORD, SPACED_WORD_FORMS } from "./word-list.js";
|
|
5
|
+
/**
|
|
6
|
+
* The character span each decoded word covers, in order.
|
|
7
|
+
*/
|
|
8
|
+
function spansOf(words) {
|
|
9
|
+
let at = 0;
|
|
10
|
+
return words.map((word) => {
|
|
11
|
+
const span = { at, word };
|
|
12
|
+
at += toCharacters(word.text).length;
|
|
13
|
+
return span;
|
|
14
|
+
});
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Rewrite the words covering a span into the parts the standard writes.
|
|
18
|
+
*
|
|
19
|
+
* The readings are redistributed by character count, so this only applies where
|
|
20
|
+
* every covered word reads one syllable per character. 儿化 cannot be
|
|
21
|
+
* redistributed and is left alone.
|
|
22
|
+
*/
|
|
23
|
+
function respace(covered, parts) {
|
|
24
|
+
const reading = covered.flatMap((word) => [...word.reading]);
|
|
25
|
+
const characters = covered.flatMap((word) => toCharacters(word.text));
|
|
26
|
+
if (reading.length !== characters.length) {
|
|
27
|
+
return undefined;
|
|
28
|
+
}
|
|
29
|
+
const head = covered[0];
|
|
30
|
+
/* c8 ignore next 3 -- the caller only passes a span it matched */
|
|
31
|
+
if (head === undefined) {
|
|
32
|
+
return undefined;
|
|
33
|
+
}
|
|
34
|
+
let at = 0;
|
|
35
|
+
return parts.map((part) => {
|
|
36
|
+
const length = toCharacters(part).length;
|
|
37
|
+
const written = {
|
|
38
|
+
text: part,
|
|
39
|
+
reading: reading.slice(at, at + length),
|
|
40
|
+
isProperNoun: head.isProperNoun,
|
|
41
|
+
partOfSpeech: head.partOfSpeech,
|
|
42
|
+
isKnown: head.isKnown,
|
|
43
|
+
};
|
|
44
|
+
at += length;
|
|
45
|
+
return written;
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* The longest listed form starting at a word, with how many words it consumed.
|
|
50
|
+
*
|
|
51
|
+
* Longest-first, so 一个人 would beat 一个 if both were listed. A listed entry
|
|
52
|
+
* has to end on a word boundary too: it is a claim about whole words, not
|
|
53
|
+
* about the middle of one.
|
|
54
|
+
*/
|
|
55
|
+
function longestListedFrom(spans, index) {
|
|
56
|
+
for (let end = spans.length; end > index; end--) {
|
|
57
|
+
const covered = spans.slice(index, end).map((span) => span.word);
|
|
58
|
+
const text = covered.map((word) => word.text).join("");
|
|
59
|
+
if (characterCount(text) <= LONGEST_SPACED_WORD) {
|
|
60
|
+
const parts = SPACED_WORD_FORMS.get(text);
|
|
61
|
+
const written = parts === undefined ? undefined : respace(covered, parts);
|
|
62
|
+
if (written !== undefined) {
|
|
63
|
+
return { written, consumed: end - index - 1 };
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
return undefined;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Write the words GB/T 16159 spaces in a way no rule reaches.
|
|
71
|
+
*
|
|
72
|
+
* Matches longest-first at each word boundary, and only where the entry ends on
|
|
73
|
+
* a word boundary too: a table entry is a claim about a whole word or several,
|
|
74
|
+
* not about the middle of one.
|
|
75
|
+
*/
|
|
76
|
+
export const SPACED_WORD_LIST = {
|
|
77
|
+
name: "spaced-word-list",
|
|
78
|
+
apply: (words) => {
|
|
79
|
+
const spans = spansOf(words);
|
|
80
|
+
const grouped = [];
|
|
81
|
+
for (let index = 0; index < spans.length; index++) {
|
|
82
|
+
const start = spans[index];
|
|
83
|
+
/* c8 ignore next 3 -- index stays inside the array */
|
|
84
|
+
if (start === undefined) {
|
|
85
|
+
continue;
|
|
86
|
+
}
|
|
87
|
+
const matched = longestListedFrom(spans, index);
|
|
88
|
+
grouped.push(...(matched?.written ?? [start.word]));
|
|
89
|
+
index += matched?.consumed ?? 0;
|
|
90
|
+
}
|
|
91
|
+
return grouped;
|
|
92
|
+
},
|
|
93
|
+
};
|
|
94
|
+
const DIVIDED_TAGS = new Set(["nr", "nt"]);
|
|
95
|
+
/**
|
|
96
|
+
* The parts of a proper name are written apart: 齐白石 is `Qí Báishí`.
|
|
97
|
+
*
|
|
98
|
+
* GB/T 16159 5.1 writes 姓 apart from 名 and a proper noun apart from its
|
|
99
|
+
* generic, each part capitalised. Both halves of that clause are this rule,
|
|
100
|
+
* because the evidence for them is the same evidence.
|
|
101
|
+
*
|
|
102
|
+
* 齐白石 and 北京大学 are dictionary entries, so the decoder produces **one**
|
|
103
|
+
* word each — and reading them as one word is what makes them read correctly at
|
|
104
|
+
* all. That makes this a *split*, and splitting contradicts the dictionary's own
|
|
105
|
+
* claim that the characters belong together. It needs a condition strong enough
|
|
106
|
+
* to survive the whole dictionary, and the obvious ones are not: a surname list
|
|
107
|
+
* takes 马克思, 高尔基, 巴赫 and 牛顿 apart, none of which is a Chinese name,
|
|
108
|
+
* and a list of generics cannot say where 上海浦东发展银行 divides.
|
|
109
|
+
*
|
|
110
|
+
* **The condition is CC-CEDICT's own capitalisation**, which states the
|
|
111
|
+
* boundaries outright: 齐白石 is `[Qi2 Bai2 shi2]`, 司马迁 `[Si1 ma3 Qian1]`,
|
|
112
|
+
* 上海交通大学 `[Shang4 hai3 Jiao1 tong1 Da4 xue2]`, and 马克思 `[Ma3 ke4 si1]`
|
|
113
|
+
* with no second capital at all. So a compound surname is recognised without a
|
|
114
|
+
* list of compound surnames, a generic without a list of generics, and a
|
|
115
|
+
* transliteration is excluded without a list of transliterations. It is the same
|
|
116
|
+
* source and the same signal the proper-noun veto already trusts — see "jieba's
|
|
117
|
+
* 专名 tags need a second opinion" in ROADMAP.md — extended from *whether* a
|
|
118
|
+
* word is a proper noun to *where* its parts divide.
|
|
119
|
+
*
|
|
120
|
+
* **Every stated boundary is cut, not only the first**, which is what separates
|
|
121
|
+
* an organisation from a person: 48% of `nt` entries carrying a boundary carry
|
|
122
|
+
* more than one, against 1.6% of `nr`. One cut would leave 上海交通大学 as
|
|
123
|
+
* `Shànghǎi Jiāotōngdàxué`.
|
|
124
|
+
*
|
|
125
|
+
* A tag is still required, because the mark is not confined to what 5.1 covers:
|
|
126
|
+
* 5,341 `ns` entries carry one, where `PLACE_GENERICS` already applies a
|
|
127
|
+
* measured condition, and `nz` carries 346 of which 第二次世界大战
|
|
128
|
+
* `[Di4 er4 Ci4 Shi4 jie4 Da4 zhan4]` divides in the wrong place. Both are
|
|
129
|
+
* measured out in `docs/orthography/`.
|
|
130
|
+
*/
|
|
131
|
+
export const NAME_PARTS = {
|
|
132
|
+
name: "name-parts",
|
|
133
|
+
apply: (words, dictionary) => words.flatMap((word) => {
|
|
134
|
+
const boundaries = dictionary.lookup(word.text)?.nameBoundaries ?? [];
|
|
135
|
+
if (boundaries.length === 0 || !word.isProperNoun) {
|
|
136
|
+
return [word];
|
|
137
|
+
}
|
|
138
|
+
if (!DIVIDED_TAGS.has(word.partOfSpeech)) {
|
|
139
|
+
return [word];
|
|
140
|
+
}
|
|
141
|
+
const parts = divideAt(word, boundaries);
|
|
142
|
+
// Every part is a proper noun in its own right, so each takes a capital:
|
|
143
|
+
// `Qí Báishí`, `Běijīng Dàxué`.
|
|
144
|
+
return parts.map((part) => ({ ...part, isProperNoun: true }));
|
|
145
|
+
}),
|
|
146
|
+
};
|
|
147
|
+
//# sourceMappingURL=word-grouping.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"word-grouping.js","sourceRoot":"","sources":["../../src/orthography/word-grouping.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvE,OAAO,EAAE,QAAQ,EAAqB,MAAM,WAAW,CAAC;AACxD,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAExE;;GAEG;AACH,SAAS,OAAO,CACd,KAA6B;IAE7B,IAAI,EAAE,GAAG,CAAC,CAAC;IACX,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QACxB,MAAM,IAAI,GAAG,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;QAC1B,EAAE,IAAI,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC;QACrC,OAAO,IAAI,CAAC;IACd,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;;;GAMG;AACH,SAAS,OAAO,CACd,OAA+B,EAC/B,KAAwB;IAExB,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;IAC7D,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACtE,IAAI,OAAO,CAAC,MAAM,KAAK,UAAU,CAAC,MAAM,EAAE,CAAC;QACzC,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IACxB,kEAAkE;IAClE,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACvB,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,IAAI,EAAE,GAAG,CAAC,CAAC;IACX,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QACxB,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC;QACzC,MAAM,OAAO,GAAG;YACd,IAAI,EAAE,IAAI;YACV,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,GAAG,MAAM,CAAC;YACvC,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,OAAO,EAAE,IAAI,CAAC,OAAO;SACtB,CAAC;QACF,EAAE,IAAI,MAAM,CAAC;QACb,OAAO,OAAO,CAAC;IACjB,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;;;GAMG;AACH,SAAS,iBAAiB,CACxB,KAAqE,EACrE,KAAa;IAIb,KAAK,IAAI,GAAG,GAAG,KAAK,CAAC,MAAM,EAAE,GAAG,GAAG,KAAK,EAAE,GAAG,EAAE,EAAE,CAAC;QAChD,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjE,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACvD,IAAI,cAAc,CAAC,IAAI,CAAC,IAAI,mBAAmB,EAAE,CAAC;YAChD,MAAM,KAAK,GAAG,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAC1C,MAAM,OAAO,GAAG,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;YAC1E,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;gBAC1B,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,GAAG,KAAK,GAAG,CAAC,EAAE,CAAC;YAChD,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAiB;IAC5C,IAAI,EAAE,kBAAkB;IACxB,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE;QACf,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;QAC7B,MAAM,OAAO,GAAkB,EAAE,CAAC;QAElC,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC;YAClD,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;YAC3B,sDAAsD;YACtD,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;gBACxB,SAAS;YACX,CAAC;YACD,MAAM,OAAO,GAAG,iBAAiB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;YAChD,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACpD,KAAK,IAAI,OAAO,EAAE,QAAQ,IAAI,CAAC,CAAC;QAClC,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;CACF,CAAC;AAEF,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;AAE3C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,MAAM,CAAC,MAAM,UAAU,GAAiB;IACtC,IAAI,EAAE,YAAY;IAClB,KAAK,EAAE,CAAC,KAAK,EAAE,UAAU,EAAE,EAAE,CAC3B,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;QACrB,MAAM,UAAU,GAAG,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,cAAc,IAAI,EAAE,CAAC;QACtE,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;YAClD,OAAO,CAAC,IAAI,CAAC,CAAC;QAChB,CAAC;QACD,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;YACzC,OAAO,CAAC,IAAI,CAAC,CAAC;QAChB,CAAC;QACD,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;QACzC,yEAAyE;QACzE,gCAAgC;QAChC,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IAChE,CAAC,CAAC;CACL,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The script tables' on-disk format: its separators and its line tags.
|
|
3
|
+
*
|
|
4
|
+
* Both halves of the format — writing the file and reading it back — are held
|
|
5
|
+
* to the same answers here, which is what stops the two drifting apart.
|
|
6
|
+
*/
|
|
7
|
+
export declare const COLUMN = "\t";
|
|
8
|
+
export declare const LINE = "\n";
|
|
9
|
+
export declare const READING = ",";
|
|
10
|
+
export declare const READING_FORM = "=";
|
|
11
|
+
/**
|
|
12
|
+
* Line tags, one per table, so that all six ship as one fetchable file.
|
|
13
|
+
*/
|
|
14
|
+
export declare const TAGS: {
|
|
15
|
+
readonly toTraditional: "t";
|
|
16
|
+
readonly toSimplified: "s";
|
|
17
|
+
readonly traditionalWord: "w";
|
|
18
|
+
readonly simplifiedWord: "x";
|
|
19
|
+
readonly hansOnly: "h";
|
|
20
|
+
readonly hantOnly: "H";
|
|
21
|
+
};
|
|
22
|
+
//# sourceMappingURL=conversion-format.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"conversion-format.d.ts","sourceRoot":"","sources":["../../src/script/conversion-format.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,eAAO,MAAM,MAAM,OAAO,CAAC;AAE3B,eAAO,MAAM,IAAI,OAAO,CAAC;AAEzB,eAAO,MAAM,OAAO,MAAM,CAAC;AAE3B,eAAO,MAAM,YAAY,MAAM,CAAC;AAEhC;;GAEG;AACH,eAAO,MAAM,IAAI;aACf,aAAa,EAAE,GAAG;aAClB,YAAY,EAAE,GAAG;aACjB,eAAe,EAAE,GAAG;aACpB,cAAc,EAAE,GAAG;aACnB,QAAQ,EAAE,GAAG;aACb,QAAQ,EAAE,GAAG;CACL,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The script tables' on-disk format: its separators and its line tags.
|
|
3
|
+
*
|
|
4
|
+
* Both halves of the format — writing the file and reading it back — are held
|
|
5
|
+
* to the same answers here, which is what stops the two drifting apart.
|
|
6
|
+
*/
|
|
7
|
+
export const COLUMN = "\t";
|
|
8
|
+
export const LINE = "\n";
|
|
9
|
+
export const READING = ",";
|
|
10
|
+
export const READING_FORM = "=";
|
|
11
|
+
/**
|
|
12
|
+
* Line tags, one per table, so that all six ship as one fetchable file.
|
|
13
|
+
*/
|
|
14
|
+
export const TAGS = {
|
|
15
|
+
toTraditional: "t",
|
|
16
|
+
toSimplified: "s",
|
|
17
|
+
traditionalWord: "w",
|
|
18
|
+
simplifiedWord: "x",
|
|
19
|
+
hansOnly: "h",
|
|
20
|
+
hantOnly: "H",
|
|
21
|
+
};
|
|
22
|
+
//# sourceMappingURL=conversion-format.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"conversion-format.js","sourceRoot":"","sources":["../../src/script/conversion-format.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,CAAC,MAAM,MAAM,GAAG,IAAI,CAAC;AAE3B,MAAM,CAAC,MAAM,IAAI,GAAG,IAAI,CAAC;AAEzB,MAAM,CAAC,MAAM,OAAO,GAAG,GAAG,CAAC;AAE3B,MAAM,CAAC,MAAM,YAAY,GAAG,GAAG,CAAC;AAEhC;;GAEG;AACH,MAAM,CAAC,MAAM,IAAI,GAAG;IAClB,aAAa,EAAE,GAAG;IAClB,YAAY,EAAE,GAAG;IACjB,eAAe,EAAE,GAAG;IACpB,cAAc,EAAE,GAAG;IACnB,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;CACL,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { ScriptTables } from "./conversion.js";
|
|
2
|
+
/**
|
|
3
|
+
* Read the tables back from the artifact text.
|
|
4
|
+
*
|
|
5
|
+
* Unknown tags are skipped rather than rejected, so that a future table can be
|
|
6
|
+
* added without an older reader refusing the file outright.
|
|
7
|
+
*/
|
|
8
|
+
export declare function readScriptTables(text: string): ScriptTables;
|
|
9
|
+
//# sourceMappingURL=conversion-read.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"conversion-read.d.ts","sourceRoot":"","sources":["../../src/script/conversion-read.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAuB,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAgCzE;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,CA0C3D"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Reading the script tables back from the artifact text.
|
|
3
|
+
*/
|
|
4
|
+
import { toCharacters } from "./characters.js";
|
|
5
|
+
import { COLUMN, LINE, READING, READING_FORM, TAGS, } from "./conversion-format.js";
|
|
6
|
+
/**
|
|
7
|
+
* Read one character table line into its conversion.
|
|
8
|
+
*/
|
|
9
|
+
function readConversion(to, readings, also) {
|
|
10
|
+
const pairs = readings === "" ? [] : readings.split(READING);
|
|
11
|
+
const byReading = new Map();
|
|
12
|
+
for (const pair of pairs) {
|
|
13
|
+
const [key = "", form = ""] = pair.split(READING_FORM);
|
|
14
|
+
if (form !== "") {
|
|
15
|
+
byReading.set(key, form);
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
return {
|
|
19
|
+
to,
|
|
20
|
+
...(byReading.size > 0 && { byReading }),
|
|
21
|
+
...(also !== "" && { also: toCharacters(also) }),
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Read the tables back from the artifact text.
|
|
26
|
+
*
|
|
27
|
+
* Unknown tags are skipped rather than rejected, so that a future table can be
|
|
28
|
+
* added without an older reader refusing the file outright.
|
|
29
|
+
*/
|
|
30
|
+
export function readScriptTables(text) {
|
|
31
|
+
const toTraditional = new Map();
|
|
32
|
+
const toSimplified = new Map();
|
|
33
|
+
const traditionalWords = new Map();
|
|
34
|
+
const simplifiedWords = new Map();
|
|
35
|
+
const hansOnly = new Set();
|
|
36
|
+
const hantOnly = new Set();
|
|
37
|
+
const characterTables = new Map([
|
|
38
|
+
[TAGS.toTraditional, toTraditional],
|
|
39
|
+
[TAGS.toSimplified, toSimplified],
|
|
40
|
+
]);
|
|
41
|
+
const wordTables = new Map([
|
|
42
|
+
[TAGS.traditionalWord, traditionalWords],
|
|
43
|
+
[TAGS.simplifiedWord, simplifiedWords],
|
|
44
|
+
]);
|
|
45
|
+
const characterSets = new Map([
|
|
46
|
+
[TAGS.hansOnly, hansOnly],
|
|
47
|
+
[TAGS.hantOnly, hantOnly],
|
|
48
|
+
]);
|
|
49
|
+
for (const line of text.split(LINE)) {
|
|
50
|
+
const [tag = "", from = "", to = "", readings = "", also = ""] = line.split(COLUMN);
|
|
51
|
+
if (from === "") {
|
|
52
|
+
continue;
|
|
53
|
+
}
|
|
54
|
+
// Dispatching on a map rather than a switch keeps an unknown tag a no-op,
|
|
55
|
+
// so a file written by a later version reads as much as this one knows.
|
|
56
|
+
characterTables.get(tag)?.set(from, readConversion(to, readings, also));
|
|
57
|
+
wordTables.get(tag)?.set(from, to);
|
|
58
|
+
characterSets.get(tag)?.add(from);
|
|
59
|
+
}
|
|
60
|
+
return {
|
|
61
|
+
toTraditional,
|
|
62
|
+
toSimplified,
|
|
63
|
+
traditionalWords,
|
|
64
|
+
simplifiedWords,
|
|
65
|
+
hansOnly,
|
|
66
|
+
hantOnly,
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=conversion-read.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"conversion-read.js","sourceRoot":"","sources":["../../src/script/conversion-read.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Writing the script tables out as the artifact text.
|
|
3
|
+
*
|
|
4
|
+
* One line per mapping, tagged by which table it belongs to, so the whole of
|
|
5
|
+
* script conversion is a single file to fetch and a single scan to read. The
|
|
6
|
+
* format is the same shape as the dictionary's: separators rather than syntax,
|
|
7
|
+
* so that reading it back is a split rather than a parse.
|
|
8
|
+
*/
|
|
9
|
+
import type { ScriptTables } from "./conversion.js";
|
|
10
|
+
/**
|
|
11
|
+
* Write the tables as the artifact text.
|
|
12
|
+
*/
|
|
13
|
+
export declare function writeScriptTables(tables: ScriptTables): string;
|
|
14
|
+
//# sourceMappingURL=conversion-write.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"conversion-write.d.ts","sourceRoot":"","sources":["../../src/script/conversion-write.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,KAAK,EAAuB,YAAY,EAAE,MAAM,iBAAiB,CAAC;AA+BzE;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,CAkB9D"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { COLUMN, LINE, READING, READING_FORM, TAGS, } from "./conversion-format.js";
|
|
2
|
+
/**
|
|
3
|
+
* Write one character table's lines.
|
|
4
|
+
*/
|
|
5
|
+
function writeCharacterTable(tag, table) {
|
|
6
|
+
return [...table].map(([character, conversion]) => {
|
|
7
|
+
const readings = [...(conversion.byReading ?? [])]
|
|
8
|
+
.map(([key, form]) => `${key}${READING_FORM}${form}`)
|
|
9
|
+
.join(READING);
|
|
10
|
+
const also = (conversion.also ?? []).join("");
|
|
11
|
+
const columns = [tag, character, conversion.to, readings, also];
|
|
12
|
+
// Trailing empty columns say nothing and are dropped, which is most lines:
|
|
13
|
+
// the common case is a character with one form and no reading to condition.
|
|
14
|
+
while (columns.at(-1) === "") {
|
|
15
|
+
columns.pop();
|
|
16
|
+
}
|
|
17
|
+
return columns.join(COLUMN);
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Write the tables as the artifact text.
|
|
22
|
+
*/
|
|
23
|
+
export function writeScriptTables(tables) {
|
|
24
|
+
return [
|
|
25
|
+
...writeCharacterTable(TAGS.toTraditional, tables.toTraditional),
|
|
26
|
+
...writeCharacterTable(TAGS.toSimplified, tables.toSimplified),
|
|
27
|
+
...[...tables.traditionalWords].map(([hans, hant]) => [TAGS.traditionalWord, hans, hant].join(COLUMN)),
|
|
28
|
+
...[...tables.simplifiedWords].map(([hant, hans]) => [TAGS.simplifiedWord, hant, hans].join(COLUMN)),
|
|
29
|
+
...[...tables.hansOnly].map((character) => [TAGS.hansOnly, character].join(COLUMN)),
|
|
30
|
+
...[...tables.hantOnly].map((character) => [TAGS.hantOnly, character].join(COLUMN)),
|
|
31
|
+
"",
|
|
32
|
+
].join(LINE);
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=conversion-write.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"conversion-write.js","sourceRoot":"","sources":["../../src/script/conversion-write.ts"],"names":[],"mappings":"AASA,OAAO,EACL,MAAM,EACN,IAAI,EACJ,OAAO,EACP,YAAY,EACZ,IAAI,GACL,MAAM,wBAAwB,CAAC;AAEhC;;GAEG;AACH,SAAS,mBAAmB,CAC1B,GAAW,EACX,KAA+C;IAE/C,OAAO,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,EAAE,UAAU,CAAC,EAAE,EAAE;QAChD,MAAM,QAAQ,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC;aAC/C,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,YAAY,GAAG,IAAI,EAAE,CAAC;aACpD,IAAI,CAAC,OAAO,CAAC,CAAC;QACjB,MAAM,IAAI,GAAG,CAAC,UAAU,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC9C,MAAM,OAAO,GAAG,CAAC,GAAG,EAAE,SAAS,EAAE,UAAU,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;QAChE,2EAA2E;QAC3E,4EAA4E;QAC5E,OAAO,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC;YAC7B,OAAO,CAAC,GAAG,EAAE,CAAC;QAChB,CAAC;QACD,OAAO,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC9B,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,MAAoB;IACpD,OAAO;QACL,GAAG,mBAAmB,CAAC,IAAI,CAAC,aAAa,EAAE,MAAM,CAAC,aAAa,CAAC;QAChE,GAAG,mBAAmB,CAAC,IAAI,CAAC,YAAY,EAAE,MAAM,CAAC,YAAY,CAAC;QAC9D,GAAG,CAAC,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,CACnD,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAChD;QACD,GAAG,CAAC,GAAG,MAAM,CAAC,eAAe,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,CAClD,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAC/C;QACD,GAAG,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CACxC,CAAC,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CACxC;QACD,GAAG,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CACxC,CAAC,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CACxC;QACD,EAAE;KACH,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC"}
|
|
@@ -1,4 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The script conversion tables, and what a conversion does with them.
|
|
3
|
+
*
|
|
4
|
+
* How the tables are stored is a separate question, and lives in the
|
|
5
|
+
* `conversion-format`, `-write` and `-read` modules: everything here is about
|
|
6
|
+
* the mapping itself, so that a caller converting text never meets the file
|
|
7
|
+
* format, and changing the format never touches the conversion.
|
|
8
|
+
*/
|
|
1
9
|
import type { Syllable } from "../syllable/syllable.js";
|
|
10
|
+
export { readScriptTables } from "./conversion-read.js";
|
|
11
|
+
export { writeScriptTables } from "./conversion-write.js";
|
|
2
12
|
/**
|
|
3
13
|
* How one character converts into the other script.
|
|
4
14
|
*
|
|
@@ -76,22 +86,6 @@ export declare function formsOf(conversion: CharacterConversion | undefined): re
|
|
|
76
86
|
* majority and a flagged guess for the rest.
|
|
77
87
|
*/
|
|
78
88
|
export declare function convertCharacters(table: ReadonlyMap<string, CharacterConversion>, word: string, readings?: readonly (Syllable | undefined)[]): string;
|
|
79
|
-
/**
|
|
80
|
-
* Write the tables as the artifact text.
|
|
81
|
-
*
|
|
82
|
-
* One line per mapping, tagged by which table it belongs to, so the whole of
|
|
83
|
-
* script conversion is a single file to fetch and a single scan to read. The
|
|
84
|
-
* format is the same shape as the dictionary's: separators rather than syntax,
|
|
85
|
-
* so that reading it back is a split rather than a parse.
|
|
86
|
-
*/
|
|
87
|
-
export declare function writeScriptTables(tables: ScriptTables): string;
|
|
88
|
-
/**
|
|
89
|
-
* Read the tables back from the artifact text.
|
|
90
|
-
*
|
|
91
|
-
* Unknown tags are skipped rather than rejected, so that a future table can be
|
|
92
|
-
* added without an older reader refusing the file outright.
|
|
93
|
-
*/
|
|
94
|
-
export declare function readScriptTables(text: string): ScriptTables;
|
|
95
89
|
/**
|
|
96
90
|
* Parse a stored reading key back into a syllable.
|
|
97
91
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"conversion.d.ts","sourceRoot":"","sources":["../../src/script/conversion.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAIxD;;;;;;GAMG;AACH,MAAM,WAAW,mBAAmB;IAClC,wEAAwE;IACxE,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,oEAAoE;IACpE,QAAQ,CAAC,SAAS,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjD;;;;;;;;;;OAUG;IACH,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CACnC;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,aAAa,EAAE,WAAW,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;IACjE,QAAQ,CAAC,YAAY,EAAE,WAAW,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;IAChE,6DAA6D;IAC7D,QAAQ,CAAC,gBAAgB,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACvD,6DAA6D;IAC7D,QAAQ,CAAC,eAAe,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtD,yDAAyD;IACzD,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACvC,yDAAyD;IACzD,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;CACxC;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,QAAQ,GAAG,SAAS,GAAG,MAAM,CAMpE;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,WAAW,CAAC,MAAM,EAAE,mBAAmB,CAAC,EAC/C,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,QAAQ,GAAG,SAAS,GAC7B,MAAM,CAOR;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,WAAW,CAAC,MAAM,EAAE,mBAAmB,CAAC,EAC/C,SAAS,EAAE,MAAM,GAChB,OAAO,CAQT;AAED;;GAEG;AACH,wBAAgB,OAAO,CACrB,UAAU,EAAE,mBAAmB,GAAG,SAAS,GAC1C,SAAS,MAAM,EAAE,CAWnB;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,WAAW,CAAC,MAAM,EAAE,mBAAmB,CAAC,EAC/C,IAAI,EAAE,MAAM,EACZ,QAAQ,GAAE,SAAS,CAAC,QAAQ,GAAG,SAAS,CAAC,EAAO,GAC/C,MAAM,CAMR;
|
|
1
|
+
{"version":3,"file":"conversion.d.ts","sourceRoot":"","sources":["../../src/script/conversion.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAIxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE1D;;;;;;GAMG;AACH,MAAM,WAAW,mBAAmB;IAClC,wEAAwE;IACxE,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,oEAAoE;IACpE,QAAQ,CAAC,SAAS,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjD;;;;;;;;;;OAUG;IACH,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CACnC;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,aAAa,EAAE,WAAW,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;IACjE,QAAQ,CAAC,YAAY,EAAE,WAAW,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;IAChE,6DAA6D;IAC7D,QAAQ,CAAC,gBAAgB,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACvD,6DAA6D;IAC7D,QAAQ,CAAC,eAAe,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtD,yDAAyD;IACzD,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACvC,yDAAyD;IACzD,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;CACxC;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,QAAQ,GAAG,SAAS,GAAG,MAAM,CAMpE;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,WAAW,CAAC,MAAM,EAAE,mBAAmB,CAAC,EAC/C,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,QAAQ,GAAG,SAAS,GAC7B,MAAM,CAOR;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,WAAW,CAAC,MAAM,EAAE,mBAAmB,CAAC,EAC/C,SAAS,EAAE,MAAM,GAChB,OAAO,CAQT;AAED;;GAEG;AACH,wBAAgB,OAAO,CACrB,UAAU,EAAE,mBAAmB,GAAG,SAAS,GAC1C,SAAS,MAAM,EAAE,CAWnB;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,WAAW,CAAC,MAAM,EAAE,mBAAmB,CAAC,EAC/C,IAAI,EAAE,MAAM,EACZ,QAAQ,GAAE,SAAS,CAAC,QAAQ,GAAG,SAAS,CAAC,EAAO,GAC/C,MAAM,CAMR;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS,CAEnE"}
|