@kensio/pinyinjs 1.2.1 → 1.2.2
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 +82 -24
- package/README.md +35 -35
- package/dist/decode/convert.d.ts.map +1 -1
- package/dist/decode/convert.js +60 -28
- package/dist/decode/convert.js.map +1 -1
- package/dist/decode/decode.d.ts +12 -2
- package/dist/decode/decode.d.ts.map +1 -1
- package/dist/decode/decode.js +64 -7
- package/dist/decode/decode.js.map +1 -1
- package/dist/decode/reading-rules.d.ts +57 -0
- package/dist/decode/reading-rules.d.ts.map +1 -1
- package/dist/decode/reading-rules.js +178 -1
- package/dist/decode/reading-rules.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/numerals/cardinal.d.ts +15 -1
- package/dist/numerals/cardinal.d.ts.map +1 -1
- package/dist/numerals/cardinal.js +8 -1
- package/dist/numerals/cardinal.js.map +1 -1
- package/dist/numerals/characters.d.ts +9 -0
- package/dist/numerals/characters.d.ts.map +1 -1
- package/dist/numerals/characters.js +18 -0
- package/dist/numerals/characters.js.map +1 -1
- package/dist/numerals/numerals.d.ts.map +1 -1
- package/dist/numerals/numerals.js +12 -4
- package/dist/numerals/numerals.js.map +1 -1
- package/dist/numerals/text.d.ts +18 -5
- package/dist/numerals/text.d.ts.map +1 -1
- package/dist/numerals/text.js +67 -8
- package/dist/numerals/text.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { toCharacters } from "../script/characters.js";
|
|
1
2
|
import { readSyllable } from "../syllable/syllable.js";
|
|
2
3
|
/**
|
|
3
4
|
* The 汉字 a digit is written with, indexed by its value.
|
|
@@ -55,6 +56,23 @@ const READINGS = new Map([
|
|
|
55
56
|
["之", "zhī"],
|
|
56
57
|
["百分之", "bǎi fēn zhī"],
|
|
57
58
|
]);
|
|
59
|
+
/**
|
|
60
|
+
* The 汉字 a quantity is written with: the digits, 两, and the places.
|
|
61
|
+
*
|
|
62
|
+
* Less than {@link numeralSyllable} reads, and deliberately so. 点, 分, 之 and
|
|
63
|
+
* 负 are parts of how a number is *said* rather than quantities in themselves,
|
|
64
|
+
* so a 量词 after one of them is not being counted by it — which is the only
|
|
65
|
+
* question this set is asked.
|
|
66
|
+
*/
|
|
67
|
+
export const QUANTITY_CHARACTERS = new Set([
|
|
68
|
+
...toCharacters(DIGIT_CHARACTERS),
|
|
69
|
+
"〇",
|
|
70
|
+
"两",
|
|
71
|
+
"兩",
|
|
72
|
+
...UNIT_VALUES.keys(),
|
|
73
|
+
"萬",
|
|
74
|
+
"億",
|
|
75
|
+
]);
|
|
58
76
|
/**
|
|
59
77
|
* Read one numeral character.
|
|
60
78
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"characters.js","sourceRoot":"","sources":["../../src/numerals/characters.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAiB,MAAM,yBAAyB,CAAC;AAEtE;;GAEG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,YAAY,CAAC;AAE7C;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,WAAW,GAAgC,IAAI,GAAG,CAAC;IAC9D,CAAC,GAAG,EAAE,EAAE,CAAC;IACT,CAAC,GAAG,EAAE,GAAG,CAAC;IACV,CAAC,GAAG,EAAE,IAAI,CAAC;IACX,CAAC,GAAG,EAAE,MAAM,CAAC;IACb,CAAC,GAAG,EAAE,WAAW,CAAC;CACnB,CAAC,CAAC;AAEH;;;;;;;;GAQG;AACH,MAAM,QAAQ,GAAgC,IAAI,GAAG,CAAC;IACpD,CAAC,GAAG,EAAE,MAAM,CAAC;IACb,CAAC,GAAG,EAAE,MAAM,CAAC;IACb,CAAC,GAAG,EAAE,IAAI,CAAC;IACX,CAAC,GAAG,EAAE,IAAI,CAAC;IACX,CAAC,GAAG,EAAE,OAAO,CAAC;IACd,CAAC,GAAG,EAAE,OAAO,CAAC;IACd,CAAC,GAAG,EAAE,KAAK,CAAC;IACZ,CAAC,GAAG,EAAE,IAAI,CAAC;IACX,CAAC,GAAG,EAAE,IAAI,CAAC;IACX,CAAC,GAAG,EAAE,KAAK,CAAC;IACZ,CAAC,GAAG,EAAE,IAAI,CAAC;IACX,CAAC,GAAG,EAAE,IAAI,CAAC;IACX,CAAC,GAAG,EAAE,KAAK,CAAC;IACZ,CAAC,GAAG,EAAE,KAAK,CAAC;IACZ,CAAC,GAAG,EAAE,KAAK,CAAC;IACZ,CAAC,GAAG,EAAE,MAAM,CAAC;IACb,CAAC,GAAG,EAAE,KAAK,CAAC;IACZ,CAAC,GAAG,EAAE,KAAK,CAAC;IACZ,CAAC,GAAG,EAAE,IAAI,CAAC;IACX,CAAC,GAAG,EAAE,IAAI,CAAC;IACX,CAAC,GAAG,EAAE,MAAM,CAAC;IACb,CAAC,GAAG,EAAE,MAAM,CAAC;IACb,CAAC,GAAG,EAAE,IAAI,CAAC;IACX,CAAC,GAAG,EAAE,IAAI,CAAC;IACX,CAAC,GAAG,EAAE,KAAK,CAAC;IACZ,CAAC,GAAG,EAAE,KAAK,CAAC;IACZ,CAAC,KAAK,EAAE,aAAa,CAAC;CACvB,CAAC,CAAC;AAEH;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAAC,SAAiB;IAC/C,MAAM,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IACzC,OAAO,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;AACrE,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,WAAW;IACzB,OAAO,YAAY,CAAC,KAAK,CAAC,CAAC;AAC7B,CAAC"}
|
|
1
|
+
{"version":3,"file":"characters.js","sourceRoot":"","sources":["../../src/numerals/characters.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAiB,MAAM,yBAAyB,CAAC;AAEtE;;GAEG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,YAAY,CAAC;AAE7C;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,WAAW,GAAgC,IAAI,GAAG,CAAC;IAC9D,CAAC,GAAG,EAAE,EAAE,CAAC;IACT,CAAC,GAAG,EAAE,GAAG,CAAC;IACV,CAAC,GAAG,EAAE,IAAI,CAAC;IACX,CAAC,GAAG,EAAE,MAAM,CAAC;IACb,CAAC,GAAG,EAAE,WAAW,CAAC;CACnB,CAAC,CAAC;AAEH;;;;;;;;GAQG;AACH,MAAM,QAAQ,GAAgC,IAAI,GAAG,CAAC;IACpD,CAAC,GAAG,EAAE,MAAM,CAAC;IACb,CAAC,GAAG,EAAE,MAAM,CAAC;IACb,CAAC,GAAG,EAAE,IAAI,CAAC;IACX,CAAC,GAAG,EAAE,IAAI,CAAC;IACX,CAAC,GAAG,EAAE,OAAO,CAAC;IACd,CAAC,GAAG,EAAE,OAAO,CAAC;IACd,CAAC,GAAG,EAAE,KAAK,CAAC;IACZ,CAAC,GAAG,EAAE,IAAI,CAAC;IACX,CAAC,GAAG,EAAE,IAAI,CAAC;IACX,CAAC,GAAG,EAAE,KAAK,CAAC;IACZ,CAAC,GAAG,EAAE,IAAI,CAAC;IACX,CAAC,GAAG,EAAE,IAAI,CAAC;IACX,CAAC,GAAG,EAAE,KAAK,CAAC;IACZ,CAAC,GAAG,EAAE,KAAK,CAAC;IACZ,CAAC,GAAG,EAAE,KAAK,CAAC;IACZ,CAAC,GAAG,EAAE,MAAM,CAAC;IACb,CAAC,GAAG,EAAE,KAAK,CAAC;IACZ,CAAC,GAAG,EAAE,KAAK,CAAC;IACZ,CAAC,GAAG,EAAE,IAAI,CAAC;IACX,CAAC,GAAG,EAAE,IAAI,CAAC;IACX,CAAC,GAAG,EAAE,MAAM,CAAC;IACb,CAAC,GAAG,EAAE,MAAM,CAAC;IACb,CAAC,GAAG,EAAE,IAAI,CAAC;IACX,CAAC,GAAG,EAAE,IAAI,CAAC;IACX,CAAC,GAAG,EAAE,KAAK,CAAC;IACZ,CAAC,GAAG,EAAE,KAAK,CAAC;IACZ,CAAC,KAAK,EAAE,aAAa,CAAC;CACvB,CAAC,CAAC;AAEH;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAwB,IAAI,GAAG,CAAC;IAC9D,GAAG,YAAY,CAAC,gBAAgB,CAAC;IACjC,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG,WAAW,CAAC,IAAI,EAAE;IACrB,GAAG;IACH,GAAG;CACJ,CAAC,CAAC;AAEH;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAAC,SAAiB;IAC/C,MAAM,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IACzC,OAAO,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;AACrE,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,WAAW;IACzB,OAAO,YAAY,CAAC,KAAK,CAAC,CAAC;AAC7B,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"numerals.d.ts","sourceRoot":"","sources":["../../src/numerals/numerals.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAEL,KAAK,eAAe,EAErB,MAAM,eAAe,CAAC;AAOvB;;;;;;;;;GASG;AACH,MAAM,MAAM,YAAY,GAAG,UAAU,GAAG,QAAQ,CAAC;AAEjD;;GAEG;AACH,MAAM,WAAW,cAAe,SAAQ,eAAe;IACrD,8BAA8B;IAC9B,QAAQ,CAAC,KAAK,CAAC,EAAE,YAAY,CAAC;IAC9B;;;;;;;OAOG;IACH,QAAQ,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC;IACvB;;OAEG;IACH,QAAQ,CAAC,IAAI,CAAC,EAAE,GAAG,GAAG,GAAG,CAAC;CAC3B;AAsDD;;;;;;;;;GASG;AACH,wBAAgB,YAAY,CAC1B,KAAK,EAAE,MAAM,GAAG,MAAM,EACtB,OAAO,GAAE,cAAmB,GAC3B,MAAM,GAAG,SAAS,
|
|
1
|
+
{"version":3,"file":"numerals.d.ts","sourceRoot":"","sources":["../../src/numerals/numerals.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAEL,KAAK,eAAe,EAErB,MAAM,eAAe,CAAC;AAOvB;;;;;;;;;GASG;AACH,MAAM,MAAM,YAAY,GAAG,UAAU,GAAG,QAAQ,CAAC;AAEjD;;GAEG;AACH,MAAM,WAAW,cAAe,SAAQ,eAAe;IACrD,8BAA8B;IAC9B,QAAQ,CAAC,KAAK,CAAC,EAAE,YAAY,CAAC;IAC9B;;;;;;;OAOG;IACH,QAAQ,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC;IACvB;;OAEG;IACH,QAAQ,CAAC,IAAI,CAAC,EAAE,GAAG,GAAG,GAAG,CAAC;CAC3B;AAsDD;;;;;;;;;GASG;AACH,wBAAgB,YAAY,CAC1B,KAAK,EAAE,MAAM,GAAG,MAAM,EACtB,OAAO,GAAE,cAAmB,GAC3B,MAAM,GAAG,SAAS,CA0BpB;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,MAAM,EACb,OAAO,GAAE,cAAmB,GAC3B,SAAS,QAAQ,EAAE,GAAG,SAAS,CAajC;AAED;;;;;;;;GAQG;AACH,wBAAgB,WAAW,CACzB,KAAK,EAAE,MAAM,GAAG,MAAM,EACtB,OAAO,GAAE,cAAmB,GAC3B,SAAS,QAAQ,EAAE,GAAG,SAAS,CAGjC;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAC1B,KAAK,EAAE,MAAM,GAAG,MAAM,EACtB,OAAO,GAAE,cAAmB,GAC3B,MAAM,GAAG,SAAS,CAKpB;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAC3B,SAAS,EAAE,MAAM,GAAG,MAAM,EAC1B,WAAW,EAAE,MAAM,GAAG,MAAM,EAC5B,OAAO,GAAE,cAAmB,GAC3B,MAAM,GAAG,SAAS,CAOpB"}
|
|
@@ -62,7 +62,12 @@ export function numeralHanzi(value, options = {}) {
|
|
|
62
62
|
if (!Number.isSafeInteger(quantity) || quantity > LARGEST_CARDINAL) {
|
|
63
63
|
return undefined;
|
|
64
64
|
}
|
|
65
|
-
whole
|
|
65
|
+
// A whole part with a point after it is not what counts: 2.5个 is
|
|
66
|
+
// 二点五个, where the 两 of 两个 would be reading the 2 on its own.
|
|
67
|
+
whole = cardinalHanzi(quantity, {
|
|
68
|
+
...options,
|
|
69
|
+
counts: options.counts === true && parsed.fraction === "",
|
|
70
|
+
});
|
|
66
71
|
}
|
|
67
72
|
const point = parsed.fraction === "" ? "" : `点${digitsHanzi(parsed.fraction, "零")}`;
|
|
68
73
|
return `${parsed.isNegative ? "负" : ""}${whole}${point}`;
|
|
@@ -105,7 +110,9 @@ export function readNumeral(value, options = {}) {
|
|
|
105
110
|
* cannot be left to whoever writes the number and the sign separately.
|
|
106
111
|
*/
|
|
107
112
|
export function percentHanzi(value, options = {}) {
|
|
108
|
-
|
|
113
|
+
// 百分之二 counts hundredths rather than whatever follows the sign, so the
|
|
114
|
+
// 两 of 两个 has nothing to attach to here.
|
|
115
|
+
const written = numeralHanzi(value, { ...options, counts: false });
|
|
109
116
|
return written === undefined ? undefined : `百分之${written}`;
|
|
110
117
|
}
|
|
111
118
|
/**
|
|
@@ -115,8 +122,9 @@ export function percentHanzi(value, options = {}) {
|
|
|
115
122
|
* denominator is named first and the numerator second.
|
|
116
123
|
*/
|
|
117
124
|
export function fractionHanzi(numerator, denominator, options = {}) {
|
|
118
|
-
const
|
|
119
|
-
const
|
|
125
|
+
const parts = { ...options, counts: false };
|
|
126
|
+
const top = numeralHanzi(numerator, parts);
|
|
127
|
+
const bottom = numeralHanzi(denominator, parts);
|
|
120
128
|
return top === undefined || bottom === undefined
|
|
121
129
|
? undefined
|
|
122
130
|
: `${bottom}分之${top}`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"numerals.js","sourceRoot":"","sources":["../../src/numerals/numerals.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAEvD,OAAO,EACL,aAAa,EAEb,gBAAgB,GACjB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,gBAAgB,EAChB,eAAe,EACf,WAAW,GACZ,MAAM,iBAAiB,CAAC;AA8CzB;;;;;;GAMG;AACH,wDAAwD;AACxD,MAAM,MAAM,GAAG,oDAAoD,CAAC;AAEpE;;;;;;;GAOG;AACH,SAAS,KAAK,CAAC,KAAsB;IACnC,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC;IACjD,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO;QACL,UAAU,EAAE,KAAK,CAAC,MAAM,CAAC,KAAK,GAAG;QACjC,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE;QAC3B,QAAQ,EAAE,KAAK,CAAC,UAAU,CAAC,IAAI,EAAE;KAClC,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAS,WAAW,CAAC,MAAc,EAAE,IAAY;IAC/C,OAAO,YAAY,CAAC,MAAM,CAAC;SACxB,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CACb,KAAK,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC,CAClE;SACA,IAAI,CAAC,EAAE,CAAC,CAAC;AACd,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,YAAY,CAC1B,KAAsB,EACtB,OAAO,GAAmB,EAAE;IAE5B,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;IAC5B,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,EAAE,KAAK,GAAG,UAAU,EAAE,IAAI,GAAG,GAAG,EAAE,GAAG,OAAO,CAAC;IAEnD,IAAI,KAAa,CAAC;IAClB,IAAI,KAAK,KAAK,QAAQ,EAAE,CAAC;QACvB,KAAK,GAAG,WAAW,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAC1C,CAAC;SAAM,CAAC;QACN,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACtC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,QAAQ,GAAG,gBAAgB,EAAE,CAAC;YACnE,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,KAAK,GAAG,aAAa,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"numerals.js","sourceRoot":"","sources":["../../src/numerals/numerals.ts"],"names":[],"mappings":"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"}
|
package/dist/numerals/text.d.ts
CHANGED
|
@@ -24,18 +24,31 @@ export interface NumeralSegment {
|
|
|
24
24
|
*/
|
|
25
25
|
readonly words?: readonly number[];
|
|
26
26
|
}
|
|
27
|
+
/**
|
|
28
|
+
* The Han either side of a stretch that was never Han.
|
|
29
|
+
*
|
|
30
|
+
* All the context a number in running text has. 年 makes 1998 a year, 个 makes
|
|
31
|
+
* 2 a count and 第 makes it an ordinal; nothing else about the text bears on
|
|
32
|
+
* how the digits are said.
|
|
33
|
+
*/
|
|
34
|
+
export interface NumeralContext {
|
|
35
|
+
/** The first character of the Han that follows, or the empty string. */
|
|
36
|
+
readonly following: string;
|
|
37
|
+
/** The last character of the Han before it, or the empty string. */
|
|
38
|
+
readonly preceding: string;
|
|
39
|
+
}
|
|
27
40
|
/**
|
|
28
41
|
* Split a stretch of non-Han text into what is read and what is not.
|
|
29
42
|
*
|
|
30
|
-
* `
|
|
31
|
-
*
|
|
32
|
-
*
|
|
33
|
-
*
|
|
43
|
+
* `context` is the Han either side of this stretch, which is all a number has
|
|
44
|
+
* to go on: 年 makes 1998 a year, 个 makes 3 a count and 个 also makes 2 两.
|
|
45
|
+
* Where there is nothing around it, or nothing that decides, the number is
|
|
46
|
+
* counted.
|
|
34
47
|
*
|
|
35
48
|
* Text that is not a number is returned unread rather than dropped, so the
|
|
36
49
|
* segments always concatenate back to the input.
|
|
37
50
|
*/
|
|
38
|
-
export declare function readNumbersIn(text: string,
|
|
51
|
+
export declare function readNumbersIn(text: string, context: NumeralContext, options?: NumeralOptions): readonly NumeralSegment[];
|
|
39
52
|
/**
|
|
40
53
|
* A number as it is said, with the sandhi a counted quantity takes.
|
|
41
54
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"text.d.ts","sourceRoot":"","sources":["../../src/numerals/text.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,KAAK,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEtE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAEL,KAAK,cAAc,EACnB,KAAK,YAAY,EAGlB,MAAM,eAAe,CAAC;AAEvB;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,gEAAgE;IAChE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,qDAAqD;IACrD,QAAQ,CAAC,OAAO,EAAE,SAAS,QAAQ,EAAE,GAAG,SAAS,CAAC;IAClD,kEAAkE;IAClE,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,mEAAmE;IACnE,QAAQ,CAAC,KAAK,EAAE,YAAY,GAAG,SAAS,CAAC;IACzC;;;;;;;;OAQG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CACpC;
|
|
1
|
+
{"version":3,"file":"text.d.ts","sourceRoot":"","sources":["../../src/numerals/text.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,KAAK,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEtE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAEL,KAAK,cAAc,EACnB,KAAK,YAAY,EAGlB,MAAM,eAAe,CAAC;AAEvB;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,gEAAgE;IAChE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,qDAAqD;IACrD,QAAQ,CAAC,OAAO,EAAE,SAAS,QAAQ,EAAE,GAAG,SAAS,CAAC;IAClD,kEAAkE;IAClE,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,mEAAmE;IACnE,QAAQ,CAAC,KAAK,EAAE,YAAY,GAAG,SAAS,CAAC;IACzC;;;;;;;;OAQG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CACpC;AAqID;;;;;;GAMG;AACH,MAAM,WAAW,cAAc;IAC7B,wEAAwE;IACxE,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,oEAAoE;IACpE,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAsKD;;;;;;;;;;GAUG;AACH,wBAAgB,aAAa,CAC3B,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,cAAc,EACvB,OAAO,GAAE,cAAmB,GAC3B,SAAS,cAAc,EAAE,CA8C3B;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,WAAW,CACzB,OAAO,EAAE,cAAc,EACvB,SAAS,EAAE,QAAQ,GAAG,SAAS,EAC/B,MAAM,EAAE,aAAa,GAAG,SAAS,GAChC,SAAS,QAAQ,EAAE,CAUrB"}
|
package/dist/numerals/text.js
CHANGED
|
@@ -57,6 +57,46 @@ const SPOKEN_ZERO_BELOW = 10;
|
|
|
57
57
|
* 12:00 is 十二点 with the 二 inside a larger number.
|
|
58
58
|
*/
|
|
59
59
|
const LIANG_HOUR = 2;
|
|
60
|
+
/**
|
|
61
|
+
* The characters a lone 2 in front of them labels rather than counts.
|
|
62
|
+
*
|
|
63
|
+
* A 2 standing immediately in front of what it counts is 两 — 两个, 两人, 两岁,
|
|
64
|
+
* 两次, 两天 — and the measure words it can count with are an open list, so 两
|
|
65
|
+
* is the default and this is the exception. What is left is the positions a
|
|
66
|
+
* digit *names*: 2月 is February, 2日 and 2号 are the second of the month, 2楼
|
|
67
|
+
* is the second floor, 2路 is the number 2 bus, 2班 is the second class and 2期
|
|
68
|
+
* is the second phase. A named position is 二.
|
|
69
|
+
*
|
|
70
|
+
* The traditional forms are listed beside the simplified ones, since the text
|
|
71
|
+
* being converted may be in either script.
|
|
72
|
+
*/
|
|
73
|
+
const LABELLED = new Set([
|
|
74
|
+
"月",
|
|
75
|
+
"日",
|
|
76
|
+
"号",
|
|
77
|
+
"號",
|
|
78
|
+
"楼",
|
|
79
|
+
"樓",
|
|
80
|
+
"路",
|
|
81
|
+
"班",
|
|
82
|
+
"期",
|
|
83
|
+
]);
|
|
84
|
+
/**
|
|
85
|
+
* The units a lone 2 in front of them keeps 二 for, as the number itself does.
|
|
86
|
+
*
|
|
87
|
+
* 20 是二十 and 200 是二百, so 2十 and 2百 are written the same way: whether the
|
|
88
|
+
* unit is a digit or a character does not change how the number is said. 千, 万
|
|
89
|
+
* and 亿 are left to `CardinalOptions.liang` for exactly the same reason, which
|
|
90
|
+
* is why 2万 is 两万 as 20,000 already is.
|
|
91
|
+
*/
|
|
92
|
+
const SMALL_UNITS = new Set(["十", "百"]);
|
|
93
|
+
/**
|
|
94
|
+
* The mark that makes the number after it an ordinal: 第2次 is 第二次.
|
|
95
|
+
*
|
|
96
|
+
* An ordinal names a position however ordinary the measure word after it is,
|
|
97
|
+
* so it takes 二 where the same 2次 on its own would be 两次.
|
|
98
|
+
*/
|
|
99
|
+
const ORDINAL = "第";
|
|
60
100
|
/**
|
|
61
101
|
* How many digits a year is written with, when it is a year and not a count.
|
|
62
102
|
*
|
|
@@ -80,6 +120,22 @@ function styleFor(digits, following) {
|
|
|
80
120
|
? "digits"
|
|
81
121
|
: "cardinal";
|
|
82
122
|
}
|
|
123
|
+
/**
|
|
124
|
+
* Whether a number is standing in front of something it counts.
|
|
125
|
+
*
|
|
126
|
+
* Only ever true of a number the following Han actually touches: in 2、3个 the
|
|
127
|
+
* 个 counts the 3 and there is a 、 between it and the 2, and in 2%的 the sign
|
|
128
|
+
* is what the digits belong to. `before` and `after` are the characters the
|
|
129
|
+
* digit run sits between, and a digit run with anything but Han after it is not
|
|
130
|
+
* in front of a 量词 at all.
|
|
131
|
+
*/
|
|
132
|
+
function isInFrontOfCount(before, after, following) {
|
|
133
|
+
return (after === "" &&
|
|
134
|
+
following !== "" &&
|
|
135
|
+
!LABELLED.has(following) &&
|
|
136
|
+
!SMALL_UNITS.has(following) &&
|
|
137
|
+
before !== ORDINAL);
|
|
138
|
+
}
|
|
83
139
|
/**
|
|
84
140
|
* Where a decimal breaks into words, or undefined where it is not one.
|
|
85
141
|
*
|
|
@@ -99,11 +155,11 @@ function decimalWords(hanzi) {
|
|
|
99
155
|
/**
|
|
100
156
|
* Read one number, with the sign that may follow it.
|
|
101
157
|
*/
|
|
102
|
-
function readNumber(digits, isPercent, style, options) {
|
|
158
|
+
function readNumber(digits, isPercent, style, isCounting, options) {
|
|
103
159
|
// A writer's thousands separators are not part of the number; nothing is
|
|
104
160
|
// said for them.
|
|
105
161
|
const value = digits.replaceAll(",", "");
|
|
106
|
-
const settings = { ...options, style };
|
|
162
|
+
const settings = { ...options, style, counts: isCounting };
|
|
107
163
|
const hanzi = isPercent
|
|
108
164
|
? percentHanzi(value, settings)
|
|
109
165
|
: numeralHanzi(value, settings);
|
|
@@ -202,15 +258,16 @@ function readTime(text, from, options) {
|
|
|
202
258
|
/**
|
|
203
259
|
* Split a stretch of non-Han text into what is read and what is not.
|
|
204
260
|
*
|
|
205
|
-
* `
|
|
206
|
-
*
|
|
207
|
-
*
|
|
208
|
-
*
|
|
261
|
+
* `context` is the Han either side of this stretch, which is all a number has
|
|
262
|
+
* to go on: 年 makes 1998 a year, 个 makes 3 a count and 个 also makes 2 两.
|
|
263
|
+
* Where there is nothing around it, or nothing that decides, the number is
|
|
264
|
+
* counted.
|
|
209
265
|
*
|
|
210
266
|
* Text that is not a number is returned unread rather than dropped, so the
|
|
211
267
|
* segments always concatenate back to the input.
|
|
212
268
|
*/
|
|
213
|
-
export function readNumbersIn(text,
|
|
269
|
+
export function readNumbersIn(text, context, options = {}) {
|
|
270
|
+
const { following, preceding } = context;
|
|
214
271
|
const segments = [];
|
|
215
272
|
let at = 0;
|
|
216
273
|
for (const match of text.matchAll(NUMBER)) {
|
|
@@ -237,7 +294,9 @@ export function readNumbersIn(text, following, options = {}) {
|
|
|
237
294
|
// What decides the style is whatever comes next: the sign if there is one,
|
|
238
295
|
// otherwise the first character of the following Han.
|
|
239
296
|
const style = styleFor(digits, isPercent ? "" : following);
|
|
240
|
-
const
|
|
297
|
+
const before = from === 0 ? preceding : (text[from - 1] ?? "");
|
|
298
|
+
const isCounting = isInFrontOfCount(before, after, following);
|
|
299
|
+
const read = readNumber(digits, isPercent, style, isCounting, options);
|
|
241
300
|
if (read === undefined) {
|
|
242
301
|
continue;
|
|
243
302
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"text.js","sourceRoot":"","sources":["../../src/numerals/text.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAsB,MAAM,qBAAqB,CAAC;AACtE,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAEvD,OAAO,EACL,YAAY,EAGZ,YAAY,EACZ,gBAAgB,GACjB,MAAM,eAAe,CAAC;AA0BvB;;;;;;;;GAQG;AACH,wDAAwD;AACxD,MAAM,MAAM,GAAG,sBAAsB,CAAC;AAEtC;;GAEG;AACH,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;AAEpC;;;;;;;;GAQG;AACH,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;AAErE;;;;;;;;;;;;GAYG;AACH,MAAM,IAAI,GAAG,+BAA+B,CAAC;AAE7C;;GAEG;AACH,MAAM,cAAc,GAAG,EAAE,CAAC;AAC1B,MAAM,kBAAkB,GAAG,EAAE,CAAC;AAE9B;;GAEG;AACH,MAAM,iBAAiB,GAAG,EAAE,CAAC;AAE7B;;;;;;GAMG;AACH,MAAM,UAAU,GAAG,CAAC,CAAC;AAErB;;;;;;;GAOG;AACH,MAAM,WAAW,GAAG,CAAC,CAAC;AAEtB;;;;;;;;GAQG;AACH,SAAS,QAAQ,CAAC,MAAc,EAAE,SAAiB;IACjD,OAAO,SAAS,KAAK,GAAG,IAAI,MAAM,CAAC,MAAM,KAAK,WAAW;QACvD,CAAC,CAAC,QAAQ;QACV,CAAC,CAAC,UAAU,CAAC;AACjB,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,YAAY,CAAC,KAAa;IACjC,MAAM,UAAU,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;IACvC,MAAM,KAAK,GAAG,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACtC,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE,CAAC;QACjB,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO,CAAC,KAAK,EAAE,GAAG,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1D,CAAC;AAED;;GAEG;AACH,SAAS,UAAU,CACjB,MAAc,EACd,SAAkB,EAClB,KAAmB,EACnB,OAAuB;IAEvB,yEAAyE;IACzE,iBAAiB;IACjB,MAAM,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IACzC,MAAM,QAAQ,GAAmB,EAAE,GAAG,OAAO,EAAE,KAAK,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"text.js","sourceRoot":"","sources":["../../src/numerals/text.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAsB,MAAM,qBAAqB,CAAC;AACtE,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAEvD,OAAO,EACL,YAAY,EAGZ,YAAY,EACZ,gBAAgB,GACjB,MAAM,eAAe,CAAC;AA0BvB;;;;;;;;GAQG;AACH,wDAAwD;AACxD,MAAM,MAAM,GAAG,sBAAsB,CAAC;AAEtC;;GAEG;AACH,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;AAEpC;;;;;;;;GAQG;AACH,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;AAErE;;;;;;;;;;;;GAYG;AACH,MAAM,IAAI,GAAG,+BAA+B,CAAC;AAE7C;;GAEG;AACH,MAAM,cAAc,GAAG,EAAE,CAAC;AAC1B,MAAM,kBAAkB,GAAG,EAAE,CAAC;AAE9B;;GAEG;AACH,MAAM,iBAAiB,GAAG,EAAE,CAAC;AAE7B;;;;;;GAMG;AACH,MAAM,UAAU,GAAG,CAAC,CAAC;AAErB;;;;;;;;;;;;GAYG;AACH,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC;IACvB,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;CACJ,CAAC,CAAC;AAEH;;;;;;;GAOG;AACH,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;AAExC;;;;;GAKG;AACH,MAAM,OAAO,GAAG,GAAG,CAAC;AAEpB;;;;;;;GAOG;AACH,MAAM,WAAW,GAAG,CAAC,CAAC;AAEtB;;;;;;;;GAQG;AACH,SAAS,QAAQ,CAAC,MAAc,EAAE,SAAiB;IACjD,OAAO,SAAS,KAAK,GAAG,IAAI,MAAM,CAAC,MAAM,KAAK,WAAW;QACvD,CAAC,CAAC,QAAQ;QACV,CAAC,CAAC,UAAU,CAAC;AACjB,CAAC;AAgBD;;;;;;;;GAQG;AACH,SAAS,gBAAgB,CACvB,MAAc,EACd,KAAa,EACb,SAAiB;IAEjB,OAAO,CACL,KAAK,KAAK,EAAE;QACZ,SAAS,KAAK,EAAE;QAChB,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC;QACxB,CAAC,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC;QAC3B,MAAM,KAAK,OAAO,CACnB,CAAC;AACJ,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,YAAY,CAAC,KAAa;IACjC,MAAM,UAAU,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;IACvC,MAAM,KAAK,GAAG,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACtC,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE,CAAC;QACjB,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO,CAAC,KAAK,EAAE,GAAG,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1D,CAAC;AAED;;GAEG;AACH,SAAS,UAAU,CACjB,MAAc,EACd,SAAkB,EAClB,KAAmB,EACnB,UAAmB,EACnB,OAAuB;IAEvB,yEAAyE;IACzE,iBAAiB;IACjB,MAAM,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IACzC,MAAM,QAAQ,GAAmB,EAAE,GAAG,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC;IAC3E,MAAM,KAAK,GAAG,SAAS;QACrB,CAAC,CAAC,YAAY,CAAC,KAAK,EAAE,QAAQ,CAAC;QAC/B,CAAC,CAAC,YAAY,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IAClC,MAAM,OAAO,GACX,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,gBAAgB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IACtE,IAAI,KAAK,KAAK,SAAS,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QACjD,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,2EAA2E;IAC3E,mCAAmC;IACnC,MAAM,KAAK,GAAG,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;IACnE,OAAO;QACL,IAAI,EAAE,MAAM;QACZ,OAAO;QACP,KAAK;QACL,KAAK;QACL,GAAG,CAAC,KAAK,KAAK,SAAS,IAAI,EAAE,KAAK,EAAE,CAAC;KACtC,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAS,MAAM,CAAC,IAAY;IAC1B,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;AAC1E,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,SAAS,CAChB,KAAa,EACb,OAAe,EACf,OAAuB;IAEvB,MAAM,OAAO,GAAmB,EAAE,GAAG,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC;IAClE,MAAM,IAAI,GAAG,KAAK,KAAK,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IACvE,MAAM,MAAM,GAAG,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACnE;kDAC8C;IAC9C,IAAI,IAAI,KAAK,SAAS,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QAC/C,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,IAAI,MAAM,KAAK,EAAE,EAAE,CAAC;QAClB,OAAO,GAAG,IAAI,GAAG,CAAC;IACpB,CAAC;IACD,MAAM,IAAI,GAAG,OAAO,GAAG,iBAAiB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;IACpD,OAAO,GAAG,IAAI,IAAI,IAAI,GAAG,MAAM,GAAG,CAAC;AACrC,CAAC;AAED;;;;;GAKG;AACH,SAAS,SAAS,CAAC,KAAa;IAC9B,MAAM,CAAC,IAAI,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAChD,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IACtC,OAAO,OAAO,KAAK,EAAE;QACnB,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;QAClB,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;AAC1C,CAAC;AAED;;;;;;GAMG;AACH,SAAS,QAAQ,CACf,IAAY,EACZ,IAAY,EACZ,OAAuB;IAEvB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;IACtB,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC9B,MAAM,OAAO,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;IAC3B,MAAM,OAAO,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;IAC3B,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QACrE,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;IAClC,MAAM,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;IACpC,IAAI,SAAS,IAAI,cAAc,IAAI,WAAW,IAAI,kBAAkB,EAAE,CAAC;QACrE,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,KAAK,GAAG,SAAS,CAAC,SAAS,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;IACzD,MAAM,OAAO,GACX,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,gBAAgB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IACrE;wDACoD;IACpD,IAAI,KAAK,KAAK,SAAS,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QACjD,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO;QACL,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;QACd,OAAO;QACP,KAAK;QACL,KAAK,EAAE,UAAU;QACjB,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC;KACxB,CAAC;AACJ,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,aAAa,CAC3B,IAAY,EACZ,OAAuB,EACvB,OAAO,GAAmB,EAAE;IAE5B,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC;IACzC,MAAM,QAAQ,GAAqB,EAAE,CAAC;IACtC,IAAI,EAAE,GAAG,CAAC,CAAC;IAEX,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QAC1C,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACxB,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC;QACzB,+CAA+C;QAC/C,IAAI,IAAI,GAAG,EAAE,EAAE,CAAC;YACd,SAAS;QACX,CAAC;QACD,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;QAC3C,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACvB,IAAI,IAAI,GAAG,EAAE,EAAE,CAAC;gBACd,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;YAC9C,CAAC;YACD,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACpB,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;YAC7B,SAAS;QACX,CAAC;QACD,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QAC/C,IAAI,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC;YAClE,SAAS;QACX,CAAC;QACD,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACrC,2EAA2E;QAC3E,sDAAsD;QACtD,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QAC3D,MAAM,MAAM,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QAC/D,MAAM,UAAU,GAAG,gBAAgB,CAAC,MAAM,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;QAC9D,MAAM,IAAI,GAAG,UAAU,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;QACvE,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACvB,SAAS;QACX,CAAC;QACD,IAAI,IAAI,GAAG,EAAE,EAAE,CAAC;YACd,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;QAC9C,CAAC;QACD,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,MAAM,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACpE,EAAE,GAAG,IAAI,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7D,CAAC;IAED,IAAI,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QACrB,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACxC,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,WAAW,CACzB,OAAuB,EACvB,SAA+B,EAC/B,MAAiC;IAEjC,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC;IACtC,IAAI,OAAO,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC/B,OAAO,OAAO,CAAC;IACjB,CAAC;IACD,MAAM,KAAK,GAAG,YAAY,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAC7D,MAAM,QAAQ,GAAG,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC;IACvD,MAAM,OAAO,GAAG,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IAC3D,MAAM,IAAI,GAAG,WAAW,CAAC,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,GAAG,OAAO,CAAC,EAAE,MAAM,CAAC,CAAC;IAC9E,OAAO,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;AAClE,CAAC"}
|