@kensio/pinyinjs 1.7.4 → 1.7.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +128 -123
- package/data/full.entries +2595 -2595
- package/data/manifest.json +5 -5
- package/data/script.map +66 -3
- package/dist/accuracy/score-case.d.ts +23 -0
- package/dist/accuracy/score-case.d.ts.map +1 -0
- package/dist/accuracy/score-case.js +63 -0
- package/dist/accuracy/score-case.js.map +1 -0
- package/dist/accuracy/score.d.ts +1 -8
- package/dist/accuracy/score.d.ts.map +1 -1
- package/dist/accuracy/score.js +1 -55
- package/dist/accuracy/score.js.map +1 -1
- package/dist/cli/arguments.d.ts +4 -290
- package/dist/cli/arguments.d.ts.map +1 -1
- package/dist/cli/arguments.js +5 -357
- package/dist/cli/arguments.js.map +1 -1
- package/dist/cli/check-command.d.ts +9 -0
- package/dist/cli/check-command.d.ts.map +1 -0
- package/dist/cli/check-command.js +95 -0
- package/dist/cli/check-command.js.map +1 -0
- package/dist/cli/cli-input.d.ts +49 -0
- package/dist/cli/cli-input.d.ts.map +1 -0
- package/dist/cli/cli-input.js +31 -0
- package/dist/cli/cli-input.js.map +1 -0
- package/dist/cli/command.d.ts +97 -0
- package/dist/cli/command.d.ts.map +1 -0
- package/dist/cli/command.js +40 -0
- package/dist/cli/command.js.map +1 -0
- package/dist/cli/commands.d.ts +7 -110
- package/dist/cli/commands.d.ts.map +1 -1
- package/dist/cli/commands.js +14 -991
- package/dist/cli/commands.js.map +1 -1
- package/dist/cli/convert-command.d.ts +6 -0
- package/dist/cli/convert-command.d.ts.map +1 -0
- package/dist/cli/convert-command.js +52 -0
- package/dist/cli/convert-command.js.map +1 -0
- package/dist/cli/environment.d.ts +1 -1
- package/dist/cli/environment.d.ts.map +1 -1
- package/dist/cli/explain-command.d.ts +6 -0
- package/dist/cli/explain-command.d.ts.map +1 -0
- package/dist/cli/explain-command.js +40 -0
- package/dist/cli/explain-command.js.map +1 -0
- package/dist/cli/explain-syllable.d.ts +10 -0
- package/dist/cli/explain-syllable.d.ts.map +1 -0
- package/dist/cli/explain-syllable.js +70 -0
- package/dist/cli/explain-syllable.js.map +1 -0
- package/dist/cli/flag-help.d.ts +18 -0
- package/dist/cli/flag-help.d.ts.map +1 -0
- package/dist/cli/flag-help.js +78 -0
- package/dist/cli/flag-help.js.map +1 -0
- package/dist/cli/flag-lists.d.ts +49 -0
- package/dist/cli/flag-lists.d.ts.map +1 -0
- package/dist/cli/flag-lists.js +58 -0
- package/dist/cli/flag-lists.js.map +1 -0
- package/dist/cli/flag-values.d.ts +44 -0
- package/dist/cli/flag-values.d.ts.map +1 -0
- package/dist/cli/flag-values.js +56 -0
- package/dist/cli/flag-values.js.map +1 -0
- package/dist/cli/flags.d.ts +193 -0
- package/dist/cli/flags.d.ts.map +1 -0
- package/dist/cli/flags.js +133 -0
- package/dist/cli/flags.js.map +1 -0
- package/dist/cli/format-options.d.ts +29 -0
- package/dist/cli/format-options.d.ts.map +1 -0
- package/dist/cli/format-options.js +72 -0
- package/dist/cli/format-options.js.map +1 -0
- package/dist/cli/global-help.d.ts +23 -0
- package/dist/cli/global-help.d.ts.map +1 -0
- package/dist/cli/global-help.js +40 -0
- package/dist/cli/global-help.js.map +1 -0
- package/dist/cli/help.d.ts +1 -1
- package/dist/cli/help.d.ts.map +1 -1
- package/dist/cli/help.js +5 -99
- package/dist/cli/help.js.map +1 -1
- package/dist/cli/html-commands.d.ts +13 -0
- package/dist/cli/html-commands.d.ts.map +1 -0
- package/dist/cli/html-commands.js +49 -0
- package/dist/cli/html-commands.js.map +1 -0
- package/dist/cli/info-command.d.ts +7 -0
- package/dist/cli/info-command.d.ts.map +1 -0
- package/dist/cli/info-command.js +39 -0
- package/dist/cli/info-command.js.map +1 -0
- package/dist/cli/lookup-commands.d.ts +10 -0
- package/dist/cli/lookup-commands.d.ts.map +1 -0
- package/dist/cli/lookup-commands.js +101 -0
- package/dist/cli/lookup-commands.js.map +1 -0
- package/dist/cli/match-command.d.ts +11 -0
- package/dist/cli/match-command.d.ts.map +1 -0
- package/dist/cli/match-command.js +76 -0
- package/dist/cli/match-command.js.map +1 -0
- package/dist/cli/number-command.d.ts +12 -0
- package/dist/cli/number-command.d.ts.map +1 -0
- package/dist/cli/number-command.js +89 -0
- package/dist/cli/number-command.js.map +1 -0
- package/dist/cli/options.d.ts +30 -0
- package/dist/cli/options.d.ts.map +1 -0
- package/dist/cli/options.js +54 -0
- package/dist/cli/options.js.map +1 -0
- package/dist/cli/run-command.d.ts +24 -0
- package/dist/cli/run-command.d.ts.map +1 -0
- package/dist/cli/run-command.js +40 -0
- package/dist/cli/run-command.js.map +1 -0
- package/dist/cli/run.d.ts +4 -42
- package/dist/cli/run.d.ts.map +1 -1
- package/dist/cli/run.js +6 -61
- package/dist/cli/run.js.map +1 -1
- package/dist/cli/script-command.d.ts +10 -0
- package/dist/cli/script-command.d.ts.map +1 -0
- package/dist/cli/script-command.js +58 -0
- package/dist/cli/script-command.js.map +1 -0
- package/dist/cli/segment-command.d.ts +11 -0
- package/dist/cli/segment-command.d.ts.map +1 -0
- package/dist/cli/segment-command.js +53 -0
- package/dist/cli/segment-command.js.map +1 -0
- package/dist/cli/slug-command.d.ts +10 -0
- package/dist/cli/slug-command.d.ts.map +1 -0
- package/dist/cli/slug-command.js +28 -0
- package/dist/cli/slug-command.js.map +1 -0
- package/dist/cli/syllable-command.d.ts +14 -0
- package/dist/cli/syllable-command.d.ts.map +1 -0
- package/dist/cli/syllable-command.js +82 -0
- package/dist/cli/syllable-command.js.map +1 -0
- package/dist/cli/system-table.d.ts +12 -0
- package/dist/cli/system-table.d.ts.map +1 -0
- package/dist/cli/system-table.js +48 -0
- package/dist/cli/system-table.js.map +1 -0
- package/dist/cli/systems.d.ts +57 -0
- package/dist/cli/systems.d.ts.map +1 -0
- package/dist/cli/systems.js +27 -0
- package/dist/cli/systems.js.map +1 -0
- package/dist/cli/transcribe-command.d.ts +18 -0
- package/dist/cli/transcribe-command.d.ts.map +1 -0
- package/dist/cli/transcribe-command.js +86 -0
- package/dist/cli/transcribe-command.js.map +1 -0
- package/dist/cli/transcribe-reading.d.ts +15 -0
- package/dist/cli/transcribe-reading.d.ts.map +1 -0
- package/dist/cli/transcribe-reading.js +90 -0
- package/dist/cli/transcribe-reading.js.map +1 -0
- package/dist/cli/transcribe-rows.d.ts +26 -0
- package/dist/cli/transcribe-rows.d.ts.map +1 -0
- package/dist/cli/transcribe-rows.js +30 -0
- package/dist/cli/transcribe-rows.js.map +1 -0
- package/dist/cli/usage-error.d.ts +9 -0
- package/dist/cli/usage-error.d.ts.map +1 -0
- package/dist/cli/usage-error.js +9 -0
- package/dist/cli/usage-error.js.map +1 -0
- package/dist/decode/alternatives.d.ts +16 -0
- package/dist/decode/alternatives.d.ts.map +1 -0
- package/dist/decode/alternatives.js +31 -0
- package/dist/decode/alternatives.js.map +1 -0
- package/dist/decode/chang-context.d.ts +27 -0
- package/dist/decode/chang-context.d.ts.map +1 -0
- package/dist/decode/chang-context.js +66 -0
- package/dist/decode/chang-context.js.map +1 -0
- package/dist/decode/chang-rule.d.ts +37 -0
- package/dist/decode/chang-rule.d.ts.map +1 -0
- package/dist/decode/chang-rule.js +169 -0
- package/dist/decode/chang-rule.js.map +1 -0
- package/dist/decode/confidence.d.ts +11 -3
- package/dist/decode/confidence.d.ts.map +1 -1
- package/dist/decode/confidence.js +14 -121
- package/dist/decode/confidence.js.map +1 -1
- package/dist/decode/convert-options.d.ts +116 -0
- package/dist/decode/convert-options.d.ts.map +1 -0
- package/dist/decode/convert-options.js +2 -0
- package/dist/decode/convert-options.js.map +1 -0
- package/dist/decode/convert-pipeline.d.ts +18 -0
- package/dist/decode/convert-pipeline.d.ts.map +1 -0
- package/dist/decode/convert-pipeline.js +67 -0
- package/dist/decode/convert-pipeline.js.map +1 -0
- package/dist/decode/convert.d.ts +9 -118
- package/dist/decode/convert.d.ts.map +1 -1
- package/dist/decode/convert.js +5 -453
- package/dist/decode/convert.js.map +1 -1
- package/dist/decode/de-rule.d.ts +54 -0
- package/dist/decode/de-rule.d.ts.map +1 -0
- package/dist/decode/de-rule.js +113 -0
- package/dist/decode/de-rule.js.map +1 -0
- package/dist/decode/decode.d.ts +2 -15
- package/dist/decode/decode.d.ts.map +1 -1
- package/dist/decode/decode.js +2 -121
- package/dist/decode/decode.js.map +1 -1
- package/dist/decode/decoders.d.ts +32 -0
- package/dist/decode/decoders.d.ts.map +1 -0
- package/dist/decode/decoders.js +29 -0
- package/dist/decode/decoders.js.map +1 -0
- package/dist/decode/edge-context.d.ts +38 -0
- package/dist/decode/edge-context.d.ts.map +1 -0
- package/dist/decode/edge-context.js +57 -0
- package/dist/decode/edge-context.js.map +1 -0
- package/dist/decode/hint-lattice.d.ts +45 -0
- package/dist/decode/hint-lattice.d.ts.map +1 -0
- package/dist/decode/hint-lattice.js +154 -0
- package/dist/decode/hint-lattice.js.map +1 -0
- package/dist/decode/hints.d.ts +2 -45
- package/dist/decode/hints.d.ts.map +1 -1
- package/dist/decode/hints.js +1 -139
- package/dist/decode/hints.js.map +1 -1
- package/dist/decode/jiao-rule.d.ts +64 -0
- package/dist/decode/jiao-rule.d.ts.map +1 -0
- package/dist/decode/jiao-rule.js +115 -0
- package/dist/decode/jiao-rule.js.map +1 -0
- package/dist/decode/lattice-costs.d.ts +55 -0
- package/dist/decode/lattice-costs.d.ts.map +1 -0
- package/dist/decode/lattice-costs.js +90 -0
- package/dist/decode/lattice-costs.js.map +1 -0
- package/dist/decode/lattice-edges.d.ts +29 -0
- package/dist/decode/lattice-edges.d.ts.map +1 -0
- package/dist/decode/lattice-edges.js +78 -0
- package/dist/decode/lattice-edges.js.map +1 -0
- package/dist/decode/lattice-slice.d.ts +37 -0
- package/dist/decode/lattice-slice.d.ts.map +1 -0
- package/dist/decode/lattice-slice.js +43 -0
- package/dist/decode/lattice-slice.js.map +1 -0
- package/dist/decode/lattice-types.d.ts +101 -0
- package/dist/decode/lattice-types.d.ts.map +1 -0
- package/dist/decode/lattice-types.js +63 -0
- package/dist/decode/lattice-types.js.map +1 -0
- package/dist/decode/lattice.d.ts +2 -59
- package/dist/decode/lattice.d.ts.map +1 -1
- package/dist/decode/lattice.js +2 -118
- package/dist/decode/lattice.js.map +1 -1
- package/dist/decode/number-pieces.d.ts +62 -0
- package/dist/decode/number-pieces.d.ts.map +1 -0
- package/dist/decode/number-pieces.js +106 -0
- package/dist/decode/number-pieces.js.map +1 -0
- package/dist/decode/numbers.d.ts +53 -0
- package/dist/decode/numbers.d.ts.map +1 -0
- package/dist/decode/numbers.js +69 -0
- package/dist/decode/numbers.js.map +1 -0
- package/dist/decode/pieces.d.ts +78 -0
- package/dist/decode/pieces.d.ts.map +1 -0
- package/dist/decode/pieces.js +136 -0
- package/dist/decode/pieces.js.map +1 -0
- package/dist/decode/polyphone-rules.d.ts +11 -0
- package/dist/decode/polyphone-rules.d.ts.map +1 -0
- package/dist/decode/polyphone-rules.js +11 -0
- package/dist/decode/polyphone-rules.js.map +1 -0
- package/dist/decode/reading-rules.d.ts +3 -126
- package/dist/decode/reading-rules.d.ts.map +1 -1
- package/dist/decode/reading-rules.js +8 -434
- package/dist/decode/reading-rules.js.map +1 -1
- package/dist/decode/rules.d.ts +1 -17
- package/dist/decode/rules.d.ts.map +1 -1
- package/dist/decode/rules.js +1 -43
- package/dist/decode/rules.js.map +1 -1
- package/dist/decode/run-lattice.d.ts +52 -0
- package/dist/decode/run-lattice.d.ts.map +1 -0
- package/dist/decode/run-lattice.js +91 -0
- package/dist/decode/run-lattice.js.map +1 -0
- package/dist/decode/run-words.d.ts +17 -0
- package/dist/decode/run-words.d.ts.map +1 -0
- package/dist/decode/run-words.js +29 -0
- package/dist/decode/run-words.js.map +1 -0
- package/dist/decode/sandhi-input.d.ts +30 -0
- package/dist/decode/sandhi-input.d.ts.map +1 -0
- package/dist/decode/sandhi-input.js +35 -0
- package/dist/decode/sandhi-input.js.map +1 -0
- package/dist/decode/sandhi-tones.d.ts +97 -0
- package/dist/decode/sandhi-tones.d.ts.map +1 -0
- package/dist/decode/sandhi-tones.js +139 -0
- package/dist/decode/sandhi-tones.js.map +1 -0
- package/dist/decode/sandhi.d.ts +10 -7
- package/dist/decode/sandhi.d.ts.map +1 -1
- package/dist/decode/sandhi.js +11 -88
- package/dist/decode/sandhi.js.map +1 -1
- package/dist/decode/script-types.d.ts +76 -0
- package/dist/decode/script-types.d.ts.map +1 -0
- package/dist/decode/script-types.js +35 -0
- package/dist/decode/script-types.js.map +1 -0
- package/dist/decode/script-words.d.ts +32 -0
- package/dist/decode/script-words.d.ts.map +1 -0
- package/dist/decode/script-words.js +77 -0
- package/dist/decode/script-words.js.map +1 -0
- package/dist/decode/script.d.ts +3 -73
- package/dist/decode/script.d.ts.map +1 -1
- package/dist/decode/script.js +3 -109
- package/dist/decode/script.js.map +1 -1
- package/dist/decode/tan-rule.d.ts +68 -0
- package/dist/decode/tan-rule.d.ts.map +1 -0
- package/dist/decode/tan-rule.js +131 -0
- package/dist/decode/tan-rule.js.map +1 -0
- package/dist/decode/write-run.d.ts +21 -0
- package/dist/decode/write-run.d.ts.map +1 -0
- package/dist/decode/write-run.js +42 -0
- package/dist/decode/write-run.js.map +1 -0
- package/dist/dictionary/artifact-claims.d.ts +25 -0
- package/dist/dictionary/artifact-claims.d.ts.map +1 -0
- package/dist/dictionary/artifact-claims.js +47 -0
- package/dist/dictionary/artifact-claims.js.map +1 -0
- package/dist/dictionary/artifact-format.d.ts +86 -0
- package/dist/dictionary/artifact-format.d.ts.map +1 -0
- package/dist/dictionary/artifact-format.js +91 -0
- package/dist/dictionary/artifact-format.js.map +1 -0
- package/dist/dictionary/artifact-read.d.ts +34 -0
- package/dist/dictionary/artifact-read.d.ts.map +1 -0
- package/dist/dictionary/artifact-read.js +114 -0
- package/dist/dictionary/artifact-read.js.map +1 -0
- package/dist/dictionary/artifact.d.ts +4 -63
- package/dist/dictionary/artifact.d.ts.map +1 -1
- package/dist/dictionary/artifact.js +12 -229
- package/dist/dictionary/artifact.js.map +1 -1
- package/dist/dictionary/assertions.d.ts +5 -57
- package/dist/dictionary/assertions.d.ts.map +1 -1
- package/dist/dictionary/assertions.js +4 -317
- package/dist/dictionary/assertions.js.map +1 -1
- package/dist/dictionary/build-assertions.d.ts +12 -0
- package/dist/dictionary/build-assertions.d.ts.map +1 -0
- package/dist/dictionary/build-assertions.js +13 -0
- package/dist/dictionary/build-assertions.js.map +1 -0
- package/dist/dictionary/built-dictionary.d.ts +46 -0
- package/dist/dictionary/built-dictionary.d.ts.map +1 -0
- package/dist/dictionary/built-dictionary.js +97 -0
- package/dist/dictionary/built-dictionary.js.map +1 -0
- package/dist/dictionary/cedict-senses.d.ts +87 -0
- package/dist/dictionary/cedict-senses.d.ts.map +1 -0
- package/dist/dictionary/cedict-senses.js +126 -0
- package/dist/dictionary/cedict-senses.js.map +1 -0
- package/dist/dictionary/character-defaults.d.ts +26 -0
- package/dist/dictionary/character-defaults.d.ts.map +1 -0
- package/dist/dictionary/character-defaults.js +67 -0
- package/dist/dictionary/character-defaults.js.map +1 -0
- package/dist/dictionary/character-readings.d.ts +10 -0
- package/dist/dictionary/character-readings.d.ts.map +1 -0
- package/dist/dictionary/character-readings.js +25 -0
- package/dist/dictionary/character-readings.js.map +1 -0
- package/dist/dictionary/constituent-repair.d.ts +36 -0
- package/dist/dictionary/constituent-repair.d.ts.map +1 -0
- package/dist/dictionary/constituent-repair.js +117 -0
- package/dist/dictionary/constituent-repair.js.map +1 -0
- package/dist/dictionary/dictionary-entry.d.ts +37 -0
- package/dist/dictionary/dictionary-entry.d.ts.map +1 -0
- package/dist/dictionary/dictionary-entry.js +41 -0
- package/dist/dictionary/dictionary-entry.js.map +1 -0
- package/dist/dictionary/dictionary-readings.d.ts +56 -0
- package/dist/dictionary/dictionary-readings.d.ts.map +1 -0
- package/dist/dictionary/dictionary-readings.js +93 -0
- package/dist/dictionary/dictionary-readings.js.map +1 -0
- package/dist/dictionary/dictionary.d.ts +6 -60
- package/dist/dictionary/dictionary.d.ts.map +1 -1
- package/dist/dictionary/dictionary.js +9 -169
- package/dist/dictionary/dictionary.js.map +1 -1
- package/dist/dictionary/entry-invariants.d.ts +3 -0
- package/dist/dictionary/entry-invariants.d.ts.map +1 -0
- package/dist/dictionary/entry-invariants.js +67 -0
- package/dist/dictionary/entry-invariants.js.map +1 -0
- package/dist/dictionary/entry-lines.d.ts +35 -0
- package/dist/dictionary/entry-lines.d.ts.map +1 -0
- package/dist/dictionary/entry-lines.js +70 -0
- package/dist/dictionary/entry-lines.js.map +1 -0
- package/dist/dictionary/erhua-repair.d.ts +26 -0
- package/dist/dictionary/erhua-repair.d.ts.map +1 -0
- package/dist/dictionary/erhua-repair.js +49 -0
- package/dist/dictionary/erhua-repair.js.map +1 -0
- package/dist/dictionary/frequency-tones.d.ts +74 -0
- package/dist/dictionary/frequency-tones.d.ts.map +1 -0
- package/dist/dictionary/frequency-tones.js +128 -0
- package/dist/dictionary/frequency-tones.js.map +1 -0
- package/dist/dictionary/inventory-invariants.d.ts +3 -0
- package/dist/dictionary/inventory-invariants.d.ts.map +1 -0
- package/dist/dictionary/inventory-invariants.js +54 -0
- package/dist/dictionary/inventory-invariants.js.map +1 -0
- package/dist/dictionary/locale-candidates.d.ts +40 -0
- package/dist/dictionary/locale-candidates.d.ts.map +1 -0
- package/dist/dictionary/locale-candidates.js +77 -0
- package/dist/dictionary/locale-candidates.js.map +1 -0
- package/dist/dictionary/locale-segments.d.ts +47 -0
- package/dist/dictionary/locale-segments.d.ts.map +1 -0
- package/dist/dictionary/locale-segments.js +141 -0
- package/dist/dictionary/locale-segments.js.map +1 -0
- package/dist/dictionary/locale.d.ts +1 -21
- package/dist/dictionary/locale.d.ts.map +1 -1
- package/dist/dictionary/locale.js +9 -198
- package/dist/dictionary/locale.js.map +1 -1
- package/dist/dictionary/merge-types.d.ts +127 -0
- package/dist/dictionary/merge-types.d.ts.map +1 -0
- package/dist/dictionary/merge-types.js +35 -0
- package/dist/dictionary/merge-types.js.map +1 -0
- package/dist/dictionary/merge-walk.d.ts +27 -0
- package/dist/dictionary/merge-walk.d.ts.map +1 -0
- package/dist/dictionary/merge-walk.js +49 -0
- package/dist/dictionary/merge-walk.js.map +1 -0
- package/dist/dictionary/merge-word.d.ts +7 -0
- package/dist/dictionary/merge-word.d.ts.map +1 -0
- package/dist/dictionary/merge-word.js +91 -0
- package/dist/dictionary/merge-word.js.map +1 -0
- package/dist/dictionary/merge.d.ts +5 -62
- package/dist/dictionary/merge.d.ts.map +1 -1
- package/dist/dictionary/merge.js +32 -725
- package/dist/dictionary/merge.js.map +1 -1
- package/dist/dictionary/proper-noun.d.ts +28 -0
- package/dist/dictionary/proper-noun.d.ts.map +1 -0
- package/dist/dictionary/proper-noun.js +43 -0
- package/dist/dictionary/proper-noun.js.map +1 -0
- package/dist/dictionary/reading-agreement.d.ts +71 -0
- package/dist/dictionary/reading-agreement.d.ts.map +1 -0
- package/dist/dictionary/reading-agreement.js +156 -0
- package/dist/dictionary/reading-agreement.js.map +1 -0
- package/dist/dictionary/script-conversion.d.ts +28 -0
- package/dist/dictionary/script-conversion.d.ts.map +1 -0
- package/dist/dictionary/script-conversion.js +58 -0
- package/dist/dictionary/script-conversion.js.map +1 -0
- package/dist/dictionary/script-pairings.d.ts +74 -0
- package/dist/dictionary/script-pairings.d.ts.map +1 -0
- package/dist/dictionary/script-pairings.js +120 -0
- package/dist/dictionary/script-pairings.js.map +1 -0
- package/dist/dictionary/script-tables.d.ts.map +1 -1
- package/dist/dictionary/script-tables.js +2 -165
- package/dist/dictionary/script-tables.js.map +1 -1
- package/dist/dictionary/taiwan-reading.d.ts +8 -0
- package/dist/dictionary/taiwan-reading.d.ts.map +1 -0
- package/dist/dictionary/taiwan-reading.js +38 -0
- package/dist/dictionary/taiwan-reading.js.map +1 -0
- package/dist/dictionary/tone-invariants.d.ts +3 -0
- package/dist/dictionary/tone-invariants.d.ts.map +1 -0
- package/dist/dictionary/tone-invariants.js +64 -0
- package/dist/dictionary/tone-invariants.js.map +1 -0
- package/dist/dictionary/traditional-form.d.ts +21 -0
- package/dist/dictionary/traditional-form.d.ts.map +1 -0
- package/dist/dictionary/traditional-form.js +59 -0
- package/dist/dictionary/traditional-form.js.map +1 -0
- package/dist/dictionary/traditional-ranking.d.ts +22 -0
- package/dist/dictionary/traditional-ranking.d.ts.map +1 -0
- package/dist/dictionary/traditional-ranking.js +74 -0
- package/dist/dictionary/traditional-ranking.js.map +1 -0
- package/dist/dictionary/traditional-table.d.ts +51 -0
- package/dist/dictionary/traditional-table.d.ts.map +1 -0
- package/dist/dictionary/traditional-table.js +98 -0
- package/dist/dictionary/traditional-table.js.map +1 -0
- package/dist/dictionary/traditional.d.ts +3 -56
- package/dist/dictionary/traditional.d.ts.map +1 -1
- package/dist/dictionary/traditional.js +3 -186
- package/dist/dictionary/traditional.js.map +1 -1
- package/dist/dictionary/variant-counts.d.ts +39 -0
- package/dist/dictionary/variant-counts.d.ts.map +1 -0
- package/dist/dictionary/variant-counts.js +38 -0
- package/dist/dictionary/variant-counts.js.map +1 -0
- package/dist/dictionary/word-reading.d.ts +26 -0
- package/dist/dictionary/word-reading.d.ts.map +1 -0
- package/dist/dictionary/word-reading.js +76 -0
- package/dist/dictionary/word-reading.js.map +1 -0
- package/dist/dictionary/word-readings.d.ts +15 -0
- package/dist/dictionary/word-readings.d.ts.map +1 -0
- package/dist/dictionary/word-readings.js +41 -0
- package/dist/dictionary/word-readings.js.map +1 -0
- package/dist/format/annotate.d.ts +90 -0
- package/dist/format/annotate.d.ts.map +1 -0
- package/dist/format/annotate.js +168 -0
- package/dist/format/annotate.js.map +1 -0
- package/dist/format/html.d.ts +15 -46
- package/dist/format/html.d.ts.map +1 -1
- package/dist/format/html.js +3 -162
- package/dist/format/html.js.map +1 -1
- package/dist/format/slug-hash.d.ts +51 -0
- package/dist/format/slug-hash.d.ts.map +1 -0
- package/dist/format/slug-hash.js +74 -0
- package/dist/format/slug-hash.js.map +1 -0
- package/dist/format/slug-options.d.ts +98 -0
- package/dist/format/slug-options.d.ts.map +1 -0
- package/dist/format/slug-options.js +2 -0
- package/dist/format/slug-options.js.map +1 -0
- package/dist/format/slug-words.d.ts +27 -0
- package/dist/format/slug-words.d.ts.map +1 -0
- package/dist/format/slug-words.js +0 -0
- package/dist/format/slug-words.js.map +1 -0
- package/dist/format/slug.d.ts +3 -128
- package/dist/format/slug.d.ts.map +1 -1
- package/dist/format/slug.js +0 -0
- package/dist/format/slug.js.map +1 -1
- package/dist/grade/check-readings.d.ts +41 -0
- package/dist/grade/check-readings.d.ts.map +1 -0
- package/dist/grade/check-readings.js +36 -0
- package/dist/grade/check-readings.js.map +1 -0
- package/dist/grade/check.d.ts +4 -4
- package/dist/grade/check.d.ts.map +1 -1
- package/dist/grade/check.js +5 -270
- package/dist/grade/check.js.map +1 -1
- package/dist/grade/pair-syllables.d.ts +48 -0
- package/dist/grade/pair-syllables.d.ts.map +1 -0
- package/dist/grade/pair-syllables.js +71 -0
- package/dist/grade/pair-syllables.js.map +1 -0
- package/dist/grade/reading-syllables.d.ts +62 -0
- package/dist/grade/reading-syllables.d.ts.map +1 -0
- package/dist/grade/reading-syllables.js +58 -0
- package/dist/grade/reading-syllables.js.map +1 -0
- package/dist/grade/reading-tolerance.d.ts +72 -0
- package/dist/grade/reading-tolerance.d.ts.map +1 -0
- package/dist/grade/reading-tolerance.js +107 -0
- package/dist/grade/reading-tolerance.js.map +1 -0
- package/dist/grade/typed-reading.d.ts +28 -0
- package/dist/grade/typed-reading.d.ts.map +1 -0
- package/dist/grade/typed-reading.js +36 -0
- package/dist/grade/typed-reading.js.map +1 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/numerals/numeral-parse.d.ts +32 -0
- package/dist/numerals/numeral-parse.d.ts.map +1 -0
- package/dist/numerals/numeral-parse.js +44 -0
- package/dist/numerals/numeral-parse.js.map +1 -0
- package/dist/numerals/numeral-shapes.d.ts +89 -0
- package/dist/numerals/numeral-shapes.d.ts.map +1 -0
- package/dist/numerals/numeral-shapes.js +99 -0
- package/dist/numerals/numeral-shapes.js.map +1 -0
- package/dist/numerals/numerals.d.ts.map +1 -1
- package/dist/numerals/numerals.js +2 -36
- package/dist/numerals/numerals.js.map +1 -1
- package/dist/numerals/read-numeral.d.ts +76 -0
- package/dist/numerals/read-numeral.d.ts.map +1 -0
- package/dist/numerals/read-numeral.js +88 -0
- package/dist/numerals/read-numeral.js.map +1 -0
- package/dist/numerals/text.d.ts +3 -37
- package/dist/numerals/text.d.ts.map +1 -1
- package/dist/numerals/text.js +3 -254
- package/dist/numerals/text.js.map +1 -1
- package/dist/numerals/time.d.ts +34 -0
- package/dist/numerals/time.d.ts.map +1 -0
- package/dist/numerals/time.js +93 -0
- package/dist/numerals/time.js.map +1 -0
- package/dist/orthography/address-grouping.d.ts +34 -0
- package/dist/orthography/address-grouping.d.ts.map +1 -0
- package/dist/orthography/address-grouping.js +52 -0
- package/dist/orthography/address-grouping.js.map +1 -0
- package/dist/orthography/grouping.d.ts +3 -87
- package/dist/orthography/grouping.d.ts.map +1 -1
- package/dist/orthography/grouping.js +4 -270
- package/dist/orthography/grouping.js.map +1 -1
- package/dist/orthography/place-grouping.d.ts +39 -0
- package/dist/orthography/place-grouping.d.ts.map +1 -0
- package/dist/orthography/place-grouping.js +83 -0
- package/dist/orthography/place-grouping.js.map +1 -0
- package/dist/orthography/word-grouping.d.ts +48 -0
- package/dist/orthography/word-grouping.d.ts.map +1 -0
- package/dist/orthography/word-grouping.js +147 -0
- package/dist/orthography/word-grouping.js.map +1 -0
- package/dist/script/conversion-format.d.ts +22 -0
- package/dist/script/conversion-format.d.ts.map +1 -0
- package/dist/script/conversion-format.js +22 -0
- package/dist/script/conversion-format.js.map +1 -0
- package/dist/script/conversion-read.d.ts +9 -0
- package/dist/script/conversion-read.d.ts.map +1 -0
- package/dist/script/conversion-read.js +69 -0
- package/dist/script/conversion-read.js.map +1 -0
- package/dist/script/conversion-write.d.ts +14 -0
- package/dist/script/conversion-write.d.ts.map +1 -0
- package/dist/script/conversion-write.js +34 -0
- package/dist/script/conversion-write.js.map +1 -0
- package/dist/script/conversion.d.ts +10 -16
- package/dist/script/conversion.d.ts.map +1 -1
- package/dist/script/conversion.js +2 -115
- package/dist/script/conversion.js.map +1 -1
- package/dist/search/candidate-narrowing.d.ts +56 -0
- package/dist/search/candidate-narrowing.d.ts.map +1 -0
- package/dist/search/candidate-narrowing.js +55 -0
- package/dist/search/candidate-narrowing.js.map +1 -0
- package/dist/search/candidate-query.d.ts +25 -0
- package/dist/search/candidate-query.d.ts.map +1 -0
- package/dist/search/candidate-query.js +28 -0
- package/dist/search/candidate-query.js.map +1 -0
- package/dist/search/candidate-writings.d.ts +24 -0
- package/dist/search/candidate-writings.d.ts.map +1 -0
- package/dist/search/candidate-writings.js +114 -0
- package/dist/search/candidate-writings.js.map +1 -0
- package/dist/search/candidates.d.ts +7 -41
- package/dist/search/candidates.d.ts.map +1 -1
- package/dist/search/candidates.js +10 -164
- package/dist/search/candidates.js.map +1 -1
- package/dist/search/match-chunks.d.ts +19 -0
- package/dist/search/match-chunks.d.ts.map +1 -0
- package/dist/search/match-chunks.js +30 -0
- package/dist/search/match-chunks.js.map +1 -0
- package/dist/search/match-ranking.d.ts +39 -0
- package/dist/search/match-ranking.d.ts.map +1 -0
- package/dist/search/match-ranking.js +51 -0
- package/dist/search/match-ranking.js.map +1 -0
- package/dist/search/match-readings.d.ts +43 -0
- package/dist/search/match-readings.d.ts.map +1 -0
- package/dist/search/match-readings.js +83 -0
- package/dist/search/match-readings.js.map +1 -0
- package/dist/search/match-scoring.d.ts +146 -0
- package/dist/search/match-scoring.d.ts.map +1 -0
- package/dist/search/match-scoring.js +114 -0
- package/dist/search/match-scoring.js.map +1 -0
- package/dist/search/match-search.d.ts +28 -0
- package/dist/search/match-search.d.ts.map +1 -0
- package/dist/search/match-search.js +128 -0
- package/dist/search/match-search.js.map +1 -0
- package/dist/search/match.d.ts +5 -36
- package/dist/search/match.d.ts.map +1 -1
- package/dist/search/match.js +2 -379
- package/dist/search/match.js.map +1 -1
- package/dist/search/reverse-index-build.d.ts +30 -0
- package/dist/search/reverse-index-build.d.ts.map +1 -0
- package/dist/search/reverse-index-build.js +72 -0
- package/dist/search/reverse-index-build.js.map +1 -0
- package/dist/search/reverse-index-format.d.ts +60 -0
- package/dist/search/reverse-index-format.d.ts.map +1 -0
- package/dist/search/reverse-index-format.js +54 -0
- package/dist/search/reverse-index-format.js.map +1 -0
- package/dist/search/reverse-index-groups.d.ts +37 -0
- package/dist/search/reverse-index-groups.d.ts.map +1 -0
- package/dist/search/reverse-index-groups.js +71 -0
- package/dist/search/reverse-index-groups.js.map +1 -0
- package/dist/search/reverse-index-passes.d.ts +78 -0
- package/dist/search/reverse-index-passes.d.ts.map +1 -0
- package/dist/search/reverse-index-passes.js +59 -0
- package/dist/search/reverse-index-passes.js.map +1 -0
- package/dist/search/reverse-index-state.d.ts +36 -0
- package/dist/search/reverse-index-state.d.ts.map +1 -0
- package/dist/search/reverse-index-state.js +95 -0
- package/dist/search/reverse-index-state.js.map +1 -0
- package/dist/search/reverse-index.d.ts +8 -67
- package/dist/search/reverse-index.d.ts.map +1 -1
- package/dist/search/reverse-index.js +4 -255
- package/dist/search/reverse-index.js.map +1 -1
- package/dist/sources/unihan-readings.d.ts +58 -0
- package/dist/sources/unihan-readings.d.ts.map +1 -0
- package/dist/sources/unihan-readings.js +95 -0
- package/dist/sources/unihan-readings.js.map +1 -0
- package/dist/sources/unihan.d.ts +6 -9
- package/dist/sources/unihan.d.ts.map +1 -1
- package/dist/sources/unihan.js +2 -85
- package/dist/sources/unihan.js.map +1 -1
- package/dist/syllable/final-tables.d.ts +23 -0
- package/dist/syllable/final-tables.d.ts.map +1 -0
- package/dist/syllable/final-tables.js +50 -0
- package/dist/syllable/final-tables.js.map +1 -0
- package/dist/syllable/inventory.d.ts +8 -42
- package/dist/syllable/inventory.d.ts.map +1 -1
- package/dist/syllable/inventory.js +9 -918
- package/dist/syllable/inventory.js.map +1 -1
- package/dist/syllable/spellings.d.ts +40 -0
- package/dist/syllable/spellings.d.ts.map +1 -0
- package/dist/syllable/spellings.js +469 -0
- package/dist/syllable/spellings.js.map +1 -0
- package/dist/syllable/syllable-parts.d.ts +31 -0
- package/dist/syllable/syllable-parts.d.ts.map +1 -0
- package/dist/syllable/syllable-parts.js +105 -0
- package/dist/syllable/syllable-parts.js.map +1 -0
- package/dist/syllable/syllable.d.ts +1 -14
- package/dist/syllable/syllable.d.ts.map +1 -1
- package/dist/syllable/syllable.js +3 -144
- package/dist/syllable/syllable.js.map +1 -1
- package/dist/syllable/written-tones.d.ts +6 -0
- package/dist/syllable/written-tones.d.ts.map +1 -0
- package/dist/syllable/written-tones.js +453 -0
- package/dist/syllable/written-tones.js.map +1 -0
- package/dist/transcription/bopomofo-parse.d.ts +42 -0
- package/dist/transcription/bopomofo-parse.d.ts.map +1 -0
- package/dist/transcription/bopomofo-parse.js +92 -0
- package/dist/transcription/bopomofo-parse.js.map +1 -0
- package/dist/transcription/bopomofo-reverse.d.ts +31 -0
- package/dist/transcription/bopomofo-reverse.d.ts.map +1 -0
- package/dist/transcription/bopomofo-reverse.js +48 -0
- package/dist/transcription/bopomofo-reverse.js.map +1 -0
- package/dist/transcription/bopomofo-symbols.d.ts +36 -0
- package/dist/transcription/bopomofo-symbols.d.ts.map +1 -0
- package/dist/transcription/bopomofo-symbols.js +41 -0
- package/dist/transcription/bopomofo-symbols.js.map +1 -0
- package/dist/transcription/bopomofo-tables.d.ts +87 -0
- package/dist/transcription/bopomofo-tables.d.ts.map +1 -0
- package/dist/transcription/bopomofo-tables.js +180 -0
- package/dist/transcription/bopomofo-tables.js.map +1 -0
- package/dist/transcription/bopomofo.d.ts +14 -32
- package/dist/transcription/bopomofo.d.ts.map +1 -1
- package/dist/transcription/bopomofo.js +5 -343
- package/dist/transcription/bopomofo.js.map +1 -1
- package/dist/transcription/gwoyeu-first-second.d.ts +36 -0
- package/dist/transcription/gwoyeu-first-second.d.ts.map +1 -0
- package/dist/transcription/gwoyeu-first-second.js +75 -0
- package/dist/transcription/gwoyeu-first-second.js.map +1 -0
- package/dist/transcription/gwoyeu-spelling.d.ts +38 -0
- package/dist/transcription/gwoyeu-spelling.d.ts.map +1 -0
- package/dist/transcription/gwoyeu-spelling.js +124 -0
- package/dist/transcription/gwoyeu-spelling.js.map +1 -0
- package/dist/transcription/gwoyeu-tables.d.ts +93 -0
- package/dist/transcription/gwoyeu-tables.d.ts.map +1 -0
- package/dist/transcription/gwoyeu-tables.js +205 -0
- package/dist/transcription/gwoyeu-tables.js.map +1 -0
- package/dist/transcription/gwoyeu-tonal-forms.d.ts +49 -0
- package/dist/transcription/gwoyeu-tonal-forms.d.ts.map +1 -0
- package/dist/transcription/gwoyeu-tonal-forms.js +89 -0
- package/dist/transcription/gwoyeu-tonal-forms.js.map +1 -0
- package/dist/transcription/gwoyeu-vowels.d.ts +51 -0
- package/dist/transcription/gwoyeu-vowels.d.ts.map +1 -0
- package/dist/transcription/gwoyeu-vowels.js +58 -0
- package/dist/transcription/gwoyeu-vowels.js.map +1 -0
- package/dist/transcription/gwoyeu.d.ts +1 -26
- package/dist/transcription/gwoyeu.d.ts.map +1 -1
- package/dist/transcription/gwoyeu.js +2 -540
- package/dist/transcription/gwoyeu.js.map +1 -1
- package/dist/transcription/ipa-symbols.d.ts +67 -0
- package/dist/transcription/ipa-symbols.d.ts.map +1 -0
- package/dist/transcription/ipa-symbols.js +135 -0
- package/dist/transcription/ipa-symbols.js.map +1 -0
- package/dist/transcription/ipa.d.ts +2 -10
- package/dist/transcription/ipa.d.ts.map +1 -1
- package/dist/transcription/ipa.js +2 -134
- package/dist/transcription/ipa.js.map +1 -1
- package/dist/transcription/wade-giles-index.d.ts +35 -0
- package/dist/transcription/wade-giles-index.d.ts.map +1 -0
- package/dist/transcription/wade-giles-index.js +110 -0
- package/dist/transcription/wade-giles-index.js.map +1 -0
- package/dist/transcription/wade-giles-parse.d.ts +36 -0
- package/dist/transcription/wade-giles-parse.d.ts.map +1 -0
- package/dist/transcription/wade-giles-parse.js +84 -0
- package/dist/transcription/wade-giles-parse.js.map +1 -0
- package/dist/transcription/wade-giles-spelling.d.ts +61 -0
- package/dist/transcription/wade-giles-spelling.d.ts.map +1 -0
- package/dist/transcription/wade-giles-spelling.js +107 -0
- package/dist/transcription/wade-giles-spelling.js.map +1 -0
- package/dist/transcription/wade-giles-syllable.d.ts +29 -0
- package/dist/transcription/wade-giles-syllable.d.ts.map +1 -0
- package/dist/transcription/wade-giles-syllable.js +90 -0
- package/dist/transcription/wade-giles-syllable.js.map +1 -0
- package/dist/transcription/wade-giles-tables.d.ts +80 -0
- package/dist/transcription/wade-giles-tables.d.ts.map +1 -0
- package/dist/transcription/wade-giles-tables.js +178 -0
- package/dist/transcription/wade-giles-tables.js.map +1 -0
- package/dist/transcription/wade-giles.d.ts +9 -60
- package/dist/transcription/wade-giles.d.ts.map +1 -1
- package/dist/transcription/wade-giles.js +6 -543
- package/dist/transcription/wade-giles.js.map +1 -1
- package/dist/transcription/yale-tables.d.ts +54 -0
- package/dist/transcription/yale-tables.d.ts.map +1 -0
- package/dist/transcription/yale-tables.js +125 -0
- package/dist/transcription/yale-tables.js.map +1 -0
- package/dist/transcription/yale.d.ts.map +1 -1
- package/dist/transcription/yale.js +1 -124
- package/dist/transcription/yale.js.map +1 -1
- package/package.json +2 -2
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Folding a word's 儿 into the syllable before it.
|
|
3
|
+
*
|
|
4
|
+
* Two different repairs, because the sources mark 儿化 in two different
|
|
5
|
+
* places. A trailing 儿 is settled from the exception list and CC-CEDICT's
|
|
6
|
+
* `r5` token; one in the *middle* of a word can only come from CC-CEDICT,
|
|
7
|
+
* since the phrase corpus writes a syllable per character and has no way to
|
|
8
|
+
* say that two characters are read as one.
|
|
9
|
+
*/
|
|
10
|
+
import type { CedictEntry } from "../sources/cedict.js";
|
|
11
|
+
import type { Syllable } from "../syllable/syllable.js";
|
|
12
|
+
import { type ReadCharacters } from "./reading.js";
|
|
13
|
+
/**
|
|
14
|
+
* A reading and its alignment, after any repair.
|
|
15
|
+
*/
|
|
16
|
+
export interface ErhuaRepair {
|
|
17
|
+
readonly reading: readonly Syllable[];
|
|
18
|
+
readonly aligned: readonly ReadCharacters[] | undefined;
|
|
19
|
+
/** Whether anything was folded. */
|
|
20
|
+
readonly isRepaired: boolean;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Repair one word's reading, or hand back what it was given.
|
|
24
|
+
*/
|
|
25
|
+
export declare function repairErhua(word: string, reading: readonly Syllable[], aligned: readonly ReadCharacters[] | undefined, cedictEntries: readonly CedictEntry[], cedictReadings: readonly (readonly Syllable[])[]): ErhuaRepair;
|
|
26
|
+
//# sourceMappingURL=erhua-repair.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"erhua-repair.d.ts","sourceRoot":"","sources":["../../src/dictionary/erhua-repair.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAGxD,OAAO,EAGL,KAAK,cAAc,EACpB,MAAM,cAAc,CAAC;AAEtB;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,OAAO,EAAE,SAAS,QAAQ,EAAE,CAAC;IACtC,QAAQ,CAAC,OAAO,EAAE,SAAS,cAAc,EAAE,GAAG,SAAS,CAAC;IACxD,mCAAmC;IACnC,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;CAC9B;AAED;;GAEG;AACH,wBAAgB,WAAW,CACzB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,SAAS,QAAQ,EAAE,EAC5B,OAAO,EAAE,SAAS,cAAc,EAAE,GAAG,SAAS,EAC9C,aAAa,EAAE,SAAS,WAAW,EAAE,EACrC,cAAc,EAAE,SAAS,CAAC,SAAS,QAAQ,EAAE,CAAC,EAAE,GAC/C,WAAW,CA6Cb"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { attachErhua } from "./erhua.js";
|
|
2
|
+
import { isErhua } from "./reading-agreement.js";
|
|
3
|
+
import { ERHUA_TOKEN, readAlignedReading, } from "./reading.js";
|
|
4
|
+
/**
|
|
5
|
+
* Repair one word's reading, or hand back what it was given.
|
|
6
|
+
*/
|
|
7
|
+
export function repairErhua(word, reading, aligned, cedictEntries, cedictReadings) {
|
|
8
|
+
if (isErhua(word, cedictReadings)) {
|
|
9
|
+
const attached = attachErhua(reading);
|
|
10
|
+
if (attached !== reading) {
|
|
11
|
+
// Fold the alignment the same way, so the 繁體 derivation still knows
|
|
12
|
+
// which character each syllable reads.
|
|
13
|
+
const last = aligned?.at(-1);
|
|
14
|
+
const previous = aligned?.at(-2);
|
|
15
|
+
const folded = aligned !== undefined && last !== undefined && previous !== undefined
|
|
16
|
+
? [
|
|
17
|
+
...aligned.slice(0, -2),
|
|
18
|
+
{
|
|
19
|
+
characters: previous.characters + last.characters,
|
|
20
|
+
syllable: attached.at(-1),
|
|
21
|
+
},
|
|
22
|
+
]
|
|
23
|
+
: aligned;
|
|
24
|
+
return { reading: attached, aligned: folded, isRepaired: true };
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
else if (reading.every((syllable) => syllable.erhua !== true)) {
|
|
28
|
+
// 儿化 in the middle of a word, which the trailing repair above cannot
|
|
29
|
+
// reach: 一点儿事 is `yìdiǎnr shì`, three syllables over four characters,
|
|
30
|
+
// and the phrase corpus writes four. Only CC-CEDICT's `r5` marks it, and
|
|
31
|
+
// only it knows where, so where it does the whole reading is taken from
|
|
32
|
+
// it — 53 of its 683 `r5` entries carry the marker mid-word.
|
|
33
|
+
const marked = cedictEntries.find((entry) => entry.readings.includes(ERHUA_TOKEN));
|
|
34
|
+
const markedAligned = marked === undefined
|
|
35
|
+
? undefined
|
|
36
|
+
: readAlignedReading(word, marked.readings);
|
|
37
|
+
if (markedAligned !== undefined) {
|
|
38
|
+
return {
|
|
39
|
+
reading: markedAligned
|
|
40
|
+
.map((read) => read.syllable)
|
|
41
|
+
.filter((syllable) => syllable !== undefined),
|
|
42
|
+
aligned: markedAligned,
|
|
43
|
+
isRepaired: true,
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
return { reading, aligned, isRepaired: false };
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=erhua-repair.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"erhua-repair.js","sourceRoot":"","sources":["../../src/dictionary/erhua-repair.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EACL,WAAW,EACX,kBAAkB,GAEnB,MAAM,cAAc,CAAC;AAYtB;;GAEG;AACH,MAAM,UAAU,WAAW,CACzB,IAAY,EACZ,OAA4B,EAC5B,OAA8C,EAC9C,aAAqC,EACrC,cAAgD;IAEhD,IAAI,OAAO,CAAC,IAAI,EAAE,cAAc,CAAC,EAAE,CAAC;QAClC,MAAM,QAAQ,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;QACtC,IAAI,QAAQ,KAAK,OAAO,EAAE,CAAC;YACzB,oEAAoE;YACpE,uCAAuC;YACvC,MAAM,IAAI,GAAG,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YAC7B,MAAM,QAAQ,GAAG,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YACjC,MAAM,MAAM,GACV,OAAO,KAAK,SAAS,IAAI,IAAI,KAAK,SAAS,IAAI,QAAQ,KAAK,SAAS;gBACnE,CAAC,CAAC;oBACE,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;oBACvB;wBACE,UAAU,EAAE,QAAQ,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU;wBACjD,QAAQ,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;qBAC1B;iBACF;gBACH,CAAC,CAAC,OAAO,CAAC;YACd,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;QAClE,CAAC;IACH,CAAC;SAAM,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC;QAChE,qEAAqE;QACrE,sEAAsE;QACtE,yEAAyE;QACzE,wEAAwE;QACxE,6DAA6D;QAC7D,MAAM,MAAM,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAC1C,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,CACrC,CAAC;QACF,MAAM,aAAa,GACjB,MAAM,KAAK,SAAS;YAClB,CAAC,CAAC,SAAS;YACX,CAAC,CAAC,kBAAkB,CAAC,IAAI,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;QAChD,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;YAChC,OAAO;gBACL,OAAO,EAAE,aAAa;qBACnB,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC;qBAC5B,MAAM,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,KAAK,SAAS,CAAC;gBAC/C,OAAO,EAAE,aAAa;gBACtB,UAAU,EAAE,IAAI;aACjB,CAAC;QACJ,CAAC;IACH,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC;AACjD,CAAC"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Repairing the tones Unihan's `kHanyuPinlu` frequency field misreports.
|
|
3
|
+
*
|
|
4
|
+
* The field counts occurrences in running text, and that gives it two blind
|
|
5
|
+
* spots about the neutral tone: it drops tone marks it should carry, and it
|
|
6
|
+
* counts a syllable reduced inside a word as though the bare character read
|
|
7
|
+
* that way. Both are corrected here, before a character's default is settled.
|
|
8
|
+
*/
|
|
9
|
+
import type { CedictEntry } from "../sources/cedict.js";
|
|
10
|
+
import { type UnihanReadings } from "../sources/unihan.js";
|
|
11
|
+
/**
|
|
12
|
+
* Put back a tone that `kHanyuPinlu` left off.
|
|
13
|
+
*
|
|
14
|
+
* The frequency field writes some readings without their tone mark: 李 is
|
|
15
|
+
* `li(36)` there where every dictionary field writes `lǐ`. Read as 轻声 — which
|
|
16
|
+
* is what an unmarked reading means in source data — that makes 李华 come out
|
|
17
|
+
* `Li Huá`, and it is the only Unihan field this happens in.
|
|
18
|
+
*
|
|
19
|
+
* The other fields settle which it is. If they also write the spelling bare,
|
|
20
|
+
* the neutral tone is real and 么, 们, 吧, 裳 keep it. If every one of them
|
|
21
|
+
* writes it with a tone, the frequency field simply omitted the mark, and the
|
|
22
|
+
* tone is taken back. Measured over the real file, 3,799 characters have a
|
|
23
|
+
* `kHanyuPinlu` entry, 60 of those have only unmarked readings, and the split
|
|
24
|
+
* is 45 that should carry a tone against 15 genuine 轻声.
|
|
25
|
+
*/
|
|
26
|
+
export declare function resolveFrequencyTones(unihan: UnihanReadings): readonly string[];
|
|
27
|
+
/**
|
|
28
|
+
* Whether CC-CEDICT reads the bare character 轻声 in its own right.
|
|
29
|
+
*
|
|
30
|
+
* The exception to {@link demoteReducedNeutrals}, and the thing that separates
|
|
31
|
+
* a 语气词 from a syllable that is only ever unstressed inside a word. A
|
|
32
|
+
* single-character CC-CEDICT headword with a neutral reading is a claim about
|
|
33
|
+
* the character standing alone, which is exactly what the frequency field's
|
|
34
|
+
* counting cannot distinguish: 吗 is `(question particle for "yes-no"
|
|
35
|
+
* questions)`, 啊 is `modal particle ending sentence`, 得 is `structural
|
|
36
|
+
* particle: used after a verb`. Nine characters carry one — 得, 啊, 吗, 呀, 啦,
|
|
37
|
+
* 哇, 嘛, 罢 and 子 — and their 繁體 spellings with them.
|
|
38
|
+
*
|
|
39
|
+
* **A suffix sense is not such a claim.** 子's neutral headword is `noun
|
|
40
|
+
* suffix, as in 椅子`, which says the character is unstressed *in words*, and
|
|
41
|
+
* words are what the corpus can already see. 子 is `zǐ` on its own — 子曰, 母子
|
|
42
|
+
* — and CPP's human labelling has it `zi3` in 30 of its 38 cases.
|
|
43
|
+
*
|
|
44
|
+
* 罢 is the known loss. CC-CEDICT calls its `ba5` a final particle, so it is
|
|
45
|
+
* held here, and CPP labels the character `ba4` in all 40 of its cases: the
|
|
46
|
+
* particle is the literary 也罢 and 罢了, while a modern bare 罢 is 罢工. Left
|
|
47
|
+
* protected because the rule is about what a source claims of the character,
|
|
48
|
+
* and singling one out because a dataset disagrees is fitting to the dataset.
|
|
49
|
+
*/
|
|
50
|
+
export declare function isNeutralAlone(character: string, entries: readonly CedictEntry[]): boolean;
|
|
51
|
+
/**
|
|
52
|
+
* Demote a 轻声 the frequency field counted only inside words.
|
|
53
|
+
*
|
|
54
|
+
* `kHanyuPinlu` counts occurrences in running text, and a character's neutral
|
|
55
|
+
* count there mixes two unrelated things: a character that stands alone
|
|
56
|
+
* unstressed, and one reduced *inside a word*. Where the field writes the same
|
|
57
|
+
* spelling both bare and toned it is reporting that split with no way to say
|
|
58
|
+
* which is which — 西 is `xi(902) xī(738)`, and the 902 are 东西 — and since the
|
|
59
|
+
* field leads {@link import("../sources/unihan.js").READING_FIELDS}, the
|
|
60
|
+
* reduction became the character's reading. 西 read `xi`, so 往西 was `wǎng xi`;
|
|
61
|
+
* 夫 read `fu`, 识 `shi`, 拾 `shi`, 候 `hou`, 姐 `jie`, 友 `you`.
|
|
62
|
+
*
|
|
63
|
+
* So a bare spelling the field also writes with a tone ranks below that twin —
|
|
64
|
+
* demoted rather than dropped, keeping it as a candidate without letting it set
|
|
65
|
+
* the default, exactly as a lone `kHanyuPinlu` reading is. It reaches 50
|
|
66
|
+
* characters, and {@link isNeutralAlone} holds back the ones a source says are
|
|
67
|
+
* neutral on their own.
|
|
68
|
+
*
|
|
69
|
+
* The other half of the same blind spot is already handled: where the field
|
|
70
|
+
* marks *no* tone at all it omitted the mark rather than meaning 轻声, which is
|
|
71
|
+
* {@link resolveFrequencyTones}.
|
|
72
|
+
*/
|
|
73
|
+
export declare function demoteReducedNeutrals(unihan: UnihanReadings, readings: readonly string[]): readonly string[];
|
|
74
|
+
//# sourceMappingURL=frequency-tones.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"frequency-tones.d.ts","sourceRoot":"","sources":["../../src/dictionary/frequency-tones.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAmB,KAAK,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAqB5E;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,cAAc,GACrB,SAAS,MAAM,EAAE,CA2BnB;AAUD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,cAAc,CAC5B,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,SAAS,WAAW,EAAE,GAC9B,OAAO,CAST;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,cAAc,EACtB,QAAQ,EAAE,SAAS,MAAM,EAAE,GAC1B,SAAS,MAAM,EAAE,CAkBnB"}
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
import { FREQUENCY_FIELD } from "../sources/unihan.js";
|
|
2
|
+
import { NEUTRAL_TONE } from "../tone/tone.js";
|
|
3
|
+
import { readDictionaryReading } from "./reading.js";
|
|
4
|
+
/**
|
|
5
|
+
* Strip the tone marks from a reading, for comparing two spellings.
|
|
6
|
+
*/
|
|
7
|
+
function tonelessReading(reading) {
|
|
8
|
+
return reading
|
|
9
|
+
.normalize("NFD")
|
|
10
|
+
.replaceAll(/[̀́̄̌]/gu, "")
|
|
11
|
+
.normalize("NFC");
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Whether a reading carries a tone mark.
|
|
15
|
+
*/
|
|
16
|
+
function isToneMarked(reading) {
|
|
17
|
+
return tonelessReading(reading) !== reading;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Put back a tone that `kHanyuPinlu` left off.
|
|
21
|
+
*
|
|
22
|
+
* The frequency field writes some readings without their tone mark: 李 is
|
|
23
|
+
* `li(36)` there where every dictionary field writes `lǐ`. Read as 轻声 — which
|
|
24
|
+
* is what an unmarked reading means in source data — that makes 李华 come out
|
|
25
|
+
* `Li Huá`, and it is the only Unihan field this happens in.
|
|
26
|
+
*
|
|
27
|
+
* The other fields settle which it is. If they also write the spelling bare,
|
|
28
|
+
* the neutral tone is real and 么, 们, 吧, 裳 keep it. If every one of them
|
|
29
|
+
* writes it with a tone, the frequency field simply omitted the mark, and the
|
|
30
|
+
* tone is taken back. Measured over the real file, 3,799 characters have a
|
|
31
|
+
* `kHanyuPinlu` entry, 60 of those have only unmarked readings, and the split
|
|
32
|
+
* is 45 that should carry a tone against 15 genuine 轻声.
|
|
33
|
+
*/
|
|
34
|
+
export function resolveFrequencyTones(unihan) {
|
|
35
|
+
const frequencyReadings = unihan.fields.get(FREQUENCY_FIELD) ?? [];
|
|
36
|
+
// A character whose frequency field marks any tone is already trustworthy:
|
|
37
|
+
// there the unmarked readings sit alongside marked ones and mean 轻声.
|
|
38
|
+
if (frequencyReadings.length === 0 ||
|
|
39
|
+
frequencyReadings.some((reading) => isToneMarked(reading))) {
|
|
40
|
+
return unihan.readings;
|
|
41
|
+
}
|
|
42
|
+
const elsewhere = [...unihan.fields]
|
|
43
|
+
.filter(([field]) => field !== FREQUENCY_FIELD)
|
|
44
|
+
.flatMap(([, readings]) => readings);
|
|
45
|
+
return unihan.readings.map((reading) => {
|
|
46
|
+
if (isToneMarked(reading)) {
|
|
47
|
+
return reading;
|
|
48
|
+
}
|
|
49
|
+
const sameSpelling = elsewhere.filter((other) => tonelessReading(other) === reading);
|
|
50
|
+
if (sameSpelling.length === 0 || sameSpelling.includes(reading)) {
|
|
51
|
+
return reading;
|
|
52
|
+
}
|
|
53
|
+
return sameSpelling.find((other) => isToneMarked(other)) ?? reading;
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* A CC-CEDICT sense that describes a suffix rather than a word.
|
|
58
|
+
*
|
|
59
|
+
* Matches its own wording: 子 is `/noun suffix, as in 椅子[yi3 zi5] "chair"/`,
|
|
60
|
+
* and the other suffix senses are written the same way.
|
|
61
|
+
*/
|
|
62
|
+
const SUFFIX_SENSE = /\bsuffix\b/iu;
|
|
63
|
+
/**
|
|
64
|
+
* Whether CC-CEDICT reads the bare character 轻声 in its own right.
|
|
65
|
+
*
|
|
66
|
+
* The exception to {@link demoteReducedNeutrals}, and the thing that separates
|
|
67
|
+
* a 语气词 from a syllable that is only ever unstressed inside a word. A
|
|
68
|
+
* single-character CC-CEDICT headword with a neutral reading is a claim about
|
|
69
|
+
* the character standing alone, which is exactly what the frequency field's
|
|
70
|
+
* counting cannot distinguish: 吗 is `(question particle for "yes-no"
|
|
71
|
+
* questions)`, 啊 is `modal particle ending sentence`, 得 is `structural
|
|
72
|
+
* particle: used after a verb`. Nine characters carry one — 得, 啊, 吗, 呀, 啦,
|
|
73
|
+
* 哇, 嘛, 罢 and 子 — and their 繁體 spellings with them.
|
|
74
|
+
*
|
|
75
|
+
* **A suffix sense is not such a claim.** 子's neutral headword is `noun
|
|
76
|
+
* suffix, as in 椅子`, which says the character is unstressed *in words*, and
|
|
77
|
+
* words are what the corpus can already see. 子 is `zǐ` on its own — 子曰, 母子
|
|
78
|
+
* — and CPP's human labelling has it `zi3` in 30 of its 38 cases.
|
|
79
|
+
*
|
|
80
|
+
* 罢 is the known loss. CC-CEDICT calls its `ba5` a final particle, so it is
|
|
81
|
+
* held here, and CPP labels the character `ba4` in all 40 of its cases: the
|
|
82
|
+
* particle is the literary 也罢 and 罢了, while a modern bare 罢 is 罢工. Left
|
|
83
|
+
* protected because the rule is about what a source claims of the character,
|
|
84
|
+
* and singling one out because a dataset disagrees is fitting to the dataset.
|
|
85
|
+
*/
|
|
86
|
+
export function isNeutralAlone(character, entries) {
|
|
87
|
+
return entries.some((entry) => {
|
|
88
|
+
const reading = readDictionaryReading(character, entry.readings);
|
|
89
|
+
return (reading?.length === 1 &&
|
|
90
|
+
reading[0]?.tone === NEUTRAL_TONE &&
|
|
91
|
+
!entry.definitions.some((definition) => SUFFIX_SENSE.test(definition)));
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Demote a 轻声 the frequency field counted only inside words.
|
|
96
|
+
*
|
|
97
|
+
* `kHanyuPinlu` counts occurrences in running text, and a character's neutral
|
|
98
|
+
* count there mixes two unrelated things: a character that stands alone
|
|
99
|
+
* unstressed, and one reduced *inside a word*. Where the field writes the same
|
|
100
|
+
* spelling both bare and toned it is reporting that split with no way to say
|
|
101
|
+
* which is which — 西 is `xi(902) xī(738)`, and the 902 are 东西 — and since the
|
|
102
|
+
* field leads {@link import("../sources/unihan.js").READING_FIELDS}, the
|
|
103
|
+
* reduction became the character's reading. 西 read `xi`, so 往西 was `wǎng xi`;
|
|
104
|
+
* 夫 read `fu`, 识 `shi`, 拾 `shi`, 候 `hou`, 姐 `jie`, 友 `you`.
|
|
105
|
+
*
|
|
106
|
+
* So a bare spelling the field also writes with a tone ranks below that twin —
|
|
107
|
+
* demoted rather than dropped, keeping it as a candidate without letting it set
|
|
108
|
+
* the default, exactly as a lone `kHanyuPinlu` reading is. It reaches 50
|
|
109
|
+
* characters, and {@link isNeutralAlone} holds back the ones a source says are
|
|
110
|
+
* neutral on their own.
|
|
111
|
+
*
|
|
112
|
+
* The other half of the same blind spot is already handled: where the field
|
|
113
|
+
* marks *no* tone at all it omitted the mark rather than meaning 轻声, which is
|
|
114
|
+
* {@link resolveFrequencyTones}.
|
|
115
|
+
*/
|
|
116
|
+
export function demoteReducedNeutrals(unihan, readings) {
|
|
117
|
+
const frequency = unihan.fields.get(FREQUENCY_FIELD) ?? [];
|
|
118
|
+
const reduced = new Set(frequency.filter((reading) => !isToneMarked(reading) &&
|
|
119
|
+
frequency.some((other) => isToneMarked(other) && tonelessReading(other) === reading)));
|
|
120
|
+
if (reduced.size === 0) {
|
|
121
|
+
return readings;
|
|
122
|
+
}
|
|
123
|
+
return [
|
|
124
|
+
...readings.filter((reading) => !reduced.has(reading)),
|
|
125
|
+
...readings.filter((reading) => reduced.has(reading)),
|
|
126
|
+
];
|
|
127
|
+
}
|
|
128
|
+
//# sourceMappingURL=frequency-tones.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"frequency-tones.js","sourceRoot":"","sources":["../../src/dictionary/frequency-tones.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,eAAe,EAAuB,MAAM,sBAAsB,CAAC;AAC5E,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAErD;;GAEG;AACH,SAAS,eAAe,CAAC,OAAe;IACtC,OAAO,OAAO;SACX,SAAS,CAAC,KAAK,CAAC;SAChB,UAAU,CAAC,UAAU,EAAE,EAAE,CAAC;SAC1B,SAAS,CAAC,KAAK,CAAC,CAAC;AACtB,CAAC;AAED;;GAEG;AACH,SAAS,YAAY,CAAC,OAAe;IACnC,OAAO,eAAe,CAAC,OAAO,CAAC,KAAK,OAAO,CAAC;AAC9C,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,qBAAqB,CACnC,MAAsB;IAEtB,MAAM,iBAAiB,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC;IACnE,2EAA2E;IAC3E,qEAAqE;IACrE,IACE,iBAAiB,CAAC,MAAM,KAAK,CAAC;QAC9B,iBAAiB,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,EAC1D,CAAC;QACD,OAAO,MAAM,CAAC,QAAQ,CAAC;IACzB,CAAC;IAED,MAAM,SAAS,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC;SACjC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,KAAK,KAAK,eAAe,CAAC;SAC9C,OAAO,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC;IAEvC,OAAO,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE;QACrC,IAAI,YAAY,CAAC,OAAO,CAAC,EAAE,CAAC;YAC1B,OAAO,OAAO,CAAC;QACjB,CAAC;QACD,MAAM,YAAY,GAAG,SAAS,CAAC,MAAM,CACnC,CAAC,KAAK,EAAE,EAAE,CAAC,eAAe,CAAC,KAAK,CAAC,KAAK,OAAO,CAC9C,CAAC;QACF,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,IAAI,YAAY,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;YAChE,OAAO,OAAO,CAAC;QACjB,CAAC;QACD,OAAO,YAAY,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,IAAI,OAAO,CAAC;IACtE,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;;GAKG;AACH,MAAM,YAAY,GAAG,cAAc,CAAC;AAEpC;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,UAAU,cAAc,CAC5B,SAAiB,EACjB,OAA+B;IAE/B,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE;QAC5B,MAAM,OAAO,GAAG,qBAAqB,CAAC,SAAS,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;QACjE,OAAO,CACL,OAAO,EAAE,MAAM,KAAK,CAAC;YACrB,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,YAAY;YACjC,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CACvE,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,UAAU,qBAAqB,CACnC,MAAsB,EACtB,QAA2B;IAE3B,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC;IAC3D,MAAM,OAAO,GAAG,IAAI,GAAG,CACrB,SAAS,CAAC,MAAM,CACd,CAAC,OAAO,EAAE,EAAE,CACV,CAAC,YAAY,CAAC,OAAO,CAAC;QACtB,SAAS,CAAC,IAAI,CACZ,CAAC,KAAK,EAAE,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,eAAe,CAAC,KAAK,CAAC,KAAK,OAAO,CACrE,CACJ,CACF,CAAC;IACF,IAAI,OAAO,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO,QAAQ,CAAC;IAClB,CAAC;IACD,OAAO;QACL,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACtD,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;KACtD,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inventory-invariants.d.ts","sourceRoot":"","sources":["../../src/dictionary/inventory-invariants.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,cAAc,EAAmB,MAAM,uBAAuB,CAAC;AAE7E,eAAO,MAAM,oBAAoB,EAAE,SAAS,cAAc,EAgDzD,CAAC"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* What must hold of every reading at once.
|
|
3
|
+
*
|
|
4
|
+
* Three sweeps: every syllable used is one the inventory knows, in a tone the
|
|
5
|
+
* inventory knows, and a reading is as long as the characters it reads.
|
|
6
|
+
*/
|
|
7
|
+
import { characterCount } from "../script/characters.js";
|
|
8
|
+
import { DICTIONARY_SYLLABLES } from "../syllable/inventory.js";
|
|
9
|
+
export const INVENTORY_INVARIANTS = [
|
|
10
|
+
{
|
|
11
|
+
// Membership rather than a count. MERGE.md asked for "exactly 408 after the
|
|
12
|
+
// merge", which is the phrase corpus's own inventory — but the merged
|
|
13
|
+
// dictionary also carries Unihan's and CC-CEDICT's rare characters, whose
|
|
14
|
+
// readings are legitimately outside it (鞥 ēng, 覅 fiào, 挼 ruá). Fixing the
|
|
15
|
+
// count would either exclude those or bless whatever a refresh adds; naming
|
|
16
|
+
// the permitted set does neither.
|
|
17
|
+
description: "every syllable used is one the inventory knows",
|
|
18
|
+
check: (dictionary) => {
|
|
19
|
+
const unknown = [...dictionary.syllableInventory()].filter((syllable) => !DICTIONARY_SYLLABLES.has(syllable));
|
|
20
|
+
return unknown.length === 0
|
|
21
|
+
? undefined
|
|
22
|
+
: `readings use ${String(unknown.length)} syllable(s) outside the inventory: ${unknown.join(", ")}`;
|
|
23
|
+
},
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
// The romanisation readers narrow an ambiguous spelling on the tone that
|
|
27
|
+
// was written — `lo²` is 羅 luó and not a 咯 that is only ever neutral —
|
|
28
|
+
// so a tone the table has never heard of is a syllable those readers will
|
|
29
|
+
// refuse to hand back. Regenerate `SYLLABLE_TONES` when this fails.
|
|
30
|
+
description: "every syllable is used in a tone the inventory knows",
|
|
31
|
+
check: (dictionary) => {
|
|
32
|
+
const unattested = [...dictionary.unattestedTones()];
|
|
33
|
+
return unattested.length === 0
|
|
34
|
+
? undefined
|
|
35
|
+
: `readings use ${String(unattested.length)} syllable(s) in a tone the inventory does not list: ${unattested.join(", ")}`;
|
|
36
|
+
},
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
description: "every entry's syllable count matches its character count",
|
|
40
|
+
check: (dictionary) => {
|
|
41
|
+
for (const entry of dictionary.entries) {
|
|
42
|
+
const characters = characterCount(entry.hans);
|
|
43
|
+
const erhua = entry.readings.cn.filter((syllable) => syllable.erhua === true).length;
|
|
44
|
+
// Punctuation is written but unread, so it is allowed to have no
|
|
45
|
+
// syllable; a reading may therefore be shorter but never longer.
|
|
46
|
+
if (entry.readings.cn.length + erhua > characters) {
|
|
47
|
+
return `${entry.hans} has ${String(entry.readings.cn.length)} syllables for ${String(characters)} characters`;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
return;
|
|
51
|
+
},
|
|
52
|
+
},
|
|
53
|
+
];
|
|
54
|
+
//# sourceMappingURL=inventory-invariants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inventory-invariants.js","sourceRoot":"","sources":["../../src/dictionary/inventory-invariants.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAGhE,MAAM,CAAC,MAAM,oBAAoB,GAA8B;IAC7D;QACE,4EAA4E;QAC5E,sEAAsE;QACtE,0EAA0E;QAC1E,0EAA0E;QAC1E,4EAA4E;QAC5E,kCAAkC;QAClC,WAAW,EAAE,gDAAgD;QAC7D,KAAK,EAAE,CAAC,UAA2B,EAAsB,EAAE;YACzD,MAAM,OAAO,GAAG,CAAC,GAAG,UAAU,CAAC,iBAAiB,EAAE,CAAC,CAAC,MAAM,CACxD,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,oBAAoB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAClD,CAAC;YACF,OAAO,OAAO,CAAC,MAAM,KAAK,CAAC;gBACzB,CAAC,CAAC,SAAS;gBACX,CAAC,CAAC,gBAAgB,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,uCAAuC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACxG,CAAC;KACF;IACD;QACE,yEAAyE;QACzE,uEAAuE;QACvE,0EAA0E;QAC1E,oEAAoE;QACpE,WAAW,EAAE,sDAAsD;QACnE,KAAK,EAAE,CAAC,UAA2B,EAAsB,EAAE;YACzD,MAAM,UAAU,GAAG,CAAC,GAAG,UAAU,CAAC,eAAe,EAAE,CAAC,CAAC;YACrD,OAAO,UAAU,CAAC,MAAM,KAAK,CAAC;gBAC5B,CAAC,CAAC,SAAS;gBACX,CAAC,CAAC,gBAAgB,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,uDAAuD,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAC9H,CAAC;KACF;IACD;QACE,WAAW,EAAE,0DAA0D;QACvE,KAAK,EAAE,CAAC,UAA2B,EAAsB,EAAE;YACzD,KAAK,MAAM,KAAK,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC;gBACvC,MAAM,UAAU,GAAG,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBAC9C,MAAM,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,MAAM,CACpC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,KAAK,IAAI,CACtC,CAAC,MAAM,CAAC;gBACT,iEAAiE;gBACjE,iEAAiE;gBACjE,IAAI,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,MAAM,GAAG,KAAK,GAAG,UAAU,EAAE,CAAC;oBAClD,OAAO,GAAG,KAAK,CAAC,IAAI,QAAQ,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,MAAM,CAAC,kBAAkB,MAAM,CAAC,UAAU,CAAC,aAAa,CAAC;gBAChH,CAAC;YACH,CAAC;YACD,OAAO;QACT,CAAC;KACF;CACF,CAAC"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import type { DictionaryEntry } from "./entry.js";
|
|
2
|
+
/**
|
|
3
|
+
* Compounds whose constituent's 國語 reading must not be carried over.
|
|
4
|
+
*
|
|
5
|
+
* The composition below only fires where the compound reads its constituent
|
|
6
|
+
* exactly as that constituent's own entry does, which rules out most of the ways
|
|
7
|
+
* it could be wrong. What it cannot rule out is a homograph: two words spelled
|
|
8
|
+
* and read identically in 普通话, of which only one shifts in 國語. 相亲 is
|
|
9
|
+
* `xiāngqīn` either way when it means "mutually close" and `xiàngqīn` in Taiwan
|
|
10
|
+
* when it means a matchmaking meeting, and nothing in the data distinguishes the
|
|
11
|
+
* two senses.
|
|
12
|
+
*
|
|
13
|
+
* **Keep this small**, for the same reason
|
|
14
|
+
* {@link import("./overrides.js").READING_OVERRIDES} is kept small. Three
|
|
15
|
+
* exclusions against the 100 compounds the composition settles is the measured
|
|
16
|
+
* ratio; a list growing much past that would mean the alignment check has
|
|
17
|
+
* stopped carrying its weight and the rule itself needs revisiting.
|
|
18
|
+
*/
|
|
19
|
+
export declare const LOCALE_COMPOSITION_EXCLUSIONS: readonly {
|
|
20
|
+
readonly word: string;
|
|
21
|
+
readonly reason: string;
|
|
22
|
+
}[];
|
|
23
|
+
/**
|
|
24
|
+
* Whether a compound can be asked what it is made of at all.
|
|
25
|
+
*
|
|
26
|
+
* A reading of one syllable per character is what lets a character span be cut
|
|
27
|
+
* out of the compound's reading and replaced. 儿化 folds two characters into one
|
|
28
|
+
* syllable and punctuation reads as none, so neither lines up and both are left
|
|
29
|
+
* alone.
|
|
30
|
+
*/
|
|
31
|
+
export declare function isComposable(entry: DictionaryEntry): boolean;
|
|
32
|
+
/**
|
|
33
|
+
* Whether any delta-carrying word appears inside this one.
|
|
34
|
+
*
|
|
35
|
+
* A cheap filter ahead of the segmentation: only a few hundred words carry a
|
|
36
|
+
* delta, against 461,555 entries, and enumerating one word's substrings costs
|
|
37
|
+
* far less than segmenting it.
|
|
38
|
+
*/
|
|
39
|
+
export declare function hasMarkedConstituent(word: string, marked: ReadonlySet<string>): boolean;
|
|
40
|
+
//# sourceMappingURL=locale-candidates.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"locale-candidates.d.ts","sourceRoot":"","sources":["../../src/dictionary/locale-candidates.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAElD;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,6BAA6B,EAAE,SAAS;IACnD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB,EAeA,CAAC;AASF;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAQ5D;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,GAC1B,OAAO,CAST"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Which compounds the locale composition may be asked about at all.
|
|
3
|
+
*
|
|
4
|
+
* Three filters that between them cut 461,555 entries to a few hundred: the
|
|
5
|
+
* compound has to line up one syllable per character, it has to contain a word
|
|
6
|
+
* that carries a delta, and it must not be one of the homographs the data
|
|
7
|
+
* cannot tell apart.
|
|
8
|
+
*/
|
|
9
|
+
import { toCharacters } from "../script/characters.js";
|
|
10
|
+
/**
|
|
11
|
+
* Compounds whose constituent's 國語 reading must not be carried over.
|
|
12
|
+
*
|
|
13
|
+
* The composition below only fires where the compound reads its constituent
|
|
14
|
+
* exactly as that constituent's own entry does, which rules out most of the ways
|
|
15
|
+
* it could be wrong. What it cannot rule out is a homograph: two words spelled
|
|
16
|
+
* and read identically in 普通话, of which only one shifts in 國語. 相亲 is
|
|
17
|
+
* `xiāngqīn` either way when it means "mutually close" and `xiàngqīn` in Taiwan
|
|
18
|
+
* when it means a matchmaking meeting, and nothing in the data distinguishes the
|
|
19
|
+
* two senses.
|
|
20
|
+
*
|
|
21
|
+
* **Keep this small**, for the same reason
|
|
22
|
+
* {@link import("./overrides.js").READING_OVERRIDES} is kept small. Three
|
|
23
|
+
* exclusions against the 100 compounds the composition settles is the measured
|
|
24
|
+
* ratio; a list growing much past that would mean the alignment check has
|
|
25
|
+
* stopped carrying its weight and the rule itself needs revisiting.
|
|
26
|
+
*/
|
|
27
|
+
export const LOCALE_COMPOSITION_EXCLUSIONS = [
|
|
28
|
+
{
|
|
29
|
+
word: "相亲相爱",
|
|
30
|
+
reason: "相亲 here is 相 + 亲 in the reciprocal sense, `xiāngqīn`, not the matchmaking word that reads `xiàngqīn` in 國語.",
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
word: "腹背相亲",
|
|
34
|
+
reason: "The same reciprocal 相亲, so the same reading in both locales.",
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
word: "洋为中用",
|
|
38
|
+
reason: "中 is 中国 and 用 is its own verb: 洋为中用 is not built on the word 中用, which is what reads `zhòngyòng` in 國語.",
|
|
39
|
+
},
|
|
40
|
+
];
|
|
41
|
+
/**
|
|
42
|
+
* The exclusions as a set, for the composition to consult.
|
|
43
|
+
*/
|
|
44
|
+
const EXCLUDED = new Set(LOCALE_COMPOSITION_EXCLUSIONS.map((exclusion) => exclusion.word));
|
|
45
|
+
/**
|
|
46
|
+
* Whether a compound can be asked what it is made of at all.
|
|
47
|
+
*
|
|
48
|
+
* A reading of one syllable per character is what lets a character span be cut
|
|
49
|
+
* out of the compound's reading and replaced. 儿化 folds two characters into one
|
|
50
|
+
* syllable and punctuation reads as none, so neither lines up and both are left
|
|
51
|
+
* alone.
|
|
52
|
+
*/
|
|
53
|
+
export function isComposable(entry) {
|
|
54
|
+
const characters = toCharacters(entry.hans);
|
|
55
|
+
return (characters.length > 2 &&
|
|
56
|
+
entry.readings.cn.length === characters.length &&
|
|
57
|
+
!EXCLUDED.has(entry.hans) &&
|
|
58
|
+
!EXCLUDED.has(entry.hant));
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Whether any delta-carrying word appears inside this one.
|
|
62
|
+
*
|
|
63
|
+
* A cheap filter ahead of the segmentation: only a few hundred words carry a
|
|
64
|
+
* delta, against 461,555 entries, and enumerating one word's substrings costs
|
|
65
|
+
* far less than segmenting it.
|
|
66
|
+
*/
|
|
67
|
+
export function hasMarkedConstituent(word, marked) {
|
|
68
|
+
const characters = toCharacters(word);
|
|
69
|
+
return characters.some((_, from) => {
|
|
70
|
+
let candidate = "";
|
|
71
|
+
return characters.slice(from).some((character) => {
|
|
72
|
+
candidate += character;
|
|
73
|
+
return candidate !== word && marked.has(candidate);
|
|
74
|
+
});
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
//# sourceMappingURL=locale-candidates.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"locale-candidates.js","sourceRoot":"","sources":["../../src/dictionary/locale-candidates.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAGvD;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAGpC;IACJ;QACE,IAAI,EAAE,MAAM;QACZ,MAAM,EACJ,6GAA6G;KAChH;IACD;QACE,IAAI,EAAE,MAAM;QACZ,MAAM,EAAE,8DAA8D;KACvE;IACD;QACE,IAAI,EAAE,MAAM;QACZ,MAAM,EACJ,yGAAyG;KAC5G;CACF,CAAC;AAEF;;GAEG;AACH,MAAM,QAAQ,GAAwB,IAAI,GAAG,CAC3C,6BAA6B,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CACjE,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,UAAU,YAAY,CAAC,KAAsB;IACjD,MAAM,UAAU,GAAG,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC5C,OAAO,CACL,UAAU,CAAC,MAAM,GAAG,CAAC;QACrB,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,MAAM,KAAK,UAAU,CAAC,MAAM;QAC9C,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC;QACzB,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAC1B,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,oBAAoB,CAClC,IAAY,EACZ,MAA2B;IAE3B,MAAM,UAAU,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;IACtC,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE;QACjC,IAAI,SAAS,GAAG,EAAE,CAAC;QACnB,OAAO,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE;YAC/C,SAAS,IAAI,SAAS,CAAC;YACvB,OAAO,SAAS,KAAK,IAAI,IAAI,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACrD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import type { DictionaryEntry } from "./entry.js";
|
|
2
|
+
/**
|
|
3
|
+
* One word of a segmentation, and where in the compound it falls.
|
|
4
|
+
*/
|
|
5
|
+
export interface Segment {
|
|
6
|
+
readonly entry: DictionaryEntry;
|
|
7
|
+
readonly text: string;
|
|
8
|
+
/** First character covered. */
|
|
9
|
+
readonly from: number;
|
|
10
|
+
/** One past the last character covered. */
|
|
11
|
+
readonly to: number;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Every key an entry answers to, under either script.
|
|
15
|
+
*/
|
|
16
|
+
export declare function keysOf(entry: DictionaryEntry): readonly string[];
|
|
17
|
+
/**
|
|
18
|
+
* A compound's constituent words, and the readings they carry.
|
|
19
|
+
*
|
|
20
|
+
* Indexed by every key an entry claims, so that a 繁體 headword segments into
|
|
21
|
+
* 繁體 constituents. Headwords are set first and never displaced, which is the
|
|
22
|
+
* same precedence the artifact and the build assertions use: 发 and 髮 both claim
|
|
23
|
+
* 发, and the entry the key names has to win.
|
|
24
|
+
*/
|
|
25
|
+
export declare class ConstituentIndex {
|
|
26
|
+
#private;
|
|
27
|
+
/**
|
|
28
|
+
* Index entries by key, quantising their frequencies the way the decoder will.
|
|
29
|
+
*/
|
|
30
|
+
constructor(entries: readonly DictionaryEntry[]);
|
|
31
|
+
/**
|
|
32
|
+
* What a key costs a segmentation that uses it.
|
|
33
|
+
*/
|
|
34
|
+
costOf(key: string): number;
|
|
35
|
+
/**
|
|
36
|
+
* The likeliest way to cut a word into *other* dictionary words.
|
|
37
|
+
*
|
|
38
|
+
* The whole word is excluded from its own segmentation, which is the point:
|
|
39
|
+
* 垃圾分类 is a dictionary word, so a decoder handed the text would stop there
|
|
40
|
+
* and never ask what it is made of. This asks anyway.
|
|
41
|
+
*
|
|
42
|
+
* Returns undefined when no path of known words covers the word, which is
|
|
43
|
+
* common — most compounds contain a character no shorter word claims.
|
|
44
|
+
*/
|
|
45
|
+
segment(word: string): readonly Segment[] | undefined;
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=locale-segments.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"locale-segments.d.ts","sourceRoot":"","sources":["../../src/dictionary/locale-segments.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAmBlD;;GAEG;AACH,MAAM,WAAW,OAAO;IACtB,QAAQ,CAAC,KAAK,EAAE,eAAe,CAAC;IAChC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,+BAA+B;IAC/B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,2CAA2C;IAC3C,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,wBAAgB,MAAM,CAAC,KAAK,EAAE,eAAe,GAAG,SAAS,MAAM,EAAE,CAEhE;AAED;;;;;;;GAOG;AACH,qBAAa,gBAAgB;;IAI3B;;OAEG;IACH,YAAY,OAAO,EAAE,SAAS,eAAe,EAAE,EA4B9C;IA+BD;;OAEG;IACH,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAG1B;IAED;;;;;;;;;OASG;IACH,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,OAAO,EAAE,GAAG,SAAS,CA+BpD;CACF"}
|