@kensio/pinyinjs 1.7.3 → 1.7.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/accuracy/score-case.d.ts +23 -0
- package/dist/accuracy/score-case.d.ts.map +1 -0
- package/dist/accuracy/score-case.js +63 -0
- package/dist/accuracy/score-case.js.map +1 -0
- package/dist/accuracy/score.d.ts +1 -8
- package/dist/accuracy/score.d.ts.map +1 -1
- package/dist/accuracy/score.js +1 -55
- package/dist/accuracy/score.js.map +1 -1
- package/dist/cli/arguments.d.ts +4 -290
- package/dist/cli/arguments.d.ts.map +1 -1
- package/dist/cli/arguments.js +5 -357
- package/dist/cli/arguments.js.map +1 -1
- package/dist/cli/check-command.d.ts +9 -0
- package/dist/cli/check-command.d.ts.map +1 -0
- package/dist/cli/check-command.js +95 -0
- package/dist/cli/check-command.js.map +1 -0
- package/dist/cli/cli-input.d.ts +49 -0
- package/dist/cli/cli-input.d.ts.map +1 -0
- package/dist/cli/cli-input.js +31 -0
- package/dist/cli/cli-input.js.map +1 -0
- package/dist/cli/command.d.ts +97 -0
- package/dist/cli/command.d.ts.map +1 -0
- package/dist/cli/command.js +40 -0
- package/dist/cli/command.js.map +1 -0
- package/dist/cli/commands.d.ts +7 -110
- package/dist/cli/commands.d.ts.map +1 -1
- package/dist/cli/commands.js +14 -991
- package/dist/cli/commands.js.map +1 -1
- package/dist/cli/convert-command.d.ts +6 -0
- package/dist/cli/convert-command.d.ts.map +1 -0
- package/dist/cli/convert-command.js +52 -0
- package/dist/cli/convert-command.js.map +1 -0
- package/dist/cli/environment.d.ts +1 -1
- package/dist/cli/environment.d.ts.map +1 -1
- package/dist/cli/explain-command.d.ts +6 -0
- package/dist/cli/explain-command.d.ts.map +1 -0
- package/dist/cli/explain-command.js +40 -0
- package/dist/cli/explain-command.js.map +1 -0
- package/dist/cli/explain-syllable.d.ts +10 -0
- package/dist/cli/explain-syllable.d.ts.map +1 -0
- package/dist/cli/explain-syllable.js +70 -0
- package/dist/cli/explain-syllable.js.map +1 -0
- package/dist/cli/flag-help.d.ts +18 -0
- package/dist/cli/flag-help.d.ts.map +1 -0
- package/dist/cli/flag-help.js +78 -0
- package/dist/cli/flag-help.js.map +1 -0
- package/dist/cli/flag-lists.d.ts +49 -0
- package/dist/cli/flag-lists.d.ts.map +1 -0
- package/dist/cli/flag-lists.js +58 -0
- package/dist/cli/flag-lists.js.map +1 -0
- package/dist/cli/flag-values.d.ts +44 -0
- package/dist/cli/flag-values.d.ts.map +1 -0
- package/dist/cli/flag-values.js +56 -0
- package/dist/cli/flag-values.js.map +1 -0
- package/dist/cli/flags.d.ts +193 -0
- package/dist/cli/flags.d.ts.map +1 -0
- package/dist/cli/flags.js +133 -0
- package/dist/cli/flags.js.map +1 -0
- package/dist/cli/format-options.d.ts +29 -0
- package/dist/cli/format-options.d.ts.map +1 -0
- package/dist/cli/format-options.js +72 -0
- package/dist/cli/format-options.js.map +1 -0
- package/dist/cli/global-help.d.ts +23 -0
- package/dist/cli/global-help.d.ts.map +1 -0
- package/dist/cli/global-help.js +40 -0
- package/dist/cli/global-help.js.map +1 -0
- package/dist/cli/help.d.ts +1 -1
- package/dist/cli/help.d.ts.map +1 -1
- package/dist/cli/help.js +5 -99
- package/dist/cli/help.js.map +1 -1
- package/dist/cli/html-commands.d.ts +13 -0
- package/dist/cli/html-commands.d.ts.map +1 -0
- package/dist/cli/html-commands.js +49 -0
- package/dist/cli/html-commands.js.map +1 -0
- package/dist/cli/info-command.d.ts +7 -0
- package/dist/cli/info-command.d.ts.map +1 -0
- package/dist/cli/info-command.js +39 -0
- package/dist/cli/info-command.js.map +1 -0
- package/dist/cli/lookup-commands.d.ts +10 -0
- package/dist/cli/lookup-commands.d.ts.map +1 -0
- package/dist/cli/lookup-commands.js +101 -0
- package/dist/cli/lookup-commands.js.map +1 -0
- package/dist/cli/match-command.d.ts +11 -0
- package/dist/cli/match-command.d.ts.map +1 -0
- package/dist/cli/match-command.js +76 -0
- package/dist/cli/match-command.js.map +1 -0
- package/dist/cli/number-command.d.ts +12 -0
- package/dist/cli/number-command.d.ts.map +1 -0
- package/dist/cli/number-command.js +89 -0
- package/dist/cli/number-command.js.map +1 -0
- package/dist/cli/options.d.ts +30 -0
- package/dist/cli/options.d.ts.map +1 -0
- package/dist/cli/options.js +54 -0
- package/dist/cli/options.js.map +1 -0
- package/dist/cli/run-command.d.ts +24 -0
- package/dist/cli/run-command.d.ts.map +1 -0
- package/dist/cli/run-command.js +40 -0
- package/dist/cli/run-command.js.map +1 -0
- package/dist/cli/run.d.ts +4 -42
- package/dist/cli/run.d.ts.map +1 -1
- package/dist/cli/run.js +6 -61
- package/dist/cli/run.js.map +1 -1
- package/dist/cli/script-command.d.ts +10 -0
- package/dist/cli/script-command.d.ts.map +1 -0
- package/dist/cli/script-command.js +58 -0
- package/dist/cli/script-command.js.map +1 -0
- package/dist/cli/segment-command.d.ts +11 -0
- package/dist/cli/segment-command.d.ts.map +1 -0
- package/dist/cli/segment-command.js +53 -0
- package/dist/cli/segment-command.js.map +1 -0
- package/dist/cli/slug-command.d.ts +10 -0
- package/dist/cli/slug-command.d.ts.map +1 -0
- package/dist/cli/slug-command.js +28 -0
- package/dist/cli/slug-command.js.map +1 -0
- package/dist/cli/syllable-command.d.ts +14 -0
- package/dist/cli/syllable-command.d.ts.map +1 -0
- package/dist/cli/syllable-command.js +82 -0
- package/dist/cli/syllable-command.js.map +1 -0
- package/dist/cli/system-table.d.ts +12 -0
- package/dist/cli/system-table.d.ts.map +1 -0
- package/dist/cli/system-table.js +48 -0
- package/dist/cli/system-table.js.map +1 -0
- package/dist/cli/systems.d.ts +57 -0
- package/dist/cli/systems.d.ts.map +1 -0
- package/dist/cli/systems.js +27 -0
- package/dist/cli/systems.js.map +1 -0
- package/dist/cli/transcribe-command.d.ts +18 -0
- package/dist/cli/transcribe-command.d.ts.map +1 -0
- package/dist/cli/transcribe-command.js +86 -0
- package/dist/cli/transcribe-command.js.map +1 -0
- package/dist/cli/transcribe-reading.d.ts +15 -0
- package/dist/cli/transcribe-reading.d.ts.map +1 -0
- package/dist/cli/transcribe-reading.js +90 -0
- package/dist/cli/transcribe-reading.js.map +1 -0
- package/dist/cli/transcribe-rows.d.ts +26 -0
- package/dist/cli/transcribe-rows.d.ts.map +1 -0
- package/dist/cli/transcribe-rows.js +30 -0
- package/dist/cli/transcribe-rows.js.map +1 -0
- package/dist/cli/usage-error.d.ts +9 -0
- package/dist/cli/usage-error.d.ts.map +1 -0
- package/dist/cli/usage-error.js +9 -0
- package/dist/cli/usage-error.js.map +1 -0
- package/dist/decode/alternatives.d.ts +16 -0
- package/dist/decode/alternatives.d.ts.map +1 -0
- package/dist/decode/alternatives.js +31 -0
- package/dist/decode/alternatives.js.map +1 -0
- package/dist/decode/confidence.d.ts.map +1 -1
- package/dist/decode/confidence.js +3 -118
- package/dist/decode/confidence.js.map +1 -1
- package/dist/decode/convert-options.d.ts +116 -0
- package/dist/decode/convert-options.d.ts.map +1 -0
- package/dist/decode/convert-options.js +2 -0
- package/dist/decode/convert-options.js.map +1 -0
- package/dist/decode/convert-pipeline.d.ts +18 -0
- package/dist/decode/convert-pipeline.d.ts.map +1 -0
- package/dist/decode/convert-pipeline.js +66 -0
- package/dist/decode/convert-pipeline.js.map +1 -0
- package/dist/decode/convert.d.ts +9 -118
- package/dist/decode/convert.d.ts.map +1 -1
- package/dist/decode/convert.js +5 -453
- package/dist/decode/convert.js.map +1 -1
- package/dist/decode/decode.d.ts +2 -15
- package/dist/decode/decode.d.ts.map +1 -1
- package/dist/decode/decode.js +2 -121
- package/dist/decode/decode.js.map +1 -1
- package/dist/decode/decoders.d.ts +32 -0
- package/dist/decode/decoders.d.ts.map +1 -0
- package/dist/decode/decoders.js +29 -0
- package/dist/decode/decoders.js.map +1 -0
- package/dist/decode/edge-context.d.ts +38 -0
- package/dist/decode/edge-context.d.ts.map +1 -0
- package/dist/decode/edge-context.js +57 -0
- package/dist/decode/edge-context.js.map +1 -0
- package/dist/decode/hint-lattice.d.ts +45 -0
- package/dist/decode/hint-lattice.d.ts.map +1 -0
- package/dist/decode/hint-lattice.js +140 -0
- package/dist/decode/hint-lattice.js.map +1 -0
- package/dist/decode/hints.d.ts +2 -45
- package/dist/decode/hints.d.ts.map +1 -1
- package/dist/decode/hints.js +1 -139
- package/dist/decode/hints.js.map +1 -1
- package/dist/decode/jiao-rule.d.ts +58 -0
- package/dist/decode/jiao-rule.d.ts.map +1 -0
- package/dist/decode/jiao-rule.js +76 -0
- package/dist/decode/jiao-rule.js.map +1 -0
- package/dist/decode/lattice-costs.d.ts +55 -0
- package/dist/decode/lattice-costs.d.ts.map +1 -0
- package/dist/decode/lattice-costs.js +90 -0
- package/dist/decode/lattice-costs.js.map +1 -0
- package/dist/decode/lattice-edges.d.ts +29 -0
- package/dist/decode/lattice-edges.d.ts.map +1 -0
- package/dist/decode/lattice-edges.js +78 -0
- package/dist/decode/lattice-edges.js.map +1 -0
- package/dist/decode/lattice-slice.d.ts +37 -0
- package/dist/decode/lattice-slice.d.ts.map +1 -0
- package/dist/decode/lattice-slice.js +43 -0
- package/dist/decode/lattice-slice.js.map +1 -0
- package/dist/decode/lattice-types.d.ts +82 -0
- package/dist/decode/lattice-types.d.ts.map +1 -0
- package/dist/decode/lattice-types.js +44 -0
- package/dist/decode/lattice-types.js.map +1 -0
- package/dist/decode/lattice.d.ts +2 -59
- package/dist/decode/lattice.d.ts.map +1 -1
- package/dist/decode/lattice.js +2 -118
- package/dist/decode/lattice.js.map +1 -1
- package/dist/decode/number-pieces.d.ts +62 -0
- package/dist/decode/number-pieces.d.ts.map +1 -0
- package/dist/decode/number-pieces.js +106 -0
- package/dist/decode/number-pieces.js.map +1 -0
- package/dist/decode/numbers.d.ts +53 -0
- package/dist/decode/numbers.d.ts.map +1 -0
- package/dist/decode/numbers.js +69 -0
- package/dist/decode/numbers.js.map +1 -0
- package/dist/decode/pieces.d.ts +78 -0
- package/dist/decode/pieces.d.ts.map +1 -0
- package/dist/decode/pieces.js +136 -0
- package/dist/decode/pieces.js.map +1 -0
- package/dist/decode/polyphone-rules.d.ts +31 -0
- package/dist/decode/polyphone-rules.d.ts.map +1 -0
- package/dist/decode/polyphone-rules.js +159 -0
- package/dist/decode/polyphone-rules.js.map +1 -0
- package/dist/decode/reading-rules.d.ts +2 -97
- package/dist/decode/reading-rules.d.ts.map +1 -1
- package/dist/decode/reading-rules.js +4 -365
- package/dist/decode/reading-rules.js.map +1 -1
- package/dist/decode/rules.d.ts +1 -17
- package/dist/decode/rules.d.ts.map +1 -1
- package/dist/decode/rules.js +1 -43
- package/dist/decode/rules.js.map +1 -1
- package/dist/decode/run-lattice.d.ts +52 -0
- package/dist/decode/run-lattice.d.ts.map +1 -0
- package/dist/decode/run-lattice.js +91 -0
- package/dist/decode/run-lattice.js.map +1 -0
- package/dist/decode/sandhi-tones.d.ts +69 -0
- package/dist/decode/sandhi-tones.d.ts.map +1 -0
- package/dist/decode/sandhi-tones.js +88 -0
- package/dist/decode/sandhi-tones.js.map +1 -0
- package/dist/decode/sandhi.d.ts +1 -1
- package/dist/decode/sandhi.d.ts.map +1 -1
- package/dist/decode/sandhi.js +1 -81
- package/dist/decode/sandhi.js.map +1 -1
- package/dist/decode/script-types.d.ts +76 -0
- package/dist/decode/script-types.d.ts.map +1 -0
- package/dist/decode/script-types.js +35 -0
- package/dist/decode/script-types.js.map +1 -0
- package/dist/decode/script-words.d.ts +32 -0
- package/dist/decode/script-words.d.ts.map +1 -0
- package/dist/decode/script-words.js +77 -0
- package/dist/decode/script-words.js.map +1 -0
- package/dist/decode/script.d.ts +3 -73
- package/dist/decode/script.d.ts.map +1 -1
- package/dist/decode/script.js +3 -109
- package/dist/decode/script.js.map +1 -1
- package/dist/decode/tan-rule.d.ts +68 -0
- package/dist/decode/tan-rule.d.ts.map +1 -0
- package/dist/decode/tan-rule.js +131 -0
- package/dist/decode/tan-rule.js.map +1 -0
- package/dist/decode/write-run.d.ts +28 -0
- package/dist/decode/write-run.d.ts.map +1 -0
- package/dist/decode/write-run.js +77 -0
- package/dist/decode/write-run.js.map +1 -0
- package/dist/dictionary/artifact-claims.d.ts +25 -0
- package/dist/dictionary/artifact-claims.d.ts.map +1 -0
- package/dist/dictionary/artifact-claims.js +47 -0
- package/dist/dictionary/artifact-claims.js.map +1 -0
- package/dist/dictionary/artifact-format.d.ts +86 -0
- package/dist/dictionary/artifact-format.d.ts.map +1 -0
- package/dist/dictionary/artifact-format.js +91 -0
- package/dist/dictionary/artifact-format.js.map +1 -0
- package/dist/dictionary/artifact-read.d.ts +34 -0
- package/dist/dictionary/artifact-read.d.ts.map +1 -0
- package/dist/dictionary/artifact-read.js +114 -0
- package/dist/dictionary/artifact-read.js.map +1 -0
- package/dist/dictionary/artifact.d.ts +4 -63
- package/dist/dictionary/artifact.d.ts.map +1 -1
- package/dist/dictionary/artifact.js +12 -229
- package/dist/dictionary/artifact.js.map +1 -1
- package/dist/dictionary/assertions.d.ts +5 -57
- package/dist/dictionary/assertions.d.ts.map +1 -1
- package/dist/dictionary/assertions.js +4 -317
- package/dist/dictionary/assertions.js.map +1 -1
- package/dist/dictionary/build-assertions.d.ts +12 -0
- package/dist/dictionary/build-assertions.d.ts.map +1 -0
- package/dist/dictionary/build-assertions.js +13 -0
- package/dist/dictionary/build-assertions.js.map +1 -0
- package/dist/dictionary/built-dictionary.d.ts +46 -0
- package/dist/dictionary/built-dictionary.d.ts.map +1 -0
- package/dist/dictionary/built-dictionary.js +97 -0
- package/dist/dictionary/built-dictionary.js.map +1 -0
- package/dist/dictionary/cedict-senses.d.ts +80 -0
- package/dist/dictionary/cedict-senses.d.ts.map +1 -0
- package/dist/dictionary/cedict-senses.js +114 -0
- package/dist/dictionary/cedict-senses.js.map +1 -0
- package/dist/dictionary/character-defaults.d.ts +26 -0
- package/dist/dictionary/character-defaults.d.ts.map +1 -0
- package/dist/dictionary/character-defaults.js +67 -0
- package/dist/dictionary/character-defaults.js.map +1 -0
- package/dist/dictionary/character-readings.d.ts +10 -0
- package/dist/dictionary/character-readings.d.ts.map +1 -0
- package/dist/dictionary/character-readings.js +25 -0
- package/dist/dictionary/character-readings.js.map +1 -0
- package/dist/dictionary/dictionary-entry.d.ts +37 -0
- package/dist/dictionary/dictionary-entry.d.ts.map +1 -0
- package/dist/dictionary/dictionary-entry.js +41 -0
- package/dist/dictionary/dictionary-entry.js.map +1 -0
- package/dist/dictionary/dictionary-readings.d.ts +56 -0
- package/dist/dictionary/dictionary-readings.d.ts.map +1 -0
- package/dist/dictionary/dictionary-readings.js +93 -0
- package/dist/dictionary/dictionary-readings.js.map +1 -0
- package/dist/dictionary/dictionary.d.ts +6 -60
- package/dist/dictionary/dictionary.d.ts.map +1 -1
- package/dist/dictionary/dictionary.js +9 -169
- package/dist/dictionary/dictionary.js.map +1 -1
- package/dist/dictionary/entry-invariants.d.ts +3 -0
- package/dist/dictionary/entry-invariants.d.ts.map +1 -0
- package/dist/dictionary/entry-invariants.js +67 -0
- package/dist/dictionary/entry-invariants.js.map +1 -0
- package/dist/dictionary/entry-lines.d.ts +35 -0
- package/dist/dictionary/entry-lines.d.ts.map +1 -0
- package/dist/dictionary/entry-lines.js +70 -0
- package/dist/dictionary/entry-lines.js.map +1 -0
- package/dist/dictionary/erhua-repair.d.ts +26 -0
- package/dist/dictionary/erhua-repair.d.ts.map +1 -0
- package/dist/dictionary/erhua-repair.js +49 -0
- package/dist/dictionary/erhua-repair.js.map +1 -0
- package/dist/dictionary/frequency-tones.d.ts +74 -0
- package/dist/dictionary/frequency-tones.d.ts.map +1 -0
- package/dist/dictionary/frequency-tones.js +128 -0
- package/dist/dictionary/frequency-tones.js.map +1 -0
- package/dist/dictionary/inventory-invariants.d.ts +3 -0
- package/dist/dictionary/inventory-invariants.d.ts.map +1 -0
- package/dist/dictionary/inventory-invariants.js +54 -0
- package/dist/dictionary/inventory-invariants.js.map +1 -0
- package/dist/dictionary/locale-candidates.d.ts +40 -0
- package/dist/dictionary/locale-candidates.d.ts.map +1 -0
- package/dist/dictionary/locale-candidates.js +77 -0
- package/dist/dictionary/locale-candidates.js.map +1 -0
- package/dist/dictionary/locale-segments.d.ts +47 -0
- package/dist/dictionary/locale-segments.d.ts.map +1 -0
- package/dist/dictionary/locale-segments.js +141 -0
- package/dist/dictionary/locale-segments.js.map +1 -0
- package/dist/dictionary/locale.d.ts +1 -21
- package/dist/dictionary/locale.d.ts.map +1 -1
- package/dist/dictionary/locale.js +9 -198
- package/dist/dictionary/locale.js.map +1 -1
- package/dist/dictionary/merge-types.d.ts +121 -0
- package/dist/dictionary/merge-types.d.ts.map +1 -0
- package/dist/dictionary/merge-types.js +35 -0
- package/dist/dictionary/merge-types.js.map +1 -0
- package/dist/dictionary/merge-word.d.ts +7 -0
- package/dist/dictionary/merge-word.d.ts.map +1 -0
- package/dist/dictionary/merge-word.js +91 -0
- package/dist/dictionary/merge-word.js.map +1 -0
- package/dist/dictionary/merge.d.ts +5 -62
- package/dist/dictionary/merge.d.ts.map +1 -1
- package/dist/dictionary/merge.js +30 -713
- package/dist/dictionary/merge.js.map +1 -1
- package/dist/dictionary/proper-noun.d.ts +28 -0
- package/dist/dictionary/proper-noun.d.ts.map +1 -0
- package/dist/dictionary/proper-noun.js +43 -0
- package/dist/dictionary/proper-noun.js.map +1 -0
- package/dist/dictionary/reading-agreement.d.ts +71 -0
- package/dist/dictionary/reading-agreement.d.ts.map +1 -0
- package/dist/dictionary/reading-agreement.js +156 -0
- package/dist/dictionary/reading-agreement.js.map +1 -0
- package/dist/dictionary/script-conversion.d.ts +28 -0
- package/dist/dictionary/script-conversion.d.ts.map +1 -0
- package/dist/dictionary/script-conversion.js +58 -0
- package/dist/dictionary/script-conversion.js.map +1 -0
- package/dist/dictionary/script-pairings.d.ts +74 -0
- package/dist/dictionary/script-pairings.d.ts.map +1 -0
- package/dist/dictionary/script-pairings.js +120 -0
- package/dist/dictionary/script-pairings.js.map +1 -0
- package/dist/dictionary/script-tables.d.ts.map +1 -1
- package/dist/dictionary/script-tables.js +2 -165
- package/dist/dictionary/script-tables.js.map +1 -1
- package/dist/dictionary/taiwan-reading.d.ts +8 -0
- package/dist/dictionary/taiwan-reading.d.ts.map +1 -0
- package/dist/dictionary/taiwan-reading.js +38 -0
- package/dist/dictionary/taiwan-reading.js.map +1 -0
- package/dist/dictionary/tone-invariants.d.ts +3 -0
- package/dist/dictionary/tone-invariants.d.ts.map +1 -0
- package/dist/dictionary/tone-invariants.js +64 -0
- package/dist/dictionary/tone-invariants.js.map +1 -0
- package/dist/dictionary/traditional-form.d.ts +21 -0
- package/dist/dictionary/traditional-form.d.ts.map +1 -0
- package/dist/dictionary/traditional-form.js +59 -0
- package/dist/dictionary/traditional-form.js.map +1 -0
- package/dist/dictionary/traditional-ranking.d.ts +22 -0
- package/dist/dictionary/traditional-ranking.d.ts.map +1 -0
- package/dist/dictionary/traditional-ranking.js +74 -0
- package/dist/dictionary/traditional-ranking.js.map +1 -0
- package/dist/dictionary/traditional-table.d.ts +51 -0
- package/dist/dictionary/traditional-table.d.ts.map +1 -0
- package/dist/dictionary/traditional-table.js +98 -0
- package/dist/dictionary/traditional-table.js.map +1 -0
- package/dist/dictionary/traditional.d.ts +3 -56
- package/dist/dictionary/traditional.d.ts.map +1 -1
- package/dist/dictionary/traditional.js +3 -186
- package/dist/dictionary/traditional.js.map +1 -1
- package/dist/dictionary/variant-counts.d.ts +39 -0
- package/dist/dictionary/variant-counts.d.ts.map +1 -0
- package/dist/dictionary/variant-counts.js +38 -0
- package/dist/dictionary/variant-counts.js.map +1 -0
- package/dist/dictionary/word-reading.d.ts +26 -0
- package/dist/dictionary/word-reading.d.ts.map +1 -0
- package/dist/dictionary/word-reading.js +76 -0
- package/dist/dictionary/word-reading.js.map +1 -0
- package/dist/dictionary/word-readings.d.ts +15 -0
- package/dist/dictionary/word-readings.d.ts.map +1 -0
- package/dist/dictionary/word-readings.js +38 -0
- package/dist/dictionary/word-readings.js.map +1 -0
- package/dist/format/annotate.d.ts +90 -0
- package/dist/format/annotate.d.ts.map +1 -0
- package/dist/format/annotate.js +168 -0
- package/dist/format/annotate.js.map +1 -0
- package/dist/format/html.d.ts +15 -46
- package/dist/format/html.d.ts.map +1 -1
- package/dist/format/html.js +3 -162
- package/dist/format/html.js.map +1 -1
- package/dist/format/slug-hash.d.ts +51 -0
- package/dist/format/slug-hash.d.ts.map +1 -0
- package/dist/format/slug-hash.js +74 -0
- package/dist/format/slug-hash.js.map +1 -0
- package/dist/format/slug-options.d.ts +98 -0
- package/dist/format/slug-options.d.ts.map +1 -0
- package/dist/format/slug-options.js +2 -0
- package/dist/format/slug-options.js.map +1 -0
- package/dist/format/slug-words.d.ts +27 -0
- package/dist/format/slug-words.d.ts.map +1 -0
- package/dist/format/slug-words.js +0 -0
- package/dist/format/slug-words.js.map +1 -0
- package/dist/format/slug.d.ts +3 -128
- package/dist/format/slug.d.ts.map +1 -1
- package/dist/format/slug.js +0 -0
- package/dist/format/slug.js.map +1 -1
- package/dist/grade/check-readings.d.ts +41 -0
- package/dist/grade/check-readings.d.ts.map +1 -0
- package/dist/grade/check-readings.js +36 -0
- package/dist/grade/check-readings.js.map +1 -0
- package/dist/grade/check.d.ts +4 -4
- package/dist/grade/check.d.ts.map +1 -1
- package/dist/grade/check.js +5 -270
- package/dist/grade/check.js.map +1 -1
- package/dist/grade/pair-syllables.d.ts +48 -0
- package/dist/grade/pair-syllables.d.ts.map +1 -0
- package/dist/grade/pair-syllables.js +71 -0
- package/dist/grade/pair-syllables.js.map +1 -0
- package/dist/grade/reading-syllables.d.ts +62 -0
- package/dist/grade/reading-syllables.d.ts.map +1 -0
- package/dist/grade/reading-syllables.js +58 -0
- package/dist/grade/reading-syllables.js.map +1 -0
- package/dist/grade/reading-tolerance.d.ts +72 -0
- package/dist/grade/reading-tolerance.d.ts.map +1 -0
- package/dist/grade/reading-tolerance.js +107 -0
- package/dist/grade/reading-tolerance.js.map +1 -0
- package/dist/grade/typed-reading.d.ts +28 -0
- package/dist/grade/typed-reading.d.ts.map +1 -0
- package/dist/grade/typed-reading.js +36 -0
- package/dist/grade/typed-reading.js.map +1 -0
- package/dist/numerals/numeral-parse.d.ts +32 -0
- package/dist/numerals/numeral-parse.d.ts.map +1 -0
- package/dist/numerals/numeral-parse.js +44 -0
- package/dist/numerals/numeral-parse.js.map +1 -0
- package/dist/numerals/numeral-shapes.d.ts +89 -0
- package/dist/numerals/numeral-shapes.d.ts.map +1 -0
- package/dist/numerals/numeral-shapes.js +99 -0
- package/dist/numerals/numeral-shapes.js.map +1 -0
- package/dist/numerals/numerals.d.ts.map +1 -1
- package/dist/numerals/numerals.js +2 -36
- package/dist/numerals/numerals.js.map +1 -1
- package/dist/numerals/read-numeral.d.ts +76 -0
- package/dist/numerals/read-numeral.d.ts.map +1 -0
- package/dist/numerals/read-numeral.js +88 -0
- package/dist/numerals/read-numeral.js.map +1 -0
- package/dist/numerals/text.d.ts +3 -37
- package/dist/numerals/text.d.ts.map +1 -1
- package/dist/numerals/text.js +3 -254
- package/dist/numerals/text.js.map +1 -1
- package/dist/numerals/time.d.ts +34 -0
- package/dist/numerals/time.d.ts.map +1 -0
- package/dist/numerals/time.js +93 -0
- package/dist/numerals/time.js.map +1 -0
- package/dist/orthography/address-grouping.d.ts +34 -0
- package/dist/orthography/address-grouping.d.ts.map +1 -0
- package/dist/orthography/address-grouping.js +52 -0
- package/dist/orthography/address-grouping.js.map +1 -0
- package/dist/orthography/grouping.d.ts +3 -87
- package/dist/orthography/grouping.d.ts.map +1 -1
- package/dist/orthography/grouping.js +4 -270
- package/dist/orthography/grouping.js.map +1 -1
- package/dist/orthography/place-grouping.d.ts +39 -0
- package/dist/orthography/place-grouping.d.ts.map +1 -0
- package/dist/orthography/place-grouping.js +83 -0
- package/dist/orthography/place-grouping.js.map +1 -0
- package/dist/orthography/word-grouping.d.ts +48 -0
- package/dist/orthography/word-grouping.d.ts.map +1 -0
- package/dist/orthography/word-grouping.js +147 -0
- package/dist/orthography/word-grouping.js.map +1 -0
- package/dist/script/conversion-format.d.ts +22 -0
- package/dist/script/conversion-format.d.ts.map +1 -0
- package/dist/script/conversion-format.js +22 -0
- package/dist/script/conversion-format.js.map +1 -0
- package/dist/script/conversion-read.d.ts +9 -0
- package/dist/script/conversion-read.d.ts.map +1 -0
- package/dist/script/conversion-read.js +69 -0
- package/dist/script/conversion-read.js.map +1 -0
- package/dist/script/conversion-write.d.ts +14 -0
- package/dist/script/conversion-write.d.ts.map +1 -0
- package/dist/script/conversion-write.js +34 -0
- package/dist/script/conversion-write.js.map +1 -0
- package/dist/script/conversion.d.ts +10 -16
- package/dist/script/conversion.d.ts.map +1 -1
- package/dist/script/conversion.js +2 -115
- package/dist/script/conversion.js.map +1 -1
- package/dist/search/candidate-narrowing.d.ts +56 -0
- package/dist/search/candidate-narrowing.d.ts.map +1 -0
- package/dist/search/candidate-narrowing.js +55 -0
- package/dist/search/candidate-narrowing.js.map +1 -0
- package/dist/search/candidate-query.d.ts +25 -0
- package/dist/search/candidate-query.d.ts.map +1 -0
- package/dist/search/candidate-query.js +28 -0
- package/dist/search/candidate-query.js.map +1 -0
- package/dist/search/candidate-writings.d.ts +24 -0
- package/dist/search/candidate-writings.d.ts.map +1 -0
- package/dist/search/candidate-writings.js +114 -0
- package/dist/search/candidate-writings.js.map +1 -0
- package/dist/search/candidates.d.ts +7 -41
- package/dist/search/candidates.d.ts.map +1 -1
- package/dist/search/candidates.js +10 -164
- package/dist/search/candidates.js.map +1 -1
- package/dist/search/match-chunks.d.ts +19 -0
- package/dist/search/match-chunks.d.ts.map +1 -0
- package/dist/search/match-chunks.js +30 -0
- package/dist/search/match-chunks.js.map +1 -0
- package/dist/search/match-ranking.d.ts +39 -0
- package/dist/search/match-ranking.d.ts.map +1 -0
- package/dist/search/match-ranking.js +51 -0
- package/dist/search/match-ranking.js.map +1 -0
- package/dist/search/match-readings.d.ts +43 -0
- package/dist/search/match-readings.d.ts.map +1 -0
- package/dist/search/match-readings.js +83 -0
- package/dist/search/match-readings.js.map +1 -0
- package/dist/search/match-scoring.d.ts +146 -0
- package/dist/search/match-scoring.d.ts.map +1 -0
- package/dist/search/match-scoring.js +114 -0
- package/dist/search/match-scoring.js.map +1 -0
- package/dist/search/match-search.d.ts +28 -0
- package/dist/search/match-search.d.ts.map +1 -0
- package/dist/search/match-search.js +128 -0
- package/dist/search/match-search.js.map +1 -0
- package/dist/search/match.d.ts +5 -36
- package/dist/search/match.d.ts.map +1 -1
- package/dist/search/match.js +2 -379
- package/dist/search/match.js.map +1 -1
- package/dist/search/reverse-index-build.d.ts +30 -0
- package/dist/search/reverse-index-build.d.ts.map +1 -0
- package/dist/search/reverse-index-build.js +72 -0
- package/dist/search/reverse-index-build.js.map +1 -0
- package/dist/search/reverse-index-format.d.ts +60 -0
- package/dist/search/reverse-index-format.d.ts.map +1 -0
- package/dist/search/reverse-index-format.js +54 -0
- package/dist/search/reverse-index-format.js.map +1 -0
- package/dist/search/reverse-index-groups.d.ts +37 -0
- package/dist/search/reverse-index-groups.d.ts.map +1 -0
- package/dist/search/reverse-index-groups.js +71 -0
- package/dist/search/reverse-index-groups.js.map +1 -0
- package/dist/search/reverse-index-passes.d.ts +78 -0
- package/dist/search/reverse-index-passes.d.ts.map +1 -0
- package/dist/search/reverse-index-passes.js +59 -0
- package/dist/search/reverse-index-passes.js.map +1 -0
- package/dist/search/reverse-index-state.d.ts +36 -0
- package/dist/search/reverse-index-state.d.ts.map +1 -0
- package/dist/search/reverse-index-state.js +95 -0
- package/dist/search/reverse-index-state.js.map +1 -0
- package/dist/search/reverse-index.d.ts +8 -67
- package/dist/search/reverse-index.d.ts.map +1 -1
- package/dist/search/reverse-index.js +4 -255
- package/dist/search/reverse-index.js.map +1 -1
- package/dist/sources/unihan-readings.d.ts +58 -0
- package/dist/sources/unihan-readings.d.ts.map +1 -0
- package/dist/sources/unihan-readings.js +95 -0
- package/dist/sources/unihan-readings.js.map +1 -0
- package/dist/sources/unihan.d.ts +6 -9
- package/dist/sources/unihan.d.ts.map +1 -1
- package/dist/sources/unihan.js +2 -85
- package/dist/sources/unihan.js.map +1 -1
- package/dist/syllable/final-tables.d.ts +23 -0
- package/dist/syllable/final-tables.d.ts.map +1 -0
- package/dist/syllable/final-tables.js +50 -0
- package/dist/syllable/final-tables.js.map +1 -0
- package/dist/syllable/inventory.d.ts +8 -42
- package/dist/syllable/inventory.d.ts.map +1 -1
- package/dist/syllable/inventory.js +9 -918
- package/dist/syllable/inventory.js.map +1 -1
- package/dist/syllable/spellings.d.ts +40 -0
- package/dist/syllable/spellings.d.ts.map +1 -0
- package/dist/syllable/spellings.js +469 -0
- package/dist/syllable/spellings.js.map +1 -0
- package/dist/syllable/syllable-parts.d.ts +31 -0
- package/dist/syllable/syllable-parts.d.ts.map +1 -0
- package/dist/syllable/syllable-parts.js +105 -0
- package/dist/syllable/syllable-parts.js.map +1 -0
- package/dist/syllable/syllable.d.ts +1 -14
- package/dist/syllable/syllable.d.ts.map +1 -1
- package/dist/syllable/syllable.js +3 -144
- package/dist/syllable/syllable.js.map +1 -1
- package/dist/syllable/written-tones.d.ts +6 -0
- package/dist/syllable/written-tones.d.ts.map +1 -0
- package/dist/syllable/written-tones.js +453 -0
- package/dist/syllable/written-tones.js.map +1 -0
- package/dist/transcription/bopomofo-parse.d.ts +42 -0
- package/dist/transcription/bopomofo-parse.d.ts.map +1 -0
- package/dist/transcription/bopomofo-parse.js +92 -0
- package/dist/transcription/bopomofo-parse.js.map +1 -0
- package/dist/transcription/bopomofo-reverse.d.ts +31 -0
- package/dist/transcription/bopomofo-reverse.d.ts.map +1 -0
- package/dist/transcription/bopomofo-reverse.js +48 -0
- package/dist/transcription/bopomofo-reverse.js.map +1 -0
- package/dist/transcription/bopomofo-symbols.d.ts +36 -0
- package/dist/transcription/bopomofo-symbols.d.ts.map +1 -0
- package/dist/transcription/bopomofo-symbols.js +41 -0
- package/dist/transcription/bopomofo-symbols.js.map +1 -0
- package/dist/transcription/bopomofo-tables.d.ts +87 -0
- package/dist/transcription/bopomofo-tables.d.ts.map +1 -0
- package/dist/transcription/bopomofo-tables.js +180 -0
- package/dist/transcription/bopomofo-tables.js.map +1 -0
- package/dist/transcription/bopomofo.d.ts +14 -32
- package/dist/transcription/bopomofo.d.ts.map +1 -1
- package/dist/transcription/bopomofo.js +5 -343
- package/dist/transcription/bopomofo.js.map +1 -1
- package/dist/transcription/gwoyeu-first-second.d.ts +36 -0
- package/dist/transcription/gwoyeu-first-second.d.ts.map +1 -0
- package/dist/transcription/gwoyeu-first-second.js +75 -0
- package/dist/transcription/gwoyeu-first-second.js.map +1 -0
- package/dist/transcription/gwoyeu-spelling.d.ts +38 -0
- package/dist/transcription/gwoyeu-spelling.d.ts.map +1 -0
- package/dist/transcription/gwoyeu-spelling.js +124 -0
- package/dist/transcription/gwoyeu-spelling.js.map +1 -0
- package/dist/transcription/gwoyeu-tables.d.ts +93 -0
- package/dist/transcription/gwoyeu-tables.d.ts.map +1 -0
- package/dist/transcription/gwoyeu-tables.js +205 -0
- package/dist/transcription/gwoyeu-tables.js.map +1 -0
- package/dist/transcription/gwoyeu-tonal-forms.d.ts +49 -0
- package/dist/transcription/gwoyeu-tonal-forms.d.ts.map +1 -0
- package/dist/transcription/gwoyeu-tonal-forms.js +89 -0
- package/dist/transcription/gwoyeu-tonal-forms.js.map +1 -0
- package/dist/transcription/gwoyeu-vowels.d.ts +51 -0
- package/dist/transcription/gwoyeu-vowels.d.ts.map +1 -0
- package/dist/transcription/gwoyeu-vowels.js +58 -0
- package/dist/transcription/gwoyeu-vowels.js.map +1 -0
- package/dist/transcription/gwoyeu.d.ts +1 -26
- package/dist/transcription/gwoyeu.d.ts.map +1 -1
- package/dist/transcription/gwoyeu.js +2 -540
- package/dist/transcription/gwoyeu.js.map +1 -1
- package/dist/transcription/ipa-symbols.d.ts +67 -0
- package/dist/transcription/ipa-symbols.d.ts.map +1 -0
- package/dist/transcription/ipa-symbols.js +135 -0
- package/dist/transcription/ipa-symbols.js.map +1 -0
- package/dist/transcription/ipa.d.ts +2 -10
- package/dist/transcription/ipa.d.ts.map +1 -1
- package/dist/transcription/ipa.js +2 -134
- package/dist/transcription/ipa.js.map +1 -1
- package/dist/transcription/wade-giles-index.d.ts +35 -0
- package/dist/transcription/wade-giles-index.d.ts.map +1 -0
- package/dist/transcription/wade-giles-index.js +110 -0
- package/dist/transcription/wade-giles-index.js.map +1 -0
- package/dist/transcription/wade-giles-parse.d.ts +36 -0
- package/dist/transcription/wade-giles-parse.d.ts.map +1 -0
- package/dist/transcription/wade-giles-parse.js +84 -0
- package/dist/transcription/wade-giles-parse.js.map +1 -0
- package/dist/transcription/wade-giles-spelling.d.ts +61 -0
- package/dist/transcription/wade-giles-spelling.d.ts.map +1 -0
- package/dist/transcription/wade-giles-spelling.js +107 -0
- package/dist/transcription/wade-giles-spelling.js.map +1 -0
- package/dist/transcription/wade-giles-syllable.d.ts +29 -0
- package/dist/transcription/wade-giles-syllable.d.ts.map +1 -0
- package/dist/transcription/wade-giles-syllable.js +90 -0
- package/dist/transcription/wade-giles-syllable.js.map +1 -0
- package/dist/transcription/wade-giles-tables.d.ts +80 -0
- package/dist/transcription/wade-giles-tables.d.ts.map +1 -0
- package/dist/transcription/wade-giles-tables.js +178 -0
- package/dist/transcription/wade-giles-tables.js.map +1 -0
- package/dist/transcription/wade-giles.d.ts +9 -60
- package/dist/transcription/wade-giles.d.ts.map +1 -1
- package/dist/transcription/wade-giles.js +6 -543
- package/dist/transcription/wade-giles.js.map +1 -1
- package/dist/transcription/yale-tables.d.ts +54 -0
- package/dist/transcription/yale-tables.d.ts.map +1 -0
- package/dist/transcription/yale-tables.js +125 -0
- package/dist/transcription/yale-tables.js.map +1 -0
- package/dist/transcription/yale.d.ts.map +1 -1
- package/dist/transcription/yale.js +1 -124
- package/dist/transcription/yale.js.map +1 -1
- package/package.json +2 -2
package/dist/format/html.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { isUncertain } from "../decode/confidence.js";
|
|
2
|
+
export { convertToAnnotatedHtml, convertToHtml, toAnnotatedHtml, } from "./annotate.js";
|
|
2
3
|
import { READING_CHARGE } from "../decode/lattice.js";
|
|
3
|
-
import { convertPieces, } from "../decode/convert.js";
|
|
4
4
|
import { DEFAULT_LOCALE } from "../script/script.js";
|
|
5
5
|
import { writeSyllable } from "../syllable/syllable.js";
|
|
6
6
|
/**
|
|
@@ -62,7 +62,7 @@ const ESCAPES = new Map([
|
|
|
62
62
|
* every attribute here is double-quoted, and the 隔音符号 of `Xī'ān` is a
|
|
63
63
|
* letter of the orthography that a reader should see as one.
|
|
64
64
|
*/
|
|
65
|
-
function escape(text) {
|
|
65
|
+
export function escape(text) {
|
|
66
66
|
return text.replaceAll(/[&<>"]/gu, (character) => {
|
|
67
67
|
/* c8 ignore next -- the pattern only matches what the map holds */
|
|
68
68
|
return ESCAPES.get(character) ?? character;
|
|
@@ -87,7 +87,7 @@ function alternativesOf(confidence, options) {
|
|
|
87
87
|
/**
|
|
88
88
|
* Mark up one piece of a conversion.
|
|
89
89
|
*/
|
|
90
|
-
function writePiece(piece, options) {
|
|
90
|
+
export function writePiece(piece, options) {
|
|
91
91
|
const { toneClasses = true, markUncertain = true, lang = true } = options;
|
|
92
92
|
if (piece.syllable === undefined) {
|
|
93
93
|
return escape(piece.text);
|
|
@@ -122,163 +122,4 @@ function writePiece(piece, options) {
|
|
|
122
122
|
export function toHtml(pieces, options = {}) {
|
|
123
123
|
return pieces.map((piece) => writePiece(piece, options)).join("");
|
|
124
124
|
}
|
|
125
|
-
/**
|
|
126
|
-
* What the characters being annotated declare themselves to be.
|
|
127
|
-
*
|
|
128
|
-
* The mirror of {@link languageTag}: inside an annotation the base is hanzi and
|
|
129
|
-
* only the reading is pinyin, so on an English page the two need different tags
|
|
130
|
-
* and neither can be left to inherit.
|
|
131
|
-
*
|
|
132
|
-
* **`zh`, with no script subtag, and that is deliberate.** `Hans` or `Hant`
|
|
133
|
-
* would be better for font selection, and neither can be known here. The
|
|
134
|
-
* conversion's locale does not settle it — script and locale are separate axes,
|
|
135
|
-
* and a mainland edition of a classical text is 繁體 read as `zh-CN` — and
|
|
136
|
-
* detecting it from the characters needs the script tables, which load
|
|
137
|
-
* separately from the dictionary precisely so that converting does not pay for
|
|
138
|
-
* them. A tag that is merely unspecific is worth more than one that is wrong,
|
|
139
|
-
* so a caller who knows the script should wrap the output and say so there.
|
|
140
|
-
*/
|
|
141
|
-
const BASE_TAG = "zh";
|
|
142
|
-
/**
|
|
143
|
-
* Gather pieces into the bases they are readings of.
|
|
144
|
-
*
|
|
145
|
-
* A piece naming characters opens a group and every piece after it that names
|
|
146
|
-
* none reads on into the same one, which is how 玩儿 keeps `wánr` over both
|
|
147
|
-
* characters and 95% keeps `bǎifēnzhījiǔshíwǔ` over all three. Pieces writing
|
|
148
|
-
* no reading at all — the spaces between words, and runs that were never Han —
|
|
149
|
-
* are their own groups, with nothing to annotate.
|
|
150
|
-
*/
|
|
151
|
-
function annotationsOf(pieces) {
|
|
152
|
-
const groups = [];
|
|
153
|
-
for (const [at, piece] of pieces.entries()) {
|
|
154
|
-
const open = groups.at(-1);
|
|
155
|
-
if (open?.source !== undefined && continues(piece, pieces[at + 1])) {
|
|
156
|
-
groups[groups.length - 1] = {
|
|
157
|
-
source: open.source,
|
|
158
|
-
pieces: [...open.pieces, piece],
|
|
159
|
-
};
|
|
160
|
-
continue;
|
|
161
|
-
}
|
|
162
|
-
groups.push({ source: piece.source, pieces: [piece] });
|
|
163
|
-
}
|
|
164
|
-
return groups;
|
|
165
|
-
}
|
|
166
|
-
/**
|
|
167
|
-
* Whether a piece belongs to the annotation the group before it opened.
|
|
168
|
-
*
|
|
169
|
-
* Three kinds do:
|
|
170
|
-
*
|
|
171
|
-
* - A **syllable naming no characters** is reading on into the ones already
|
|
172
|
-
* named, which is 儿化 and every syllable of a read number after the first.
|
|
173
|
-
* - A **separator that is not a space** is a mark *inside* one orthographic
|
|
174
|
-
* word rather than a gap between two — the hyphen of `gāngān-jìngjìng`, the
|
|
175
|
-
* only one GB/T 16159 writes — so it belongs beside the syllables it divides.
|
|
176
|
-
* - A **space with more of the same reading after it**. 1988 is read
|
|
177
|
-
* `yī jiǔ bā bā`, four syllables over one base, and the spaces between them
|
|
178
|
-
* are inside that reading rather than between two of them.
|
|
179
|
-
*
|
|
180
|
-
* That last one is why this needs the piece after it. A space is written the
|
|
181
|
-
* same way whether it separates two words or two syllables of one number, and
|
|
182
|
-
* what tells them apart is whether what follows is still reading the same
|
|
183
|
-
* characters. Told apart wrongly, the reading escapes its own annotation:
|
|
184
|
-
* 1988年 came out as `1988` over `yī` with `jiǔ bā bā` loose beside it.
|
|
185
|
-
*
|
|
186
|
-
* A space between two words is the case that does not continue, and dropping it
|
|
187
|
-
* is the point: the hanzi it annotates has no space in it, and each base is
|
|
188
|
-
* already its own group on the page.
|
|
189
|
-
*/
|
|
190
|
-
function continues(piece, next) {
|
|
191
|
-
if (piece.syllable !== undefined) {
|
|
192
|
-
return piece.source === undefined;
|
|
193
|
-
}
|
|
194
|
-
if (piece.source !== undefined) {
|
|
195
|
-
return false;
|
|
196
|
-
}
|
|
197
|
-
return (piece.text.trim() !== "" ||
|
|
198
|
-
(next?.syllable !== undefined && next.source === undefined));
|
|
199
|
-
}
|
|
200
|
-
/**
|
|
201
|
-
* Mark up one base and its reading.
|
|
202
|
-
*/
|
|
203
|
-
function writeAnnotation(annotation, options) {
|
|
204
|
-
const { lang = true } = options;
|
|
205
|
-
const { source, pieces } = annotation;
|
|
206
|
-
if (pieces.every((piece) => piece.syllable === undefined)) {
|
|
207
|
-
// Nothing is read here. Either it is source text that simply has no
|
|
208
|
-
// reading — punctuation, a Latin word — and is written as the author wrote
|
|
209
|
-
// it, or it is pinyin orthography with no source behind it at all: the
|
|
210
|
-
// space between two words, and the hyphen in `gāngān-jìngjìng`. Writing
|
|
211
|
-
// those into the hanzi would annotate 干干净净 as 干干-净净.
|
|
212
|
-
return source === undefined ? "" : escape(source);
|
|
213
|
-
}
|
|
214
|
-
if (source === undefined) {
|
|
215
|
-
// A reading whose piece never named what it reads. Nothing a conversion
|
|
216
|
-
// builds looks like this — every group is opened by a piece carrying its
|
|
217
|
-
// characters — but {@link toAnnotatedHtml} takes pieces from the caller,
|
|
218
|
-
// and there is no base to hang an annotation on, so it is written as the
|
|
219
|
-
// plain markup it would have got from {@link toHtml}.
|
|
220
|
-
return pieces.map((piece) => writePiece(piece, options)).join("");
|
|
221
|
-
}
|
|
222
|
-
const reading = pieces.map((piece) => writePiece(piece, options)).join("");
|
|
223
|
-
// The tag goes on the <ruby> rather than around the base, and the syllables
|
|
224
|
-
// inside the <rt> override it with their own. `<rb>` would be the obvious
|
|
225
|
-
// place for it and is not an element any more: the WHATWG parser drops it,
|
|
226
|
-
// leaving the base as bare text, so writing one would mean emitting markup
|
|
227
|
-
// that no browser keeps.
|
|
228
|
-
const opening = lang ? `<ruby lang="${BASE_TAG}">` : "<ruby>";
|
|
229
|
-
return `${opening}${escape(source)}<rp>(</rp><rt>${reading}</rt><rp>)</rp></ruby>`;
|
|
230
|
-
}
|
|
231
|
-
/**
|
|
232
|
-
* Mark up a converted text as hanzi with its reading above, syllable by
|
|
233
|
-
* syllable.
|
|
234
|
-
*
|
|
235
|
-
* The output every other mode cannot give: `convert` and {@link toHtml} write
|
|
236
|
-
* the pinyin *instead of* the hanzi, and a learner's text, a subtitle and a
|
|
237
|
-
* dictionary entry all want both at once. The markup is `<ruby>`, which every
|
|
238
|
-
* current browser lays out natively and which degrades to parentheses through
|
|
239
|
-
* `<rp>` where it is not supported.
|
|
240
|
-
*
|
|
241
|
-
* ```html
|
|
242
|
-
* <ruby lang="zh">银<rp>(</rp><rt><span …>yín</span></rt><rp>)</rp></ruby>
|
|
243
|
-
* ```
|
|
244
|
-
*
|
|
245
|
-
* Each `<rt>` holds whatever {@link toHtml} would have written for those
|
|
246
|
-
* syllables, so tone classes and uncertainty marking work inside an annotation
|
|
247
|
-
* exactly as they do outside one.
|
|
248
|
-
*
|
|
249
|
-
* **A base is not always one character.** 玩儿 is two characters and the one
|
|
250
|
-
* syllable `wánr`, and a read number reverses on the way — 95% is
|
|
251
|
-
* `bǎifēnzhījiǔshíwǔ` — so both are annotated whole. Splitting them per
|
|
252
|
-
* character is what everything that emits ruby from a pinyin library gets
|
|
253
|
-
* wrong, and it is why {@link ConvertedPiece.source} exists.
|
|
254
|
-
*/
|
|
255
|
-
export function toAnnotatedHtml(pieces, options = {}) {
|
|
256
|
-
return annotationsOf(pieces)
|
|
257
|
-
.map((annotation) => writeAnnotation(annotation, options))
|
|
258
|
-
.join("");
|
|
259
|
-
}
|
|
260
|
-
/**
|
|
261
|
-
* Convert hanzi to pinyin as HTML, hanzi and reading together.
|
|
262
|
-
*
|
|
263
|
-
* {@link toAnnotatedHtml} applied to a fresh conversion; see it for what the
|
|
264
|
-
* markup is and why a base is not always one character.
|
|
265
|
-
*/
|
|
266
|
-
export function convertToAnnotatedHtml(dictionary, text, options = {}) {
|
|
267
|
-
return toAnnotatedHtml(convertPieces(dictionary, text, options), options);
|
|
268
|
-
}
|
|
269
|
-
/**
|
|
270
|
-
* Convert hanzi to pinyin as HTML, one element per syllable.
|
|
271
|
-
*
|
|
272
|
-
* What per-syllable confidence is for, and the reason ALGORITHM.md asks for it:
|
|
273
|
-
* a reading the decode was guessing at can be *shown* to be a guess, which for
|
|
274
|
-
* a learner is a feature rather than a diagnostic. No styling is imposed — the
|
|
275
|
-
* classes are hooks, and the page decides whether a fourth tone is red and an
|
|
276
|
-
* uncertain reading is dotted underneath.
|
|
277
|
-
*
|
|
278
|
-
* Nothing is wrapped around the whole conversion, and anything that is not Han
|
|
279
|
-
* passes through escaped rather than marked up.
|
|
280
|
-
*/
|
|
281
|
-
export function convertToHtml(dictionary, text, options = {}) {
|
|
282
|
-
return toHtml(convertPieces(dictionary, text, options), options);
|
|
283
|
-
}
|
|
284
125
|
//# sourceMappingURL=html.js.map
|
package/dist/format/html.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"html.js","sourceRoot":"","sources":["../../src/format/html.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAA0B,MAAM,yBAAyB,CAAC;AAC9E,OAAO,
|
|
1
|
+
{"version":3,"file":"html.js","sourceRoot":"","sources":["../../src/format/html.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The short hash a slug may carry on its end.
|
|
3
|
+
*
|
|
4
|
+
* Apart from the rest of slugging because it never sees a syllable: what is
|
|
5
|
+
* hashed is the source text, for the reason set out at {@link hashOf}, so this
|
|
6
|
+
* runs beside the conversion rather than after it.
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* How many characters {@link SlugOptions.hash} writes when simply asked for.
|
|
10
|
+
*
|
|
11
|
+
* Four base-36 characters is 1.7 million values, which is far more than it
|
|
12
|
+
* looks: two texts only collide when their slugs *and* their hashes match, so
|
|
13
|
+
* the suffix is only ever telling apart the handful of texts sharing one slug,
|
|
14
|
+
* not the whole corpus.
|
|
15
|
+
*/
|
|
16
|
+
export declare const DEFAULT_HASH_LENGTH = 4;
|
|
17
|
+
/**
|
|
18
|
+
* The longest hash there is anything to fill.
|
|
19
|
+
*
|
|
20
|
+
* {@link hashOf} is 32 bits wide, and 36⁷ is the last power of 36 under 2³²:
|
|
21
|
+
* asking for an eighth character would add a place that some values can never
|
|
22
|
+
* reach, which looks like more uniqueness while being none.
|
|
23
|
+
*/
|
|
24
|
+
export declare const LONGEST_HASH = 7;
|
|
25
|
+
/**
|
|
26
|
+
* A 32-bit hash of a text, written in the letters and digits a slug allows.
|
|
27
|
+
*
|
|
28
|
+
* **The source text is what is hashed, not the pinyin.** Two texts needing a
|
|
29
|
+
* hash to tell them apart are, by definition, ones the pinyin already ran
|
|
30
|
+
* together: 权利 and 权力 are both `quan2li4`, and hashing that would give them
|
|
31
|
+
* the same suffix and settle nothing. Hashing the hanzi also means the suffix
|
|
32
|
+
* does not move when a later release reads a word differently, so a slug's tail
|
|
33
|
+
* is the stable half of it.
|
|
34
|
+
*
|
|
35
|
+
* FNV-1a with murmur3's finalizer, which is neither cryptographic nor trying to
|
|
36
|
+
* be: nothing here resists an attacker, and all that is being asked of it is
|
|
37
|
+
* that two texts a reader would call different land on different suffixes.
|
|
38
|
+
* Written out rather than reached for because the package has no runtime
|
|
39
|
+
* dependencies and the core imports no Node built-ins, and `crypto.subtle` —
|
|
40
|
+
* the one hash a browser ships — is asynchronous, which this is not.
|
|
41
|
+
*
|
|
42
|
+
* Normalised first, so that text typed as a decomposed sequence hashes as the
|
|
43
|
+
* same text once composed. 简体 and 繁體 are deliberately *not* folded together:
|
|
44
|
+
* a caller who wrote 头发 and 頭髮 separately meant them separately.
|
|
45
|
+
*/
|
|
46
|
+
export declare function hashOf(text: string, length: number): string;
|
|
47
|
+
/**
|
|
48
|
+
* How long a hash the options asked for, or zero for none.
|
|
49
|
+
*/
|
|
50
|
+
export declare function hashLength(asked: number | boolean | undefined): number;
|
|
51
|
+
//# sourceMappingURL=slug-hash.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"slug-hash.d.ts","sourceRoot":"","sources":["../../src/format/slug-hash.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;;;;;;GAOG;AACH,eAAO,MAAM,mBAAmB,IAAI,CAAC;AAErC;;;;;;GAMG;AACH,eAAO,MAAM,YAAY,IAAI,CAAC;AAE9B;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAgB3D;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,GAAG,MAAM,CAQtE"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The short hash a slug may carry on its end.
|
|
3
|
+
*
|
|
4
|
+
* Apart from the rest of slugging because it never sees a syllable: what is
|
|
5
|
+
* hashed is the source text, for the reason set out at {@link hashOf}, so this
|
|
6
|
+
* runs beside the conversion rather than after it.
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* How many characters {@link SlugOptions.hash} writes when simply asked for.
|
|
10
|
+
*
|
|
11
|
+
* Four base-36 characters is 1.7 million values, which is far more than it
|
|
12
|
+
* looks: two texts only collide when their slugs *and* their hashes match, so
|
|
13
|
+
* the suffix is only ever telling apart the handful of texts sharing one slug,
|
|
14
|
+
* not the whole corpus.
|
|
15
|
+
*/
|
|
16
|
+
export const DEFAULT_HASH_LENGTH = 4;
|
|
17
|
+
/**
|
|
18
|
+
* The longest hash there is anything to fill.
|
|
19
|
+
*
|
|
20
|
+
* {@link hashOf} is 32 bits wide, and 36⁷ is the last power of 36 under 2³²:
|
|
21
|
+
* asking for an eighth character would add a place that some values can never
|
|
22
|
+
* reach, which looks like more uniqueness while being none.
|
|
23
|
+
*/
|
|
24
|
+
export const LONGEST_HASH = 7;
|
|
25
|
+
/**
|
|
26
|
+
* A 32-bit hash of a text, written in the letters and digits a slug allows.
|
|
27
|
+
*
|
|
28
|
+
* **The source text is what is hashed, not the pinyin.** Two texts needing a
|
|
29
|
+
* hash to tell them apart are, by definition, ones the pinyin already ran
|
|
30
|
+
* together: 权利 and 权力 are both `quan2li4`, and hashing that would give them
|
|
31
|
+
* the same suffix and settle nothing. Hashing the hanzi also means the suffix
|
|
32
|
+
* does not move when a later release reads a word differently, so a slug's tail
|
|
33
|
+
* is the stable half of it.
|
|
34
|
+
*
|
|
35
|
+
* FNV-1a with murmur3's finalizer, which is neither cryptographic nor trying to
|
|
36
|
+
* be: nothing here resists an attacker, and all that is being asked of it is
|
|
37
|
+
* that two texts a reader would call different land on different suffixes.
|
|
38
|
+
* Written out rather than reached for because the package has no runtime
|
|
39
|
+
* dependencies and the core imports no Node built-ins, and `crypto.subtle` —
|
|
40
|
+
* the one hash a browser ships — is asynchronous, which this is not.
|
|
41
|
+
*
|
|
42
|
+
* Normalised first, so that text typed as a decomposed sequence hashes as the
|
|
43
|
+
* same text once composed. 简体 and 繁體 are deliberately *not* folded together:
|
|
44
|
+
* a caller who wrote 头发 and 頭髮 separately meant them separately.
|
|
45
|
+
*/
|
|
46
|
+
export function hashOf(text, length) {
|
|
47
|
+
const bytes = new TextEncoder().encode(text.normalize("NFC"));
|
|
48
|
+
let hash = 0x81_1c_9d_c5;
|
|
49
|
+
for (const byte of bytes) {
|
|
50
|
+
hash = Math.imul(hash ^ byte, 0x01_00_01_93);
|
|
51
|
+
}
|
|
52
|
+
// FNV-1a leaves its lowest bits the least mixed, and the last characters of
|
|
53
|
+
// the base-36 spelling are exactly those bits, so this spreads them first.
|
|
54
|
+
hash ^= hash >>> 16;
|
|
55
|
+
hash = Math.imul(hash, 0x85_eb_ca_6b);
|
|
56
|
+
hash ^= hash >>> 13;
|
|
57
|
+
hash = Math.imul(hash, 0xc2_b2_ae_35);
|
|
58
|
+
hash ^= hash >>> 16;
|
|
59
|
+
const wanted = Math.min(Math.max(Math.trunc(length), 1), LONGEST_HASH);
|
|
60
|
+
return (hash >>> 0).toString(36).padStart(LONGEST_HASH, "0").slice(-wanted);
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* How long a hash the options asked for, or zero for none.
|
|
64
|
+
*/
|
|
65
|
+
export function hashLength(asked) {
|
|
66
|
+
if (asked === undefined || asked === false) {
|
|
67
|
+
return 0;
|
|
68
|
+
}
|
|
69
|
+
if (asked === true) {
|
|
70
|
+
return DEFAULT_HASH_LENGTH;
|
|
71
|
+
}
|
|
72
|
+
return Math.min(Math.max(Math.trunc(asked), 0), LONGEST_HASH);
|
|
73
|
+
}
|
|
74
|
+
//# sourceMappingURL=slug-hash.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"slug-hash.js","sourceRoot":"","sources":["../../src/format/slug-hash.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC;AAErC;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,CAAC;AAE9B;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,UAAU,MAAM,CAAC,IAAY,EAAE,MAAc;IACjD,MAAM,KAAK,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;IAC9D,IAAI,IAAI,GAAG,aAAa,CAAC;IACzB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,EAAE,aAAa,CAAC,CAAC;IAC/C,CAAC;IACD,4EAA4E;IAC5E,2EAA2E;IAC3E,IAAI,IAAI,IAAI,KAAK,EAAE,CAAC;IACpB,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;IACtC,IAAI,IAAI,IAAI,KAAK,EAAE,CAAC;IACpB,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;IACtC,IAAI,IAAI,IAAI,KAAK,EAAE,CAAC;IAEpB,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC;IACvE,OAAO,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC;AAC9E,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,KAAmC;IAC5D,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,KAAK,EAAE,CAAC;QAC3C,OAAO,CAAC,CAAC;IACX,CAAC;IACD,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QACnB,OAAO,mBAAmB,CAAC;IAC7B,CAAC;IACD,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC;AAChE,CAAC"}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* How a slug is built.
|
|
3
|
+
*
|
|
4
|
+
* Their own module because every part of slugging reads them and none of them
|
|
5
|
+
* reads the others: the words, the hash and the fitting all take the same
|
|
6
|
+
* options object, and none of the three should have to import the other two to
|
|
7
|
+
* name it.
|
|
8
|
+
*/
|
|
9
|
+
import type { NumberStyle } from "../decode/convert.js";
|
|
10
|
+
import type { SandhiOptions } from "../decode/sandhi.js";
|
|
11
|
+
import type { Locale } from "../script/script.js";
|
|
12
|
+
/**
|
|
13
|
+
* Whether a slug carries its tones.
|
|
14
|
+
*
|
|
15
|
+
* `numbers` writes them as digits — 中文 is `zhong1wen2` — and `none` leaves
|
|
16
|
+
* them off. Tones are on by default because dropping them collides: there are
|
|
17
|
+
* roughly 400 toneless syllables against 1300 toned ones, so a toneless slug
|
|
18
|
+
* runs 树, 书 and 输 together as `shu`. They are not a guarantee, though —
|
|
19
|
+
* 权利 and 权力 are both `quan2li4`, and only {@link SlugOptions.hash} tells
|
|
20
|
+
* those apart.
|
|
21
|
+
*/
|
|
22
|
+
export type SlugTones = "numbers" | "none";
|
|
23
|
+
/**
|
|
24
|
+
* Whether the syllables inside one word are separated.
|
|
25
|
+
*
|
|
26
|
+
* `join` writes a word as a word — 中文 is `zhong1wen2` — which is what 正词法
|
|
27
|
+
* asks for and what a reader expects in a URL. `separate` cuts every syllable
|
|
28
|
+
* apart, `zhong1-wen2`, for a caller matching a slug syllable by syllable.
|
|
29
|
+
*/
|
|
30
|
+
export type SlugSyllables = "join" | "separate";
|
|
31
|
+
/**
|
|
32
|
+
* How ü is written where the alphabet has no room for it.
|
|
33
|
+
*
|
|
34
|
+
* `v` is the input-method convention and keeps 绿 `lv4` apart from 路 `lu4`;
|
|
35
|
+
* `u` is prettier and merges them.
|
|
36
|
+
*/
|
|
37
|
+
export type SlugUmlaut = "v" | "u";
|
|
38
|
+
/**
|
|
39
|
+
* How a slug is built.
|
|
40
|
+
*/
|
|
41
|
+
export interface SlugOptions {
|
|
42
|
+
/** Whether tones are written. Defaults to `numbers`. */
|
|
43
|
+
readonly tones?: SlugTones;
|
|
44
|
+
/**
|
|
45
|
+
* What goes between words. Defaults to `-`.
|
|
46
|
+
*
|
|
47
|
+
* Written as given rather than checked, because the separator is the one
|
|
48
|
+
* place a caller decides what kind of identifier this is: `-` for a URL, `_`
|
|
49
|
+
* for a name in code, and the empty string for a key to match against.
|
|
50
|
+
*/
|
|
51
|
+
readonly separator?: string;
|
|
52
|
+
/** Whether the syllables within a word are separated. Defaults to `join`. */
|
|
53
|
+
readonly syllables?: SlugSyllables;
|
|
54
|
+
/** How ü is written. Defaults to `v`. */
|
|
55
|
+
readonly umlaut?: SlugUmlaut;
|
|
56
|
+
/**
|
|
57
|
+
* What to do with the digits in a text. Defaults to `keep`.
|
|
58
|
+
*
|
|
59
|
+
* The opposite of what a conversion defaults to, and deliberately: a slug for
|
|
60
|
+
* iPhone 15 评测 should be `iphone-15-ping2ce4` rather than
|
|
61
|
+
* `iphone-shi2wu3-ping2ce4`, because the digits are how anyone would look for
|
|
62
|
+
* it. `read` says them, for a caller that wants the text spoken.
|
|
63
|
+
*/
|
|
64
|
+
readonly numbers?: NumberStyle;
|
|
65
|
+
/**
|
|
66
|
+
* A short hash of the source text on the end. Defaults to none.
|
|
67
|
+
*
|
|
68
|
+
* `true` for {@link DEFAULT_HASH_LENGTH} characters, or a length of your own,
|
|
69
|
+
* up to {@link LONGEST_HASH}. See {@link hashOf} for what is hashed and why
|
|
70
|
+
* it is the hanzi rather than the pinyin.
|
|
71
|
+
*
|
|
72
|
+
* Unconditional rather than only where two slugs collide: a function that
|
|
73
|
+
* cannot see the rest of your corpus cannot know that they did. It narrows
|
|
74
|
+
* collisions rather than closing them, and checking the slug you generated
|
|
75
|
+
* against the ones you have stored is still yours to do.
|
|
76
|
+
*/
|
|
77
|
+
readonly hash?: number | boolean;
|
|
78
|
+
/**
|
|
79
|
+
* The longest the slug may be, counting any hash. Defaults to no limit.
|
|
80
|
+
*
|
|
81
|
+
* Cut at a word boundary, so a limit lands between words rather than through
|
|
82
|
+
* the middle of one. A single word longer than the limit is cut where the
|
|
83
|
+
* limit falls, since there is nowhere else to cut it, and the hash is never
|
|
84
|
+
* what gets dropped.
|
|
85
|
+
*/
|
|
86
|
+
readonly maxLength?: number;
|
|
87
|
+
/**
|
|
88
|
+
* What to write where a text slugs to nothing. Defaults to the empty string.
|
|
89
|
+
*
|
|
90
|
+
* 《》! has no letters in it, and neither does an empty text.
|
|
91
|
+
*/
|
|
92
|
+
readonly fallback?: string;
|
|
93
|
+
/** Which reading standard to use. Defaults to `zh-CN`. */
|
|
94
|
+
readonly locale?: Locale;
|
|
95
|
+
/** Which tone sandhi to apply. Defaults to what a conversion applies. */
|
|
96
|
+
readonly sandhi?: SandhiOptions;
|
|
97
|
+
}
|
|
98
|
+
//# sourceMappingURL=slug-options.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"slug-options.d.ts","sourceRoot":"","sources":["../../src/format/slug-options.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAElD;;;;;;;;;GASG;AACH,MAAM,MAAM,SAAS,GAAG,SAAS,GAAG,MAAM,CAAC;AAE3C;;;;;;GAMG;AACH,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,UAAU,CAAC;AAEhD;;;;;GAKG;AACH,MAAM,MAAM,UAAU,GAAG,GAAG,GAAG,GAAG,CAAC;AAEnC;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,wDAAwD;IACxD,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,CAAC;IAC3B;;;;;;OAMG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,6EAA6E;IAC7E,QAAQ,CAAC,SAAS,CAAC,EAAE,aAAa,CAAC;IACnC,yCAAyC;IACzC,QAAQ,CAAC,MAAM,CAAC,EAAE,UAAU,CAAC;IAC7B;;;;;;;OAOG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,WAAW,CAAC;IAC/B;;;;;;;;;;;OAWG;IACH,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IACjC;;;;;;;OAOG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B;;;;OAIG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,0DAA0D;IAC1D,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,yEAAyE;IACzE,QAAQ,CAAC,MAAM,CAAC,EAAE,aAAa,CAAC;CACjC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"slug-options.js","sourceRoot":"","sources":["../../src/format/slug-options.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Writing the words of a slug, before anything is decided about its length.
|
|
3
|
+
*
|
|
4
|
+
* Everything here works in boundaries rather than in the caller's separator,
|
|
5
|
+
* for the reason given at {@link BOUNDARY}; what comes out is a list of words,
|
|
6
|
+
* and `slug.ts` decides how many of them there is room for and what goes
|
|
7
|
+
* between them.
|
|
8
|
+
*/
|
|
9
|
+
import type { ConvertedPiece } from "../decode/convert.js";
|
|
10
|
+
import type { SlugOptions } from "./slug-options.js";
|
|
11
|
+
/**
|
|
12
|
+
* Gather each run of consecutive syllables, which is one word.
|
|
13
|
+
*
|
|
14
|
+
* A conversion puts a piece carrying no syllable between two words — the space,
|
|
15
|
+
* or the hyphen 分词连写 writes inside 干干净净 — so the words are already
|
|
16
|
+
* marked out and need no second look at the text.
|
|
17
|
+
*/
|
|
18
|
+
export declare function slugPieces(pieces: readonly ConvertedPiece[], options: SlugOptions): string;
|
|
19
|
+
/**
|
|
20
|
+
* The words a build produced, with its empty boundaries collapsed away.
|
|
21
|
+
*
|
|
22
|
+
* Everything after this works on the words rather than on the text they will
|
|
23
|
+
* become, so that a limit counts the separator the caller actually chose: a
|
|
24
|
+
* boundary is one character here and could be two, or none, once written.
|
|
25
|
+
*/
|
|
26
|
+
export declare function partsOf(built: string): readonly string[];
|
|
27
|
+
//# sourceMappingURL=slug-words.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"slug-words.d.ts","sourceRoot":"","sources":["../../src/format/slug-words.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAG3D,OAAO,KAAK,EAAE,WAAW,EAAc,MAAM,mBAAmB,CAAC;AAsFjE;;;;;;GAMG;AACH,wBAAgB,UAAU,CACxB,MAAM,EAAE,SAAS,cAAc,EAAE,EACjC,OAAO,EAAE,WAAW,GACnB,MAAM,CAuBR;AAED;;;;;;GAMG;AACH,wBAAgB,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,CAExD"}
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"slug-words.js","sourceRoot":"","sources":["../../src/format/slug-words.ts"],"names":[],"mappings":"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"}
|
package/dist/format/slug.d.ts
CHANGED
|
@@ -1,132 +1,7 @@
|
|
|
1
|
-
import { type NumberStyle } from "../decode/convert.js";
|
|
2
|
-
import type { SandhiOptions } from "../decode/sandhi.js";
|
|
3
1
|
import type { Dictionary } from "../dictionary/dictionary.js";
|
|
4
|
-
import type {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
*
|
|
8
|
-
* `numbers` writes them as digits — 中文 is `zhong1wen2` — and `none` leaves
|
|
9
|
-
* them off. Tones are on by default because dropping them collides: there are
|
|
10
|
-
* roughly 400 toneless syllables against 1300 toned ones, so a toneless slug
|
|
11
|
-
* runs 树, 书 and 输 together as `shu`. They are not a guarantee, though —
|
|
12
|
-
* 权利 and 权力 are both `quan2li4`, and only {@link SlugOptions.hash} tells
|
|
13
|
-
* those apart.
|
|
14
|
-
*/
|
|
15
|
-
export type SlugTones = "numbers" | "none";
|
|
16
|
-
/**
|
|
17
|
-
* Whether the syllables inside one word are separated.
|
|
18
|
-
*
|
|
19
|
-
* `join` writes a word as a word — 中文 is `zhong1wen2` — which is what 正词法
|
|
20
|
-
* asks for and what a reader expects in a URL. `separate` cuts every syllable
|
|
21
|
-
* apart, `zhong1-wen2`, for a caller matching a slug syllable by syllable.
|
|
22
|
-
*/
|
|
23
|
-
export type SlugSyllables = "join" | "separate";
|
|
24
|
-
/**
|
|
25
|
-
* How ü is written where the alphabet has no room for it.
|
|
26
|
-
*
|
|
27
|
-
* `v` is the input-method convention and keeps 绿 `lv4` apart from 路 `lu4`;
|
|
28
|
-
* `u` is prettier and merges them.
|
|
29
|
-
*/
|
|
30
|
-
export type SlugUmlaut = "v" | "u";
|
|
31
|
-
/**
|
|
32
|
-
* How a slug is built.
|
|
33
|
-
*/
|
|
34
|
-
export interface SlugOptions {
|
|
35
|
-
/** Whether tones are written. Defaults to `numbers`. */
|
|
36
|
-
readonly tones?: SlugTones;
|
|
37
|
-
/**
|
|
38
|
-
* What goes between words. Defaults to `-`.
|
|
39
|
-
*
|
|
40
|
-
* Written as given rather than checked, because the separator is the one
|
|
41
|
-
* place a caller decides what kind of identifier this is: `-` for a URL, `_`
|
|
42
|
-
* for a name in code, and the empty string for a key to match against.
|
|
43
|
-
*/
|
|
44
|
-
readonly separator?: string;
|
|
45
|
-
/** Whether the syllables within a word are separated. Defaults to `join`. */
|
|
46
|
-
readonly syllables?: SlugSyllables;
|
|
47
|
-
/** How ü is written. Defaults to `v`. */
|
|
48
|
-
readonly umlaut?: SlugUmlaut;
|
|
49
|
-
/**
|
|
50
|
-
* What to do with the digits in a text. Defaults to `keep`.
|
|
51
|
-
*
|
|
52
|
-
* The opposite of what a conversion defaults to, and deliberately: a slug for
|
|
53
|
-
* iPhone 15 评测 should be `iphone-15-ping2ce4` rather than
|
|
54
|
-
* `iphone-shi2wu3-ping2ce4`, because the digits are how anyone would look for
|
|
55
|
-
* it. `read` says them, for a caller that wants the text spoken.
|
|
56
|
-
*/
|
|
57
|
-
readonly numbers?: NumberStyle;
|
|
58
|
-
/**
|
|
59
|
-
* A short hash of the source text on the end. Defaults to none.
|
|
60
|
-
*
|
|
61
|
-
* `true` for {@link DEFAULT_HASH_LENGTH} characters, or a length of your own,
|
|
62
|
-
* up to {@link LONGEST_HASH}. See {@link hashOf} for what is hashed and why
|
|
63
|
-
* it is the hanzi rather than the pinyin.
|
|
64
|
-
*
|
|
65
|
-
* Unconditional rather than only where two slugs collide: a function that
|
|
66
|
-
* cannot see the rest of your corpus cannot know that they did. It narrows
|
|
67
|
-
* collisions rather than closing them, and checking the slug you generated
|
|
68
|
-
* against the ones you have stored is still yours to do.
|
|
69
|
-
*/
|
|
70
|
-
readonly hash?: number | boolean;
|
|
71
|
-
/**
|
|
72
|
-
* The longest the slug may be, counting any hash. Defaults to no limit.
|
|
73
|
-
*
|
|
74
|
-
* Cut at a word boundary, so a limit lands between words rather than through
|
|
75
|
-
* the middle of one. A single word longer than the limit is cut where the
|
|
76
|
-
* limit falls, since there is nowhere else to cut it, and the hash is never
|
|
77
|
-
* what gets dropped.
|
|
78
|
-
*/
|
|
79
|
-
readonly maxLength?: number;
|
|
80
|
-
/**
|
|
81
|
-
* What to write where a text slugs to nothing. Defaults to the empty string.
|
|
82
|
-
*
|
|
83
|
-
* 《》! has no letters in it, and neither does an empty text.
|
|
84
|
-
*/
|
|
85
|
-
readonly fallback?: string;
|
|
86
|
-
/** Which reading standard to use. Defaults to `zh-CN`. */
|
|
87
|
-
readonly locale?: Locale;
|
|
88
|
-
/** Which tone sandhi to apply. Defaults to what a conversion applies. */
|
|
89
|
-
readonly sandhi?: SandhiOptions;
|
|
90
|
-
}
|
|
91
|
-
/**
|
|
92
|
-
* How many characters {@link SlugOptions.hash} writes when simply asked for.
|
|
93
|
-
*
|
|
94
|
-
* Four base-36 characters is 1.7 million values, which is far more than it
|
|
95
|
-
* looks: two texts only collide when their slugs *and* their hashes match, so
|
|
96
|
-
* the suffix is only ever telling apart the handful of texts sharing one slug,
|
|
97
|
-
* not the whole corpus.
|
|
98
|
-
*/
|
|
99
|
-
export declare const DEFAULT_HASH_LENGTH = 4;
|
|
100
|
-
/**
|
|
101
|
-
* The longest hash there is anything to fill.
|
|
102
|
-
*
|
|
103
|
-
* {@link hashOf} is 32 bits wide, and 36⁷ is the last power of 36 under 2³²:
|
|
104
|
-
* asking for an eighth character would add a place that some values can never
|
|
105
|
-
* reach, which looks like more uniqueness while being none.
|
|
106
|
-
*/
|
|
107
|
-
export declare const LONGEST_HASH = 7;
|
|
108
|
-
/**
|
|
109
|
-
* A 32-bit hash of a text, written in the letters and digits a slug allows.
|
|
110
|
-
*
|
|
111
|
-
* **The source text is what is hashed, not the pinyin.** Two texts needing a
|
|
112
|
-
* hash to tell them apart are, by definition, ones the pinyin already ran
|
|
113
|
-
* together: 权利 and 权力 are both `quan2li4`, and hashing that would give them
|
|
114
|
-
* the same suffix and settle nothing. Hashing the hanzi also means the suffix
|
|
115
|
-
* does not move when a later release reads a word differently, so a slug's tail
|
|
116
|
-
* is the stable half of it.
|
|
117
|
-
*
|
|
118
|
-
* FNV-1a with murmur3's finalizer, which is neither cryptographic nor trying to
|
|
119
|
-
* be: nothing here resists an attacker, and all that is being asked of it is
|
|
120
|
-
* that two texts a reader would call different land on different suffixes.
|
|
121
|
-
* Written out rather than reached for because the package has no runtime
|
|
122
|
-
* dependencies and the core imports no Node built-ins, and `crypto.subtle` —
|
|
123
|
-
* the one hash a browser ships — is asynchronous, which this is not.
|
|
124
|
-
*
|
|
125
|
-
* Normalised first, so that text typed as a decomposed sequence hashes as the
|
|
126
|
-
* same text once composed. 简体 and 繁體 are deliberately *not* folded together:
|
|
127
|
-
* a caller who wrote 头发 and 頭髮 separately meant them separately.
|
|
128
|
-
*/
|
|
129
|
-
export declare function hashOf(text: string, length: number): string;
|
|
2
|
+
import type { SlugOptions } from "./slug-options.js";
|
|
3
|
+
export { DEFAULT_HASH_LENGTH, hashOf, LONGEST_HASH } from "./slug-hash.js";
|
|
4
|
+
export type { SlugOptions, SlugSyllables, SlugTones, SlugUmlaut, } from "./slug-options.js";
|
|
130
5
|
/**
|
|
131
6
|
* Convert hanzi to a URL-safe slug.
|
|
132
7
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"slug.d.ts","sourceRoot":"","sources":["../../src/format/slug.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"slug.d.ts","sourceRoot":"","sources":["../../src/format/slug.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAE9D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGrD,OAAO,EAAE,mBAAmB,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC3E,YAAY,EACV,WAAW,EACX,aAAa,EACb,SAAS,EACT,UAAU,GACX,MAAM,mBAAmB,CAAC;AAiD3B;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,IAAI,CAClB,UAAU,EAAE,UAAU,EACtB,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,WAAgB,GACxB,MAAM,CAuBR"}
|
package/dist/format/slug.js
CHANGED
|
Binary file
|