@kensio/pinyinjs 1.0.0 → 1.1.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/CHANGELOG.md +61 -0
- package/NOTICE +14 -0
- package/README.md +1 -1
- package/dist/cli/environment.d.ts.map +1 -1
- package/dist/cli/environment.js +5 -1
- package/dist/cli/environment.js.map +1 -1
- package/dist/decode/convert.d.ts +2 -2
- package/dist/decode/convert.js +4 -4
- package/dist/dictionary/artifact.d.ts.map +1 -1
- package/dist/dictionary/artifact.js +9 -3
- package/dist/dictionary/artifact.js.map +1 -1
- package/dist/dictionary/assertions.d.ts +10 -0
- package/dist/dictionary/assertions.d.ts.map +1 -1
- package/dist/dictionary/assertions.js +53 -14
- package/dist/dictionary/assertions.js.map +1 -1
- package/dist/dictionary/dictionary.d.ts +2 -2
- package/dist/dictionary/dictionary.d.ts.map +1 -1
- package/dist/dictionary/dictionary.js +7 -1
- package/dist/dictionary/dictionary.js.map +1 -1
- package/dist/dictionary/entry.d.ts +3 -3
- package/dist/dictionary/merge.js +1 -1
- package/dist/dictionary/node-source.d.ts +1 -1
- package/dist/dictionary/node-source.d.ts.map +1 -1
- package/dist/dictionary/node-source.js +10 -2
- package/dist/dictionary/node-source.js.map +1 -1
- package/dist/format/transcription.d.ts +5 -4
- package/dist/format/transcription.d.ts.map +1 -1
- package/dist/format/transcription.js +5 -4
- package/dist/format/transcription.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/numerals/numerals.d.ts.map +1 -1
- package/dist/numerals/numerals.js +5 -0
- package/dist/numerals/numerals.js.map +1 -1
- package/dist/numerals/text.d.ts +1 -1
- package/dist/numerals/text.d.ts.map +1 -1
- package/dist/numerals/text.js +8 -2
- package/dist/numerals/text.js.map +1 -1
- package/dist/orthography/grouping.d.ts +3 -3
- package/dist/orthography/grouping.js +4 -4
- package/dist/orthography/grouping.js.map +1 -1
- package/dist/sources/cedict.d.ts +1 -1
- package/dist/sources/cedict.js +1 -1
- package/dist/syllable/inventory.d.ts +30 -0
- package/dist/syllable/inventory.d.ts.map +1 -1
- package/dist/syllable/inventory.js +487 -0
- package/dist/syllable/inventory.js.map +1 -1
- package/dist/syllable/syllable.d.ts +18 -0
- package/dist/syllable/syllable.d.ts.map +1 -1
- package/dist/syllable/syllable.js.map +1 -1
- package/dist/transcription/bopomofo.d.ts.map +1 -1
- package/dist/transcription/bopomofo.js +35 -13
- package/dist/transcription/bopomofo.js.map +1 -1
- package/dist/transcription/gwoyeu.d.ts +19 -6
- package/dist/transcription/gwoyeu.d.ts.map +1 -1
- package/dist/transcription/gwoyeu.js +222 -60
- package/dist/transcription/gwoyeu.js.map +1 -1
- package/dist/transcription/ipa.d.ts.map +1 -1
- package/dist/transcription/ipa.js.map +1 -1
- package/dist/transcription/spelling-index.d.ts +5 -0
- package/dist/transcription/spelling-index.d.ts.map +1 -1
- package/dist/transcription/spelling-index.js +10 -2
- package/dist/transcription/spelling-index.js.map +1 -1
- package/dist/transcription/wade-giles.d.ts +13 -1
- package/dist/transcription/wade-giles.d.ts.map +1 -1
- package/dist/transcription/wade-giles.js +82 -27
- package/dist/transcription/wade-giles.js.map +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,67 @@ Two things are outside the version contract, for the reasons
|
|
|
7
7
|
[the API page](docs/api/#stability) gives: the readings a conversion produces,
|
|
8
8
|
which a dictionary rebuild can change, and the artifact format under `data/`.
|
|
9
9
|
|
|
10
|
+
## Unreleased
|
|
11
|
+
|
|
12
|
+
### Added
|
|
13
|
+
|
|
14
|
+
- **`SYLLABLE_TONES` and `isAttestedTone`.** Which tones each of the 424
|
|
15
|
+
syllables is actually written in, extracted from the merged dictionary and
|
|
16
|
+
held to it by a build assertion. 424 syllables in five tones would be 2,120
|
|
17
|
+
combinations and only 1,708 of them occur, so a fifth of that grid is empty.
|
|
18
|
+
- **`Syllable.originalTone`,** the tone a neutral syllable had before it was
|
|
19
|
+
reduced. Gwoyeu Romatzyh writes the neutral tone as a dot in front of the
|
|
20
|
+
syllable _in its original tonal spelling_, so 没有 méiyou is `mei.yeou`, and
|
|
21
|
+
nothing else in a pinyin syllable records what that tone was. Optional, never
|
|
22
|
+
inferred, and used by GR alone.
|
|
23
|
+
- **Two more outside sources for the transcription tables.** 148 words from
|
|
24
|
+
en.wiktionary's Mandarin pronunciation blocks, in bopomofo, Wade-Giles, Yale
|
|
25
|
+
and GR with their tones, and all 50 rows of Wikipedia's _Help:IPA/Mandarin_
|
|
26
|
+
key. The 417-row syllabary already checked was toneless, so it could say
|
|
27
|
+
nothing about tone marks, the neutral tone, 儿化 or how a word is joined —
|
|
28
|
+
which is where the four fixes below were found.
|
|
29
|
+
|
|
30
|
+
### Fixed
|
|
31
|
+
|
|
32
|
+
- **Bopomofo wrote the tone mark after the 儿化 ㄦ.** 哪儿 nǎr was `ㄋㄚㄦˇ` and
|
|
33
|
+
is now `ㄋㄚˇㄦ`: the mark belongs to the nucleus and the suffix is not part of
|
|
34
|
+
what it marks. A mark written after the ㄦ is still read.
|
|
35
|
+
- **Wade-Giles put the tone digit on the 儿化 suffix,** so 花儿 huār was
|
|
36
|
+
`hua-êrh¹` — a first-tone 兒. It is now `hua¹-'rh`, with the digit on the
|
|
37
|
+
syllable the tone belongs to and the suffix written as the reduced `'rh` that
|
|
38
|
+
keeps it apart from 女儿 nǚ'ér's `nü³-êrh²`.
|
|
39
|
+
- **Gwoyeu Romatzyh wrote 儿化 as a plain `-l` suffix.** GR fuses it into the
|
|
40
|
+
rime instead, and the rules are now implemented as _Spelling in Gwoyeu
|
|
41
|
+
Romatzyh_ gives them: 玩儿 wánr is `wal` rather than `wanl`, 事儿 shìr is
|
|
42
|
+
`shell`, 今儿 jīnr is `jiel`. The fusion is many-to-one, so `jiel` is 今儿 and
|
|
43
|
+
鸡儿 both and 128 forms no longer round-trip — every one of them a form the
|
|
44
|
+
language does not write.
|
|
45
|
+
- **Gwoyeu Romatzyh wrote `.mhe` for a neutral 么.** The `-h-` is the first tone
|
|
46
|
+
of a sonorant initial, and a neutral syllable is in no tone at all; the basic
|
|
47
|
+
form goes behind the dot, so 什么 shénme is `shern.me`.
|
|
48
|
+
- **The IPA module said it followed _Help:IPA/Mandarin_ and did not.** It
|
|
49
|
+
follows the broader IPA column of _Comparison of Standard Chinese
|
|
50
|
+
transcription systems_, which is where its ground truth comes from; the two
|
|
51
|
+
pages differ at the medials, -ang, the empty rhyme and the diphthongs. No
|
|
52
|
+
output changed — the claim did.
|
|
53
|
+
|
|
54
|
+
### Changed
|
|
55
|
+
|
|
56
|
+
- **Reading a romanisation narrows on the tone that was written.**
|
|
57
|
+
`readWadeGiles("lo²")` was `[luó, ló]` and is now `[luó]`: 咯 is a
|
|
58
|
+
sentence-final particle and is only ever neutral, so ló is not a syllable
|
|
59
|
+
Mandarin has. The same goes for `readWadeGilesLoosely` — `pan²` is pán alone
|
|
60
|
+
— and for `readYale`, `readIpa` and `readGwoyeu`, where it settles the 儿化
|
|
61
|
+
collisions the same way (`ell` is 二 èr, there being no first-tone 兒).
|
|
62
|
+
Narrowing never empties a list: a tone no candidate is written in leaves the
|
|
63
|
+
candidates alone, since that says the tone is wrong rather than the spelling.
|
|
64
|
+
Over the phrase corpus, taking the first candidate recovers 82.66% of
|
|
65
|
+
syllables when the tone digit is written, against 79.05% without it.
|
|
66
|
+
- Eight Wade-Giles forms no longer round-trip, and one to three in each of the
|
|
67
|
+
other systems, because they are forms the language does not write: `lo` in the
|
|
68
|
+
four contour tones, a first-tone 兒, and a neutral 誒. Every attested
|
|
69
|
+
syllable-and-tone combination still comes back.
|
|
70
|
+
|
|
10
71
|
## 1.0.0
|
|
11
72
|
|
|
12
73
|
The first stable release. Everything the
|
package/NOTICE
CHANGED
|
@@ -38,3 +38,17 @@ Source: https://en.wikipedia.org/wiki/Comparison_of_Standard_Chinese_transcrip
|
|
|
38
38
|
Licence: CC BY-SA 4.0
|
|
39
39
|
Provides: the 417-row syllabary in test/fixtures/syllabary.ts, which the bopomofo, Wade-Giles, Yale, IPA and Gwoyeu Romatzyh tables are checked against, GR having four columns of its own
|
|
40
40
|
Note: used by the tests only; nothing in data/ is derived from it
|
|
41
|
+
|
|
42
|
+
## Help:IPA/Mandarin (Wikipedia)
|
|
43
|
+
|
|
44
|
+
Source: https://en.wikipedia.org/wiki/Help:IPA/Mandarin
|
|
45
|
+
Licence: CC BY-SA 4.0
|
|
46
|
+
Provides: the 50-row IPA key in test/fixtures/ipa-mandarin.ts, which the IPA table is scored against alongside the syllabary, the two pages differing at twelve rows
|
|
47
|
+
Note: used by the tests only; nothing in data/ is derived from it
|
|
48
|
+
|
|
49
|
+
## Wiktionary (en.wiktionary.org)
|
|
50
|
+
|
|
51
|
+
Source: https://en.wiktionary.org/
|
|
52
|
+
Licence: CC BY-SA 4.0
|
|
53
|
+
Provides: the 148 words of test/fixtures/wiktionary.ts, taken from the Mandarin pronunciation block of each entry, which the tone marks, the neutral tone and 儿化 are checked against in every system that writes them
|
|
54
|
+
Note: used by the tests only; nothing in data/ is derived from it
|
package/README.md
CHANGED
|
@@ -351,7 +351,7 @@ entry?.isProperNoun; // false
|
|
|
351
351
|
entry?.partOfSpeech; // "n" — jieba's tag
|
|
352
352
|
|
|
353
353
|
dictionary.lookup("頭髮")?.reading; // the same reading, found under 繁體
|
|
354
|
-
dictionary.lookup("
|
|
354
|
+
dictionary.lookup("重複")?.reading; // 重複 and 重覆 are both keys for 重复
|
|
355
355
|
dictionary.hasPrefix("银"); // true — does any word start with this?
|
|
356
356
|
dictionary.readingsOf("行"); // xíng, háng, héng, hàng — likeliest first
|
|
357
357
|
```
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"environment.d.ts","sourceRoot":"","sources":["../../src/cli/environment.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAc/C;;GAEG;AACH,wBAAsB,OAAO,CAAC,KAAK,EAAE,aAAa,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAM3E;AAqBD;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAOpD;
|
|
1
|
+
{"version":3,"file":"environment.d.ts","sourceRoot":"","sources":["../../src/cli/environment.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAc/C;;GAEG;AACH,wBAAsB,OAAO,CAAC,KAAK,EAAE,aAAa,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAM3E;AAqBD;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAOpD;AAiCD;;GAEG;AACH,wBAAsB,eAAe,IAAI,OAAO,CAAC,cAAc,CAAC,CAW/D"}
|
package/dist/cli/environment.js
CHANGED
|
@@ -60,7 +60,11 @@ export function versionFrom(manifest) {
|
|
|
60
60
|
* The package's own version, for `--version`.
|
|
61
61
|
*/
|
|
62
62
|
async function version() {
|
|
63
|
-
return versionFrom(
|
|
63
|
+
return versionFrom(
|
|
64
|
+
// A constant URL resolved against this module, which the rule cannot see
|
|
65
|
+
// is constant because it is a `new URL` rather than a string literal.
|
|
66
|
+
// eslint-disable-next-line security/detect-non-literal-fs-filename
|
|
67
|
+
await readFile(new URL("../../package.json", import.meta.url), "utf8"));
|
|
64
68
|
}
|
|
65
69
|
/**
|
|
66
70
|
* What this process's terminal says about itself.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"environment.js","sourceRoot":"","sources":["../../src/cli/environment.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,OAAO,MAAM,cAAc,CAAC;AACnC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,OAAO,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAoB,SAAS,EAAE,MAAM,aAAa,CAAC;AAG1D;;;;;;;GAOG;AACH,SAAS,WAAW;IAClB,OAAO,aAAa,CAAC,IAAI,GAAG,CAAC,YAAY,EAAE,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAC/D,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,KAA4B;IACxD,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,KAAK,EAAE,CAAC;QAChC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACrB,CAAC;IACD,OAAO,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACzB,CAAC;AAED;;;;;GAKG;AACH,uEAAuE;AACvE,KAAK,UAAU,SAAS;IACtB,IAAI,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QACxB,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IAClC,4EAA4E;IAC5E,6DAA6D;IAC7D,MAAM,KAAK,GAA0B,OAAO,CAAC,KAAK,CAAC;IACnD,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC;AACxB,CAAC;AACD,oBAAoB;AAEpB;;;;;GAKG;AACH,MAAM,UAAU,WAAW,CAAC,QAAgB;IAC1C,MAAM,MAAM,GAAY,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAC7C,MAAM,KAAK,GACT,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,IAAI,SAAS,IAAI,MAAM;QAClE,CAAC,CAAC,MAAM,CAAC,OAAO;QAChB,CAAC,CAAC,SAAS,CAAC;IAChB,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;AACvD,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,OAAO;IACpB,OAAO,WAAW,
|
|
1
|
+
{"version":3,"file":"environment.js","sourceRoot":"","sources":["../../src/cli/environment.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,OAAO,MAAM,cAAc,CAAC;AACnC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,OAAO,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAoB,SAAS,EAAE,MAAM,aAAa,CAAC;AAG1D;;;;;;;GAOG;AACH,SAAS,WAAW;IAClB,OAAO,aAAa,CAAC,IAAI,GAAG,CAAC,YAAY,EAAE,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAC/D,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,KAA4B;IACxD,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,KAAK,EAAE,CAAC;QAChC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACrB,CAAC;IACD,OAAO,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACzB,CAAC;AAED;;;;;GAKG;AACH,uEAAuE;AACvE,KAAK,UAAU,SAAS;IACtB,IAAI,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QACxB,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IAClC,4EAA4E;IAC5E,6DAA6D;IAC7D,MAAM,KAAK,GAA0B,OAAO,CAAC,KAAK,CAAC;IACnD,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC;AACxB,CAAC;AACD,oBAAoB;AAEpB;;;;;GAKG;AACH,MAAM,UAAU,WAAW,CAAC,QAAgB;IAC1C,MAAM,MAAM,GAAY,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAC7C,MAAM,KAAK,GACT,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,IAAI,SAAS,IAAI,MAAM;QAClE,CAAC,CAAC,MAAM,CAAC,OAAO;QAChB,CAAC,CAAC,SAAS,CAAC;IAChB,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;AACvD,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,OAAO;IACpB,OAAO,WAAW;IAChB,yEAAyE;IACzE,sEAAsE;IACtE,mEAAmE;IACnE,MAAM,QAAQ,CAAC,IAAI,GAAG,CAAC,oBAAoB,EAAE,OAAO,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,CACvE,CAAC;AACJ,CAAC;AAED;;;;;;;GAOG;AACH,sEAAsE;AACtE,SAAS,eAAe;IACtB,OAAO,SAAS,CAAC;QACf,UAAU,EAAE,OAAO,CAAC,MAAM,CAAC,KAAK;QAChC,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC;QACjC,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC;QACzB,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC;KACpC,CAAC,CAAC;AACL,CAAC;AACD,oBAAoB;AAEpB;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe;IACnC,OAAO;QACL,OAAO,EAAE,MAAM,OAAO,EAAE;QACxB,OAAO,EAAE,eAAe,EAAE;QAC1B,SAAS;QACT,cAAc,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,CAC/B,cAAc,CACZ,UAAU,CAAC,MAAM,CAAC,SAAS,IAAI,WAAW,EAAE,CAAC,EAC7C,MAAM,CAAC,IAAI,CACZ;KACJ,CAAC;AACJ,CAAC"}
|
package/dist/decode/convert.d.ts
CHANGED
|
@@ -27,8 +27,8 @@ export interface ConvertOptions {
|
|
|
27
27
|
/**
|
|
28
28
|
* What to do with the digits in a text. Defaults to `read`.
|
|
29
29
|
*
|
|
30
|
-
* `read` says them: 我有3个 is `wǒ yǒu sān gè` and
|
|
31
|
-
* `yī jiǔ jiǔ
|
|
30
|
+
* `read` says them: 我有3个 is `wǒ yǒu sān gè` and 1998年 is
|
|
31
|
+
* `yī jiǔ jiǔ bā nián`. `keep` leaves every digit exactly as it was written,
|
|
32
32
|
* which is what this did before there was anything to read them with.
|
|
33
33
|
*/
|
|
34
34
|
readonly numbers?: NumberStyle;
|
package/dist/decode/convert.js
CHANGED
|
@@ -116,7 +116,7 @@ function wordsOf(decoded, dictionary, isGrouped) {
|
|
|
116
116
|
* syllable.
|
|
117
117
|
*
|
|
118
118
|
* A number's only context. The character decides how it is read — 年 makes
|
|
119
|
-
*
|
|
119
|
+
* 1998 a year, 个 makes 3 a count — and the syllable is what a 一 ending the
|
|
120
120
|
* number assimilates to.
|
|
121
121
|
*/
|
|
122
122
|
function following(runs, decoded, at) {
|
|
@@ -178,8 +178,8 @@ function groupedPieces(spelled, said, words, written) {
|
|
|
178
178
|
* A counted number is *one word*, which is what 正词法 6.1.5 asks for: 123 is
|
|
179
179
|
* `yībǎi'èrshísān` and not three words, so the syllables run together and take
|
|
180
180
|
* the 隔音符号 where one is needed. A number read out digit by digit is not a
|
|
181
|
-
* word at all — it is digits — so those are written apart:
|
|
182
|
-
* `yī jiǔ jiǔ
|
|
181
|
+
* word at all — it is digits — so those are written apart: 1998年 is
|
|
182
|
+
* `yī jiǔ jiǔ bā nián`.
|
|
183
183
|
*/
|
|
184
184
|
function numberPieces(said, segment, written) {
|
|
185
185
|
const spelled = said.map((syllable) => writeSyllable(syllable, written.notation));
|
|
@@ -247,7 +247,7 @@ function convertWith(decode, dictionary, text, options) {
|
|
|
247
247
|
const written = { notation, apostrophe, capitals };
|
|
248
248
|
const converted = [];
|
|
249
249
|
// Decoded before anything is written, because a number needs to know what
|
|
250
|
-
// follows it —
|
|
250
|
+
// follows it — 1998年 is a year and 3个 is a count — and what follows it is
|
|
251
251
|
// in the next run.
|
|
252
252
|
const runs = [...splitRuns(text)];
|
|
253
253
|
const decoded = runs.map((run) => run.isHan
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"artifact.d.ts","sourceRoot":"","sources":["../../src/dictionary/artifact.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,KAAK,QAAQ,EAEd,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"artifact.d.ts","sourceRoot":"","sources":["../../src/dictionary/artifact.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,KAAK,QAAQ,EAEd,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAwDlD;;;;;;;GAOG;AACH,MAAM,WAAW,kBAAkB;IACjC,8DAA8D;IAC9D,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,sCAAsC;IACtC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,kDAAkD;IAClD,QAAQ,CAAC,WAAW,EAAE,UAAU,CAAC;CAClC;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,SAAS,EAAE,SAAS,QAAQ,EAAE,GAAG,MAAM,CAIpE;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,QAAQ,EAAE,GAAG,SAAS,CAQ3E;AAYD;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,eAAe,GAAG,SAAS,MAAM,EAAE,CAE1E;AA+GD;;;;;;;;;;;;GAYG;AACH,wBAAgB,aAAa,CAC3B,OAAO,EAAE,SAAS,eAAe,EAAE,GAClC,kBAAkB,CAqCpB;AAED;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAC1B,QAAQ,EAAE,kBAAkB,GAC3B,SAAS,eAAe,EAAE,CA2D5B;AAED;;;;;;;;;GASG;AACH,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,SAAS,eAAe,EAAE,EACnC,QAAQ,EAAE,kBAAkB,GAC3B,MAAM,GAAG,SAAS,CAkBpB"}
|
|
@@ -30,8 +30,14 @@ const PROPER_NOUN_FLAG = "p";
|
|
|
30
30
|
* It rides in the flags column rather than taking a column of its own because
|
|
31
31
|
* it is only ever present on a proper noun, and only 8,205 of 723,139 keys
|
|
32
32
|
* carry one — a sixth column would cost a separator on every line to say
|
|
33
|
-
* nothing on almost all of them.
|
|
33
|
+
* nothing on almost all of them. *
|
|
34
|
+
* `security/detect-unsafe-regex` flags the nested quantifier, and there is no
|
|
35
|
+
* ambiguity behind it: a literal `.` separates `\d+` from `(?:\.\d+)*`, so no
|
|
36
|
+
* input can be split between them two ways. Timed on a string of digits and
|
|
37
|
+
* dots that cannot match, it is linear — 8k to 128k characters doubles the time
|
|
38
|
+
* for each doubling of the input, 39µs to 607µs.
|
|
34
39
|
*/
|
|
40
|
+
// eslint-disable-next-line security/detect-unsafe-regex
|
|
35
41
|
const NAME_BOUNDARIES = /^p(?<at>\d+(?:\.\d+)*)$/u;
|
|
36
42
|
const BOUNDARY_SEPARATOR = ".";
|
|
37
43
|
/**
|
|
@@ -106,8 +112,8 @@ function claimTraditional(claimed, entry) {
|
|
|
106
112
|
* keeps 发 on its own reading rather than the one that reached it sideways.
|
|
107
113
|
*
|
|
108
114
|
* An entry claims every 繁體 spelling a source attests for it, not only the one
|
|
109
|
-
* it stores as {@link DictionaryEntry.hant}:
|
|
110
|
-
* since a reader typing either expects `
|
|
115
|
+
* it stores as {@link DictionaryEntry.hant}: 重复 claims 重複 and 重覆 alike,
|
|
116
|
+
* since a reader typing either expects `chóngfù` rather than the character by
|
|
111
117
|
* character reading a missing key falls back to.
|
|
112
118
|
*/
|
|
113
119
|
function claimKeys(entries) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"artifact.js","sourceRoot":"","sources":["../../src/dictionary/artifact.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EACL,YAAY,EAEZ,aAAa,GACd,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1C;;GAEG;AACH,MAAM,MAAM,GAAG,IAAI,CAAC;AAEpB;;GAEG;AACH,MAAM,IAAI,GAAG,IAAI,CAAC;AAElB;;GAEG;AACH,MAAM,SAAS,GAAG,GAAG,CAAC;AAEtB;;GAEG;AACH,MAAM,gBAAgB,GAAG,GAAG,CAAC;AAE7B
|
|
1
|
+
{"version":3,"file":"artifact.js","sourceRoot":"","sources":["../../src/dictionary/artifact.ts"],"names":[],"mappings":"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"}
|
|
@@ -32,6 +32,16 @@ export declare class BuiltDictionary {
|
|
|
32
32
|
* Every distinct toneless syllable the dictionary uses.
|
|
33
33
|
*/
|
|
34
34
|
syllableInventory(): ReadonlySet<string>;
|
|
35
|
+
/**
|
|
36
|
+
* Every syllable the dictionary uses that is not in the tone the inventory
|
|
37
|
+
* says that syllable is written in.
|
|
38
|
+
*
|
|
39
|
+
* The tones are read off the dictionary in the first place, so this is empty
|
|
40
|
+
* by construction — until a source refresh brings in a reading nobody has
|
|
41
|
+
* seen, which is exactly when a reader would start handing that syllable
|
|
42
|
+
* back and the table would have to be regenerated.
|
|
43
|
+
*/
|
|
44
|
+
unattestedTones(): ReadonlySet<string>;
|
|
35
45
|
}
|
|
36
46
|
/**
|
|
37
47
|
* What must hold of every build, or no artifact is produced.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"assertions.d.ts","sourceRoot":"","sources":["../../src/dictionary/assertions.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAElD;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,kEAAkE;IAClE,QAAQ,CAAC,KAAK,EAAE,CAAC,UAAU,EAAE,eAAe,KAAK,MAAM,GAAG,SAAS,CAAC;CACrE;AAED;;GAEG;AACH,qBAAa,eAAe;;IAG1B,QAAQ,CAAC,OAAO,EAAE,SAAS,eAAe,EAAE,CAAC;IAE7C;;;;;OAKG;IACH,YAAY,OAAO,EAAE,SAAS,eAAe,EAAE,EAc9C;
|
|
1
|
+
{"version":3,"file":"assertions.d.ts","sourceRoot":"","sources":["../../src/dictionary/assertions.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAElD;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,kEAAkE;IAClE,QAAQ,CAAC,KAAK,EAAE,CAAC,UAAU,EAAE,eAAe,KAAK,MAAM,GAAG,SAAS,CAAC;CACrE;AAED;;GAEG;AACH,qBAAa,eAAe;;IAG1B,QAAQ,CAAC,OAAO,EAAE,SAAS,eAAe,EAAE,CAAC;IAE7C;;;;;OAKG;IACH,YAAY,OAAO,EAAE,SAAS,eAAe,EAAE,EAc9C;IAeD;;OAEG;IACH,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS,CAE7C;IAED;;OAEG;IACH,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAKxC;IAED;;OAEG;IACH,iBAAiB,IAAI,WAAW,CAAC,MAAM,CAAC,CAUvC;IAED;;;;;;;;OAQG;IACH,eAAe,IAAI,WAAW,CAAC,MAAM,CAAC,CAUrC;CACF;AAoBD;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,gBAAgB,EAAE,SAAS,cAAc,EAgHrD,CAAC;AAEF;;GAEG;AACH,wBAAgB,UAAU,CACxB,OAAO,EAAE,SAAS,eAAe,EAAE,GAClC,SAAS,MAAM,EAAE,CAKnB"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { characterCount } from "../script/characters.js";
|
|
2
|
-
import { DICTIONARY_SYLLABLES } from "../syllable/inventory.js";
|
|
2
|
+
import { DICTIONARY_SYLLABLES, isAttestedTone } from "../syllable/inventory.js";
|
|
3
3
|
import { writeSyllable } from "../syllable/syllable.js";
|
|
4
4
|
import { traditionalForms } from "./artifact.js";
|
|
5
5
|
/**
|
|
@@ -29,6 +29,18 @@ export class BuiltDictionary {
|
|
|
29
29
|
this.#byKey = byKey;
|
|
30
30
|
this.entries = entries;
|
|
31
31
|
}
|
|
32
|
+
/**
|
|
33
|
+
* Every reading the dictionary holds, under every locale it holds one for.
|
|
34
|
+
*/
|
|
35
|
+
*#readings() {
|
|
36
|
+
for (const entry of this.entries) {
|
|
37
|
+
yield* [
|
|
38
|
+
entry.readings.cn,
|
|
39
|
+
entry.readings.tw ?? [],
|
|
40
|
+
...(entry.alternates ?? []),
|
|
41
|
+
];
|
|
42
|
+
}
|
|
43
|
+
}
|
|
32
44
|
/**
|
|
33
45
|
* The entry for a word under either script, or undefined.
|
|
34
46
|
*/
|
|
@@ -49,19 +61,33 @@ export class BuiltDictionary {
|
|
|
49
61
|
*/
|
|
50
62
|
syllableInventory() {
|
|
51
63
|
const inventory = new Set();
|
|
52
|
-
for (const
|
|
53
|
-
for (const
|
|
54
|
-
|
|
55
|
-
entry.readings.tw ?? [],
|
|
56
|
-
...(entry.alternates ?? []),
|
|
57
|
-
]) {
|
|
58
|
-
for (const syllable of reading) {
|
|
59
|
-
inventory.add(writeSyllable({ ...syllable, erhua: false, tone: undefined }));
|
|
60
|
-
}
|
|
64
|
+
for (const reading of this.#readings()) {
|
|
65
|
+
for (const syllable of reading) {
|
|
66
|
+
inventory.add(writeSyllable({ ...syllable, erhua: false, tone: undefined }));
|
|
61
67
|
}
|
|
62
68
|
}
|
|
63
69
|
return inventory;
|
|
64
70
|
}
|
|
71
|
+
/**
|
|
72
|
+
* Every syllable the dictionary uses that is not in the tone the inventory
|
|
73
|
+
* says that syllable is written in.
|
|
74
|
+
*
|
|
75
|
+
* The tones are read off the dictionary in the first place, so this is empty
|
|
76
|
+
* by construction — until a source refresh brings in a reading nobody has
|
|
77
|
+
* seen, which is exactly when a reader would start handing that syllable
|
|
78
|
+
* back and the table would have to be regenerated.
|
|
79
|
+
*/
|
|
80
|
+
unattestedTones() {
|
|
81
|
+
const unattested = new Set();
|
|
82
|
+
for (const reading of this.#readings()) {
|
|
83
|
+
for (const syllable of reading) {
|
|
84
|
+
if (!isAttestedTone(syllable)) {
|
|
85
|
+
unattested.add(writeSyllable({ ...syllable, erhua: false }));
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
return unattested;
|
|
90
|
+
}
|
|
65
91
|
}
|
|
66
92
|
/**
|
|
67
93
|
* Assert one word reads a particular way.
|
|
@@ -106,8 +132,8 @@ export const BUILD_ASSERTIONS = [
|
|
|
106
132
|
reads("头发", "tóu fa", "CC-CEDICT wins on the neutral tone"),
|
|
107
133
|
reads("还是", "hái shi", "CC-CEDICT wins on the neutral tone"),
|
|
108
134
|
reads("頭髮", "tóu fa", "繁體 derived using the reading, and keyed directly"),
|
|
109
|
-
reads("
|
|
110
|
-
reads("
|
|
135
|
+
reads("重複", "chóng fù", "one of two 繁體 spellings, both keyed"),
|
|
136
|
+
reads("重覆", "chóng fù", "the other, on the same entry"),
|
|
111
137
|
reads("下麵", "xià miàn", "both spellings of a word CC-CEDICT writes twice"),
|
|
112
138
|
// kHanyuPinlu writes 李 as `li(36)`, with no tone mark. Read as 轻声 — which
|
|
113
139
|
// is what an unmarked reading means everywhere else in source data — 李华
|
|
@@ -136,9 +162,9 @@ export const BUILD_ASSERTIONS = [
|
|
|
136
162
|
{
|
|
137
163
|
// The veto only demotes. These stay proper nouns, and 人民政府 is the
|
|
138
164
|
// control that shows the veto still fires on an institution.
|
|
139
|
-
description: "
|
|
165
|
+
description: "齐白石, 国务院 and 湖北 stay proper nouns",
|
|
140
166
|
check: (dictionary) => {
|
|
141
|
-
const wrong = ["
|
|
167
|
+
const wrong = ["齐白石", "国务院", "湖北"].filter((word) => dictionary.get(word)?.isProperNoun !== true);
|
|
142
168
|
return wrong.length === 0
|
|
143
169
|
? undefined
|
|
144
170
|
: `no longer proper nouns: ${wrong.join(", ")}`;
|
|
@@ -168,6 +194,19 @@ export const BUILD_ASSERTIONS = [
|
|
|
168
194
|
: `readings use ${String(unknown.length)} syllable(s) outside the inventory: ${unknown.join(", ")}`;
|
|
169
195
|
},
|
|
170
196
|
},
|
|
197
|
+
{
|
|
198
|
+
// The romanisation readers narrow an ambiguous spelling on the tone that
|
|
199
|
+
// was written — `lo²` is 羅 luó and not a 咯 that is only ever neutral —
|
|
200
|
+
// so a tone the table has never heard of is a syllable those readers will
|
|
201
|
+
// refuse to hand back. Regenerate `SYLLABLE_TONES` when this fails.
|
|
202
|
+
description: "every syllable is used in a tone the inventory knows",
|
|
203
|
+
check: (dictionary) => {
|
|
204
|
+
const unattested = [...dictionary.unattestedTones()];
|
|
205
|
+
return unattested.length === 0
|
|
206
|
+
? undefined
|
|
207
|
+
: `readings use ${String(unattested.length)} syllable(s) in a tone the inventory does not list: ${unattested.join(", ")}`;
|
|
208
|
+
},
|
|
209
|
+
},
|
|
171
210
|
{
|
|
172
211
|
description: "every entry's syllable count matches its character count",
|
|
173
212
|
check: (dictionary) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"assertions.js","sourceRoot":"","sources":["../../src/dictionary/assertions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"assertions.js","sourceRoot":"","sources":["../../src/dictionary/assertions.ts"],"names":[],"mappings":"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"}
|
|
@@ -14,8 +14,8 @@ export interface WordEntry {
|
|
|
14
14
|
/**
|
|
15
15
|
* Where a proper name divides into its parts, in characters.
|
|
16
16
|
*
|
|
17
|
-
* Present only where CC-CEDICT's own capitalisation divides it:
|
|
18
|
-
* `[
|
|
17
|
+
* Present only where CC-CEDICT's own capitalisation divides it: 齐白石 is
|
|
18
|
+
* `[Qi2 Bai2 shi2]`, 司马迁 `[Si1 ma3 Qian1]`, 上海交通大学
|
|
19
19
|
* `[Shang4 hai3 Jiao1 tong1 Da4 xue2]`. Absent for 马克思 `[Ma3 ke4 si1]`,
|
|
20
20
|
* which is why a transliteration stays one word.
|
|
21
21
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dictionary.d.ts","sourceRoot":"","sources":["../../src/dictionary/dictionary.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAiB,KAAK,kBAAkB,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"dictionary.d.ts","sourceRoot":"","sources":["../../src/dictionary/dictionary.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAiB,KAAK,kBAAkB,EAAE,MAAM,eAAe,CAAC;AA0BvE;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,mBAAmB;IACnB,QAAQ,CAAC,OAAO,EAAE,SAAS,QAAQ,EAAE,CAAC;IACtC,kDAAkD;IAClD,QAAQ,CAAC,aAAa,CAAC,EAAE,SAAS,QAAQ,EAAE,CAAC;IAC7C,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC;IAC/B;;;;;;;OAOG;IACH,QAAQ,CAAC,cAAc,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5C;;;;OAIG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED;;;;;;;;;;;GAWG;AACH,qBAAa,UAAU;;IACrB;;OAEG;IACH,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,kBAAkB,GAAG,UAAU,CAEpD;IAQD;;OAEG;IACH,OAAO,eAiBN;IA0DD;;OAEG;IACH,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED;;;;;OAKG;IACH,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAE/B;IAED;;OAEG;IACH,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,CAY1C;IAED;;;;;OAKG;IACH,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC,SAAS,QAAQ,EAAE,CAAC,EAAE,CAW9D;CACF"}
|
|
@@ -10,8 +10,14 @@ const LINE = "\n";
|
|
|
10
10
|
const ALTERNATE = ",";
|
|
11
11
|
const PROPER_NOUN_FLAG = "p";
|
|
12
12
|
/**
|
|
13
|
-
* Where a proper name divides, after the proper-noun flag: `p1`, `p2.4`.
|
|
13
|
+
* Where a proper name divides, after the proper-noun flag: `p1`, `p2.4`. *
|
|
14
|
+
* `security/detect-unsafe-regex` flags the nested quantifier, and there is no
|
|
15
|
+
* ambiguity behind it: a literal `.` separates `\d+` from `(?:\.\d+)*`, so no
|
|
16
|
+
* input can be split between them two ways. Timed on a string of digits and
|
|
17
|
+
* dots that cannot match, it is linear — 8k to 128k characters doubles the time
|
|
18
|
+
* for each doubling of the input, 39µs to 607µs.
|
|
14
19
|
*/
|
|
20
|
+
// eslint-disable-next-line security/detect-unsafe-regex
|
|
15
21
|
const NAME_BOUNDARIES = /^p(?<at>\d+(?:\.\d+)*)$/u;
|
|
16
22
|
/**
|
|
17
23
|
* A compiled dictionary, queried without being parsed.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dictionary.js","sourceRoot":"","sources":["../../src/dictionary/dictionary.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAEvD,OAAO,EAAE,aAAa,EAA2B,MAAM,eAAe,CAAC;AACvE,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1C;;GAEG;AACH,MAAM,MAAM,GAAG,IAAI,CAAC;AAEpB,MAAM,IAAI,GAAG,IAAI,CAAC;AAElB,MAAM,SAAS,GAAG,GAAG,CAAC;AAEtB,MAAM,gBAAgB,GAAG,GAAG,CAAC;AAE7B
|
|
1
|
+
{"version":3,"file":"dictionary.js","sourceRoot":"","sources":["../../src/dictionary/dictionary.ts"],"names":[],"mappings":"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"}
|
|
@@ -28,8 +28,8 @@ export interface DictionaryEntry {
|
|
|
28
28
|
* Other 繁體 spellings of this same word, where a source attests one.
|
|
29
29
|
*
|
|
30
30
|
* Simplification was many-to-one, so a 简体 word can have more than one
|
|
31
|
-
* 繁體 spelling and both be current:
|
|
32
|
-
* reader of either expects it read `
|
|
31
|
+
* 繁體 spelling and both be current: 重复 is written 重複 and 重覆, and a
|
|
32
|
+
* reader of either expects it read `chóngfù`. Keying only
|
|
33
33
|
* {@link DictionaryEntry.hant} would leave the other spelling converting
|
|
34
34
|
* character by character, which is precisely the loss SCRIPTS-AND-LOCALES.md
|
|
35
35
|
* makes 繁體 a first-class key to avoid.
|
|
@@ -47,7 +47,7 @@ export interface DictionaryEntry {
|
|
|
47
47
|
/**
|
|
48
48
|
* Where a proper name divides into its parts, in characters.
|
|
49
49
|
*
|
|
50
|
-
* Read off CC-CEDICT's own capitalisation —
|
|
50
|
+
* Read off CC-CEDICT's own capitalisation — 齐白石 is `[Qi2 Bai2 shi2]`,
|
|
51
51
|
* 司马迁 `[Si1 ma3 Qian1]`, 上海交通大学 `[Shang4 hai3 Jiao1 tong1 Da4 xue2]`
|
|
52
52
|
* — so a compound surname needs no list of compound surnames and a generic no
|
|
53
53
|
* list of generics. One boundary for a personal name, often two or three for
|
package/dist/dictionary/merge.js
CHANGED
|
@@ -139,7 +139,7 @@ function nearestReading(reading, candidates) {
|
|
|
139
139
|
*
|
|
140
140
|
* Every sense equally near the reading is returned, most useful first, because
|
|
141
141
|
* senses can agree about the pronunciation and still differ about the script:
|
|
142
|
-
*
|
|
142
|
+
* 重复 is `chóng fù` whether it is written 重複 or 重覆, and both spellings are
|
|
143
143
|
* this word. The first is the entry's 繁體 form and the rest are its
|
|
144
144
|
* {@link DictionaryEntry.hantVariants}.
|
|
145
145
|
*
|
|
@@ -6,7 +6,7 @@ import type { DictionarySource } from "./source.js";
|
|
|
6
6
|
* `src/cli/` aside, which is Node by definition and is not importable from the
|
|
7
7
|
* entry point either. It is deliberately not re-exported: pulling it in from
|
|
8
8
|
* the core would put `node:fs` in front of every bundler. Import it directly,
|
|
9
|
-
* or
|
|
9
|
+
* or reach it through the `./node` subpath, which is what it is there for.
|
|
10
10
|
*/
|
|
11
11
|
export declare function fileSource(directory: string): DictionarySource;
|
|
12
12
|
//# sourceMappingURL=node-source.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"node-source.d.ts","sourceRoot":"","sources":["../../src/dictionary/node-source.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAEpD;;;;;;;;GAQG;AACH,wBAAgB,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,gBAAgB,
|
|
1
|
+
{"version":3,"file":"node-source.d.ts","sourceRoot":"","sources":["../../src/dictionary/node-source.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAEpD;;;;;;;;GAQG;AACH,wBAAgB,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,gBAAgB,CAa9D"}
|
|
@@ -7,12 +7,20 @@ import path from "node:path";
|
|
|
7
7
|
* `src/cli/` aside, which is Node by definition and is not importable from the
|
|
8
8
|
* entry point either. It is deliberately not re-exported: pulling it in from
|
|
9
9
|
* the core would put `node:fs` in front of every bundler. Import it directly,
|
|
10
|
-
* or
|
|
10
|
+
* or reach it through the `./node` subpath, which is what it is there for.
|
|
11
11
|
*/
|
|
12
12
|
export function fileSource(directory) {
|
|
13
13
|
return {
|
|
14
|
+
// The directory is this function's whole argument, so
|
|
15
|
+
// `security/detect-non-literal-fs-filename` is describing the API rather
|
|
16
|
+
// than a defect: a loader that could only read a literal path would have
|
|
17
|
+
// nothing to offer. `name` is not user input — it comes from `tierFiles`,
|
|
18
|
+
// which returns a fixed set of artifact names.
|
|
19
|
+
// eslint-disable-next-line security/detect-non-literal-fs-filename
|
|
14
20
|
text: async (name) => readFile(path.join(directory, name), "utf8"),
|
|
15
|
-
bytes: async (name) =>
|
|
21
|
+
bytes: async (name) =>
|
|
22
|
+
// eslint-disable-next-line security/detect-non-literal-fs-filename
|
|
23
|
+
new Uint8Array(await readFile(path.join(directory, name))),
|
|
16
24
|
};
|
|
17
25
|
}
|
|
18
26
|
//# sourceMappingURL=node-source.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"node-source.js","sourceRoot":"","sources":["../../src/dictionary/node-source.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,IAAI,MAAM,WAAW,CAAC;AAI7B;;;;;;;;GAQG;AACH,MAAM,UAAU,UAAU,CAAC,SAAiB;IAC1C,OAAO;QACL,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAClE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,
|
|
1
|
+
{"version":3,"file":"node-source.js","sourceRoot":"","sources":["../../src/dictionary/node-source.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,IAAI,MAAM,WAAW,CAAC;AAI7B;;;;;;;;GAQG;AACH,MAAM,UAAU,UAAU,CAAC,SAAiB;IAC1C,OAAO;QACL,sDAAsD;QACtD,yEAAyE;QACzE,yEAAyE;QACzE,0EAA0E;QAC1E,+CAA+C;QAC/C,mEAAmE;QACnE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAClE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QACpB,mEAAmE;QACnE,IAAI,UAAU,CAAC,MAAM,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC;KAC7D,CAAC;AACJ,CAAC"}
|
|
@@ -28,10 +28,11 @@ export type WriteWord = (syllables: readonly Syllable[]) => string;
|
|
|
28
28
|
* Wade-Giles spends the apostrophe on aspiration, so `Hsi'an` would read as a
|
|
29
29
|
* syllable `hsi` followed by an aspirated one.
|
|
30
30
|
*
|
|
31
|
-
* The output inherits the grouping's own limits along with its judgements.
|
|
32
|
-
* is one decoded word
|
|
33
|
-
* `
|
|
34
|
-
*
|
|
31
|
+
* The output inherits the grouping's own limits along with its judgements.
|
|
32
|
+
* 清华大学 is one decoded word that the 专名 rule divides, so this writes
|
|
33
|
+
* `Ch'ing-hua Ta-hsüeh` where the attested form is `Ch'ing-hua ta-hsüeh` — a
|
|
34
|
+
* capital the grouping applies, not a hyphen rule that is wrong. See
|
|
35
|
+
* `docs/romanization/` for what that costs, counted.
|
|
35
36
|
*
|
|
36
37
|
* Takes the pieces {@link convertPieces} produces, as `toHtml` does, so that
|
|
37
38
|
* one conversion can be rendered more than one way.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transcription.d.ts","sourceRoot":"","sources":["../../src/format/transcription.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,cAAc,EACnB,KAAK,cAAc,EAEpB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAE9D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAExD;;;;;;;;GAQG;AACH,MAAM,MAAM,SAAS,GAAG,CAAC,SAAS,EAAE,SAAS,QAAQ,EAAE,KAAK,MAAM,CAAC;AAuBnE
|
|
1
|
+
{"version":3,"file":"transcription.d.ts","sourceRoot":"","sources":["../../src/format/transcription.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,cAAc,EACnB,KAAK,cAAc,EAEpB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAE9D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAExD;;;;;;;;GAQG;AACH,MAAM,MAAM,SAAS,GAAG,CAAC,SAAS,EAAE,SAAS,QAAQ,EAAE,KAAK,MAAM,CAAC;AAuBnE;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,eAAe,CAC7B,MAAM,EAAE,SAAS,cAAc,EAAE,EACjC,SAAS,EAAE,SAAS,GACnB,MAAM,CA4BR;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,kBAAkB,CAChC,UAAU,EAAE,UAAU,EACtB,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,cAAmB,GAC3B,MAAM,CASR"}
|
|
@@ -36,10 +36,11 @@ function capitalised(text) {
|
|
|
36
36
|
* Wade-Giles spends the apostrophe on aspiration, so `Hsi'an` would read as a
|
|
37
37
|
* syllable `hsi` followed by an aspirated one.
|
|
38
38
|
*
|
|
39
|
-
* The output inherits the grouping's own limits along with its judgements.
|
|
40
|
-
* is one decoded word
|
|
41
|
-
* `
|
|
42
|
-
*
|
|
39
|
+
* The output inherits the grouping's own limits along with its judgements.
|
|
40
|
+
* 清华大学 is one decoded word that the 专名 rule divides, so this writes
|
|
41
|
+
* `Ch'ing-hua Ta-hsüeh` where the attested form is `Ch'ing-hua ta-hsüeh` — a
|
|
42
|
+
* capital the grouping applies, not a hyphen rule that is wrong. See
|
|
43
|
+
* `docs/romanization/` for what that costs, counted.
|
|
43
44
|
*
|
|
44
45
|
* Takes the pieces {@link convertPieces} produces, as `toHtml` does, so that
|
|
45
46
|
* one conversion can be rendered more than one way.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transcription.js","sourceRoot":"","sources":["../../src/format/transcription.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,aAAa,GACd,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAcpE;;;;;;;GAOG;AACH,SAAS,aAAa,CAAC,IAAY;IACjC,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACvC,OAAO,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,KAAK,CAAC,WAAW,EAAE,CAAC;AAC9D,CAAC;AAED;;GAEG;AACH,SAAS,WAAW,CAAC,IAAY;IAC/B,mEAAmE;IACnE,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;AAClE,CAAC;AAED
|
|
1
|
+
{"version":3,"file":"transcription.js","sourceRoot":"","sources":["../../src/format/transcription.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,aAAa,GACd,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAcpE;;;;;;;GAOG;AACH,SAAS,aAAa,CAAC,IAAY;IACjC,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACvC,OAAO,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,KAAK,CAAC,WAAW,EAAE,CAAC;AAC9D,CAAC;AAED;;GAEG;AACH,SAAS,WAAW,CAAC,IAAY;IAC/B,mEAAmE;IACnE,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;AAClE,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,MAAM,UAAU,eAAe,CAC7B,MAAiC,EACjC,SAAoB;IAEpB,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,IAAI,IAAI,GAAe,EAAE,CAAC;IAC1B,IAAI,UAAU,GAAG,KAAK,CAAC;IAEvB,MAAM,KAAK,GAAG,GAAS,EAAE;QACvB,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACtB,OAAO;QACT,CAAC;QACD,MAAM,GAAG,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;QAC5B,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QAClD,IAAI,GAAG,EAAE,CAAC;QACV,UAAU,GAAG,KAAK,CAAC;IACrB,CAAC,CAAC;IAEF,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,IAAI,KAAK,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;YACjC,KAAK,EAAE,CAAC;YACR,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACzB,SAAS;QACX,CAAC;QACD,wEAAwE;QACxE,yDAAyD;QACzD,UAAU,KAAK,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC9D,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAC5B,CAAC;IACD,KAAK,EAAE,CAAC;IACR,OAAO,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAC1B,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,kBAAkB,CAChC,UAAsB,EACtB,IAAY,EACZ,OAAO,GAAmB,EAAE;IAE5B,OAAO,eAAe,CACpB,aAAa,CAAC,UAAU,EAAE,IAAI,EAAE,OAAO,CAAC,EACxC,CAAC,SAAS,EAAE,EAAE,CACZ,kBAAkB,CAChB,SAAS,EACT,OAAO,CAAC,QAAQ,KAAK,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CACrD,CACJ,CAAC;AACJ,CAAC"}
|