@kensio/pinyinjs 1.7.3 → 1.7.5
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/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/confidence.d.ts.map +1 -1
- package/dist/decode/confidence.js +3 -118
- 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 +66 -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/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 +140 -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 +58 -0
- package/dist/decode/jiao-rule.d.ts.map +1 -0
- package/dist/decode/jiao-rule.js +76 -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 +82 -0
- package/dist/decode/lattice-types.d.ts.map +1 -0
- package/dist/decode/lattice-types.js +44 -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 +31 -0
- package/dist/decode/polyphone-rules.d.ts.map +1 -0
- package/dist/decode/polyphone-rules.js +159 -0
- package/dist/decode/polyphone-rules.js.map +1 -0
- package/dist/decode/reading-rules.d.ts +2 -97
- package/dist/decode/reading-rules.d.ts.map +1 -1
- package/dist/decode/reading-rules.js +4 -365
- 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/sandhi-tones.d.ts +69 -0
- package/dist/decode/sandhi-tones.d.ts.map +1 -0
- package/dist/decode/sandhi-tones.js +88 -0
- package/dist/decode/sandhi-tones.js.map +1 -0
- package/dist/decode/sandhi.d.ts +1 -1
- package/dist/decode/sandhi.d.ts.map +1 -1
- package/dist/decode/sandhi.js +1 -81
- 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 +28 -0
- package/dist/decode/write-run.d.ts.map +1 -0
- package/dist/decode/write-run.js +77 -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 +80 -0
- package/dist/dictionary/cedict-senses.d.ts.map +1 -0
- package/dist/dictionary/cedict-senses.js +114 -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/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 +121 -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-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 +30 -713
- 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 +38 -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/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
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import { buildLattice } from "./lattice.js";
|
|
2
|
+
export { runLattice } from "./lattice-slice.js";
|
|
3
|
+
/**
|
|
4
|
+
* Building the lattice one Han run is decoded over.
|
|
5
|
+
*
|
|
6
|
+
* A run is decoded on its own and the pieces are put back together, so this
|
|
7
|
+
* is where a lattice is cut down to a run and the words are read back out of
|
|
8
|
+
* it. `decode.ts` is what asks for one.
|
|
9
|
+
*/
|
|
10
|
+
import { decodeSpacing } from "./decode.js";
|
|
11
|
+
import { applyEdgeRules } from "./rules.js";
|
|
12
|
+
/**
|
|
13
|
+
* Gather the reading units into the words the boundaries make of them.
|
|
14
|
+
*
|
|
15
|
+
* Where the two decodes disagree the readings win, which is what "advisory"
|
|
16
|
+
* means for the spacing decode: a boundary falling inside a reading unit is
|
|
17
|
+
* dropped rather than allowed to break the unit up. 玩儿 read as `wánr` is one
|
|
18
|
+
* syllable over two characters, and no spacing can be put between them.
|
|
19
|
+
*/
|
|
20
|
+
export function groupUnits(units, boundaries) {
|
|
21
|
+
const starts = new Set(units.map((unit) => unit.from));
|
|
22
|
+
const kept = new Set(boundaries.filter((at) => starts.has(at)));
|
|
23
|
+
const groups = [];
|
|
24
|
+
let held = [];
|
|
25
|
+
for (const unit of units) {
|
|
26
|
+
if (kept.has(unit.from) && held.length > 0) {
|
|
27
|
+
groups.push(held);
|
|
28
|
+
held = [];
|
|
29
|
+
}
|
|
30
|
+
held.push(unit);
|
|
31
|
+
}
|
|
32
|
+
if (held.length > 0) {
|
|
33
|
+
groups.push(held);
|
|
34
|
+
}
|
|
35
|
+
return groups;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Assemble one word from the units the boundaries kept together.
|
|
39
|
+
*/
|
|
40
|
+
export function wordFrom(dictionary, lattice, group) {
|
|
41
|
+
const first = group[0];
|
|
42
|
+
const last = group.at(-1);
|
|
43
|
+
/* c8 ignore next 3 -- a group is only made by pushing a unit into it */
|
|
44
|
+
if (first === undefined || last === undefined) {
|
|
45
|
+
throw new Error("a word must cover at least one reading unit");
|
|
46
|
+
}
|
|
47
|
+
const text = lattice.characters.slice(first.from, last.to).join("");
|
|
48
|
+
const entry = dictionary.lookup(text);
|
|
49
|
+
return {
|
|
50
|
+
text,
|
|
51
|
+
reading: group.flatMap((unit) => [...unit.reading]),
|
|
52
|
+
isProperNoun: entry?.isProperNoun ?? false,
|
|
53
|
+
partOfSpeech: entry?.partOfSpeech ?? "",
|
|
54
|
+
isKnown: entry !== undefined,
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* The lattice a run decodes over: stage 1 built, then stage 4 applied.
|
|
59
|
+
*
|
|
60
|
+
* The rules run between building and decoding rather than over the output,
|
|
61
|
+
* which is the whole point of them — they change what the decode gets to choose
|
|
62
|
+
* between, so everything downstream sees one lattice rather than a decode and
|
|
63
|
+
* a list of corrections to it.
|
|
64
|
+
*/
|
|
65
|
+
export function ruledLattice(dictionary, run, rules, hints) {
|
|
66
|
+
return applyEdgeRules(buildLattice(dictionary, run, hints), dictionary, rules);
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Cut a decode of the whole lattice down to the run at the end of it.
|
|
70
|
+
*
|
|
71
|
+
* Everything before `at` was context rather than run — 汉字 a caller put in
|
|
72
|
+
* front so that the decode could see them — and is dropped once it has done its
|
|
73
|
+
* work.
|
|
74
|
+
*/
|
|
75
|
+
export function runGroups({ lattice, at }, units) {
|
|
76
|
+
return groupUnits(units.filter((unit) => unit.from >= at), decodeSpacing(lattice).filter((from) => from >= at));
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Decode a Han run with the lattice: the recommended path.
|
|
80
|
+
*
|
|
81
|
+
* Stages 1 to 3 of ALGORITHM.md end to end — build every candidate reading,
|
|
82
|
+
* lock the positions that cannot vary, score the rest — where the greedy
|
|
83
|
+
* baseline commits to the longest match at each position and never revisits it.
|
|
84
|
+
*
|
|
85
|
+
* `before` is 汉字 standing in front of the run that the decode should see and
|
|
86
|
+
* not report: the 汉字 a number written in digits would have been written with.
|
|
87
|
+
* A run is decoded on its own without it, and a run reached that way has no idea
|
|
88
|
+
* what preceded it — 个人 alone is the word `gèrén`, while the 两 of 2个人 makes
|
|
89
|
+
* 两个 the word and leaves 人 to itself.
|
|
90
|
+
*/
|
|
91
|
+
//# sourceMappingURL=run-lattice.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run-lattice.js","sourceRoot":"","sources":["../../src/decode/run-lattice.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Which tone 一 and 不 take, and when a 一 is being counted rather than said.
|
|
3
|
+
*
|
|
4
|
+
* Both characters change tone by what follows them, and 一 additionally does
|
|
5
|
+
* not change at all when it is a number being counted off.
|
|
6
|
+
*/
|
|
7
|
+
import { type Syllable } from "../syllable/syllable.js";
|
|
8
|
+
import { type Tone } from "../tone/tone.js";
|
|
9
|
+
/**
|
|
10
|
+
* Whether a syllable is 一, which is the only thing spelled `yi` that sandhis.
|
|
11
|
+
*/
|
|
12
|
+
export declare function isYi(syllable: Syllable): boolean;
|
|
13
|
+
/**
|
|
14
|
+
* Whether a syllable is 不.
|
|
15
|
+
*/
|
|
16
|
+
export declare function isBu(syllable: Syllable): boolean;
|
|
17
|
+
/**
|
|
18
|
+
* The tone 一 takes before a given following tone.
|
|
19
|
+
*
|
|
20
|
+
* Fourth tone flattens it to second; anything else raises it to fourth. Before
|
|
21
|
+
* a neutral tone or at the end of a phrase it keeps its citation first tone,
|
|
22
|
+
* since there is nothing to assimilate to.
|
|
23
|
+
*/
|
|
24
|
+
export declare function yiToneBefore(following: Tone | undefined): Tone;
|
|
25
|
+
/**
|
|
26
|
+
* The numeral words a 一 can be the last digit of.
|
|
27
|
+
*
|
|
28
|
+
* Toneless, because what is being asked is which word it is rather than what
|
|
29
|
+
* tone it is carrying, and 十 is `shí` in every context it appears in here.
|
|
30
|
+
*
|
|
31
|
+
* **亿 is deliberately absent**, and that is measured rather than assumed: no
|
|
32
|
+
* 一 in 88,866 lines of Tatoeba and zh.wikipedia ends a number in 亿, while 意,
|
|
33
|
+
* 议, 义 and 議 all read `yì`, all precede a 一 that really is counting, and
|
|
34
|
+
* would all lose their sandhi for it — 11 conversions against nothing gained.
|
|
35
|
+
* The other three stay, because a number can end 百一 or 千一 even though this
|
|
36
|
+
* corpus has none, and the one thing they cost is 擺一個.
|
|
37
|
+
*/
|
|
38
|
+
export declare const NUMERAL_WORDS: Set<string>;
|
|
39
|
+
/**
|
|
40
|
+
* The words that carry a number on past a 一, so that it is still counting.
|
|
41
|
+
*
|
|
42
|
+
* 一百一十's second 一 counts the ten it is followed by and takes the sandhi;
|
|
43
|
+
* 二十一's does not, because nothing numeric comes after it.
|
|
44
|
+
*/
|
|
45
|
+
export declare const CONTINUES_NUMBER: Set<string>;
|
|
46
|
+
/**
|
|
47
|
+
* The ordinal prefix 第.
|
|
48
|
+
*/
|
|
49
|
+
export declare const ORDINAL_PREFIX = "di";
|
|
50
|
+
/**
|
|
51
|
+
* Whether a 一 is counting something, which is the only time it takes sandhi.
|
|
52
|
+
*
|
|
53
|
+
* The rule 一 sandhi is usually stated with — fourth tone flattens it, anything
|
|
54
|
+
* else raises it — is about the 一 that *counts*. Two shapes of 一 are not
|
|
55
|
+
* counting and keep the citation tone, and both are standard:
|
|
56
|
+
*
|
|
57
|
+
* - **The last digit of a larger number.** 十一月 is `shíyīyuè` and 二十一岁 is
|
|
58
|
+
* `èrshíyī suì`. The signal is a numeral word before it with nothing numeric
|
|
59
|
+
* after, which is what leaves 一百一十's middle 一 alone: 十 follows it, so it
|
|
60
|
+
* is counting the ten.
|
|
61
|
+
* - **An ordinal.** 第一个 is `dìyī gè`.
|
|
62
|
+
*
|
|
63
|
+
* **Read off the syllables rather than the characters**, because that is all
|
|
64
|
+
* this pass has: `pinyinjs sandhi shíyī gè` never sees a hanzi. So it cannot
|
|
65
|
+
* tell 十 from 时 or 第 from 地, and `docs/sandhi/` carries what that costs —
|
|
66
|
+
* measured, not estimated.
|
|
67
|
+
*/
|
|
68
|
+
export declare function isCounting(syllables: readonly Syllable[], at: number): boolean;
|
|
69
|
+
//# sourceMappingURL=sandhi-tones.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sandhi-tones.d.ts","sourceRoot":"","sources":["../../src/decode/sandhi-tones.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,KAAK,QAAQ,EAAyB,MAAM,yBAAyB,CAAC;AAC/E,OAAO,EAAgB,KAAK,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAE1D;;GAEG;AACH,wBAAgB,IAAI,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAEhD;AAED;;GAEG;AACH,wBAAgB,IAAI,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAEhD;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,SAAS,EAAE,IAAI,GAAG,SAAS,GAAG,IAAI,CAK9D;AAED;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,aAAa,aAAyC,CAAC;AAEpE;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,aAAsC,CAAC;AAEpE;;GAEG;AACH,eAAO,MAAM,cAAc,OAAO,CAAC;AAEnC;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,UAAU,CACxB,SAAS,EAAE,SAAS,QAAQ,EAAE,EAC9B,EAAE,EAAE,MAAM,GACT,OAAO,CAUT"}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Which tone 一 and 不 take, and when a 一 is being counted rather than said.
|
|
3
|
+
*
|
|
4
|
+
* Both characters change tone by what follows them, and 一 additionally does
|
|
5
|
+
* not change at all when it is a number being counted off.
|
|
6
|
+
*/
|
|
7
|
+
import { writeSyllableSpelling } from "../syllable/syllable.js";
|
|
8
|
+
import { NEUTRAL_TONE } from "../tone/tone.js";
|
|
9
|
+
/**
|
|
10
|
+
* Whether a syllable is 一, which is the only thing spelled `yi` that sandhis.
|
|
11
|
+
*/
|
|
12
|
+
export function isYi(syllable) {
|
|
13
|
+
return syllable.initial === "" && syllable.final === "i";
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Whether a syllable is 不.
|
|
17
|
+
*/
|
|
18
|
+
export function isBu(syllable) {
|
|
19
|
+
return syllable.initial === "b" && syllable.final === "u";
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* The tone 一 takes before a given following tone.
|
|
23
|
+
*
|
|
24
|
+
* Fourth tone flattens it to second; anything else raises it to fourth. Before
|
|
25
|
+
* a neutral tone or at the end of a phrase it keeps its citation first tone,
|
|
26
|
+
* since there is nothing to assimilate to.
|
|
27
|
+
*/
|
|
28
|
+
export function yiToneBefore(following) {
|
|
29
|
+
if (following === undefined || following === NEUTRAL_TONE) {
|
|
30
|
+
return 1;
|
|
31
|
+
}
|
|
32
|
+
return following === 4 ? 2 : 4;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* The numeral words a 一 can be the last digit of.
|
|
36
|
+
*
|
|
37
|
+
* Toneless, because what is being asked is which word it is rather than what
|
|
38
|
+
* tone it is carrying, and 十 is `shí` in every context it appears in here.
|
|
39
|
+
*
|
|
40
|
+
* **亿 is deliberately absent**, and that is measured rather than assumed: no
|
|
41
|
+
* 一 in 88,866 lines of Tatoeba and zh.wikipedia ends a number in 亿, while 意,
|
|
42
|
+
* 议, 义 and 議 all read `yì`, all precede a 一 that really is counting, and
|
|
43
|
+
* would all lose their sandhi for it — 11 conversions against nothing gained.
|
|
44
|
+
* The other three stay, because a number can end 百一 or 千一 even though this
|
|
45
|
+
* corpus has none, and the one thing they cost is 擺一個.
|
|
46
|
+
*/
|
|
47
|
+
export const NUMERAL_WORDS = new Set(["shi", "bai", "qian", "wan"]);
|
|
48
|
+
/**
|
|
49
|
+
* The words that carry a number on past a 一, so that it is still counting.
|
|
50
|
+
*
|
|
51
|
+
* 一百一十's second 一 counts the ten it is followed by and takes the sandhi;
|
|
52
|
+
* 二十一's does not, because nothing numeric comes after it.
|
|
53
|
+
*/
|
|
54
|
+
export const CONTINUES_NUMBER = new Set([...NUMERAL_WORDS, "ling"]);
|
|
55
|
+
/**
|
|
56
|
+
* The ordinal prefix 第.
|
|
57
|
+
*/
|
|
58
|
+
export const ORDINAL_PREFIX = "di";
|
|
59
|
+
/**
|
|
60
|
+
* Whether a 一 is counting something, which is the only time it takes sandhi.
|
|
61
|
+
*
|
|
62
|
+
* The rule 一 sandhi is usually stated with — fourth tone flattens it, anything
|
|
63
|
+
* else raises it — is about the 一 that *counts*. Two shapes of 一 are not
|
|
64
|
+
* counting and keep the citation tone, and both are standard:
|
|
65
|
+
*
|
|
66
|
+
* - **The last digit of a larger number.** 十一月 is `shíyīyuè` and 二十一岁 is
|
|
67
|
+
* `èrshíyī suì`. The signal is a numeral word before it with nothing numeric
|
|
68
|
+
* after, which is what leaves 一百一十's middle 一 alone: 十 follows it, so it
|
|
69
|
+
* is counting the ten.
|
|
70
|
+
* - **An ordinal.** 第一个 is `dìyī gè`.
|
|
71
|
+
*
|
|
72
|
+
* **Read off the syllables rather than the characters**, because that is all
|
|
73
|
+
* this pass has: `pinyinjs sandhi shíyī gè` never sees a hanzi. So it cannot
|
|
74
|
+
* tell 十 from 时 or 第 from 地, and `docs/sandhi/` carries what that costs —
|
|
75
|
+
* measured, not estimated.
|
|
76
|
+
*/
|
|
77
|
+
export function isCounting(syllables, at) {
|
|
78
|
+
const spelt = (index) => {
|
|
79
|
+
const syllable = syllables[index];
|
|
80
|
+
return syllable === undefined ? "" : writeSyllableSpelling(syllable);
|
|
81
|
+
};
|
|
82
|
+
const before = spelt(at - 1);
|
|
83
|
+
if (before === ORDINAL_PREFIX) {
|
|
84
|
+
return false;
|
|
85
|
+
}
|
|
86
|
+
return !NUMERAL_WORDS.has(before) || CONTINUES_NUMBER.has(spelt(at + 1));
|
|
87
|
+
}
|
|
88
|
+
//# sourceMappingURL=sandhi-tones.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sandhi-tones.js","sourceRoot":"","sources":["../../src/decode/sandhi-tones.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAiB,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAC/E,OAAO,EAAE,YAAY,EAAa,MAAM,iBAAiB,CAAC;AAE1D;;GAEG;AACH,MAAM,UAAU,IAAI,CAAC,QAAkB;IACrC,OAAO,QAAQ,CAAC,OAAO,KAAK,EAAE,IAAI,QAAQ,CAAC,KAAK,KAAK,GAAG,CAAC;AAC3D,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,IAAI,CAAC,QAAkB;IACrC,OAAO,QAAQ,CAAC,OAAO,KAAK,GAAG,IAAI,QAAQ,CAAC,KAAK,KAAK,GAAG,CAAC;AAC5D,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,YAAY,CAAC,SAA2B;IACtD,IAAI,SAAS,KAAK,SAAS,IAAI,SAAS,KAAK,YAAY,EAAE,CAAC;QAC1D,OAAO,CAAC,CAAC;IACX,CAAC;IACD,OAAO,SAAS,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACjC,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;AAEpE;;;;;GAKG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,aAAa,EAAE,MAAM,CAAC,CAAC,CAAC;AAEpE;;GAEG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,CAAC;AAEnC;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,UAAU,CACxB,SAA8B,EAC9B,EAAU;IAEV,MAAM,KAAK,GAAG,CAAC,KAAa,EAAU,EAAE;QACtC,MAAM,QAAQ,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;QAClC,OAAO,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CAAC;IACvE,CAAC,CAAC;IACF,MAAM,MAAM,GAAG,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;IAC7B,IAAI,MAAM,KAAK,cAAc,EAAE,CAAC;QAC9B,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;AAC3E,CAAC"}
|
package/dist/decode/sandhi.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sandhi.d.ts","sourceRoot":"","sources":["../../src/decode/sandhi.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"sandhi.d.ts","sourceRoot":"","sources":["../../src/decode/sandhi.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAExD;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B;;;;;OAKG;IACH,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC;IACxB;;;;;;OAMG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;CAC9B;AAED;;;;;;;;;GASG;AACH,MAAM,MAAM,cAAc,GAAG,SAAS,CAAC,MAAM,GAAG,SAAS,MAAM,EAAE,CAAC,EAAE,CAAC;AA6HrE;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,WAAW,CACzB,SAAS,EAAE,SAAS,QAAQ,EAAE,EAC9B,OAAO,GAAE,aAAkB,EAC3B,QAAQ,CAAC,EAAE,cAAc,GACxB,SAAS,QAAQ,EAAE,CA6BrB"}
|
package/dist/decode/sandhi.js
CHANGED
|
@@ -1,84 +1,4 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { NEUTRAL_TONE } from "../tone/tone.js";
|
|
3
|
-
/**
|
|
4
|
-
* Whether a syllable is 一, which is the only thing spelled `yi` that sandhis.
|
|
5
|
-
*/
|
|
6
|
-
function isYi(syllable) {
|
|
7
|
-
return syllable.initial === "" && syllable.final === "i";
|
|
8
|
-
}
|
|
9
|
-
/**
|
|
10
|
-
* Whether a syllable is 不.
|
|
11
|
-
*/
|
|
12
|
-
function isBu(syllable) {
|
|
13
|
-
return syllable.initial === "b" && syllable.final === "u";
|
|
14
|
-
}
|
|
15
|
-
/**
|
|
16
|
-
* The tone 一 takes before a given following tone.
|
|
17
|
-
*
|
|
18
|
-
* Fourth tone flattens it to second; anything else raises it to fourth. Before
|
|
19
|
-
* a neutral tone or at the end of a phrase it keeps its citation first tone,
|
|
20
|
-
* since there is nothing to assimilate to.
|
|
21
|
-
*/
|
|
22
|
-
function yiToneBefore(following) {
|
|
23
|
-
if (following === undefined || following === NEUTRAL_TONE) {
|
|
24
|
-
return 1;
|
|
25
|
-
}
|
|
26
|
-
return following === 4 ? 2 : 4;
|
|
27
|
-
}
|
|
28
|
-
/**
|
|
29
|
-
* The numeral words a 一 can be the last digit of.
|
|
30
|
-
*
|
|
31
|
-
* Toneless, because what is being asked is which word it is rather than what
|
|
32
|
-
* tone it is carrying, and 十 is `shí` in every context it appears in here.
|
|
33
|
-
*
|
|
34
|
-
* **亿 is deliberately absent**, and that is measured rather than assumed: no
|
|
35
|
-
* 一 in 88,866 lines of Tatoeba and zh.wikipedia ends a number in 亿, while 意,
|
|
36
|
-
* 议, 义 and 議 all read `yì`, all precede a 一 that really is counting, and
|
|
37
|
-
* would all lose their sandhi for it — 11 conversions against nothing gained.
|
|
38
|
-
* The other three stay, because a number can end 百一 or 千一 even though this
|
|
39
|
-
* corpus has none, and the one thing they cost is 擺一個.
|
|
40
|
-
*/
|
|
41
|
-
const NUMERAL_WORDS = new Set(["shi", "bai", "qian", "wan"]);
|
|
42
|
-
/**
|
|
43
|
-
* The words that carry a number on past a 一, so that it is still counting.
|
|
44
|
-
*
|
|
45
|
-
* 一百一十's second 一 counts the ten it is followed by and takes the sandhi;
|
|
46
|
-
* 二十一's does not, because nothing numeric comes after it.
|
|
47
|
-
*/
|
|
48
|
-
const CONTINUES_NUMBER = new Set([...NUMERAL_WORDS, "ling"]);
|
|
49
|
-
/**
|
|
50
|
-
* The ordinal prefix 第.
|
|
51
|
-
*/
|
|
52
|
-
const ORDINAL_PREFIX = "di";
|
|
53
|
-
/**
|
|
54
|
-
* Whether a 一 is counting something, which is the only time it takes sandhi.
|
|
55
|
-
*
|
|
56
|
-
* The rule 一 sandhi is usually stated with — fourth tone flattens it, anything
|
|
57
|
-
* else raises it — is about the 一 that *counts*. Two shapes of 一 are not
|
|
58
|
-
* counting and keep the citation tone, and both are standard:
|
|
59
|
-
*
|
|
60
|
-
* - **The last digit of a larger number.** 十一月 is `shíyīyuè` and 二十一岁 is
|
|
61
|
-
* `èrshíyī suì`. The signal is a numeral word before it with nothing numeric
|
|
62
|
-
* after, which is what leaves 一百一十's middle 一 alone: 十 follows it, so it
|
|
63
|
-
* is counting the ten.
|
|
64
|
-
* - **An ordinal.** 第一个 is `dìyī gè`.
|
|
65
|
-
*
|
|
66
|
-
* **Read off the syllables rather than the characters**, because that is all
|
|
67
|
-
* this pass has: `pinyinjs sandhi shíyī gè` never sees a hanzi. So it cannot
|
|
68
|
-
* tell 十 from 时 or 第 from 地, and `docs/sandhi/` carries what that costs —
|
|
69
|
-
* measured, not estimated.
|
|
70
|
-
*/
|
|
71
|
-
function isCounting(syllables, at) {
|
|
72
|
-
const spelt = (index) => {
|
|
73
|
-
const syllable = syllables[index];
|
|
74
|
-
return syllable === undefined ? "" : writeSyllableSpelling(syllable);
|
|
75
|
-
};
|
|
76
|
-
const before = spelt(at - 1);
|
|
77
|
-
if (before === ORDINAL_PREFIX) {
|
|
78
|
-
return false;
|
|
79
|
-
}
|
|
80
|
-
return !NUMERAL_WORDS.has(before) || CONTINUES_NUMBER.has(spelt(at + 1));
|
|
81
|
-
}
|
|
1
|
+
import { isBu, isCounting, isYi, yiToneBefore } from "./sandhi-tones.js";
|
|
82
2
|
/**
|
|
83
3
|
* Read a grouping as the junctions it puts in the syllable array.
|
|
84
4
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sandhi.js","sourceRoot":"","sources":["../../src/decode/sandhi.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"sandhi.js","sourceRoot":"","sources":["../../src/decode/sandhi.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* What a script conversion is asked for and what it hands back.
|
|
3
|
+
*/
|
|
4
|
+
import type { Script } from "../script/script.js";
|
|
5
|
+
/**
|
|
6
|
+
* A script and, for 繁體, a regional orthography, as a BCP-47 tag.
|
|
7
|
+
*
|
|
8
|
+
* BCP-47 rather than a shape of our own because these subtags already mean
|
|
9
|
+
* exactly this, and callers recognise them. `zh-Hant` alone takes
|
|
10
|
+
* {@link DEFAULT_REGION}, since there is no region-free 繁體 to fall back on —
|
|
11
|
+
* see SCRIPTS-AND-LOCALES.md.
|
|
12
|
+
*/
|
|
13
|
+
export declare const SCRIPT_TARGETS: readonly ["zh-Hans", "zh-Hant", "zh-Hant-TW", "zh-Hant-HK"];
|
|
14
|
+
/**
|
|
15
|
+
* One of the orthographies {@link toScript} writes.
|
|
16
|
+
*/
|
|
17
|
+
export type ScriptTarget = (typeof SCRIPT_TARGETS)[number];
|
|
18
|
+
/**
|
|
19
|
+
* How a script conversion should be carried out.
|
|
20
|
+
*/
|
|
21
|
+
export interface ScriptOptions {
|
|
22
|
+
/** Which orthography to write. Defaults to `zh-Hans`. */
|
|
23
|
+
readonly to?: ScriptTarget;
|
|
24
|
+
/**
|
|
25
|
+
* The script the text is written in. Detected when not given.
|
|
26
|
+
*
|
|
27
|
+
* Worth setting when the text is short enough that detection has nothing to
|
|
28
|
+
* go on — a run of characters both scripts share settles nothing, and the
|
|
29
|
+
* conversion then assumes the text needs converting.
|
|
30
|
+
*/
|
|
31
|
+
readonly from?: Script;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* What settled one character's conversion, strongest first.
|
|
35
|
+
*
|
|
36
|
+
* - `locked` — the character has one form and there was nothing to decide.
|
|
37
|
+
* True of the great majority: simplification changed a minority of
|
|
38
|
+
* characters, and most of those are one-to-one.
|
|
39
|
+
* - `word` — a word some source wrote in both scripts settled it. The strongest
|
|
40
|
+
* real evidence, because it was written rather than inferred.
|
|
41
|
+
* - `reading` — the character had rival forms and the syllable it was decoded
|
|
42
|
+
* as picked between them. This is the evidence an orthographic converter does
|
|
43
|
+
* not have.
|
|
44
|
+
* - `default` — rival forms existed and nothing separated them, so the
|
|
45
|
+
* commonest was taken. The only one of the four that is a guess.
|
|
46
|
+
*/
|
|
47
|
+
export declare const SCRIPT_EVIDENCE: readonly ["locked", "word", "reading", "default"];
|
|
48
|
+
/**
|
|
49
|
+
* What settled one character's conversion.
|
|
50
|
+
*/
|
|
51
|
+
export type ScriptEvidence = (typeof SCRIPT_EVIDENCE)[number];
|
|
52
|
+
/**
|
|
53
|
+
* Why one character came out as it did.
|
|
54
|
+
*
|
|
55
|
+
* The same kind of claim `ReadingConfidence` makes about a syllable, and for
|
|
56
|
+
* the same reason: a conversion that cannot say which characters it guessed at
|
|
57
|
+
* is asking to be trusted further than it deserves. Nothing else in this space
|
|
58
|
+
* reports it.
|
|
59
|
+
*/
|
|
60
|
+
export interface ScriptChoice {
|
|
61
|
+
/** The character as it was written. */
|
|
62
|
+
readonly from: string;
|
|
63
|
+
/** The character as it was converted. */
|
|
64
|
+
readonly to: string;
|
|
65
|
+
readonly evidence: ScriptEvidence;
|
|
66
|
+
/** The forms this character could also have taken. */
|
|
67
|
+
readonly alternatives: readonly string[];
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* A converted text, with an account of every character it was unsure about.
|
|
71
|
+
*/
|
|
72
|
+
export interface ScriptConversion {
|
|
73
|
+
readonly text: string;
|
|
74
|
+
readonly choices: readonly ScriptChoice[];
|
|
75
|
+
}
|
|
76
|
+
//# sourceMappingURL=script-types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"script-types.d.ts","sourceRoot":"","sources":["../../src/decode/script-types.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAElD;;;;;;;GAOG;AACH,eAAO,MAAM,cAAc,YACzB,SAAS,EACT,SAAS,EACT,YAAY,EACZ,YAAY,CACJ,CAAC;AAEX;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC;AAE3D;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,yDAAyD;IACzD,QAAQ,CAAC,EAAE,CAAC,EAAE,YAAY,CAAC;IAC3B;;;;;;OAMG;IACH,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,eAAe,YAC1B,QAAQ,EACR,MAAM,EACN,SAAS,EACT,SAAS,CACD,CAAC;AAEX;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,CAAC,OAAO,eAAe,CAAC,CAAC,MAAM,CAAC,CAAC;AAE9D;;;;;;;GAOG;AACH,MAAM,WAAW,YAAY;IAC3B,uCAAuC;IACvC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,yCAAyC;IACzC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,QAAQ,EAAE,cAAc,CAAC;IAClC,sDAAsD;IACtD,QAAQ,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;CAC1C;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,SAAS,YAAY,EAAE,CAAC;CAC3C"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A script and, for 繁體, a regional orthography, as a BCP-47 tag.
|
|
3
|
+
*
|
|
4
|
+
* BCP-47 rather than a shape of our own because these subtags already mean
|
|
5
|
+
* exactly this, and callers recognise them. `zh-Hant` alone takes
|
|
6
|
+
* {@link DEFAULT_REGION}, since there is no region-free 繁體 to fall back on —
|
|
7
|
+
* see SCRIPTS-AND-LOCALES.md.
|
|
8
|
+
*/
|
|
9
|
+
export const SCRIPT_TARGETS = [
|
|
10
|
+
"zh-Hans",
|
|
11
|
+
"zh-Hant",
|
|
12
|
+
"zh-Hant-TW",
|
|
13
|
+
"zh-Hant-HK",
|
|
14
|
+
];
|
|
15
|
+
/**
|
|
16
|
+
* What settled one character's conversion, strongest first.
|
|
17
|
+
*
|
|
18
|
+
* - `locked` — the character has one form and there was nothing to decide.
|
|
19
|
+
* True of the great majority: simplification changed a minority of
|
|
20
|
+
* characters, and most of those are one-to-one.
|
|
21
|
+
* - `word` — a word some source wrote in both scripts settled it. The strongest
|
|
22
|
+
* real evidence, because it was written rather than inferred.
|
|
23
|
+
* - `reading` — the character had rival forms and the syllable it was decoded
|
|
24
|
+
* as picked between them. This is the evidence an orthographic converter does
|
|
25
|
+
* not have.
|
|
26
|
+
* - `default` — rival forms existed and nothing separated them, so the
|
|
27
|
+
* commonest was taken. The only one of the four that is a guess.
|
|
28
|
+
*/
|
|
29
|
+
export const SCRIPT_EVIDENCE = [
|
|
30
|
+
"locked",
|
|
31
|
+
"word",
|
|
32
|
+
"reading",
|
|
33
|
+
"default",
|
|
34
|
+
];
|
|
35
|
+
//# sourceMappingURL=script-types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"script-types.js","sourceRoot":"","sources":["../../src/decode/script-types.ts"],"names":[],"mappings":"AAKA;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,SAAS;IACT,SAAS;IACT,YAAY;IACZ,YAAY;CACJ,CAAC;AAuBX;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,QAAQ;IACR,MAAM;IACN,SAAS;IACT,SAAS;CACD,CAAC"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Converting one word between the scripts, and what the evidence was.
|
|
3
|
+
*
|
|
4
|
+
* A word is converted whole where the tables know it and character by
|
|
5
|
+
* character otherwise, and each choice carries what settled it so a caller
|
|
6
|
+
* can show where the conversion was guessing.
|
|
7
|
+
*/
|
|
8
|
+
import type { ScriptChoice, ScriptEvidence, ScriptTarget } from "./script-types.js";
|
|
9
|
+
import { type CharacterConversion } from "../script/conversion.js";
|
|
10
|
+
import { type Region } from "../script/glyphs.js";
|
|
11
|
+
import type { Script } from "../script/script.js";
|
|
12
|
+
import type { Syllable } from "../syllable/syllable.js";
|
|
13
|
+
/**
|
|
14
|
+
* The script and region a target names.
|
|
15
|
+
*/
|
|
16
|
+
export declare function targetOf(target: ScriptTarget): {
|
|
17
|
+
script: Script;
|
|
18
|
+
region: Region;
|
|
19
|
+
};
|
|
20
|
+
/**
|
|
21
|
+
* Convert one word, preferring what a source wrote to what its characters imply.
|
|
22
|
+
*/
|
|
23
|
+
export declare function convertWord(table: ReadonlyMap<string, CharacterConversion>, words: ReadonlyMap<string, string>, word: string, reading: readonly Syllable[]): readonly ScriptChoice[];
|
|
24
|
+
/**
|
|
25
|
+
* Rank what settled a character, strongest evidence first.
|
|
26
|
+
*/
|
|
27
|
+
export declare function evidenceFor(isAttested: boolean, isAtReading: boolean, isAmbiguous: boolean): ScriptEvidence;
|
|
28
|
+
/**
|
|
29
|
+
* Apply the regional 繁體 forms, which never change a reading.
|
|
30
|
+
*/
|
|
31
|
+
export declare function applyRegion(choices: readonly ScriptChoice[], reading: readonly Syllable[], region: Region, isAligned: boolean): readonly ScriptChoice[];
|
|
32
|
+
//# sourceMappingURL=script-words.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"script-words.d.ts","sourceRoot":"","sources":["../../src/decode/script-words.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,EACV,YAAY,EACZ,cAAc,EACd,YAAY,EACb,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACL,KAAK,mBAAmB,EAKzB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAGL,KAAK,MAAM,EAEZ,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAExD;;GAEG;AACH,wBAAgB,QAAQ,CAAC,MAAM,EAAE,YAAY,GAAG;IAC9C,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB,CAQA;AAED;;GAEG;AACH,wBAAgB,WAAW,CACzB,KAAK,EAAE,WAAW,CAAC,MAAM,EAAE,mBAAmB,CAAC,EAC/C,KAAK,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,EAClC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,SAAS,QAAQ,EAAE,GAC3B,SAAS,YAAY,EAAE,CAmCzB;AAED;;GAEG;AACH,wBAAgB,WAAW,CACzB,UAAU,EAAE,OAAO,EACnB,WAAW,EAAE,OAAO,EACpB,WAAW,EAAE,OAAO,GACnB,cAAc,CAQhB;AAED;;GAEG;AACH,wBAAgB,WAAW,CACzB,OAAO,EAAE,SAAS,YAAY,EAAE,EAChC,OAAO,EAAE,SAAS,QAAQ,EAAE,EAC5B,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,OAAO,GACjB,SAAS,YAAY,EAAE,CAezB"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import { toCharacters } from "../script/characters.js";
|
|
2
|
+
import { conversionKey, convertCharacter, formsOf, isAmbiguousCharacter, } from "../script/conversion.js";
|
|
3
|
+
import { DEFAULT_REGION, isReadingSensitive, toRegionalGlyph, } from "../script/glyphs.js";
|
|
4
|
+
/**
|
|
5
|
+
* The script and region a target names.
|
|
6
|
+
*/
|
|
7
|
+
export function targetOf(target) {
|
|
8
|
+
if (target === "zh-Hans") {
|
|
9
|
+
return { script: "Hans", region: DEFAULT_REGION };
|
|
10
|
+
}
|
|
11
|
+
return {
|
|
12
|
+
script: "Hant",
|
|
13
|
+
region: target === "zh-Hant-HK" ? "HK" : DEFAULT_REGION,
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Convert one word, preferring what a source wrote to what its characters imply.
|
|
18
|
+
*/
|
|
19
|
+
export function convertWord(table, words, word, reading) {
|
|
20
|
+
const characters = toCharacters(word);
|
|
21
|
+
const attested = words.get(word);
|
|
22
|
+
// A word only counts as attested when it lines up character for character;
|
|
23
|
+
// anything else cannot be reported per character, which is what the choices
|
|
24
|
+
// are. Those are rare enough to fall through to the characters.
|
|
25
|
+
const attestedCharacters = attested === undefined ? undefined : toCharacters(attested);
|
|
26
|
+
const isAttested = attestedCharacters?.length === characters.length;
|
|
27
|
+
// A reading covering a different number of characters than the word has
|
|
28
|
+
// cannot be lined up with them — 儿化 writes two characters as one syllable.
|
|
29
|
+
const isAligned = reading.length === characters.length;
|
|
30
|
+
return characters.map((character, at) => {
|
|
31
|
+
const syllable = isAligned ? reading[at] : undefined;
|
|
32
|
+
const conversion = table.get(character);
|
|
33
|
+
const atReading = conversion?.byReading?.get(conversionKey(syllable));
|
|
34
|
+
const to = isAttested
|
|
35
|
+
? /* c8 ignore next -- the lengths were just checked */
|
|
36
|
+
(attestedCharacters[at] ?? character)
|
|
37
|
+
: convertCharacter(table, character, syllable);
|
|
38
|
+
return {
|
|
39
|
+
from: character,
|
|
40
|
+
to,
|
|
41
|
+
evidence: evidenceFor(isAttested, atReading !== undefined, isAmbiguousCharacter(table, character)),
|
|
42
|
+
alternatives: formsOf(conversion).filter((form) => form !== character && form !== to),
|
|
43
|
+
};
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Rank what settled a character, strongest evidence first.
|
|
48
|
+
*/
|
|
49
|
+
export function evidenceFor(isAttested, isAtReading, isAmbiguous) {
|
|
50
|
+
if (!isAmbiguous) {
|
|
51
|
+
return "locked";
|
|
52
|
+
}
|
|
53
|
+
if (isAttested) {
|
|
54
|
+
return "word";
|
|
55
|
+
}
|
|
56
|
+
return isAtReading ? "reading" : "default";
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Apply the regional 繁體 forms, which never change a reading.
|
|
60
|
+
*/
|
|
61
|
+
export function applyRegion(choices, reading, region, isAligned) {
|
|
62
|
+
if (region === DEFAULT_REGION) {
|
|
63
|
+
return choices;
|
|
64
|
+
}
|
|
65
|
+
return choices.map((choice, at) => {
|
|
66
|
+
const syllable = isAligned ? reading[at] : undefined;
|
|
67
|
+
// A regional form that needs the reading and has none is a guess, whatever
|
|
68
|
+
// settled the script conversion before it: 著 is 着 or 著 in Hong Kong.
|
|
69
|
+
const isGuess = isReadingSensitive(choice.to) && syllable === undefined;
|
|
70
|
+
return {
|
|
71
|
+
...choice,
|
|
72
|
+
to: toRegionalGlyph(choice.to, region, syllable),
|
|
73
|
+
evidence: isGuess ? "default" : choice.evidence,
|
|
74
|
+
};
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
//# sourceMappingURL=script-words.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"script-words.js","sourceRoot":"","sources":["../../src/decode/script-words.ts"],"names":[],"mappings":"AAYA,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAEL,aAAa,EACb,gBAAgB,EAChB,OAAO,EACP,oBAAoB,GACrB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,cAAc,EACd,kBAAkB,EAElB,eAAe,GAChB,MAAM,qBAAqB,CAAC;AAI7B;;GAEG;AACH,MAAM,UAAU,QAAQ,CAAC,MAAoB;IAI3C,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,CAAC;IACpD,CAAC;IACD,OAAO;QACL,MAAM,EAAE,MAAM;QACd,MAAM,EAAE,MAAM,KAAK,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,cAAc;KACxD,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,WAAW,CACzB,KAA+C,EAC/C,KAAkC,EAClC,IAAY,EACZ,OAA4B;IAE5B,MAAM,UAAU,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;IACtC,MAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACjC,2EAA2E;IAC3E,4EAA4E;IAC5E,gEAAgE;IAChE,MAAM,kBAAkB,GACtB,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;IAC9D,MAAM,UAAU,GAAG,kBAAkB,EAAE,MAAM,KAAK,UAAU,CAAC,MAAM,CAAC;IAEpE,wEAAwE;IACxE,2EAA2E;IAC3E,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,KAAK,UAAU,CAAC,MAAM,CAAC;IAEvD,OAAO,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,EAAE,EAAE;QACtC,MAAM,QAAQ,GAAG,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACrD,MAAM,UAAU,GAAG,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACxC,MAAM,SAAS,GAAG,UAAU,EAAE,SAAS,EAAE,GAAG,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC;QACtE,MAAM,EAAE,GAAG,UAAU;YACnB,CAAC,CAAC,qDAAqD;gBACrD,CAAC,kBAAkB,CAAC,EAAE,CAAC,IAAI,SAAS,CAAC;YACvC,CAAC,CAAC,gBAAgB,CAAC,KAAK,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;QACjD,OAAO;YACL,IAAI,EAAE,SAAS;YACf,EAAE;YACF,QAAQ,EAAE,WAAW,CACnB,UAAU,EACV,SAAS,KAAK,SAAS,EACvB,oBAAoB,CAAC,KAAK,EAAE,SAAS,CAAC,CACvC;YACD,YAAY,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC,MAAM,CACtC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,EAAE,CAC5C;SACF,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,WAAW,CACzB,UAAmB,EACnB,WAAoB,EACpB,WAAoB;IAEpB,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,OAAO,QAAQ,CAAC;IAClB,CAAC;IACD,IAAI,UAAU,EAAE,CAAC;QACf,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,OAAO,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;AAC7C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,WAAW,CACzB,OAAgC,EAChC,OAA4B,EAC5B,MAAc,EACd,SAAkB;IAElB,IAAI,MAAM,KAAK,cAAc,EAAE,CAAC;QAC9B,OAAO,OAAO,CAAC;IACjB,CAAC;IACD,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE;QAChC,MAAM,QAAQ,GAAG,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACrD,2EAA2E;QAC3E,qEAAqE;QACrE,MAAM,OAAO,GAAG,kBAAkB,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,QAAQ,KAAK,SAAS,CAAC;QACxE,OAAO;YACL,GAAG,MAAM;YACT,EAAE,EAAE,eAAe,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,CAAC;YAChD,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ;SAChD,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC"}
|