@kensio/pinyinjs 1.3.0 → 1.5.0

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.
Files changed (72) hide show
  1. package/CHANGELOG.md +119 -3
  2. package/NOTICE +9 -0
  3. package/README.md +59 -14
  4. package/data/core.entries +1 -13
  5. package/data/core.freq +0 -0
  6. package/data/core.keys +1 -13
  7. package/data/full.entries +141 -131
  8. package/data/full.freq +0 -0
  9. package/data/full.keys +167 -157
  10. package/data/manifest.json +24 -9
  11. package/data/script.map +26543 -0
  12. package/data/standard.entries +1 -22
  13. package/data/standard.freq +0 -0
  14. package/data/standard.keys +2 -23
  15. package/dist/cli/arguments.d.ts +31 -1
  16. package/dist/cli/arguments.d.ts.map +1 -1
  17. package/dist/cli/arguments.js +30 -1
  18. package/dist/cli/arguments.js.map +1 -1
  19. package/dist/cli/commands.d.ts +11 -0
  20. package/dist/cli/commands.d.ts.map +1 -1
  21. package/dist/cli/commands.js +55 -2
  22. package/dist/cli/commands.js.map +1 -1
  23. package/dist/cli/environment.d.ts.map +1 -1
  24. package/dist/cli/environment.js +2 -1
  25. package/dist/cli/environment.js.map +1 -1
  26. package/dist/cli/help.d.ts.map +1 -1
  27. package/dist/cli/help.js +5 -0
  28. package/dist/cli/help.js.map +1 -1
  29. package/dist/cli/run.d.ts +8 -0
  30. package/dist/cli/run.d.ts.map +1 -1
  31. package/dist/cli/run.js +11 -1
  32. package/dist/cli/run.js.map +1 -1
  33. package/dist/decode/script.d.ts +108 -0
  34. package/dist/decode/script.d.ts.map +1 -0
  35. package/dist/decode/script.js +195 -0
  36. package/dist/decode/script.js.map +1 -0
  37. package/dist/dictionary/dictionary.d.ts +13 -1
  38. package/dist/dictionary/dictionary.d.ts.map +1 -1
  39. package/dist/dictionary/dictionary.js +18 -4
  40. package/dist/dictionary/dictionary.js.map +1 -1
  41. package/dist/dictionary/merge.d.ts.map +1 -1
  42. package/dist/dictionary/merge.js +23 -3
  43. package/dist/dictionary/merge.js.map +1 -1
  44. package/dist/dictionary/script-tables.d.ts +17 -0
  45. package/dist/dictionary/script-tables.d.ts.map +1 -0
  46. package/dist/dictionary/script-tables.js +275 -0
  47. package/dist/dictionary/script-tables.js.map +1 -0
  48. package/dist/dictionary/source.d.ts +18 -0
  49. package/dist/dictionary/source.d.ts.map +1 -1
  50. package/dist/dictionary/source.js +20 -0
  51. package/dist/dictionary/source.js.map +1 -1
  52. package/dist/format/html.d.ts +8 -0
  53. package/dist/format/html.d.ts.map +1 -1
  54. package/dist/format/html.js +46 -5
  55. package/dist/format/html.js.map +1 -1
  56. package/dist/index.d.ts +8 -1
  57. package/dist/index.d.ts.map +1 -1
  58. package/dist/index.js +5 -1
  59. package/dist/index.js.map +1 -1
  60. package/dist/script/conversion.d.ts +102 -0
  61. package/dist/script/conversion.d.ts.map +1 -0
  62. package/dist/script/conversion.js +194 -0
  63. package/dist/script/conversion.js.map +1 -0
  64. package/dist/script/glyphs.d.ts +95 -0
  65. package/dist/script/glyphs.d.ts.map +1 -0
  66. package/dist/script/glyphs.js +236 -0
  67. package/dist/script/glyphs.js.map +1 -0
  68. package/dist/sources/opencc.d.ts +32 -0
  69. package/dist/sources/opencc.d.ts.map +1 -0
  70. package/dist/sources/opencc.js +50 -0
  71. package/dist/sources/opencc.js.map +1 -0
  72. package/package.json +1 -1
@@ -1,12 +1,49 @@
1
1
  import { isUncertain } from "../decode/confidence.js";
2
2
  import { READING_CHARGE } from "../decode/lattice.js";
3
3
  import { convertPieces, } from "../decode/convert.js";
4
+ import { DEFAULT_LOCALE } from "../script/script.js";
4
5
  import { writeSyllable } from "../syllable/syllable.js";
5
6
  /**
6
7
  * The class every syllable carries, whatever else it carries.
7
8
  */
8
9
  const SYLLABLE_CLASS = "py-syllable";
9
10
  const UNCERTAIN_CLASS = "py-uncertain";
11
+ /**
12
+ * What a syllable declares itself to be, in the reading standard it was read in.
13
+ *
14
+ * A syllable element holds Mandarin written in the Latin alphabet, which is
15
+ * neither the `zh` of the surrounding page nor the `en` of a page that quotes
16
+ * it — and nothing about `yín` on its own says so. The tag is what a screen
17
+ * reader consults before deciding how to pronounce it, and what a browser
18
+ * consults for hyphenation and font selection; without one, `xíng` is read as
19
+ * whatever the page around it claims to be, which is how pinyin ends up
20
+ * spoken as English.
21
+ *
22
+ * The subtags are all registered and mean exactly this: `Latn` for the script,
23
+ * the region for the reading standard, and the `pinyin` variant, whose prefix
24
+ * in the IANA registry is `zh-Latn`. The region is the one distinction the
25
+ * conversion itself makes — 垃圾 is `lājī` under `zh-CN` and `lèsè` under
26
+ * `zh-TW` — so it is read off {@link ConvertOptions.locale} rather than
27
+ * guessed at.
28
+ *
29
+ * Tone notation does not enter into it. `hang2` is pinyin spelt with a tone
30
+ * number, not another romanisation, so it takes the same tag as `háng`.
31
+ *
32
+ * The cost is the tag repeated on every syllable, which is the price of
33
+ * wrapping nothing around the whole conversion. A caller who would rather
34
+ * declare it once can set `lang: false` and put the same tag on a wrapper of
35
+ * their own, which is inherited by everything inside it.
36
+ */
37
+ function languageTag(locale = DEFAULT_LOCALE) {
38
+ switch (locale) {
39
+ case "zh-CN": {
40
+ return "zh-Latn-CN-pinyin";
41
+ }
42
+ case "zh-TW": {
43
+ return "zh-Latn-TW-pinyin";
44
+ }
45
+ }
46
+ }
10
47
  /**
11
48
  * How each character that means something in markup is written as text.
12
49
  */
@@ -51,7 +88,7 @@ function alternativesOf(confidence, options) {
51
88
  * Mark up one piece of a conversion.
52
89
  */
53
90
  function writePiece(piece, options) {
54
- const { toneClasses = true, markUncertain = true } = options;
91
+ const { toneClasses = true, markUncertain = true, lang = true } = options;
55
92
  if (piece.syllable === undefined) {
56
93
  return escape(piece.text);
57
94
  }
@@ -67,10 +104,14 @@ function writePiece(piece, options) {
67
104
  if (alternatives.length > 0) {
68
105
  classes.push(UNCERTAIN_CLASS);
69
106
  }
70
- const attributes = alternatives.length > 0
71
- ? ` data-alternatives="${escape(alternatives.join(" "))}"`
72
- : "";
73
- return `<span class="${classes.join(" ")}"${attributes}>${escape(piece.text)}</span>`;
107
+ const attributes = [`class="${classes.join(" ")}"`];
108
+ if (lang) {
109
+ attributes.push(`lang="${languageTag(options.locale)}"`);
110
+ }
111
+ if (alternatives.length > 0) {
112
+ attributes.push(`data-alternatives="${escape(alternatives.join(" "))}"`);
113
+ }
114
+ return `<span ${attributes.join(" ")}>${escape(piece.text)}</span>`;
74
115
  }
75
116
  /**
76
117
  * Mark up a converted text, one element per syllable.
@@ -1 +1 @@
1
- {"version":3,"file":"html.js","sourceRoot":"","sources":["../../src/format/html.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"html.js","sourceRoot":"","sources":["../../src/format/html.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -25,7 +25,7 @@ export { pairScripts, TraditionalTable } from "./dictionary/traditional.js";
25
25
  export type { ScriptPairing } from "./dictionary/traditional.js";
26
26
  export { Dictionary } from "./dictionary/dictionary.js";
27
27
  export type { WordEntry } from "./dictionary/dictionary.js";
28
- export { fetchSource, loadArtifact, loadDictionary, tierFiles, } from "./dictionary/source.js";
28
+ export { fetchSource, loadArtifact, loadDictionary, loadScriptTables, SCRIPT_FILE, tierFiles, } from "./dictionary/source.js";
29
29
  export type { DictionarySource } from "./dictionary/source.js";
30
30
  export { convert, convertGreedily, convertPieces, joinPieces, } from "./decode/convert.js";
31
31
  export type { ConvertedPiece, ConvertOptions } from "./decode/convert.js";
@@ -38,6 +38,11 @@ export type { HtmlOptions } from "./format/html.js";
38
38
  export { slug } from "./format/slug.js";
39
39
  export type { SlugOptions, SlugSyllables, SlugTones, SlugUmlaut, } from "./format/slug.js";
40
40
  export { decodeGreedily } from "./decode/greedy.js";
41
+ export { isUncertainChoice, SCRIPT_EVIDENCE, SCRIPT_TARGETS, toScript, toScriptPieces, } from "./decode/script.js";
42
+ export type { ScriptChoice, ScriptConversion, ScriptEvidence, ScriptOptions, ScriptTarget, } from "./decode/script.js";
43
+ export { conversionKey, convertCharacter, convertCharacters, formsOf, isAmbiguousCharacter, readConversionKey, readScriptTables, writeScriptTables, } from "./script/conversion.js";
44
+ export type { CharacterConversion, ScriptTables } from "./script/conversion.js";
45
+ export { buildScriptTables } from "./dictionary/script-tables.js";
41
46
  export { allEdges, buildLattice, cutPoints, READING_CHARGE, } from "./decode/lattice.js";
42
47
  export type { Lattice, LatticeEdge } from "./decode/lattice.js";
43
48
  export { isSettled, projectReadings, settledUnits, unitsOf, } from "./decode/locking.js";
@@ -86,6 +91,8 @@ export type { PunctuationStyle } from "./orthography/punctuation.js";
86
91
  export { isSeparableStart, SEPARABLE_VOWELS } from "./syllable/separation.js";
87
92
  export { detectScript, DEFAULT_LOCALE, isLocale, isScript, LOCALES, SCRIPTS, } from "./script/script.js";
88
93
  export type { Locale, Script } from "./script/script.js";
94
+ export { DEFAULT_REGION, isReadingSensitive, REGIONS, toCanonicalGlyph, toCanonicalGlyphs, toRegionalGlyph, toRegionalGlyphs, } from "./script/glyphs.js";
95
+ export type { Region } from "./script/glyphs.js";
89
96
  export { ATTESTED_SYLLABLES, DICTIONARY_SYLLABLES, isAttestedTone, RARE_SYLLABLES, SYLLABLE_TONES, } from "./syllable/inventory.js";
90
97
  export { FINALS, INITIALS, isFinal, isInitial, isPalatalInitial, } from "./syllable/phonology.js";
91
98
  export type { Final, Initial } from "./syllable/phonology.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -16,7 +16,7 @@ export { OVERRIDE_READINGS, READING_OVERRIDES, readOverrideReading, } from "./di
16
16
  export { readAlignedReading, readDictionaryReading, } from "./dictionary/reading.js";
17
17
  export { pairScripts, TraditionalTable } from "./dictionary/traditional.js";
18
18
  export { Dictionary } from "./dictionary/dictionary.js";
19
- export { fetchSource, loadArtifact, loadDictionary, tierFiles, } from "./dictionary/source.js";
19
+ export { fetchSource, loadArtifact, loadDictionary, loadScriptTables, SCRIPT_FILE, tierFiles, } from "./dictionary/source.js";
20
20
  export { convert, convertGreedily, convertPieces, joinPieces, } from "./decode/convert.js";
21
21
  export { isUncertain, scoreReadings } from "./decode/confidence.js";
22
22
  export { decodeReadings, decodeRun, decodeRunScored, decodeSpacing, } from "./decode/decode.js";
@@ -24,6 +24,9 @@ export { convertToHtml, toHtml } from "./format/html.js";
24
24
  export { convertToWadeGiles, toTranscription, } from "./format/transcription.js";
25
25
  export { slug } from "./format/slug.js";
26
26
  export { decodeGreedily } from "./decode/greedy.js";
27
+ export { isUncertainChoice, SCRIPT_EVIDENCE, SCRIPT_TARGETS, toScript, toScriptPieces, } from "./decode/script.js";
28
+ export { conversionKey, convertCharacter, convertCharacters, formsOf, isAmbiguousCharacter, readConversionKey, readScriptTables, writeScriptTables, } from "./script/conversion.js";
29
+ export { buildScriptTables } from "./dictionary/script-tables.js";
27
30
  export { allEdges, buildLattice, cutPoints, READING_CHARGE, } from "./decode/lattice.js";
28
31
  export { isSettled, projectReadings, settledUnits, unitsOf, } from "./decode/locking.js";
29
32
  export { applyEdgeRules, tagOf, wordEndingAt, wordStartingAt, } from "./decode/rules.js";
@@ -51,6 +54,7 @@ export { rewriteParts } from "./orthography/parts.js";
51
54
  export { toLatinPunctuation, toLatinPunctuationParts, } from "./orthography/punctuation.js";
52
55
  export { isSeparableStart, SEPARABLE_VOWELS } from "./syllable/separation.js";
53
56
  export { detectScript, DEFAULT_LOCALE, isLocale, isScript, LOCALES, SCRIPTS, } from "./script/script.js";
57
+ export { DEFAULT_REGION, isReadingSensitive, REGIONS, toCanonicalGlyph, toCanonicalGlyphs, toRegionalGlyph, toRegionalGlyphs, } from "./script/glyphs.js";
54
58
  export { ATTESTED_SYLLABLES, DICTIONARY_SYLLABLES, isAttestedTone, RARE_SYLLABLES, SYLLABLE_TONES, } from "./syllable/inventory.js";
55
59
  export { FINALS, INITIALS, isFinal, isInitial, isPalatalInitial, } from "./syllable/phonology.js";
56
60
  export { readWord, splitSyllables } from "./syllable/split.js";
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,102 @@
1
+ import type { Syllable } from "../syllable/syllable.js";
2
+ /**
3
+ * How one character converts into the other script.
4
+ *
5
+ * A default, plus the readings that take a different form. The readings are
6
+ * what make this more than a lookup table: 发 is 發 by default and 髮 when read
7
+ * `fà`, and no table without the reading can tell 头发 from 出发.
8
+ */
9
+ export interface CharacterConversion {
10
+ /** The form taken when no reading is known, or none of them applies. */
11
+ readonly to: string;
12
+ /** Forms taken at particular readings, keyed by numbered pinyin. */
13
+ readonly byReading?: ReadonlyMap<string, string>;
14
+ /**
15
+ * Other forms this character is commonly written as, with no reading to tell
16
+ * them apart.
17
+ *
18
+ * These never change what a conversion *does* — the default or a reading
19
+ * decides that — but they are what makes it honest. 面 and 麵 read alike, so
20
+ * only a word settles which is meant; without these the conversion would
21
+ * report 面粉 as locked while 下面 came out differently, claiming certainty it
22
+ * does not have. Rare variants are excluded, or every 和 would be doubtful on
23
+ * account of 咊.
24
+ */
25
+ readonly also?: readonly string[];
26
+ }
27
+ /**
28
+ * Everything needed to convert between the scripts, in either direction.
29
+ *
30
+ * Words come before characters. A word the table names is converted as a whole,
31
+ * because the evidence for a whole word is direct — some source wrote it that
32
+ * way — whereas a character conversion is an inference from how that character
33
+ * behaved elsewhere. Only words the character tables get *wrong* are stored, so
34
+ * the word tables are exception lists rather than dictionaries.
35
+ */
36
+ export interface ScriptTables {
37
+ readonly toTraditional: ReadonlyMap<string, CharacterConversion>;
38
+ readonly toSimplified: ReadonlyMap<string, CharacterConversion>;
39
+ /** 简体 words whose 繁體 form the characters would get wrong. */
40
+ readonly traditionalWords: ReadonlyMap<string, string>;
41
+ /** 繁體 words whose 简体 form the characters would get wrong. */
42
+ readonly simplifiedWords: ReadonlyMap<string, string>;
43
+ /** Characters written only in 简体, for `detectScript`. */
44
+ readonly hansOnly: ReadonlySet<string>;
45
+ /** Characters written only in 繁體, for `detectScript`. */
46
+ readonly hantOnly: ReadonlySet<string>;
47
+ }
48
+ /**
49
+ * The key a reading is stored under: numbered pinyin, or the empty string.
50
+ *
51
+ * 儿化 is dropped because the r suffix never bears on which variant is meant,
52
+ * and a toneless syllable keys separately from a toned one rather than matching
53
+ * it, since a source that wrote no tone is not evidence about a particular one.
54
+ */
55
+ export declare function conversionKey(syllable: Syllable | undefined): string;
56
+ /**
57
+ * The form a character takes, given the syllable it is read as.
58
+ */
59
+ export declare function convertCharacter(table: ReadonlyMap<string, CharacterConversion>, character: string, syllable: Syllable | undefined): string;
60
+ /**
61
+ * Whether a character's conversion depends on how it is read.
62
+ *
63
+ * True where the table holds a reading that disagrees with the default, which
64
+ * is exactly where a conversion made without a reading is a guess.
65
+ */
66
+ export declare function isAmbiguousCharacter(table: ReadonlyMap<string, CharacterConversion>, character: string): boolean;
67
+ /**
68
+ * Every form a character is known to take, likeliest first.
69
+ */
70
+ export declare function formsOf(conversion: CharacterConversion | undefined): readonly string[];
71
+ /**
72
+ * Convert a word character by character, using the readings where it has them.
73
+ *
74
+ * Readings line up with characters by position. A position with no reading
75
+ * behind it takes the default, which is the right answer for the overwhelming
76
+ * majority and a flagged guess for the rest.
77
+ */
78
+ export declare function convertCharacters(table: ReadonlyMap<string, CharacterConversion>, word: string, readings?: readonly (Syllable | undefined)[]): string;
79
+ /**
80
+ * Write the tables as the artifact text.
81
+ *
82
+ * One line per mapping, tagged by which table it belongs to, so the whole of
83
+ * script conversion is a single file to fetch and a single scan to read. The
84
+ * format is the same shape as the dictionary's: separators rather than syntax,
85
+ * so that reading it back is a split rather than a parse.
86
+ */
87
+ export declare function writeScriptTables(tables: ScriptTables): string;
88
+ /**
89
+ * Read the tables back from the artifact text.
90
+ *
91
+ * Unknown tags are skipped rather than rejected, so that a future table can be
92
+ * added without an older reader refusing the file outright.
93
+ */
94
+ export declare function readScriptTables(text: string): ScriptTables;
95
+ /**
96
+ * Parse a stored reading key back into a syllable.
97
+ *
98
+ * Used by the round-trip check rather than by conversion, which keys on the
99
+ * written form directly and never needs the syllable back.
100
+ */
101
+ export declare function readConversionKey(key: string): Syllable | undefined;
102
+ //# sourceMappingURL=conversion.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conversion.d.ts","sourceRoot":"","sources":["../../src/script/conversion.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAIxD;;;;;;GAMG;AACH,MAAM,WAAW,mBAAmB;IAClC,wEAAwE;IACxE,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,oEAAoE;IACpE,QAAQ,CAAC,SAAS,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjD;;;;;;;;;;OAUG;IACH,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CACnC;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,aAAa,EAAE,WAAW,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;IACjE,QAAQ,CAAC,YAAY,EAAE,WAAW,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;IAChE,6DAA6D;IAC7D,QAAQ,CAAC,gBAAgB,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACvD,6DAA6D;IAC7D,QAAQ,CAAC,eAAe,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtD,yDAAyD;IACzD,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACvC,yDAAyD;IACzD,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;CACxC;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,QAAQ,GAAG,SAAS,GAAG,MAAM,CAMpE;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,WAAW,CAAC,MAAM,EAAE,mBAAmB,CAAC,EAC/C,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,QAAQ,GAAG,SAAS,GAC7B,MAAM,CAOR;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,WAAW,CAAC,MAAM,EAAE,mBAAmB,CAAC,EAC/C,SAAS,EAAE,MAAM,GAChB,OAAO,CAQT;AAED;;GAEG;AACH,wBAAgB,OAAO,CACrB,UAAU,EAAE,mBAAmB,GAAG,SAAS,GAC1C,SAAS,MAAM,EAAE,CAWnB;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,WAAW,CAAC,MAAM,EAAE,mBAAmB,CAAC,EAC/C,IAAI,EAAE,MAAM,EACZ,QAAQ,GAAE,SAAS,CAAC,QAAQ,GAAG,SAAS,CAAC,EAAO,GAC/C,MAAM,CAMR;AA4CD;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,CAkB9D;AAyBD;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,CA0C3D;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS,CAEnE"}
@@ -0,0 +1,194 @@
1
+ import { readSyllable, writeSyllable } from "../syllable/syllable.js";
2
+ import { toCharacters } from "./characters.js";
3
+ /**
4
+ * The key a reading is stored under: numbered pinyin, or the empty string.
5
+ *
6
+ * 儿化 is dropped because the r suffix never bears on which variant is meant,
7
+ * and a toneless syllable keys separately from a toned one rather than matching
8
+ * it, since a source that wrote no tone is not evidence about a particular one.
9
+ */
10
+ export function conversionKey(syllable) {
11
+ if (syllable === undefined) {
12
+ return "";
13
+ }
14
+ // 儿化 is dropped by writing the syllable without it.
15
+ return writeSyllable({ ...syllable, erhua: false }, "numbers");
16
+ }
17
+ /**
18
+ * The form a character takes, given the syllable it is read as.
19
+ */
20
+ export function convertCharacter(table, character, syllable) {
21
+ const conversion = table.get(character);
22
+ if (conversion === undefined) {
23
+ return character;
24
+ }
25
+ const key = conversionKey(syllable);
26
+ return conversion.byReading?.get(key) ?? conversion.to;
27
+ }
28
+ /**
29
+ * Whether a character's conversion depends on how it is read.
30
+ *
31
+ * True where the table holds a reading that disagrees with the default, which
32
+ * is exactly where a conversion made without a reading is a guess.
33
+ */
34
+ export function isAmbiguousCharacter(table, character) {
35
+ const conversion = table.get(character);
36
+ if (conversion === undefined) {
37
+ return false;
38
+ }
39
+ return ((conversion.byReading?.size ?? 0) > 0 || (conversion.also?.length ?? 0) > 0);
40
+ }
41
+ /**
42
+ * Every form a character is known to take, likeliest first.
43
+ */
44
+ export function formsOf(conversion) {
45
+ if (conversion === undefined) {
46
+ return [];
47
+ }
48
+ return [
49
+ ...new Set([
50
+ conversion.to,
51
+ ...(conversion.byReading?.values() ?? []),
52
+ ...(conversion.also ?? []),
53
+ ]),
54
+ ];
55
+ }
56
+ /**
57
+ * Convert a word character by character, using the readings where it has them.
58
+ *
59
+ * Readings line up with characters by position. A position with no reading
60
+ * behind it takes the default, which is the right answer for the overwhelming
61
+ * majority and a flagged guess for the rest.
62
+ */
63
+ export function convertCharacters(table, word, readings = []) {
64
+ let converted = "";
65
+ for (const [at, character] of toCharacters(word).entries()) {
66
+ converted += convertCharacter(table, character, readings[at]);
67
+ }
68
+ return converted;
69
+ }
70
+ const COLUMN = "\t";
71
+ const LINE = "\n";
72
+ const READING = ",";
73
+ const READING_FORM = "=";
74
+ /**
75
+ * Line tags, one per table, so that all six ship as one fetchable file.
76
+ */
77
+ const TAGS = {
78
+ toTraditional: "t",
79
+ toSimplified: "s",
80
+ traditionalWord: "w",
81
+ simplifiedWord: "x",
82
+ hansOnly: "h",
83
+ hantOnly: "H",
84
+ };
85
+ /**
86
+ * Write one character table's lines.
87
+ */
88
+ function writeCharacterTable(tag, table) {
89
+ return [...table].map(([character, conversion]) => {
90
+ const readings = [...(conversion.byReading ?? [])]
91
+ .map(([key, form]) => `${key}${READING_FORM}${form}`)
92
+ .join(READING);
93
+ const also = (conversion.also ?? []).join("");
94
+ const columns = [tag, character, conversion.to, readings, also];
95
+ // Trailing empty columns say nothing and are dropped, which is most lines:
96
+ // the common case is a character with one form and no reading to condition.
97
+ while (columns.at(-1) === "") {
98
+ columns.pop();
99
+ }
100
+ return columns.join(COLUMN);
101
+ });
102
+ }
103
+ /**
104
+ * Write the tables as the artifact text.
105
+ *
106
+ * One line per mapping, tagged by which table it belongs to, so the whole of
107
+ * script conversion is a single file to fetch and a single scan to read. The
108
+ * format is the same shape as the dictionary's: separators rather than syntax,
109
+ * so that reading it back is a split rather than a parse.
110
+ */
111
+ export function writeScriptTables(tables) {
112
+ return [
113
+ ...writeCharacterTable(TAGS.toTraditional, tables.toTraditional),
114
+ ...writeCharacterTable(TAGS.toSimplified, tables.toSimplified),
115
+ ...[...tables.traditionalWords].map(([hans, hant]) => [TAGS.traditionalWord, hans, hant].join(COLUMN)),
116
+ ...[...tables.simplifiedWords].map(([hant, hans]) => [TAGS.simplifiedWord, hant, hans].join(COLUMN)),
117
+ ...[...tables.hansOnly].map((character) => [TAGS.hansOnly, character].join(COLUMN)),
118
+ ...[...tables.hantOnly].map((character) => [TAGS.hantOnly, character].join(COLUMN)),
119
+ "",
120
+ ].join(LINE);
121
+ }
122
+ /**
123
+ * Read one character table line into its conversion.
124
+ */
125
+ function readConversion(to, readings, also) {
126
+ const pairs = readings === "" ? [] : readings.split(READING);
127
+ const byReading = new Map();
128
+ for (const pair of pairs) {
129
+ const [key = "", form = ""] = pair.split(READING_FORM);
130
+ if (form !== "") {
131
+ byReading.set(key, form);
132
+ }
133
+ }
134
+ return {
135
+ to,
136
+ ...(byReading.size > 0 && { byReading }),
137
+ ...(also !== "" && { also: toCharacters(also) }),
138
+ };
139
+ }
140
+ /**
141
+ * Read the tables back from the artifact text.
142
+ *
143
+ * Unknown tags are skipped rather than rejected, so that a future table can be
144
+ * added without an older reader refusing the file outright.
145
+ */
146
+ export function readScriptTables(text) {
147
+ const toTraditional = new Map();
148
+ const toSimplified = new Map();
149
+ const traditionalWords = new Map();
150
+ const simplifiedWords = new Map();
151
+ const hansOnly = new Set();
152
+ const hantOnly = new Set();
153
+ const characterTables = new Map([
154
+ [TAGS.toTraditional, toTraditional],
155
+ [TAGS.toSimplified, toSimplified],
156
+ ]);
157
+ const wordTables = new Map([
158
+ [TAGS.traditionalWord, traditionalWords],
159
+ [TAGS.simplifiedWord, simplifiedWords],
160
+ ]);
161
+ const characterSets = new Map([
162
+ [TAGS.hansOnly, hansOnly],
163
+ [TAGS.hantOnly, hantOnly],
164
+ ]);
165
+ for (const line of text.split(LINE)) {
166
+ const [tag = "", from = "", to = "", readings = "", also = ""] = line.split(COLUMN);
167
+ if (from === "") {
168
+ continue;
169
+ }
170
+ // Dispatching on a map rather than a switch keeps an unknown tag a no-op,
171
+ // so a file written by a later version reads as much as this one knows.
172
+ characterTables.get(tag)?.set(from, readConversion(to, readings, also));
173
+ wordTables.get(tag)?.set(from, to);
174
+ characterSets.get(tag)?.add(from);
175
+ }
176
+ return {
177
+ toTraditional,
178
+ toSimplified,
179
+ traditionalWords,
180
+ simplifiedWords,
181
+ hansOnly,
182
+ hantOnly,
183
+ };
184
+ }
185
+ /**
186
+ * Parse a stored reading key back into a syllable.
187
+ *
188
+ * Used by the round-trip check rather than by conversion, which keys on the
189
+ * written form directly and never needs the syllable back.
190
+ */
191
+ export function readConversionKey(key) {
192
+ return key === "" ? undefined : readSyllable(key);
193
+ }
194
+ //# sourceMappingURL=conversion.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conversion.js","sourceRoot":"","sources":["../../src/script/conversion.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,95 @@
1
+ import type { Syllable } from "../syllable/syllable.js";
2
+ /**
3
+ * The regional 繁體 orthographies this package writes.
4
+ *
5
+ * A third axis, independent of the script and locale axes in `script.ts`:
6
+ * Taiwan and Hong Kong write the same characters with the same readings, and
7
+ * disagree about the standard form of 58 of them. See SCRIPTS-AND-LOCALES.md.
8
+ */
9
+ export declare const REGIONS: readonly ["TW", "HK"];
10
+ /**
11
+ * A regional 繁體 orthography: `TW` for 教育部標準字體 or `HK` for 常用字字形表.
12
+ *
13
+ * Only meaningful under `Hant`. Singapore and Malaysia differ from the PRC
14
+ * lexically rather than orthographically, so there is no second 简体 standard.
15
+ */
16
+ export type Region = (typeof REGIONS)[number];
17
+ /**
18
+ * The 繁體 orthography written when the caller does not name one.
19
+ *
20
+ * There is no region-free 繁體 to fall back on: converting character by
21
+ * character from OpenCC's baseline yields 爲, 衆, 峯, 羣, 裏, 麪, which are the
22
+ * Hong Kong forms. Declining to choose would mean choosing Hong Kong silently,
23
+ * so a region is always applied and always named.
24
+ *
25
+ * Taiwan wins it on population, and more to the point because it is the one
26
+ * polity where 繁體 orthography and Mandarin as the spoken standard coincide —
27
+ * which is the intersection a pinyin package serves.
28
+ */
29
+ export declare const DEFAULT_REGION = "TW";
30
+ /**
31
+ * Variant 繁體 forms mapped to the canonical form, as a table.
32
+ *
33
+ * Exported so the data pipeline can recompute it from OpenCC and fail the build
34
+ * if the two have drifted — these tables are code rather than an artifact, so
35
+ * nothing else would notice an upstream release that moved a character.
36
+ */
37
+ export declare const CANONICAL_FORMS: ReadonlyMap<string, string>;
38
+ /**
39
+ * Canonical 繁體 forms mapped to Hong Kong's, as a table. Verified like
40
+ * {@link CANONICAL_FORMS}.
41
+ */
42
+ export declare const HONG_KONG_FORMS: ReadonlyMap<string, string>;
43
+ /**
44
+ * Whether a character's regional form depends on how it is read.
45
+ *
46
+ * Exposed so that a conversion can report the choice as uncertain when it had
47
+ * no reading to go on, rather than presenting a default as though it were
48
+ * settled.
49
+ */
50
+ export declare function isReadingSensitive(character: string): boolean;
51
+ /**
52
+ * Normalise one 繁體 character to the canonical form the dictionary stores.
53
+ *
54
+ * Characters no table knows are returned unchanged, which is the right answer
55
+ * for nearly all of them: the two standards agree about everything except the
56
+ * 58 characters {@link HONG_KONG_FORMS} lists.
57
+ */
58
+ export declare function toCanonicalGlyph(character: string): string;
59
+ /**
60
+ * Normalise a whole 繁體 text to the canonical forms the dictionary stores.
61
+ *
62
+ * Safe to run over 简体 or mixed text, but only because the table is built to
63
+ * make it so: every variant that is also a current 简体 character is excluded,
64
+ * since many Hong Kong forms and mainland simplified forms are the same
65
+ * character. See {@link CANONICAL_FORMS}.
66
+ *
67
+ * Returns the original string when nothing needs normalising, which is nearly
68
+ * always. This sits on the dictionary lookup path, where it is called once per
69
+ * candidate word at every position of a run, so the common case has to cost a
70
+ * scan rather than an allocation.
71
+ *
72
+ * The mapping is one character to one character, which is what makes it safe
73
+ * here: normalising a prefix gives the same answer as taking the prefix of the
74
+ * normalised text, so a lattice scan that prunes on prefixes cannot disagree
75
+ * with the lookup that follows it.
76
+ */
77
+ export declare function toCanonicalGlyphs(text: string): string;
78
+ /**
79
+ * Write one canonical character in a region's orthography.
80
+ *
81
+ * The syllable is used only where the character is one the two standards split
82
+ * on a reading; everywhere else it is ignored, because a glyph choice never
83
+ * changes how a character is read.
84
+ */
85
+ export declare function toRegionalGlyph(character: string, region: Region, syllable?: Syllable): string;
86
+ /**
87
+ * Write a whole canonical text in a region's orthography.
88
+ *
89
+ * Readings are matched to characters by position, so a caller with a decoded
90
+ * reading can pass it and a caller without one can leave it out. A position
91
+ * with no syllable behind it falls back to the region's default form, which is
92
+ * what {@link isReadingSensitive} lets the caller flag.
93
+ */
94
+ export declare function toRegionalGlyphs(text: string, region: Region, readings?: readonly (Syllable | undefined)[]): string;
95
+ //# sourceMappingURL=glyphs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"glyphs.d.ts","sourceRoot":"","sources":["../../src/script/glyphs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAGxD;;;;;;GAMG;AACH,eAAO,MAAM,OAAO,YAAI,IAAI,EAAE,IAAI,CAAU,CAAC;AAE7C;;;;;GAKG;AACH,MAAM,MAAM,MAAM,GAAG,CAAC,OAAO,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC;AAE9C;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,cAAc,OAAwB,CAAC;AAiFpD;;;;;;GAMG;AACH,eAAO,MAAM,eAAe,6BAA6B,CAAC;AAE1D;;;GAGG;AACH,eAAO,MAAM,eAAe,6BAA6B,CAAC;AAsC1D;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAE7D;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAE1D;AAcD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAStD;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAC7B,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,QAAQ,CAAC,EAAE,QAAQ,GAClB,MAAM,CAUR;AAED;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EACd,QAAQ,GAAE,SAAS,CAAC,QAAQ,GAAG,SAAS,CAAC,EAAO,GAC/C,MAAM,CASR"}