@kensio/pinyinjs 1.9.9 → 1.10.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.
- package/NOTICE +7 -0
- package/README.md +27 -8
- package/data/core.entries +21 -21
- package/data/full.entries +17396 -17396
- package/data/manifest.json +9 -7
- package/data/standard.entries +3625 -3625
- package/dist/cli/lookup-commands.d.ts.map +1 -1
- package/dist/cli/lookup-commands.js +2 -44
- package/dist/cli/lookup-commands.js.map +1 -1
- package/dist/cli/lookup-entry.d.ts +12 -0
- package/dist/cli/lookup-entry.d.ts.map +1 -0
- package/dist/cli/lookup-entry.js +55 -0
- package/dist/cli/lookup-entry.js.map +1 -0
- package/dist/dictionary/artifact-format.d.ts +20 -1
- package/dist/dictionary/artifact-format.d.ts.map +1 -1
- package/dist/dictionary/artifact-format.js +37 -0
- package/dist/dictionary/artifact-format.js.map +1 -1
- package/dist/dictionary/artifact-read.d.ts.map +1 -1
- package/dist/dictionary/artifact-read.js +3 -7
- package/dist/dictionary/artifact-read.js.map +1 -1
- package/dist/dictionary/artifact.d.ts.map +1 -1
- package/dist/dictionary/artifact.js +2 -2
- package/dist/dictionary/artifact.js.map +1 -1
- package/dist/dictionary/build-assertions.d.ts.map +1 -1
- package/dist/dictionary/build-assertions.js +2 -0
- package/dist/dictionary/build-assertions.js.map +1 -1
- package/dist/dictionary/cedict-senses.d.ts +4 -3
- package/dist/dictionary/cedict-senses.d.ts.map +1 -1
- package/dist/dictionary/cedict-senses.js +7 -4
- package/dist/dictionary/cedict-senses.js.map +1 -1
- package/dist/dictionary/dictionary-entry.d.ts +8 -0
- package/dist/dictionary/dictionary-entry.d.ts.map +1 -1
- package/dist/dictionary/dictionary-entry.js +3 -1
- package/dist/dictionary/dictionary-entry.js.map +1 -1
- package/dist/dictionary/entry-invariants.d.ts +6 -0
- package/dist/dictionary/entry-invariants.d.ts.map +1 -1
- package/dist/dictionary/entry-invariants.js +0 -27
- package/dist/dictionary/entry-invariants.js.map +1 -1
- package/dist/dictionary/entry.d.ts +8 -0
- package/dist/dictionary/entry.d.ts.map +1 -1
- package/dist/dictionary/entry.js.map +1 -1
- package/dist/dictionary/locale-invariants.d.ts +3 -0
- package/dist/dictionary/locale-invariants.d.ts.map +1 -0
- package/dist/dictionary/locale-invariants.js +52 -0
- package/dist/dictionary/locale-invariants.js.map +1 -0
- package/dist/dictionary/locale.d.ts +5 -1
- package/dist/dictionary/locale.d.ts.map +1 -1
- package/dist/dictionary/locale.js +6 -1
- package/dist/dictionary/locale.js.map +1 -1
- package/dist/dictionary/merge-types.d.ts +10 -0
- package/dist/dictionary/merge-types.d.ts.map +1 -1
- package/dist/dictionary/merge-types.js +2 -0
- package/dist/dictionary/merge-types.js.map +1 -1
- package/dist/dictionary/merge-word.js +7 -6
- package/dist/dictionary/merge-word.js.map +1 -1
- package/dist/dictionary/merge.d.ts.map +1 -1
- package/dist/dictionary/merge.js +5 -1
- package/dist/dictionary/merge.js.map +1 -1
- package/dist/dictionary/standard-readings.d.ts +42 -0
- package/dist/dictionary/standard-readings.d.ts.map +1 -0
- package/dist/dictionary/standard-readings.js +113 -0
- package/dist/dictionary/standard-readings.js.map +1 -0
- package/dist/dictionary/taiwan-notes.d.ts +13 -0
- package/dist/dictionary/taiwan-notes.d.ts.map +1 -0
- package/dist/dictionary/taiwan-notes.js +26 -0
- package/dist/dictionary/taiwan-notes.js.map +1 -0
- package/dist/dictionary/taiwan-reading.d.ts +22 -2
- package/dist/dictionary/taiwan-reading.d.ts.map +1 -1
- package/dist/dictionary/taiwan-reading.js +94 -25
- package/dist/dictionary/taiwan-reading.js.map +1 -1
- package/dist/dictionary/taiwan-settle.d.ts +22 -0
- package/dist/dictionary/taiwan-settle.d.ts.map +1 -0
- package/dist/dictionary/taiwan-settle.js +47 -0
- package/dist/dictionary/taiwan-settle.js.map +1 -0
- package/dist/search/match-readings.d.ts +2 -2
- package/dist/search/match-readings.d.ts.map +1 -1
- package/dist/search/match-readings.js +12 -7
- package/dist/search/match-readings.js.map +1 -1
- package/dist/sources/moe-workbook.d.ts +10 -0
- package/dist/sources/moe-workbook.d.ts.map +1 -0
- package/dist/sources/moe-workbook.js +89 -0
- package/dist/sources/moe-workbook.js.map +1 -0
- package/dist/sources/moe.d.ts +58 -0
- package/dist/sources/moe.d.ts.map +1 -0
- package/dist/sources/moe.js +79 -0
- package/dist/sources/moe.js.map +1 -0
- package/dist/sources/xlsx.d.ts +20 -0
- package/dist/sources/xlsx.d.ts.map +1 -0
- package/dist/sources/xlsx.js +78 -0
- package/dist/sources/xlsx.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"locale-invariants.d.ts","sourceRoot":"","sources":["../../src/dictionary/locale-invariants.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,cAAc,EAAmB,MAAM,uBAAuB,CAAC;AAE7E,eAAO,MAAM,iBAAiB,EAAE,SAAS,cAAc,EAgDtD,CAAC"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* What must hold of the zh-TW readings.
|
|
3
|
+
*
|
|
4
|
+
* The locale is a delta assembled from three sources and a composition pass,
|
|
5
|
+
* so a refresh of any of them can move it without anything else noticing.
|
|
6
|
+
*/
|
|
7
|
+
import { writeSyllable } from "../syllable/syllable.js";
|
|
8
|
+
export const LOCALE_INVARIANTS = [
|
|
9
|
+
{
|
|
10
|
+
// The gap composeLocaleDeltas closes, and the two ways it must not close
|
|
11
|
+
// it. 運行狀況 contains the marked word 行狀 and cuts elsewhere; 一个个地
|
|
12
|
+
// ends in a character whose delta is a different sense of 地 entirely.
|
|
13
|
+
description: "垃圾分類 inherits 垃圾's 國語 reading, 運行狀況 inherits nothing",
|
|
14
|
+
check: (dictionary) => {
|
|
15
|
+
const taiwan = (word) => dictionary
|
|
16
|
+
.get(word)
|
|
17
|
+
?.readings.tw?.map((syllable) => writeSyllable(syllable))
|
|
18
|
+
.join(" ");
|
|
19
|
+
const composed = taiwan("垃圾分类");
|
|
20
|
+
if (composed !== "lè sè fēn lèi") {
|
|
21
|
+
return `垃圾分类 reads ${composed ?? "nothing"} in zh-TW, expected lè sè fēn lèi`;
|
|
22
|
+
}
|
|
23
|
+
const wrong = ["运行状况", "一个个地", "相亲相爱"].filter((word) => taiwan(word) !== undefined);
|
|
24
|
+
return wrong.length === 0
|
|
25
|
+
? undefined
|
|
26
|
+
: `composed a zh-TW reading for: ${wrong.join(", ")}`;
|
|
27
|
+
},
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
// 教育部's dictionaries are where these come from. CC-CEDICT marks none of
|
|
31
|
+
// the words, and its note on 和 is the conjunction's alone.
|
|
32
|
+
description: "星期 and 头发 read as 教育部 reads them, 和 keeps hé",
|
|
33
|
+
check: (dictionary) => {
|
|
34
|
+
const taiwan = (word) => dictionary
|
|
35
|
+
.get(word)
|
|
36
|
+
?.readings.tw?.map((syllable) => writeSyllable(syllable))
|
|
37
|
+
.join(" ");
|
|
38
|
+
const wrong = [
|
|
39
|
+
["星期", "xīng qí"],
|
|
40
|
+
["头发", "tóu fǎ"],
|
|
41
|
+
].filter(([word, expected]) => taiwan(word ?? "") !== expected);
|
|
42
|
+
if (wrong.length > 0) {
|
|
43
|
+
return `zh-TW reads ${wrong.map(([word]) => `${word ?? ""} as ${taiwan(word ?? "") ?? "nothing"}`).join(", ")}`;
|
|
44
|
+
}
|
|
45
|
+
const character = taiwan("和");
|
|
46
|
+
return character === undefined
|
|
47
|
+
? undefined
|
|
48
|
+
: `和 reads ${character} in zh-TW, expected no delta`;
|
|
49
|
+
},
|
|
50
|
+
},
|
|
51
|
+
];
|
|
52
|
+
//# sourceMappingURL=locale-invariants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"locale-invariants.js","sourceRoot":"","sources":["../../src/dictionary/locale-invariants.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAGxD,MAAM,CAAC,MAAM,iBAAiB,GAA8B;IAC1D;QACE,yEAAyE;QACzE,gEAAgE;QAChE,sEAAsE;QACtE,WAAW,EACT,sDAAsD;QACxD,KAAK,EAAE,CAAC,UAA2B,EAAsB,EAAE;YACzD,MAAM,MAAM,GAAG,CAAC,IAAY,EAAsB,EAAE,CAClD,UAAU;iBACP,GAAG,CAAC,IAAI,CAAC;gBACV,EAAE,QAAQ,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;iBACxD,IAAI,CAAC,GAAG,CAAC,CAAC;YACf,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;YAChC,IAAI,QAAQ,KAAK,eAAe,EAAE,CAAC;gBACjC,OAAO,cAAc,QAAQ,IAAI,SAAS,mCAAmC,CAAC;YAChF,CAAC;YACD,MAAM,KAAK,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,MAAM,CAC3C,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,SAAS,CACrC,CAAC;YACF,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;gBACvB,CAAC,CAAC,SAAS;gBACX,CAAC,CAAC,iCAAiC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAC1D,CAAC;KACF;IACD;QACE,wEAAwE;QACxE,2DAA2D;QAC3D,WAAW,EAAE,8CAA8C;QAC3D,KAAK,EAAE,CAAC,UAA2B,EAAsB,EAAE;YACzD,MAAM,MAAM,GAAG,CAAC,IAAY,EAAsB,EAAE,CAClD,UAAU;iBACP,GAAG,CAAC,IAAI,CAAC;gBACV,EAAE,QAAQ,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;iBACxD,IAAI,CAAC,GAAG,CAAC,CAAC;YACf,MAAM,KAAK,GAAG;gBACZ,CAAC,IAAI,EAAE,SAAS,CAAC;gBACjB,CAAC,IAAI,EAAE,QAAQ,CAAC;aACjB,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,QAAQ,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC,KAAK,QAAQ,CAAC,CAAC;YAChE,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACrB,OAAO,eAAe,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,GAAG,IAAI,IAAI,EAAE,OAAO,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC,IAAI,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAClH,CAAC;YACD,MAAM,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;YAC9B,OAAO,SAAS,KAAK,SAAS;gBAC5B,CAAC,CAAC,SAAS;gBACX,CAAC,CAAC,WAAW,SAAS,8BAA8B,CAAC;QACzD,CAAC;KACF;CACF,CAAC"}
|
|
@@ -30,6 +30,10 @@ export interface LocaleComposition {
|
|
|
30
30
|
*
|
|
31
31
|
* What survives all three is a homograph the data cannot see, which is what
|
|
32
32
|
* {@link LOCALE_COMPOSITION_EXCLUSIONS} is for.
|
|
33
|
+
*
|
|
34
|
+
* `isStandard` names the compounds a dictionary of the standard already
|
|
35
|
+
* settles, which are never composed: its word for a compound outranks
|
|
36
|
+
* anything inferred from the compound's parts.
|
|
33
37
|
*/
|
|
34
|
-
export declare function composeLocaleDeltas(entries: readonly DictionaryEntry[]): LocaleComposition;
|
|
38
|
+
export declare function composeLocaleDeltas(entries: readonly DictionaryEntry[], isStandard?: (entry: DictionaryEntry) => boolean): LocaleComposition;
|
|
35
39
|
//# sourceMappingURL=locale.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"locale.d.ts","sourceRoot":"","sources":["../../src/dictionary/locale.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,KAAK,eAAe,EAAiB,MAAM,YAAY,CAAC;AAIjE,OAAO,EAAE,6BAA6B,EAAE,MAAM,wBAAwB,CAAC;AA6CvE;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,OAAO,EAAE,SAAS,eAAe,EAAE,CAAC;IAC7C,4DAA4D;IAC5D,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AAYD
|
|
1
|
+
{"version":3,"file":"locale.d.ts","sourceRoot":"","sources":["../../src/dictionary/locale.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,KAAK,eAAe,EAAiB,MAAM,YAAY,CAAC;AAIjE,OAAO,EAAE,6BAA6B,EAAE,MAAM,wBAAwB,CAAC;AA6CvE;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,OAAO,EAAE,SAAS,eAAe,EAAE,CAAC;IAC7C,4DAA4D;IAC5D,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AAYD;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,SAAS,eAAe,EAAE,EACnC,UAAU,GAAE,CAAC,KAAK,EAAE,eAAe,KAAK,OAAqB,GAC5D,iBAAiB,CA+DnB"}
|
|
@@ -78,8 +78,12 @@ const ROUNDS = 4;
|
|
|
78
78
|
*
|
|
79
79
|
* What survives all three is a homograph the data cannot see, which is what
|
|
80
80
|
* {@link LOCALE_COMPOSITION_EXCLUSIONS} is for.
|
|
81
|
+
*
|
|
82
|
+
* `isStandard` names the compounds a dictionary of the standard already
|
|
83
|
+
* settles, which are never composed: its word for a compound outranks
|
|
84
|
+
* anything inferred from the compound's parts.
|
|
81
85
|
*/
|
|
82
|
-
export function composeLocaleDeltas(entries) {
|
|
86
|
+
export function composeLocaleDeltas(entries, isStandard = () => false) {
|
|
83
87
|
const index = new ConstituentIndex(entries);
|
|
84
88
|
// Only a compound containing a delta-carrying word can gain one, and there
|
|
85
89
|
// are a few hundred such words against 461,555 entries. Enumerating each
|
|
@@ -96,6 +100,7 @@ export function composeLocaleDeltas(entries) {
|
|
|
96
100
|
// Candidates are fixed after the first sweep: composing a delta never makes a
|
|
97
101
|
// new compound eligible, only changes what an eligible one inherits.
|
|
98
102
|
const candidates = entries.filter((entry) => entry.readings.tw === undefined &&
|
|
103
|
+
!isStandard(entry) &&
|
|
99
104
|
isComposable(entry) &&
|
|
100
105
|
hasMarkedConstituent(entry.hans, marked));
|
|
101
106
|
const settled = new Map();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"locale.js","sourceRoot":"","sources":["../../src/dictionary/locale.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAE5D,OAAO,EAAwB,aAAa,EAAE,MAAM,YAAY,CAAC;AACjE,OAAO,EAAE,oBAAoB,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAC5E,OAAO,EAAE,gBAAgB,EAAE,MAAM,EAAgB,MAAM,sBAAsB,CAAC;AAE9E,OAAO,EAAE,6BAA6B,EAAE,MAAM,wBAAwB,CAAC;AACvE;;;;;;;;;;GAUG;AACH,SAAS,eAAe,CACtB,KAAsB,EACtB,IAAwB,EACxB,OAAiD;IAEjD,MAAM,OAAO,GAAG,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;IAClC,MAAM,QAAQ,GAAe,EAAE,CAAC;IAChC,IAAI,aAAa,GAAG,KAAK,CAAC;IAE1B,KAAK,MAAM,IAAI,IAAI,IAAI,EAAE,CAAC;QACxB,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;QAC/C,4EAA4E;QAC5E,0CAA0C;QAC1C,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;QACtE,IAAI,MAAM,KAAK,SAAS,IAAI,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YACzD,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;YACvB,SAAS;QACX,CAAC;QACD,0EAA0E;QAC1E,2EAA2E;QAC3E,uEAAuE;QACvE,uEAAuE;QACvE,0CAA0C;QAC1C,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC;YACjD,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,QAAQ,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC;QACzB,aAAa,GAAG,IAAI,CAAC;IACvB,CAAC;IAED,OAAO,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;AAC9C,CAAC;AAWD;;;;;;;GAOG;AACH,MAAM,MAAM,GAAG,CAAC,CAAC;AAEjB
|
|
1
|
+
{"version":3,"file":"locale.js","sourceRoot":"","sources":["../../src/dictionary/locale.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
* importing the merge itself.
|
|
6
6
|
*/
|
|
7
7
|
import type { CedictEntry } from "../sources/cedict.js";
|
|
8
|
+
import type { MoeReading } from "../sources/moe.js";
|
|
8
9
|
import type { JiebaEntry } from "../sources/jieba.js";
|
|
9
10
|
import type { UnihanReadings, UnihanVariants } from "../sources/unihan.js";
|
|
10
11
|
import type { Syllable } from "../syllable/syllable.js";
|
|
@@ -21,6 +22,11 @@ export interface MergeSources {
|
|
|
21
22
|
readonly phrase: ReadonlyMap<string, readonly string[]>;
|
|
22
23
|
readonly cedict: readonly CedictEntry[];
|
|
23
24
|
readonly jieba: ReadonlyMap<string, JiebaEntry>;
|
|
25
|
+
/**
|
|
26
|
+
* 教育部's readings, keyed by 繁體 headword. Absent, the zh-TW locale knows
|
|
27
|
+
* only what CC-CEDICT and Unihan mark.
|
|
28
|
+
*/
|
|
29
|
+
readonly moe?: ReadonlyMap<string, readonly MoeReading[]>;
|
|
24
30
|
}
|
|
25
31
|
/**
|
|
26
32
|
* Counts describing what the merge did, for the build to report and check.
|
|
@@ -56,6 +62,8 @@ export interface MergeStats {
|
|
|
56
62
|
readonly repairedConstituents: number;
|
|
57
63
|
/** Entries carrying a zh-TW reading delta a source stated. */
|
|
58
64
|
readonly taiwanReadings: number;
|
|
65
|
+
/** Of those, the ones 教育部's dictionary settled. */
|
|
66
|
+
readonly standardTaiwanReadings: number;
|
|
59
67
|
/** Compounds given a zh-TW delta composed from their constituents. */
|
|
60
68
|
readonly composedTaiwanReadings: number;
|
|
61
69
|
/**
|
|
@@ -105,6 +113,7 @@ export interface WordSources {
|
|
|
105
113
|
readonly unihanReadings: ReadonlyMap<string, UnihanReadings>;
|
|
106
114
|
readonly traditional: TraditionalTable;
|
|
107
115
|
readonly defaults: ReadonlyMap<string, readonly Syllable[]>;
|
|
116
|
+
readonly moe: ReadonlyMap<string, readonly MoeReading[]>;
|
|
108
117
|
}
|
|
109
118
|
/**
|
|
110
119
|
* What one word contributed to the build's counts.
|
|
@@ -121,6 +130,7 @@ export interface WordTally {
|
|
|
121
130
|
readonly scriptPairs: number;
|
|
122
131
|
readonly variantSpellings: number;
|
|
123
132
|
readonly taiwanReadings: number;
|
|
133
|
+
readonly standardTaiwanReadings: number;
|
|
124
134
|
readonly properNounVetoes: number;
|
|
125
135
|
readonly nameBoundaries: number;
|
|
126
136
|
readonly characters: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"merge-types.d.ts","sourceRoot":"","sources":["../../src/dictionary/merge-types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC3E,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE/D;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,cAAc,EAAE,WAAW,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IAC7D,QAAQ,CAAC,cAAc,EAAE,cAAc,CAAC;IACxC,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC,CAAC;IACxD,QAAQ,CAAC,MAAM,EAAE,SAAS,WAAW,EAAE,CAAC;IACxC,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"merge-types.d.ts","sourceRoot":"","sources":["../../src/dictionary/merge-types.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,6 +8,7 @@ export const NO_TALLY = {
|
|
|
8
8
|
scriptPairs: 0,
|
|
9
9
|
variantSpellings: 0,
|
|
10
10
|
taiwanReadings: 0,
|
|
11
|
+
standardTaiwanReadings: 0,
|
|
11
12
|
properNounVetoes: 0,
|
|
12
13
|
nameBoundaries: 0,
|
|
13
14
|
characters: 0,
|
|
@@ -25,6 +26,7 @@ export function addTally(total, tally) {
|
|
|
25
26
|
scriptPairs: total.scriptPairs + tally.scriptPairs,
|
|
26
27
|
variantSpellings: total.variantSpellings + tally.variantSpellings,
|
|
27
28
|
taiwanReadings: total.taiwanReadings + tally.taiwanReadings,
|
|
29
|
+
standardTaiwanReadings: total.standardTaiwanReadings + tally.standardTaiwanReadings,
|
|
28
30
|
properNounVetoes: total.properNounVetoes + tally.properNounVetoes,
|
|
29
31
|
nameBoundaries: total.nameBoundaries + tally.nameBoundaries,
|
|
30
32
|
characters: total.characters + tally.characters,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"merge-types.js","sourceRoot":"","sources":["../../src/dictionary/merge-types.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"merge-types.js","sourceRoot":"","sources":["../../src/dictionary/merge-types.ts"],"names":[],"mappings":"AAiJA;;GAEG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAc;IACjC,sBAAsB,EAAE,CAAC;IACzB,YAAY,EAAE,CAAC;IACf,kBAAkB,EAAE,CAAC;IACrB,WAAW,EAAE,CAAC;IACd,gBAAgB,EAAE,CAAC;IACnB,cAAc,EAAE,CAAC;IACjB,sBAAsB,EAAE,CAAC;IACzB,gBAAgB,EAAE,CAAC;IACnB,cAAc,EAAE,CAAC;IACjB,UAAU,EAAE,CAAC;IACb,WAAW,EAAE,CAAC;IACd,WAAW,EAAE,CAAC;CACf,CAAC;AAYF;;GAEG;AACH,MAAM,UAAU,QAAQ,CAAC,KAAgB,EAAE,KAAgB;IACzD,OAAO;QACL,sBAAsB,EACpB,KAAK,CAAC,sBAAsB,GAAG,KAAK,CAAC,sBAAsB;QAC7D,YAAY,EAAE,KAAK,CAAC,YAAY,GAAG,KAAK,CAAC,YAAY;QACrD,kBAAkB,EAAE,KAAK,CAAC,kBAAkB,GAAG,KAAK,CAAC,kBAAkB;QACvE,WAAW,EAAE,KAAK,CAAC,WAAW,GAAG,KAAK,CAAC,WAAW;QAClD,gBAAgB,EAAE,KAAK,CAAC,gBAAgB,GAAG,KAAK,CAAC,gBAAgB;QACjE,cAAc,EAAE,KAAK,CAAC,cAAc,GAAG,KAAK,CAAC,cAAc;QAC3D,sBAAsB,EACpB,KAAK,CAAC,sBAAsB,GAAG,KAAK,CAAC,sBAAsB;QAC7D,gBAAgB,EAAE,KAAK,CAAC,gBAAgB,GAAG,KAAK,CAAC,gBAAgB;QACjE,cAAc,EAAE,KAAK,CAAC,cAAc,GAAG,KAAK,CAAC,cAAc;QAC3D,UAAU,EAAE,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC,UAAU;QAC/C,WAAW,EAAE,KAAK,CAAC,WAAW,GAAG,KAAK,CAAC,WAAW;QAClD,WAAW,EAAE,KAAK,CAAC,WAAW,GAAG,KAAK,CAAC,WAAW;KACnD,CAAC;AACJ,CAAC"}
|
|
@@ -11,7 +11,7 @@ import { isSameReading } from "./entry.js";
|
|
|
11
11
|
import { readAlignedReading } from "./reading.js";
|
|
12
12
|
import { cedictReadingsOf } from "./cedict-senses.js";
|
|
13
13
|
import { traditionalFormOf } from "./traditional-form.js";
|
|
14
|
-
import {
|
|
14
|
+
import { settleTaiwanReading } from "./taiwan-settle.js";
|
|
15
15
|
import { properNounOf } from "./proper-noun.js";
|
|
16
16
|
import { settleReading } from "./word-reading.js";
|
|
17
17
|
import { NO_TALLY } from "./merge-types.js";
|
|
@@ -19,7 +19,7 @@ import { NO_TALLY } from "./merge-types.js";
|
|
|
19
19
|
* Merge one word.
|
|
20
20
|
*/
|
|
21
21
|
export function mergeWord(word, sources) {
|
|
22
|
-
const { cedictByWord, cedictByHant, phrase, jieba, nameMass, names,
|
|
22
|
+
const { cedictByWord, cedictByHant, phrase, jieba, nameMass, names, traditional, defaults, } = sources;
|
|
23
23
|
const cedictEntries = cedictByWord.get(word) ?? [];
|
|
24
24
|
const cedictReadings = cedictReadingsOf(word, cedictEntries);
|
|
25
25
|
// Every reading CC-CEDICT gives this spelling, under either script.
|
|
@@ -42,9 +42,10 @@ export function mergeWord(word, sources) {
|
|
|
42
42
|
const reading = settled.reading;
|
|
43
43
|
const aligned = settled.aligned;
|
|
44
44
|
// ── 繁體: taken from CC-CEDICT, derived where it is silent ─
|
|
45
|
-
const
|
|
45
|
+
const form = traditionalFormOf(word, cedictEntries, reading, aligned, traditional);
|
|
46
|
+
const { senses, hant, hantVariants, isDerived } = form;
|
|
46
47
|
// ── zh-TW delta ───────────────────────────────────────────
|
|
47
|
-
const taiwan =
|
|
48
|
+
const taiwan = settleTaiwanReading(word, form, senseReadings, reading, sources);
|
|
48
49
|
// ── Frequency, part of speech and the proper noun bit ─────
|
|
49
50
|
const jiebaEntry = jieba.get(word);
|
|
50
51
|
const { isProperNoun, boundaries, isVetoed } = properNounOf(word, jiebaEntry, cedictEntries, senses, reading, nameMass, names);
|
|
@@ -60,7 +61,7 @@ export function mergeWord(word, sources) {
|
|
|
60
61
|
hans: word,
|
|
61
62
|
hant,
|
|
62
63
|
...(hantVariants.length > 0 && { hantVariants }),
|
|
63
|
-
readings: { cn: reading, ...
|
|
64
|
+
readings: { cn: reading, ...taiwan.readings },
|
|
64
65
|
frequency: jiebaEntry?.frequency ?? 0,
|
|
65
66
|
partOfSpeech: jiebaEntry?.partOfSpeech ?? "",
|
|
66
67
|
isProperNoun,
|
|
@@ -79,7 +80,7 @@ export function mergeWord(word, sources) {
|
|
|
79
80
|
derivedTraditional: isDerived ? 1 : 0,
|
|
80
81
|
scriptPairs: hant === word ? 0 : 1,
|
|
81
82
|
variantSpellings: hantVariants.length > 0 ? 1 : 0,
|
|
82
|
-
|
|
83
|
+
...taiwan.tally,
|
|
83
84
|
properNounVetoes: isVetoed ? 1 : 0,
|
|
84
85
|
nameBoundaries: boundaries.length > 0 ? 1 : 0,
|
|
85
86
|
characters: isCharacter ? 1 : 0,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"merge-word.js","sourceRoot":"","sources":["../../src/dictionary/merge-word.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAwB,aAAa,EAAE,MAAM,YAAY,CAAC;AACjE,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"merge-word.js","sourceRoot":"","sources":["../../src/dictionary/merge-word.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"merge.d.ts","sourceRoot":"","sources":["../../src/dictionary/merge.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAe,MAAM,kBAAkB,CAAC;AAE/E,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9E;;;;;;;;GAQG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,YAAY,GAAG,WAAW,
|
|
1
|
+
{"version":3,"file":"merge.d.ts","sourceRoot":"","sources":["../../src/dictionary/merge.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAe,MAAM,kBAAkB,CAAC;AAE/E,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9E;;;;;;;;GAQG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,YAAY,GAAG,WAAW,CA+E/D"}
|
package/dist/dictionary/merge.js
CHANGED
|
@@ -42,6 +42,7 @@ export function mergeSources(sources) {
|
|
|
42
42
|
unihanReadings: sources.unihanReadings,
|
|
43
43
|
traditional,
|
|
44
44
|
defaults,
|
|
45
|
+
moe: sources.moe ?? new Map(),
|
|
45
46
|
};
|
|
46
47
|
const { entries, rejected, counts } = mergeWords(wordList(phrase, defaults, cedictByWord, cedictByHant), wordSources);
|
|
47
48
|
// ── 个 given one tone per position ─────────────────────────
|
|
@@ -57,7 +58,10 @@ export function mergeSources(sources) {
|
|
|
57
58
|
// Last, because it segments each compound against the finished entries: the
|
|
58
59
|
// readings, both scripts' keys and the frequencies all have to be settled
|
|
59
60
|
// before a compound can be asked what it is made of.
|
|
60
|
-
|
|
61
|
+
// A word 教育部 lists has had its say, including where it said the word
|
|
62
|
+
// reads as in 普通话, so only the words it leaves out are composed.
|
|
63
|
+
const moe = sources.moe ?? new Map();
|
|
64
|
+
const localised = composeLocaleDeltas(held.entries, (entry) => [entry.hant, ...(entry.hantVariants ?? [])].some((spelling) => moe.has(spelling)));
|
|
61
65
|
// ── 繁體 spellings given their 简体 word's tag and count ────
|
|
62
66
|
// Last, and over the finished key set, because the pairing it reads is the
|
|
63
67
|
// 繁體 form each entry names and every pass above can still change one.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"merge.js","sourceRoot":"","sources":["../../src/dictionary/merge.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AACpE,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAK5D;;;;;;;;GAQG;AACH,MAAM,UAAU,YAAY,CAAC,OAAqB;IAChD,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;IACnC,MAAM,YAAY,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IACtE,6EAA6E;IAC7E,2EAA2E;IAC3E,0EAA0E;IAC1E,kCAAkC;IAClC,MAAM,YAAY,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IAEvE,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,eAAe,EAAE,GAAG,sBAAsB,CACvE,OAAO,EACP,YAAY,EACZ,YAAY,CACb,CAAC;IAEF,MAAM,WAAW,GAAgB;QAC/B,YAAY;QACZ,YAAY;QACZ,MAAM;QACN,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,QAAQ,EAAE,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC;QACtC,KAAK,EAAE,YAAY,CAAC,OAAO,CAAC,KAAK,EAAE,YAAY,CAAC;QAChD,cAAc,EAAE,OAAO,CAAC,cAAc;QACtC,WAAW;QACX,QAAQ;
|
|
1
|
+
{"version":3,"file":"merge.js","sourceRoot":"","sources":["../../src/dictionary/merge.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Reading 教育部's dictionaries for a word: which readings they list, and
|
|
3
|
+
* which of them describes the entry in hand.
|
|
4
|
+
*/
|
|
5
|
+
import type { MoeDictionary, MoeReading } from "../sources/moe.js";
|
|
6
|
+
import { type Syllable } from "../syllable/syllable.js";
|
|
7
|
+
/**
|
|
8
|
+
* One reading 教育部 gives, read, with the dictionary that gives it.
|
|
9
|
+
*/
|
|
10
|
+
export interface StandardReading {
|
|
11
|
+
readonly reading: readonly Syllable[];
|
|
12
|
+
readonly dictionary: MoeDictionary;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* The readings 教育部 gives the first of a word's spellings it lists.
|
|
16
|
+
*
|
|
17
|
+
* In the dictionary's own order, which leads with the reading it lists first,
|
|
18
|
+
* and then the variant readings it gives beside them.
|
|
19
|
+
*/
|
|
20
|
+
export declare function standardReadingsOf(spellings: readonly string[], moe: ReadonlyMap<string, readonly MoeReading[]>): readonly StandardReading[];
|
|
21
|
+
/**
|
|
22
|
+
* Whether two readings differ only in their tones.
|
|
23
|
+
*/
|
|
24
|
+
export declare function isRetoned(left: readonly Syllable[], right: readonly Syllable[]): boolean;
|
|
25
|
+
/**
|
|
26
|
+
* Which of 教育部's readings describes the word the entry reads, or undefined
|
|
27
|
+
* where the word is read as in 普通话.
|
|
28
|
+
*
|
|
29
|
+
* A word with several readings is several words, as 東西 is `dōngxī` and
|
|
30
|
+
* `dōngxi`. One that reads the way the entry does, or as another 普通话 sense
|
|
31
|
+
* of the word, is that word and agrees with 普通话, so there is no delta:
|
|
32
|
+
* 那些 is `nàxiē` beside the `nǎxiē` of 哪些, and `nàxiē` is the reading
|
|
33
|
+
* CC-CEDICT gives the `nèixiē` the entry holds. Otherwise the one most like the
|
|
34
|
+
* entry's reading is the same word with its tones moved: 那裡 is `nǎlǐ` and
|
|
35
|
+
* `nàlǐ`, and the 那里 that reads `nàli` is the second. The earlier wins a tie.
|
|
36
|
+
*/
|
|
37
|
+
export declare function standardReadingFor(standard: readonly (readonly Syllable[])[], reading: readonly Syllable[], isDelta: (taiwan: readonly Syllable[]) => boolean): readonly Syllable[] | undefined;
|
|
38
|
+
/**
|
|
39
|
+
* The offered readings that are deltas, other than the one chosen, once each.
|
|
40
|
+
*/
|
|
41
|
+
export declare function alternatesOf(offered: readonly (readonly Syllable[])[], chosen: readonly Syllable[] | undefined, isDelta: (taiwan: readonly Syllable[]) => boolean): readonly (readonly Syllable[])[];
|
|
42
|
+
//# sourceMappingURL=standard-readings.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"standard-readings.d.ts","sourceRoot":"","sources":["../../src/dictionary/standard-readings.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEnE,OAAO,EAAE,KAAK,QAAQ,EAAiB,MAAM,yBAAyB,CAAC;AAsBvE;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,OAAO,EAAE,SAAS,QAAQ,EAAE,CAAC;IACtC,QAAQ,CAAC,UAAU,EAAE,aAAa,CAAC;CACpC;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAChC,SAAS,EAAE,SAAS,MAAM,EAAE,EAC5B,GAAG,EAAE,WAAW,CAAC,MAAM,EAAE,SAAS,UAAU,EAAE,CAAC,GAC9C,SAAS,eAAe,EAAE,CAuB5B;AAuBD;;GAEG;AACH,wBAAgB,SAAS,CACvB,IAAI,EAAE,SAAS,QAAQ,EAAE,EACzB,KAAK,EAAE,SAAS,QAAQ,EAAE,GACzB,OAAO,CAYT;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,SAAS,CAAC,SAAS,QAAQ,EAAE,CAAC,EAAE,EAC1C,OAAO,EAAE,SAAS,QAAQ,EAAE,EAC5B,OAAO,EAAE,CAAC,MAAM,EAAE,SAAS,QAAQ,EAAE,KAAK,OAAO,GAChD,SAAS,QAAQ,EAAE,GAAG,SAAS,CAcjC;AAED;;GAEG;AACH,wBAAgB,YAAY,CAC1B,OAAO,EAAE,SAAS,CAAC,SAAS,QAAQ,EAAE,CAAC,EAAE,EACzC,MAAM,EAAE,SAAS,QAAQ,EAAE,GAAG,SAAS,EACvC,OAAO,EAAE,CAAC,MAAM,EAAE,SAAS,QAAQ,EAAE,KAAK,OAAO,GAChD,SAAS,CAAC,SAAS,QAAQ,EAAE,CAAC,EAAE,CAYlC"}
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
import { DICTIONARY_SYLLABLES, isAttestedTone } from "../syllable/inventory.js";
|
|
2
|
+
import { writeSyllable } from "../syllable/syllable.js";
|
|
3
|
+
import { isSameReading } from "./entry.js";
|
|
4
|
+
import { readDictionaryReading } from "./reading.js";
|
|
5
|
+
/**
|
|
6
|
+
* Whether every syllable of a reading is one the inventory knows, in a tone it
|
|
7
|
+
* is written in.
|
|
8
|
+
*
|
|
9
|
+
* 教育部 spells a handful of syllables no other source does — `lüan`, a
|
|
10
|
+
* neutral `kong` or `dun` in a word nobody else reads that way — and the
|
|
11
|
+
* romanisation readers refuse a syllable the inventory does not list. A
|
|
12
|
+
* reading like that is the dictionary's own and is left out.
|
|
13
|
+
*/
|
|
14
|
+
function isInventoried(reading) {
|
|
15
|
+
return reading.every((syllable) => DICTIONARY_SYLLABLES.has(writeSyllable({ ...syllable, erhua: false, tone: undefined })) && isAttestedTone(syllable));
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* The readings 教育部 gives the first of a word's spellings it lists.
|
|
19
|
+
*
|
|
20
|
+
* In the dictionary's own order, which leads with the reading it lists first,
|
|
21
|
+
* and then the variant readings it gives beside them.
|
|
22
|
+
*/
|
|
23
|
+
export function standardReadingsOf(spellings, moe) {
|
|
24
|
+
for (const spelling of spellings) {
|
|
25
|
+
const listed = moe.get(spelling) ?? [];
|
|
26
|
+
// Variants after every main reading, so a variant only wins where no
|
|
27
|
+
// main reading is as close.
|
|
28
|
+
const read = [
|
|
29
|
+
...listed.map((entry) => ({ ...entry, tokens: entry.readings })),
|
|
30
|
+
...listed.flatMap((entry) => entry.variant === undefined
|
|
31
|
+
? []
|
|
32
|
+
: [{ ...entry, tokens: entry.variant }]),
|
|
33
|
+
].flatMap(({ tokens, dictionary }) => {
|
|
34
|
+
const reading = readDictionaryReading(spelling, tokens);
|
|
35
|
+
return reading !== undefined && isInventoried(reading)
|
|
36
|
+
? [{ reading, dictionary }]
|
|
37
|
+
: [];
|
|
38
|
+
});
|
|
39
|
+
if (read.length > 0) {
|
|
40
|
+
return read;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
return [];
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* How closely two readings of the same length agree.
|
|
47
|
+
*
|
|
48
|
+
* Two points for each syllable whose sounds match and one more where its tone
|
|
49
|
+
* does too, so a reading that differs only in tone always beats one that
|
|
50
|
+
* differs in sound, and tones break the tie between two that do not.
|
|
51
|
+
*/
|
|
52
|
+
function likeness(left, right) {
|
|
53
|
+
let score = 0;
|
|
54
|
+
for (const [at, syllable] of left.entries()) {
|
|
55
|
+
const other = right[at];
|
|
56
|
+
if (syllable.initial === other?.initial && syllable.final === other.final) {
|
|
57
|
+
score += syllable.tone === other.tone ? 3 : 2;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
return score;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Whether two readings differ only in their tones.
|
|
64
|
+
*/
|
|
65
|
+
export function isRetoned(left, right) {
|
|
66
|
+
return (left.length === right.length &&
|
|
67
|
+
left.every((syllable, at) => {
|
|
68
|
+
const other = right[at];
|
|
69
|
+
return (syllable.initial === other?.initial &&
|
|
70
|
+
syllable.final === other.final &&
|
|
71
|
+
(syllable.erhua ?? false) === (other.erhua ?? false));
|
|
72
|
+
}));
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Which of 教育部's readings describes the word the entry reads, or undefined
|
|
76
|
+
* where the word is read as in 普通话.
|
|
77
|
+
*
|
|
78
|
+
* A word with several readings is several words, as 東西 is `dōngxī` and
|
|
79
|
+
* `dōngxi`. One that reads the way the entry does, or as another 普通话 sense
|
|
80
|
+
* of the word, is that word and agrees with 普通话, so there is no delta:
|
|
81
|
+
* 那些 is `nàxiē` beside the `nǎxiē` of 哪些, and `nàxiē` is the reading
|
|
82
|
+
* CC-CEDICT gives the `nèixiē` the entry holds. Otherwise the one most like the
|
|
83
|
+
* entry's reading is the same word with its tones moved: 那裡 is `nǎlǐ` and
|
|
84
|
+
* `nàlǐ`, and the 那里 that reads `nàli` is the second. The earlier wins a tie.
|
|
85
|
+
*/
|
|
86
|
+
export function standardReadingFor(standard, reading, isDelta) {
|
|
87
|
+
if (standard.some((listed) => !isDelta(listed))) {
|
|
88
|
+
return undefined;
|
|
89
|
+
}
|
|
90
|
+
let best;
|
|
91
|
+
for (const listed of standard) {
|
|
92
|
+
if (best === undefined ||
|
|
93
|
+
likeness(listed, reading) > likeness(best, reading)) {
|
|
94
|
+
best = listed;
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
return best;
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* The offered readings that are deltas, other than the one chosen, once each.
|
|
101
|
+
*/
|
|
102
|
+
export function alternatesOf(offered, chosen, isDelta) {
|
|
103
|
+
const kept = [];
|
|
104
|
+
for (const candidate of offered) {
|
|
105
|
+
if (isDelta(candidate) &&
|
|
106
|
+
(chosen === undefined || !isSameReading(candidate, chosen)) &&
|
|
107
|
+
!kept.some((held) => isSameReading(held, candidate))) {
|
|
108
|
+
kept.push(candidate);
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
return kept;
|
|
112
|
+
}
|
|
113
|
+
//# sourceMappingURL=standard-readings.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"standard-readings.js","sourceRoot":"","sources":["../../src/dictionary/standard-readings.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { CedictEntry } from "../sources/cedict.js";
|
|
2
|
+
import type { UnihanReadings } from "../sources/unihan.js";
|
|
3
|
+
import type { Syllable } from "../syllable/syllable.js";
|
|
4
|
+
/**
|
|
5
|
+
* The reading CC-CEDICT's note or Unihan's pair gives, and whether it is only
|
|
6
|
+
* one sense's.
|
|
7
|
+
*/
|
|
8
|
+
export interface NotedReading {
|
|
9
|
+
readonly reading: readonly Syllable[];
|
|
10
|
+
readonly isSenseScoped: boolean;
|
|
11
|
+
}
|
|
12
|
+
export declare function notedReadingOf(word: string, senses: readonly CedictEntry[], unihan: UnihanReadings | undefined): NotedReading | undefined;
|
|
13
|
+
//# sourceMappingURL=taiwan-notes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"taiwan-notes.d.ts","sourceRoot":"","sources":["../../src/dictionary/taiwan-notes.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAKxD;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,OAAO,EAAE,SAAS,QAAQ,EAAE,CAAC;IACtC,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC;CACjC;AAED,wBAAgB,cAAc,CAC5B,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,SAAS,WAAW,EAAE,EAC9B,MAAM,EAAE,cAAc,GAAG,SAAS,GACjC,YAAY,GAAG,SAAS,CAkB1B"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The 國語 readings CC-CEDICT's `Taiwan pr.` notes and Unihan's `kMandarin`
|
|
3
|
+
* pairs give a word, before 教育部's dictionaries are asked about them.
|
|
4
|
+
*/
|
|
5
|
+
import { isSingleCharacter } from "../script/characters.js";
|
|
6
|
+
import { isSenseScopedNote } from "./cedict-senses.js";
|
|
7
|
+
import { characterSyllable } from "./character-defaults.js";
|
|
8
|
+
import { readDictionaryReading } from "./reading.js";
|
|
9
|
+
export function notedReadingOf(word, senses, unihan) {
|
|
10
|
+
const taiwanSense = senses.find((entry) => entry.taiwanReadings !== undefined);
|
|
11
|
+
if (taiwanSense?.taiwanReadings !== undefined) {
|
|
12
|
+
const reading = readDictionaryReading(word, taiwanSense.taiwanReadings);
|
|
13
|
+
return reading === undefined
|
|
14
|
+
? undefined
|
|
15
|
+
: { reading, isSenseScoped: isSenseScopedNote(word, taiwanSense) };
|
|
16
|
+
}
|
|
17
|
+
const unihanTaiwan = unihan?.taiwanReading;
|
|
18
|
+
if (isSingleCharacter(word) && unihanTaiwan !== undefined) {
|
|
19
|
+
const syllable = characterSyllable(word, unihanTaiwan);
|
|
20
|
+
return syllable === undefined
|
|
21
|
+
? undefined
|
|
22
|
+
: { reading: [syllable], isSenseScoped: false };
|
|
23
|
+
}
|
|
24
|
+
return undefined;
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=taiwan-notes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"taiwan-notes.js","sourceRoot":"","sources":["../../src/dictionary/taiwan-notes.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAI5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAWrD,MAAM,UAAU,cAAc,CAC5B,IAAY,EACZ,MAA8B,EAC9B,MAAkC;IAElC,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAC7B,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,cAAc,KAAK,SAAS,CAC9C,CAAC;IACF,IAAI,WAAW,EAAE,cAAc,KAAK,SAAS,EAAE,CAAC;QAC9C,MAAM,OAAO,GAAG,qBAAqB,CAAC,IAAI,EAAE,WAAW,CAAC,cAAc,CAAC,CAAC;QACxE,OAAO,OAAO,KAAK,SAAS;YAC1B,CAAC,CAAC,SAAS;YACX,CAAC,CAAC,EAAE,OAAO,EAAE,aAAa,EAAE,iBAAiB,CAAC,IAAI,EAAE,WAAW,CAAC,EAAE,CAAC;IACvE,CAAC;IACD,MAAM,YAAY,GAAG,MAAM,EAAE,aAAa,CAAC;IAC3C,IAAI,iBAAiB,CAAC,IAAI,CAAC,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;QAC1D,MAAM,QAAQ,GAAG,iBAAiB,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;QACvD,OAAO,QAAQ,KAAK,SAAS;YAC3B,CAAC,CAAC,SAAS;YACX,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,QAAQ,CAAC,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC;IACpD,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC"}
|
|
@@ -1,8 +1,28 @@
|
|
|
1
1
|
import type { CedictEntry } from "../sources/cedict.js";
|
|
2
|
+
import type { MoeReading } from "../sources/moe.js";
|
|
2
3
|
import type { UnihanReadings } from "../sources/unihan.js";
|
|
3
4
|
import type { Syllable } from "../syllable/syllable.js";
|
|
4
5
|
/**
|
|
5
|
-
*
|
|
6
|
+
* What the sources settle about a word's 國語 reading.
|
|
6
7
|
*/
|
|
7
|
-
export
|
|
8
|
+
export interface TaiwanReading {
|
|
9
|
+
/** The reading, where it differs from the 普通话 one. */
|
|
10
|
+
readonly reading?: readonly Syllable[];
|
|
11
|
+
/**
|
|
12
|
+
* Other 國語 readings the word has in some sense, none of them 普通话 ones.
|
|
13
|
+
*
|
|
14
|
+
* 和 is `hé` in Taipei as in Beijing, and is also `hàn` when it joins two
|
|
15
|
+
* nouns. Nothing at the word can say which a given 和 is, so the default
|
|
16
|
+
* stays `hé` and `hàn` is offered here.
|
|
17
|
+
*/
|
|
18
|
+
readonly alternates: readonly (readonly Syllable[])[];
|
|
19
|
+
/** Whether 教育部 lists the word, so that nothing should be composed for it. */
|
|
20
|
+
readonly isStandard: boolean;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Settle it for one word.
|
|
24
|
+
*
|
|
25
|
+
* `spellings` are the word's 繁體 forms, which is how 教育部 keys it.
|
|
26
|
+
*/
|
|
27
|
+
export declare function taiwanReadingOf(word: string, spellings: readonly string[], senses: readonly CedictEntry[], senseReadings: readonly (readonly Syllable[])[], reading: readonly Syllable[], unihan: UnihanReadings | undefined, moe: ReadonlyMap<string, readonly MoeReading[]>): TaiwanReading;
|
|
8
28
|
//# sourceMappingURL=taiwan-reading.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"taiwan-reading.d.ts","sourceRoot":"","sources":["../../src/dictionary/taiwan-reading.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"taiwan-reading.d.ts","sourceRoot":"","sources":["../../src/dictionary/taiwan-reading.ts"],"names":[],"mappings":"AAwBA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAYxD;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,sDAAsD;IACtD,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,QAAQ,EAAE,CAAC;IACvC;;;;;;OAMG;IACH,QAAQ,CAAC,UAAU,EAAE,SAAS,CAAC,SAAS,QAAQ,EAAE,CAAC,EAAE,CAAC;IACtD,6EAA6E;IAC7E,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;CAC9B;AA0ED;;;;GAIG;AACH,wBAAgB,eAAe,CAC7B,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,SAAS,MAAM,EAAE,EAC5B,MAAM,EAAE,SAAS,WAAW,EAAE,EAC9B,aAAa,EAAE,SAAS,CAAC,SAAS,QAAQ,EAAE,CAAC,EAAE,EAC/C,OAAO,EAAE,SAAS,QAAQ,EAAE,EAC5B,MAAM,EAAE,cAAc,GAAG,SAAS,EAClC,GAAG,EAAE,WAAW,CAAC,MAAM,EAAE,SAAS,UAAU,EAAE,CAAC,GAC9C,aAAa,CAuBf"}
|