@kensio/pinyinjs 1.7.4 → 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 +1 -1
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { isSpaced, numberPieces, runEdge } from "./number-pieces.js";
|
|
2
|
+
/**
|
|
3
|
+
* The numbers in a text, said out loud.
|
|
4
|
+
*
|
|
5
|
+
* A digit is not Han and does not reach the decoder, so reading 1998年 as
|
|
6
|
+
* `yī jiǔ jiǔ bā nián` means working out what the run around it says and
|
|
7
|
+
* whether a space belongs between them. That is all this does.
|
|
8
|
+
*/
|
|
9
|
+
import { saidNumeral } from "../numerals/text.js";
|
|
10
|
+
import { surroundingCharacters } from "./runs.js";
|
|
11
|
+
import { plainPiece, sourcePiece, } from "./pieces.js";
|
|
12
|
+
/**
|
|
13
|
+
* What surrounds a run once it has been decoded: the character after it, and
|
|
14
|
+
* the syllable that character is read as.
|
|
15
|
+
*
|
|
16
|
+
* The syllable is the one part of a number's context that a decode has to
|
|
17
|
+
* supply, and it is what a 一 ending the number assimilates to.
|
|
18
|
+
*/
|
|
19
|
+
export function surrounding(runs, decoded, at) {
|
|
20
|
+
return {
|
|
21
|
+
after: {
|
|
22
|
+
character: surroundingCharacters(runs, at).following,
|
|
23
|
+
syllable: decoded[at + 1]?.[0]?.word.reading[0],
|
|
24
|
+
},
|
|
25
|
+
isAfterHan: runs[at - 1]?.isHan === true,
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* The 汉字 a number in front of a Han run stands for, for that run's decode.
|
|
30
|
+
*
|
|
31
|
+
* Only the last segment of the run before, because only that one touches the
|
|
32
|
+
* Han: the D of 3D银行 comes between them, and a decode of 银行 that saw 三
|
|
33
|
+
* beside it would be reading a text nobody wrote.
|
|
34
|
+
*/
|
|
35
|
+
export function numeralBefore(segments) {
|
|
36
|
+
return segments.at(-1)?.hanzi ?? "";
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Write a stretch that was never Han, reading the numbers in it.
|
|
40
|
+
*
|
|
41
|
+
* Everything that is not a number goes through exactly as written, which is
|
|
42
|
+
* what this always did: digits are the only part of a non-Han run this package
|
|
43
|
+
* has anything to say about. Once a number *has* been read, though, the whole
|
|
44
|
+
* stretch is being said rather than shown, so its parts take the spacing of
|
|
45
|
+
* words — 3D打印 is `sān D dǎyìn` — and punctuation still takes none.
|
|
46
|
+
*/
|
|
47
|
+
export function writeNumbers(text, segments, context, written, options) {
|
|
48
|
+
if (segments.every((segment) => segment.reading === undefined)) {
|
|
49
|
+
return [sourcePiece(text)];
|
|
50
|
+
}
|
|
51
|
+
const pieces = [];
|
|
52
|
+
let before = runEdge(context.isAfterHan);
|
|
53
|
+
for (const segment of segments) {
|
|
54
|
+
if (isSpaced(before, segment.text)) {
|
|
55
|
+
pieces.push(plainPiece(" "));
|
|
56
|
+
}
|
|
57
|
+
pieces.push(...(segment.reading === undefined
|
|
58
|
+
? [sourcePiece(segment.text)]
|
|
59
|
+
: numberPieces(saidNumeral(segment, context.after.syllable, options.sandhi), segment, written)));
|
|
60
|
+
// What decides the next space is what was *written*, not what was read:
|
|
61
|
+
// 95% ends in a sign and `bǎifēnzhījiǔshíwǔ` ends in a letter.
|
|
62
|
+
before = pieces.at(-1)?.text ?? before;
|
|
63
|
+
}
|
|
64
|
+
if (isSpaced(before, runEdge(context.after.character !== ""))) {
|
|
65
|
+
pieces.push(plainPiece(" "));
|
|
66
|
+
}
|
|
67
|
+
return pieces;
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=numbers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"numbers.js","sourceRoot":"","sources":["../../src/decode/numbers.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AACrE;;;;;;GAMG;AACH,OAAO,EAAuB,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACvE,OAAO,EAAE,qBAAqB,EAAgB,MAAM,WAAW,CAAC;AAGhE,OAAO,EAEL,UAAU,EACV,WAAW,GAEZ,MAAM,aAAa,CAAC;AAcrB;;;;;;GAMG;AACH,MAAM,UAAU,WAAW,CACzB,IAAwB,EACxB,OAA2C,EAC3C,EAAU;IAEV,OAAO;QACL,KAAK,EAAE;YACL,SAAS,EAAE,qBAAqB,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,SAAS;YACpD,QAAQ,EAAE,OAAO,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;SAChD;QACD,UAAU,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,KAAK,KAAK,IAAI;KACzC,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,aAAa,CAAC,QAAmC;IAC/D,OAAO,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,EAAE,CAAC;AACtC,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,YAAY,CAC1B,IAAY,EACZ,QAAmC,EACnC,OAAmB,EACnB,OAAgB,EAChB,OAAuD;IAEvD,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,KAAK,SAAS,CAAC,EAAE,CAAC;QAC/D,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;IAC7B,CAAC;IAED,MAAM,MAAM,GAAqB,EAAE,CAAC;IACpC,IAAI,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IAEzC,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,IAAI,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YACnC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;QAC/B,CAAC;QACD,MAAM,CAAC,IAAI,CACT,GAAG,CAAC,OAAO,CAAC,OAAO,KAAK,SAAS;YAC/B,CAAC,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAC7B,CAAC,CAAC,YAAY,CACV,WAAW,CAAC,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,EAC5D,OAAO,EACP,OAAO,CACR,CAAC,CACP,CAAC;QACF,wEAAwE;QACxE,+DAA+D;QAC/D,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,IAAI,MAAM,CAAC;IACzC,CAAC;IACD,IAAI,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC;QAC9D,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;IAC/B,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* What a conversion is made of: the options it takes, and the pieces it
|
|
3
|
+
* hands back.
|
|
4
|
+
*
|
|
5
|
+
* The leaf layer of the conversion. Everything here builds or describes a
|
|
6
|
+
* single piece of output, and none of it knows how a text is decoded — which
|
|
7
|
+
* is what lets `convert.ts` sit on top of it.
|
|
8
|
+
*/
|
|
9
|
+
import type { ConvertedPiece, Written } from "./convert-options.js";
|
|
10
|
+
import type { DecodedWord } from "./word.js";
|
|
11
|
+
import type { Dictionary } from "../dictionary/dictionary.js";
|
|
12
|
+
export type { ConvertedPiece, ConvertOptions, NumberStyle, Written, } from "./convert-options.js";
|
|
13
|
+
import type { Locale } from "../script/script.js";
|
|
14
|
+
import { type Syllable } from "../syllable/syllable.js";
|
|
15
|
+
import type { ReadingConfidence } from "./confidence.js";
|
|
16
|
+
/**
|
|
17
|
+
* The reading a word takes in a locale.
|
|
18
|
+
*
|
|
19
|
+
* `zh-TW` is stored as a delta, so a word with no Taiwan reading simply reads
|
|
20
|
+
* the same in both.
|
|
21
|
+
*
|
|
22
|
+
* The delta is measured against the entry's own 普通话 reading, so it only
|
|
23
|
+
* applies where the decode settled on that reading. A polyphone the decode read
|
|
24
|
+
* some other way — 长 as `cháng` where its entry reads `zhǎng`, 差 as `chā`
|
|
25
|
+
* where its entry reads `chà` — is a different sense of the word, and the delta
|
|
26
|
+
* beside the entry says nothing about it. Replacing the reading there would
|
|
27
|
+
* discard what the lattice worked out in favour of a reading of the wrong
|
|
28
|
+
* syllable entirely.
|
|
29
|
+
*/
|
|
30
|
+
export declare function readingFor(dictionary: Dictionary, word: DecodedWord, locale: Locale): readonly Syllable[];
|
|
31
|
+
/**
|
|
32
|
+
* Text that writes no syllable: a space, or a run that was never Han.
|
|
33
|
+
*/
|
|
34
|
+
export declare function plainPiece(text: string): ConvertedPiece;
|
|
35
|
+
/**
|
|
36
|
+
* Source text that is written out but read as nothing.
|
|
37
|
+
*
|
|
38
|
+
* The difference from {@link plainPiece} is what the text *is*. Both write no
|
|
39
|
+
* syllable, but a run that was never Han — punctuation, a Latin word, a digit
|
|
40
|
+
* left unread — stands for something the author wrote, whereas the space
|
|
41
|
+
* between two words and the hyphen inside 干干净净 are pinyin orthography that
|
|
42
|
+
* the source has no trace of.
|
|
43
|
+
*
|
|
44
|
+
* A conversion joins them into one string and the distinction does not arise.
|
|
45
|
+
* An annotation writes the source and the reading in different places, and
|
|
46
|
+
* putting a hyphen the pinyin needs into the hanzi it annotates would be
|
|
47
|
+
* inventing text: 干干净净 is `gāngān-jìngjìng` and is not written 干干-净净.
|
|
48
|
+
*
|
|
49
|
+
* The text and the source can differ, and the punctuation pass is why: it
|
|
50
|
+
* rewrites 。 to a full stop in the `text` a conversion writes, and leaves the
|
|
51
|
+
* `source` as the mark the author actually typed.
|
|
52
|
+
*/
|
|
53
|
+
export declare function sourcePiece(text: string): ConvertedPiece;
|
|
54
|
+
/**
|
|
55
|
+
* Which characters of a word each of its syllables reads.
|
|
56
|
+
*
|
|
57
|
+
* One per syllable, in order, and undefined where a syllable reads on into the
|
|
58
|
+
* characters the one before it took. Only 儿化 does that: measured over the
|
|
59
|
+
* committed dictionary, 5,283 of 723,147 keys have fewer syllables than
|
|
60
|
+
* characters, 4,024 of them because a final 儿 folds into the syllable before
|
|
61
|
+
* it, and the remaining 1,259 because the word is written with punctuation —
|
|
62
|
+
* which cannot reach here, since punctuation ends a Han run before the decode
|
|
63
|
+
* ever sees it.
|
|
64
|
+
*
|
|
65
|
+
* The deficit is spent from the right, which is where 儿化 always is. 打哪儿指
|
|
66
|
+
* 哪儿 is the case that needs it: two syllables short over six characters, and
|
|
67
|
+
* both 儿 attach to the character in front of them rather than one taking two.
|
|
68
|
+
*/
|
|
69
|
+
export declare function sourcesOf(word: string, reading: readonly Syllable[]): readonly (string | undefined)[];
|
|
70
|
+
/**
|
|
71
|
+
* Write one decoded word as one piece per syllable.
|
|
72
|
+
*
|
|
73
|
+
* Only proper nouns are capitalised here; a sentence capital is applied to the
|
|
74
|
+
* whole conversion afterwards, since it belongs to whichever run happens to
|
|
75
|
+
* start the sentence.
|
|
76
|
+
*/
|
|
77
|
+
export declare function writeWord(reading: readonly Syllable[], confidence: readonly ReadingConfidence[], word: DecodedWord, written: Written): readonly ConvertedPiece[];
|
|
78
|
+
//# sourceMappingURL=pieces.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pieces.d.ts","sourceRoot":"","sources":["../../src/decode/pieces.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,KAAK,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AACpE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAG7C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAE9D,YAAY,EACV,cAAc,EACd,cAAc,EACd,WAAW,EACX,OAAO,GACR,MAAM,sBAAsB,CAAC;AAI9B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,KAAK,QAAQ,EAAiB,MAAM,yBAAyB,CAAC;AACvE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACzD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,UAAU,CACxB,UAAU,EAAE,UAAU,EACtB,IAAI,EAAE,WAAW,EACjB,MAAM,EAAE,MAAM,GACb,SAAS,QAAQ,EAAE,CAWrB;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,CAOvD;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,CAOxD;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,SAAS,CACvB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,SAAS,QAAQ,EAAE,GAC3B,SAAS,CAAC,MAAM,GAAG,SAAS,CAAC,EAAE,CA2BjC;AAED;;;;;;GAMG;AACH,wBAAgB,SAAS,CACvB,OAAO,EAAE,SAAS,QAAQ,EAAE,EAC5B,UAAU,EAAE,SAAS,iBAAiB,EAAE,EACxC,IAAI,EAAE,WAAW,EACjB,OAAO,EAAE,OAAO,GACf,SAAS,cAAc,EAAE,CAqB3B"}
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
import { markWord } from "../orthography/apostrophe.js";
|
|
2
|
+
import { capitaliseWord } from "../orthography/capitals.js";
|
|
3
|
+
import { isErCharacter, isErFinal } from "../dictionary/erhua.js";
|
|
4
|
+
import { isSameReading } from "../dictionary/entry.js";
|
|
5
|
+
import { toCharacters } from "../script/characters.js";
|
|
6
|
+
import { writeSyllable } from "../syllable/syllable.js";
|
|
7
|
+
/**
|
|
8
|
+
* The reading a word takes in a locale.
|
|
9
|
+
*
|
|
10
|
+
* `zh-TW` is stored as a delta, so a word with no Taiwan reading simply reads
|
|
11
|
+
* the same in both.
|
|
12
|
+
*
|
|
13
|
+
* The delta is measured against the entry's own 普通话 reading, so it only
|
|
14
|
+
* applies where the decode settled on that reading. A polyphone the decode read
|
|
15
|
+
* some other way — 长 as `cháng` where its entry reads `zhǎng`, 差 as `chā`
|
|
16
|
+
* where its entry reads `chà` — is a different sense of the word, and the delta
|
|
17
|
+
* beside the entry says nothing about it. Replacing the reading there would
|
|
18
|
+
* discard what the lattice worked out in favour of a reading of the wrong
|
|
19
|
+
* syllable entirely.
|
|
20
|
+
*/
|
|
21
|
+
export function readingFor(dictionary, word, locale) {
|
|
22
|
+
if (locale !== "zh-TW") {
|
|
23
|
+
return word.reading;
|
|
24
|
+
}
|
|
25
|
+
const entry = dictionary.lookup(word.text);
|
|
26
|
+
if (entry?.taiwanReading === undefined) {
|
|
27
|
+
return word.reading;
|
|
28
|
+
}
|
|
29
|
+
return isSameReading(entry.reading, word.reading)
|
|
30
|
+
? entry.taiwanReading
|
|
31
|
+
: word.reading;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Text that writes no syllable: a space, or a run that was never Han.
|
|
35
|
+
*/
|
|
36
|
+
export function plainPiece(text) {
|
|
37
|
+
return {
|
|
38
|
+
text,
|
|
39
|
+
syllable: undefined,
|
|
40
|
+
confidence: undefined,
|
|
41
|
+
source: undefined,
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Source text that is written out but read as nothing.
|
|
46
|
+
*
|
|
47
|
+
* The difference from {@link plainPiece} is what the text *is*. Both write no
|
|
48
|
+
* syllable, but a run that was never Han — punctuation, a Latin word, a digit
|
|
49
|
+
* left unread — stands for something the author wrote, whereas the space
|
|
50
|
+
* between two words and the hyphen inside 干干净净 are pinyin orthography that
|
|
51
|
+
* the source has no trace of.
|
|
52
|
+
*
|
|
53
|
+
* A conversion joins them into one string and the distinction does not arise.
|
|
54
|
+
* An annotation writes the source and the reading in different places, and
|
|
55
|
+
* putting a hyphen the pinyin needs into the hanzi it annotates would be
|
|
56
|
+
* inventing text: 干干净净 is `gāngān-jìngjìng` and is not written 干干-净净.
|
|
57
|
+
*
|
|
58
|
+
* The text and the source can differ, and the punctuation pass is why: it
|
|
59
|
+
* rewrites 。 to a full stop in the `text` a conversion writes, and leaves the
|
|
60
|
+
* `source` as the mark the author actually typed.
|
|
61
|
+
*/
|
|
62
|
+
export function sourcePiece(text) {
|
|
63
|
+
return {
|
|
64
|
+
text,
|
|
65
|
+
syllable: undefined,
|
|
66
|
+
confidence: undefined,
|
|
67
|
+
source: text,
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Which characters of a word each of its syllables reads.
|
|
72
|
+
*
|
|
73
|
+
* One per syllable, in order, and undefined where a syllable reads on into the
|
|
74
|
+
* characters the one before it took. Only 儿化 does that: measured over the
|
|
75
|
+
* committed dictionary, 5,283 of 723,147 keys have fewer syllables than
|
|
76
|
+
* characters, 4,024 of them because a final 儿 folds into the syllable before
|
|
77
|
+
* it, and the remaining 1,259 because the word is written with punctuation —
|
|
78
|
+
* which cannot reach here, since punctuation ends a Han run before the decode
|
|
79
|
+
* ever sees it.
|
|
80
|
+
*
|
|
81
|
+
* The deficit is spent from the right, which is where 儿化 always is. 打哪儿指
|
|
82
|
+
* 哪儿 is the case that needs it: two syllables short over six characters, and
|
|
83
|
+
* both 儿 attach to the character in front of them rather than one taking two.
|
|
84
|
+
*/
|
|
85
|
+
export function sourcesOf(word, reading) {
|
|
86
|
+
const characters = toCharacters(word);
|
|
87
|
+
if (characters.length === reading.length) {
|
|
88
|
+
return characters;
|
|
89
|
+
}
|
|
90
|
+
// Anything this does not understand is one base for the whole word, which is
|
|
91
|
+
// always true and merely less useful than naming each syllable's characters.
|
|
92
|
+
if (characters.length < reading.length || !isErFinal(word)) {
|
|
93
|
+
return reading.map((_, at) => (at === 0 ? word : undefined));
|
|
94
|
+
}
|
|
95
|
+
const sources = [];
|
|
96
|
+
let deficit = characters.length - reading.length;
|
|
97
|
+
for (const character of characters) {
|
|
98
|
+
const previous = sources.at(-1);
|
|
99
|
+
if (deficit > 0 && previous !== undefined && isErCharacter(character)) {
|
|
100
|
+
sources[sources.length - 1] = previous + character;
|
|
101
|
+
deficit--;
|
|
102
|
+
continue;
|
|
103
|
+
}
|
|
104
|
+
sources.push(character);
|
|
105
|
+
}
|
|
106
|
+
/* c8 ignore next 3 -- the deficit is 儿 by construction, but a source that
|
|
107
|
+
wrote one somewhere else would otherwise misalign every later syllable */
|
|
108
|
+
return sources.length === reading.length
|
|
109
|
+
? sources
|
|
110
|
+
: reading.map((_, at) => (at === 0 ? word : undefined));
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Write one decoded word as one piece per syllable.
|
|
114
|
+
*
|
|
115
|
+
* Only proper nouns are capitalised here; a sentence capital is applied to the
|
|
116
|
+
* whole conversion afterwards, since it belongs to whichever run happens to
|
|
117
|
+
* start the sentence.
|
|
118
|
+
*/
|
|
119
|
+
export function writeWord(reading, confidence, word, written) {
|
|
120
|
+
if (reading.length === 0) {
|
|
121
|
+
return [sourcePiece(word.text)];
|
|
122
|
+
}
|
|
123
|
+
// A tone number already ends its syllable, raised or not, so `xi1an1` cannot
|
|
124
|
+
// be misread and the 隔音符号 would only be noise.
|
|
125
|
+
const isNumbered = written.notation === "numbers" || written.notation === "superscript";
|
|
126
|
+
const spellings = markWord(reading.map((syllable) => writeSyllable(syllable, written.notation)), isNumbered ? "never" : written.apostrophe);
|
|
127
|
+
const isCapitalised = word.isProperNoun && written.capitals !== "none";
|
|
128
|
+
const sources = sourcesOf(word.text, reading);
|
|
129
|
+
return spellings.map((spelling, at) => ({
|
|
130
|
+
text: at === 0 && isCapitalised ? capitaliseWord(spelling) : spelling,
|
|
131
|
+
syllable: reading[at],
|
|
132
|
+
confidence: confidence[at],
|
|
133
|
+
source: sources[at],
|
|
134
|
+
}));
|
|
135
|
+
}
|
|
136
|
+
//# sourceMappingURL=pieces.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pieces.js","sourceRoot":"","sources":["../../src/decode/pieces.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
export { PLAYING_TAN } from "./tan-rule.js";
|
|
2
|
+
import { type EdgeRule } from "./rules.js";
|
|
3
|
+
/**
|
|
4
|
+
* 长 read as `cháng` where an adverb of degree measures it.
|
|
5
|
+
*
|
|
6
|
+
* The character is stored `zhǎng` with `cháng` as an alternate, and the data
|
|
7
|
+
* says so about the character in isolation: Unihan ranks the readings
|
|
8
|
+
* `zhǎng(1879) cháng(1179)` by corpus count and names `zhǎng` in `kMandarin`.
|
|
9
|
+
* That ranking is doing real work — 署长, 团长, 公安局长, 总会长, 审理长 and
|
|
10
|
+
* the rest reach a bare 长 at the end of a title and read it correctly — so the
|
|
11
|
+
* default is not the thing to change. What is left over is the 长 that is an
|
|
12
|
+
* adjective, and nothing in the cost model can prefer an alternate at a
|
|
13
|
+
* position no word covers: 这篇文章不太长 came out `bú tài zhǎng`.
|
|
14
|
+
*
|
|
15
|
+
* The context that separates them is one-sided, as it was for the modal 得. A
|
|
16
|
+
* 长 that is *growing* is a verb, and a degree adverb cannot modify one — there
|
|
17
|
+
* is no 很长 meaning it grew a lot — so 很, 太, 最, 多 and their kin in front of
|
|
18
|
+
* a bare 长 make it the adjective. The other side carries almost nothing: what
|
|
19
|
+
* follows an adjectival 长 is a noun (很长时间), a particle (最长的大桥), or the
|
|
20
|
+
* end of the sentence (他的腿很长), which is also what follows half the verbs.
|
|
21
|
+
*
|
|
22
|
+
* Measured over the same 88,866 lines of Tatoeba and zh.wikipedia the other
|
|
23
|
+
* rules were sized against, 260 长 decode as a word of their own and this moves
|
|
24
|
+
* 75 of them to `cháng`, all 75 correctly. On CPP's 40 hand-labelled 长 it takes
|
|
25
|
+
* the character from 85.00% to 87.50%, fixing 时间最长 and breaking nothing.
|
|
26
|
+
*
|
|
27
|
+
* The other half of the rule is {@link GROWN_INTO}, which pushes the opposite
|
|
28
|
+
* way on the one shape the sources get wrong.
|
|
29
|
+
*/
|
|
30
|
+
export declare const ADJECTIVAL_CHANG: EdgeRule;
|
|
31
|
+
//# sourceMappingURL=polyphone-rules.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"polyphone-rules.d.ts","sourceRoot":"","sources":["../../src/decode/polyphone-rules.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAoB,KAAK,QAAQ,EAAgB,MAAM,YAAY,CAAC;AA2H3E;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,eAAO,MAAM,gBAAgB,EAAE,QAgB9B,CAAC"}
|
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
export { PLAYING_TAN } from "./tan-rule.js";
|
|
2
|
+
import { wordEndingAt } from "./rules.js";
|
|
3
|
+
/**
|
|
4
|
+
* Whether a syllable is `cháng`, the stative reading of 长.
|
|
5
|
+
*/
|
|
6
|
+
function isChang(syllable) {
|
|
7
|
+
return (syllable?.initial === "ch" &&
|
|
8
|
+
syllable.final === "ang" &&
|
|
9
|
+
syllable.tone === 2);
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Adverbs that measure a quality rather than modify an action.
|
|
13
|
+
*
|
|
14
|
+
* The discriminating side of the 长 context, and the reason the set is written
|
|
15
|
+
* out rather than taken from a tag: jieba calls 很 `zg` and 多 `m`, so the two
|
|
16
|
+
* commonest members are not adverbs as far as the dictionary is concerned,
|
|
17
|
+
* while 已经, 也, 却 and 就 — which sit in front of the *verb* 长 — are `d`
|
|
18
|
+
* along with the ones wanted here. The tag names the wrong set in both
|
|
19
|
+
* directions, so the set is named directly.
|
|
20
|
+
*
|
|
21
|
+
* Everything here is degree or comparison. 还 and 不 are deliberately absent
|
|
22
|
+
* even though 距离还长 and 那座桥不长 are both `cháng`: they modify verbs as
|
|
23
|
+
* readily as qualities, and 还长有毛 and 胡子不长在前额上 are the same two
|
|
24
|
+
* characters around the verb.
|
|
25
|
+
*/
|
|
26
|
+
const DEGREE = new Set([
|
|
27
|
+
"一样",
|
|
28
|
+
"十分",
|
|
29
|
+
"多",
|
|
30
|
+
"多么",
|
|
31
|
+
"好",
|
|
32
|
+
"如此",
|
|
33
|
+
"尽量",
|
|
34
|
+
"很",
|
|
35
|
+
"格外",
|
|
36
|
+
"极",
|
|
37
|
+
"极其",
|
|
38
|
+
"比较",
|
|
39
|
+
"略",
|
|
40
|
+
"相当",
|
|
41
|
+
"真",
|
|
42
|
+
"稍",
|
|
43
|
+
"稍微",
|
|
44
|
+
"越",
|
|
45
|
+
"越来越",
|
|
46
|
+
"这么",
|
|
47
|
+
"这样",
|
|
48
|
+
"那么",
|
|
49
|
+
"那样",
|
|
50
|
+
"更",
|
|
51
|
+
"最",
|
|
52
|
+
"有多",
|
|
53
|
+
"特别",
|
|
54
|
+
"老",
|
|
55
|
+
"够",
|
|
56
|
+
"挺",
|
|
57
|
+
"太",
|
|
58
|
+
"非常",
|
|
59
|
+
]);
|
|
60
|
+
/**
|
|
61
|
+
* What shows a 长 to be growing even with a degree word in front of it.
|
|
62
|
+
*
|
|
63
|
+
* {@link DEGREE} already excludes nearly everything that precedes the verb, so
|
|
64
|
+
* this only has to settle the three shapes reachable from both sets: 真长得很快
|
|
65
|
+
* and 越长得快, where 得 marks the complement; 长着, where the aspect does; and
|
|
66
|
+
* 越长越高, where the correlative makes the 长 the thing that increases.
|
|
67
|
+
*
|
|
68
|
+
* 了 and 的 are pointedly *not* here, and that is the whole use of conditioning
|
|
69
|
+
* on the adverb first. Following a bare 长 either would suggest the verb — 长了
|
|
70
|
+
* 一个大包, 长的很像 — but following an adverb and a 长 they are the sentence
|
|
71
|
+
* particle and the attributive: 时间太长了 and 很长的道路 are both `cháng`, and
|
|
72
|
+
* an earlier draft of this rule that guarded on them read both as `zhǎng`.
|
|
73
|
+
*/
|
|
74
|
+
const GROWING = new Set(["得", "着", "越"]);
|
|
75
|
+
/**
|
|
76
|
+
* What growing produces, as the far half of 越长越X.
|
|
77
|
+
*
|
|
78
|
+
* 越长越高, 越长越大, 越长越胖: each names a dimension that increases *because*
|
|
79
|
+
* something grew, so the 长 in front of it is the verb. The adjectives that go
|
|
80
|
+
* with a length or a duration are pointedly absent — 时间越长越好, 队伍越长越慢
|
|
81
|
+
* — because those are the cases the sources already read correctly.
|
|
82
|
+
*/
|
|
83
|
+
const GROWN_INTO = new Set(["高", "大", "胖", "壮", "结实"]);
|
|
84
|
+
/**
|
|
85
|
+
* Whether an edge is the 越长 of a 越长越X saying something grew.
|
|
86
|
+
*
|
|
87
|
+
* This exists because of a defect in the sources rather than a gap in them.
|
|
88
|
+
* 越长 is a key, read `yuè cháng`, and it is the *only* one of its shape: 越大,
|
|
89
|
+
* 越高, 越好, 越快 and 越多 are all absent, so 越高越好 decodes as two words and
|
|
90
|
+
* 越长越高 reaches for a word nothing else in the paradigm has. It carries no
|
|
91
|
+
* part of speech, which is how the dictionary holds a reading somebody asserted
|
|
92
|
+
* rather than a word anybody counted — the same category {@link TEACHING_JIAO}
|
|
93
|
+
* declines to trust — and it comes from one source, `large_pinyin.txt`, with
|
|
94
|
+
* CC-CEDICT holding no such entry.
|
|
95
|
+
*
|
|
96
|
+
* Taking the edge away leaves the character's own default, which is `zhǎng`,
|
|
97
|
+
* and leaves `cháng` standing as a rival about one bucket dearer. That last
|
|
98
|
+
* part is the point of forbidding rather than forcing: 越长越X is genuinely
|
|
99
|
+
* ambiguous — 孩子越长越漂亮 grows and 头发越长越漂亮 lengthens, and only the
|
|
100
|
+
* subject says which — so the decode should answer with the likelier reading
|
|
101
|
+
* and still report itself as guessing. A forced edge could not.
|
|
102
|
+
*
|
|
103
|
+
* Unlike the rest of this file the shape has no corpus behind it: 越长 occurs
|
|
104
|
+
* three times in the 88,866 lines, and all three are 越来越长 or 说的越长. The
|
|
105
|
+
* word list is therefore small on purpose, and everything outside it is left as
|
|
106
|
+
* the sources have it.
|
|
107
|
+
*/
|
|
108
|
+
function isGrowthCorrelative(context) {
|
|
109
|
+
const { characters, edge } = context;
|
|
110
|
+
return (edge.text === "越长" &&
|
|
111
|
+
edge.partOfSpeech === "" &&
|
|
112
|
+
characters[edge.to] === "越" &&
|
|
113
|
+
GROWN_INTO.has(characters[edge.to + 1] ?? ""));
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* 长 read as `cháng` where an adverb of degree measures it.
|
|
117
|
+
*
|
|
118
|
+
* The character is stored `zhǎng` with `cháng` as an alternate, and the data
|
|
119
|
+
* says so about the character in isolation: Unihan ranks the readings
|
|
120
|
+
* `zhǎng(1879) cháng(1179)` by corpus count and names `zhǎng` in `kMandarin`.
|
|
121
|
+
* That ranking is doing real work — 署长, 团长, 公安局长, 总会长, 审理长 and
|
|
122
|
+
* the rest reach a bare 长 at the end of a title and read it correctly — so the
|
|
123
|
+
* default is not the thing to change. What is left over is the 长 that is an
|
|
124
|
+
* adjective, and nothing in the cost model can prefer an alternate at a
|
|
125
|
+
* position no word covers: 这篇文章不太长 came out `bú tài zhǎng`.
|
|
126
|
+
*
|
|
127
|
+
* The context that separates them is one-sided, as it was for the modal 得. A
|
|
128
|
+
* 长 that is *growing* is a verb, and a degree adverb cannot modify one — there
|
|
129
|
+
* is no 很长 meaning it grew a lot — so 很, 太, 最, 多 and their kin in front of
|
|
130
|
+
* a bare 长 make it the adjective. The other side carries almost nothing: what
|
|
131
|
+
* follows an adjectival 长 is a noun (很长时间), a particle (最长的大桥), or the
|
|
132
|
+
* end of the sentence (他的腿很长), which is also what follows half the verbs.
|
|
133
|
+
*
|
|
134
|
+
* Measured over the same 88,866 lines of Tatoeba and zh.wikipedia the other
|
|
135
|
+
* rules were sized against, 260 长 decode as a word of their own and this moves
|
|
136
|
+
* 75 of them to `cháng`, all 75 correctly. On CPP's 40 hand-labelled 长 it takes
|
|
137
|
+
* the character from 85.00% to 87.50%, fixing 时间最长 and breaking nothing.
|
|
138
|
+
*
|
|
139
|
+
* The other half of the rule is {@link GROWN_INTO}, which pushes the opposite
|
|
140
|
+
* way on the one shape the sources get wrong.
|
|
141
|
+
*/
|
|
142
|
+
export const ADJECTIVAL_CHANG = {
|
|
143
|
+
name: "adjectival-chang",
|
|
144
|
+
verdictFor: (context) => {
|
|
145
|
+
const { characters, edge } = context;
|
|
146
|
+
if (isGrowthCorrelative(context)) {
|
|
147
|
+
return "forbid";
|
|
148
|
+
}
|
|
149
|
+
if (edge.text !== "长" || !isChang(edge.reading[0])) {
|
|
150
|
+
return "keep";
|
|
151
|
+
}
|
|
152
|
+
if (GROWING.has(characters[edge.to] ?? "")) {
|
|
153
|
+
return "keep";
|
|
154
|
+
}
|
|
155
|
+
const before = wordEndingAt(context, edge.from);
|
|
156
|
+
return before !== undefined && DEGREE.has(before) ? "force" : "keep";
|
|
157
|
+
},
|
|
158
|
+
};
|
|
159
|
+
//# sourceMappingURL=polyphone-rules.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"polyphone-rules.js","sourceRoot":"","sources":["../../src/decode/polyphone-rules.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAmC,YAAY,EAAE,MAAM,YAAY,CAAC;AAE3E;;GAEG;AACH,SAAS,OAAO,CAAC,QAA8B;IAC7C,OAAO,CACL,QAAQ,EAAE,OAAO,KAAK,IAAI;QAC1B,QAAQ,CAAC,KAAK,KAAK,KAAK;QACxB,QAAQ,CAAC,IAAI,KAAK,CAAC,CACpB,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC;IACrB,IAAI;IACJ,IAAI;IACJ,GAAG;IACH,IAAI;IACJ,GAAG;IACH,IAAI;IACJ,IAAI;IACJ,GAAG;IACH,IAAI;IACJ,GAAG;IACH,IAAI;IACJ,IAAI;IACJ,GAAG;IACH,IAAI;IACJ,GAAG;IACH,GAAG;IACH,IAAI;IACJ,GAAG;IACH,KAAK;IACL,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,GAAG;IACH,GAAG;IACH,IAAI;IACJ,IAAI;IACJ,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,IAAI;CACL,CAAC,CAAC;AAEH;;;;;;;;;;;;;GAaG;AACH,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;AAEzC;;;;;;;GAOG;AACH,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC;AAEvD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,SAAS,mBAAmB,CAAC,OAAoB;IAC/C,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC;IACrC,OAAO,CACL,IAAI,CAAC,IAAI,KAAK,IAAI;QAClB,IAAI,CAAC,YAAY,KAAK,EAAE;QACxB,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,GAAG;QAC3B,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAC9C,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAa;IACxC,IAAI,EAAE,kBAAkB;IACxB,UAAU,EAAE,CAAC,OAAoB,EAAE,EAAE;QACnC,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC;QACrC,IAAI,mBAAmB,CAAC,OAAO,CAAC,EAAE,CAAC;YACjC,OAAO,QAAQ,CAAC;QAClB,CAAC;QACD,IAAI,IAAI,CAAC,IAAI,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACnD,OAAO,MAAM,CAAC;QAChB,CAAC;QACD,IAAI,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC;YAC3C,OAAO,MAAM,CAAC;QAChB,CAAC;QACD,MAAM,MAAM,GAAG,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QAChD,OAAO,MAAM,KAAK,SAAS,IAAI,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC;IACvE,CAAC;CACF,CAAC"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
export { TEACHING_JIAO } from "./jiao-rule.js";
|
|
1
2
|
import { type EdgeRule } from "./rules.js";
|
|
2
3
|
/**
|
|
3
4
|
* 得 read as `děi` where it is a modal rather than a particle.
|
|
@@ -49,34 +50,6 @@ export declare const MODAL_DE: EdgeRule;
|
|
|
49
50
|
* 门铃儿 and a row of Mongol names transliterated with 儿.
|
|
50
51
|
*/
|
|
51
52
|
export declare const ATTESTED_ERHUA: EdgeRule;
|
|
52
|
-
/**
|
|
53
|
-
* 教 read as `jiāo` where it is teaching rather than a religion.
|
|
54
|
-
*
|
|
55
|
-
* The dictionary stores 教 as `jiào` with `jiāo` as an alternate, and `jiào` is
|
|
56
|
-
* right for the compounds — 教育, 教师, 宗教, 主教 — which are words and reach
|
|
57
|
-
* their reading through the word. What is left is the 教 that stands as a word
|
|
58
|
-
* of its own, and that one is the verb: 他在北京大学教了三年书 came out
|
|
59
|
-
* `jiàole sān nián shū`, and 我教英语, 谁教你法语 and 她教我如何游泳 with it.
|
|
60
|
-
* 教书 is a word and was always `jiāo shū`; nothing carried that across a 了.
|
|
61
|
-
*
|
|
62
|
-
* See {@link isTeachingAt} for what decides it. Forcing the single-character
|
|
63
|
-
* edge is not enough on its own, because a reading spanning two characters
|
|
64
|
-
* carries its own 教 into the position: 王老师教我们汉语 read `jiào` off 师教,
|
|
65
|
-
* and 来教我 off 来教. Those are pairs the dictionary holds with no part of
|
|
66
|
-
* speech and at the cost of a word nothing has ever counted — a reading rather
|
|
67
|
-
* than a word — so a *tagged* word ending in 教 is left alone, which is every
|
|
68
|
-
* one that matters: 任教, 宗教, 主教, 佛教, 传教, 执教, 请教, 家教.
|
|
69
|
-
*
|
|
70
|
-
* Measured over 88,866 lines of Tatoeba and zh.wikipedia, 181 教 decode as a
|
|
71
|
-
* word of their own and every one of them read `jiào`. This moves 158 to
|
|
72
|
-
* `jiāo` and is wrong on three: 统一教创始人, 方法教深思 and 做到了教政分离,
|
|
73
|
-
* where a nominal compound takes an object's shape, the last of them because
|
|
74
|
-
* 做到了 is a word and so the 了 in front is not a particle to look at. Of the
|
|
75
|
-
* 21 it leaves, 8 are right — 诸教中, 教外别传, 董教总, 风教, 教青局 twice, a
|
|
76
|
-
* 教室 reached through a bad split, and a 教 used as a bare noun — and 13 are
|
|
77
|
-
* misses, where jieba tags the object something this does not name.
|
|
78
|
-
*/
|
|
79
|
-
export declare const TEACHING_JIAO: EdgeRule;
|
|
80
53
|
/**
|
|
81
54
|
* A 量词 with a number in front of it does not start the next word.
|
|
82
55
|
*
|
|
@@ -106,75 +79,7 @@ export declare const TEACHING_JIAO: EdgeRule;
|
|
|
106
79
|
* corpus and it is a fix, 下了两天雨 having read 天雨 as `tiān yù`.
|
|
107
80
|
*/
|
|
108
81
|
export declare const COUNTED_MEASURE: EdgeRule;
|
|
109
|
-
|
|
110
|
-
* 长 read as `cháng` where an adverb of degree measures it.
|
|
111
|
-
*
|
|
112
|
-
* The character is stored `zhǎng` with `cháng` as an alternate, and the data
|
|
113
|
-
* says so about the character in isolation: Unihan ranks the readings
|
|
114
|
-
* `zhǎng(1879) cháng(1179)` by corpus count and names `zhǎng` in `kMandarin`.
|
|
115
|
-
* That ranking is doing real work — 署长, 团长, 公安局长, 总会长, 审理长 and
|
|
116
|
-
* the rest reach a bare 长 at the end of a title and read it correctly — so the
|
|
117
|
-
* default is not the thing to change. What is left over is the 长 that is an
|
|
118
|
-
* adjective, and nothing in the cost model can prefer an alternate at a
|
|
119
|
-
* position no word covers: 这篇文章不太长 came out `bú tài zhǎng`.
|
|
120
|
-
*
|
|
121
|
-
* The context that separates them is one-sided, as it was for the modal 得. A
|
|
122
|
-
* 长 that is *growing* is a verb, and a degree adverb cannot modify one — there
|
|
123
|
-
* is no 很长 meaning it grew a lot — so 很, 太, 最, 多 and their kin in front of
|
|
124
|
-
* a bare 长 make it the adjective. The other side carries almost nothing: what
|
|
125
|
-
* follows an adjectival 长 is a noun (很长时间), a particle (最长的大桥), or the
|
|
126
|
-
* end of the sentence (他的腿很长), which is also what follows half the verbs.
|
|
127
|
-
*
|
|
128
|
-
* Measured over the same 88,866 lines of Tatoeba and zh.wikipedia the other
|
|
129
|
-
* rules were sized against, 260 长 decode as a word of their own and this moves
|
|
130
|
-
* 75 of them to `cháng`, all 75 correctly. On CPP's 40 hand-labelled 长 it takes
|
|
131
|
-
* the character from 85.00% to 87.50%, fixing 时间最长 and breaking nothing.
|
|
132
|
-
*
|
|
133
|
-
* The other half of the rule is {@link GROWN_INTO}, which pushes the opposite
|
|
134
|
-
* way on the one shape the sources get wrong.
|
|
135
|
-
*/
|
|
136
|
-
export declare const ADJECTIVAL_CHANG: EdgeRule;
|
|
137
|
-
/**
|
|
138
|
-
* 弹 read as `tán` where it is playing rather than a projectile.
|
|
139
|
-
*
|
|
140
|
-
* The character is stored `dàn` with `tán` as an alternate, and the sources are
|
|
141
|
-
* agreed about it: Unihan's `kHanyuPinlu` counts `dàn(313)` against `tán(50)`
|
|
142
|
-
* and `kMandarin` names `dàn`. That is a fact about a corpus in which nearly
|
|
143
|
-
* every 弹 is ammunition — 子弹, 炮弹, 导弹, 原子弹, 手榴弹 — and every one of
|
|
144
|
-
* those is a word that carries its own reading. What the default is left
|
|
145
|
-
* deciding is the 弹 that stands as a word of its own, and in running text that
|
|
146
|
-
* one is the verb: 他会弹一点儿古筝 came out `dàn`, and 弹吉他, 弹竖琴, 我在弹肖邦
|
|
147
|
-
* and 他钢琴弹得很好 with it.
|
|
148
|
-
*
|
|
149
|
-
* See {@link isPlayingAt} for what decides it. Forcing the single-character
|
|
150
|
-
* edge is not enough on its own, for the reason {@link TEACHING_JIAO} gives: a
|
|
151
|
-
* reading spanning two characters carries its own 弹 into the position, and
|
|
152
|
-
* 我的爱好是开车和弹吉他 read `dàn` off 和弹, a pair the dictionary holds with
|
|
153
|
-
* no part of speech and at the cost of a reading nobody counted. A *tagged*
|
|
154
|
-
* word ending in 弹 is left alone, which is every one that matters — 子弹, 炸弹,
|
|
155
|
-
* 导弹, 反弹, 手榴弹. Nothing has to be done about the other side, since the
|
|
156
|
-
* nominal compounds starting with 弹 are all listed: 弹匣, 弹坑, 弹壳, 弹片,
|
|
157
|
-
* 弹药, 弹道 and 弹头 reach their reading through the word, so a bare 弹 with a
|
|
158
|
-
* noun after it is not the front of one that got away.
|
|
159
|
-
*
|
|
160
|
-
* The 88,866 lines of Tatoeba and zh.wikipedia the other rules were sized
|
|
161
|
-
* against are the wrong corpus for this one on their own: 38 弹 decode as a
|
|
162
|
-
* word of their own in them, and 31 are somebody playing something. So CPP's
|
|
163
|
-
* 20,147 sentences are measured with them as plain text — the benchmark is
|
|
164
|
-
* drawn from zh.wikipedia's military articles, which is precisely where the
|
|
165
|
-
* shapes this rule can break live. Over the 109,013 lines together, 60 弹
|
|
166
|
-
* decode as a word of their own, every one read `dàn`, and 34 of the 60 are
|
|
167
|
-
* wrong.
|
|
168
|
-
*
|
|
169
|
-
* This moves 30 of them, of which 29 are right: the whole of 弹吉他, 弹一曲肖邦
|
|
170
|
-
* and 钢琴弹得很好, and none of 南部弹, 毛瑟弹, 掷弹兵, 供弹爪, 着弹点, 弹洞 or
|
|
171
|
-
* 底排弹时. The one it breaks is 拆弹专家, where a compound has an object's
|
|
172
|
-
* shape on both sides. Five it leaves alone: 开始弹, 四手联弹 and 弹起三次, which
|
|
173
|
-
* have no object to see, 用那种指法弹不会觉得费力, and 反手持法去弹班卓琴, where
|
|
174
|
-
* the decode reaches 班 rather than 班卓琴. On CPP's 40 labelled 弹 nothing
|
|
175
|
-
* moves at all, every one of them having been right through a word.
|
|
176
|
-
*/
|
|
177
|
-
export declare const PLAYING_TAN: EdgeRule;
|
|
82
|
+
export { ADJECTIVAL_CHANG, PLAYING_TAN } from "./polyphone-rules.js";
|
|
178
83
|
/**
|
|
179
84
|
* The rules the lattice decode applies, in order.
|
|
180
85
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reading-rules.d.ts","sourceRoot":"","sources":["../../src/decode/reading-rules.ts"],"names":[],"mappings":"AAGA,OAAO,EAEL,KAAK,QAAQ,EAId,MAAM,YAAY,CAAC;AAgCpB;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,eAAO,MAAM,QAAQ,EAAE,QActB,CAAC;AAEF;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,cAAc,EAAE,QAY5B,CAAC;
|
|
1
|
+
{"version":3,"file":"reading-rules.d.ts","sourceRoot":"","sources":["../../src/decode/reading-rules.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAG/C,OAAO,EAEL,KAAK,QAAQ,EAId,MAAM,YAAY,CAAC;AAgCpB;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,eAAO,MAAM,QAAQ,EAAE,QActB,CAAC;AAEF;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,cAAc,EAAE,QAY5B,CAAC;AAsCF;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,eAAO,MAAM,eAAe,EAAE,QAuB7B,CAAC;AAIF,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAErE;;GAEG;AACH,eAAO,MAAM,aAAa,EAAE,SAAS,QAAQ,EAO5C,CAAC"}
|