@yosina-lib/yosina 0.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/README.ja.md +177 -0
- package/README.md +177 -0
- package/dist/cjs/chars.d.ts +3 -0
- package/dist/cjs/chars.js +42 -0
- package/dist/cjs/chars.js.map +1 -0
- package/dist/cjs/index.d.ts +35 -0
- package/dist/cjs/index.js +48 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/intrinsics.d.ts +4 -0
- package/dist/cjs/intrinsics.js +33 -0
- package/dist/cjs/intrinsics.js.map +1 -0
- package/dist/cjs/recipes.d.ts +176 -0
- package/dist/cjs/recipes.js +155 -0
- package/dist/cjs/recipes.js.map +1 -0
- package/dist/cjs/transliterators/circled-or-squared.d.ts +27 -0
- package/dist/cjs/transliterators/circled-or-squared.js +491 -0
- package/dist/cjs/transliterators/circled-or-squared.js.map +1 -0
- package/dist/cjs/transliterators/combined.d.ts +15 -0
- package/dist/cjs/transliterators/combined.js +510 -0
- package/dist/cjs/transliterators/combined.js.map +1 -0
- package/dist/cjs/transliterators/hira-kata-composition.d.ts +11 -0
- package/dist/cjs/transliterators/hira-kata-composition.js +46 -0
- package/dist/cjs/transliterators/hira-kata-composition.js.map +1 -0
- package/dist/cjs/transliterators/hira-kata-table.d.ts +4 -0
- package/dist/cjs/transliterators/hira-kata-table.js +80 -0
- package/dist/cjs/transliterators/hira-kata-table.js.map +1 -0
- package/dist/cjs/transliterators/hira-kata.d.ts +6 -0
- package/dist/cjs/transliterators/hira-kata.js +67 -0
- package/dist/cjs/transliterators/hira-kata.js.map +1 -0
- package/dist/cjs/transliterators/hyphens.d.ts +35 -0
- package/dist/cjs/transliterators/hyphens.js +329 -0
- package/dist/cjs/transliterators/hyphens.js.map +1 -0
- package/dist/cjs/transliterators/ideographic-annotations.d.ts +15 -0
- package/dist/cjs/transliterators/ideographic-annotations.js +39 -0
- package/dist/cjs/transliterators/ideographic-annotations.js.map +1 -0
- package/dist/cjs/transliterators/index.d.ts +19 -0
- package/dist/cjs/transliterators/index.js +67 -0
- package/dist/cjs/transliterators/index.js.map +1 -0
- package/dist/cjs/transliterators/ivs-svs-base.d.ts +34 -0
- package/dist/cjs/transliterators/ivs-svs-base.js +567 -0
- package/dist/cjs/transliterators/ivs-svs-base.js.map +1 -0
- package/dist/cjs/transliterators/japanese-iteration-marks.d.ts +4 -0
- package/dist/cjs/transliterators/japanese-iteration-marks.js +206 -0
- package/dist/cjs/transliterators/japanese-iteration-marks.js.map +1 -0
- package/dist/cjs/transliterators/jisx0201-and-alike.d.ts +71 -0
- package/dist/cjs/transliterators/jisx0201-and-alike.js +349 -0
- package/dist/cjs/transliterators/jisx0201-and-alike.js.map +1 -0
- package/dist/cjs/transliterators/kanji-old-new.d.ts +15 -0
- package/dist/cjs/transliterators/kanji-old-new.js +1103 -0
- package/dist/cjs/transliterators/kanji-old-new.js.map +1 -0
- package/dist/cjs/transliterators/mathematical-alphanumerics.d.ts +15 -0
- package/dist/cjs/transliterators/mathematical-alphanumerics.js +765 -0
- package/dist/cjs/transliterators/mathematical-alphanumerics.js.map +1 -0
- package/dist/cjs/transliterators/prolonged-sound-marks.d.ts +13 -0
- package/dist/cjs/transliterators/prolonged-sound-marks.js +147 -0
- package/dist/cjs/transliterators/prolonged-sound-marks.js.map +1 -0
- package/dist/cjs/transliterators/radicals.d.ts +15 -0
- package/dist/cjs/transliterators/radicals.js +327 -0
- package/dist/cjs/transliterators/radicals.js.map +1 -0
- package/dist/cjs/transliterators/spaces.d.ts +15 -0
- package/dist/cjs/transliterators/spaces.js +45 -0
- package/dist/cjs/transliterators/spaces.js.map +1 -0
- package/dist/cjs/types.d.ts +7 -0
- package/dist/cjs/types.js +3 -0
- package/dist/cjs/types.js.map +1 -0
- package/dist/esm/chars.d.ts +3 -0
- package/dist/esm/chars.js +37 -0
- package/dist/esm/chars.js.map +1 -0
- package/dist/esm/index.d.ts +35 -0
- package/dist/esm/index.js +40 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/intrinsics.d.ts +4 -0
- package/dist/esm/intrinsics.js +28 -0
- package/dist/esm/intrinsics.js.map +1 -0
- package/dist/esm/package.json +1 -0
- package/dist/esm/recipes.d.ts +176 -0
- package/dist/esm/recipes.js +151 -0
- package/dist/esm/recipes.js.map +1 -0
- package/dist/esm/transliterators/circled-or-squared.d.ts +27 -0
- package/dist/esm/transliterators/circled-or-squared.js +489 -0
- package/dist/esm/transliterators/circled-or-squared.js.map +1 -0
- package/dist/esm/transliterators/combined.d.ts +15 -0
- package/dist/esm/transliterators/combined.js +508 -0
- package/dist/esm/transliterators/combined.js.map +1 -0
- package/dist/esm/transliterators/hira-kata-composition.d.ts +11 -0
- package/dist/esm/transliterators/hira-kata-composition.js +44 -0
- package/dist/esm/transliterators/hira-kata-composition.js.map +1 -0
- package/dist/esm/transliterators/hira-kata-table.d.ts +4 -0
- package/dist/esm/transliterators/hira-kata-table.js +77 -0
- package/dist/esm/transliterators/hira-kata-table.js.map +1 -0
- package/dist/esm/transliterators/hira-kata.d.ts +6 -0
- package/dist/esm/transliterators/hira-kata.js +65 -0
- package/dist/esm/transliterators/hira-kata.js.map +1 -0
- package/dist/esm/transliterators/hyphens.d.ts +35 -0
- package/dist/esm/transliterators/hyphens.js +326 -0
- package/dist/esm/transliterators/hyphens.js.map +1 -0
- package/dist/esm/transliterators/ideographic-annotations.d.ts +15 -0
- package/dist/esm/transliterators/ideographic-annotations.js +37 -0
- package/dist/esm/transliterators/ideographic-annotations.js.map +1 -0
- package/dist/esm/transliterators/index.d.ts +19 -0
- package/dist/esm/transliterators/index.js +30 -0
- package/dist/esm/transliterators/index.js.map +1 -0
- package/dist/esm/transliterators/ivs-svs-base.d.ts +34 -0
- package/dist/esm/transliterators/ivs-svs-base.js +564 -0
- package/dist/esm/transliterators/ivs-svs-base.js.map +1 -0
- package/dist/esm/transliterators/japanese-iteration-marks.d.ts +4 -0
- package/dist/esm/transliterators/japanese-iteration-marks.js +204 -0
- package/dist/esm/transliterators/japanese-iteration-marks.js.map +1 -0
- package/dist/esm/transliterators/jisx0201-and-alike.d.ts +71 -0
- package/dist/esm/transliterators/jisx0201-and-alike.js +347 -0
- package/dist/esm/transliterators/jisx0201-and-alike.js.map +1 -0
- package/dist/esm/transliterators/kanji-old-new.d.ts +15 -0
- package/dist/esm/transliterators/kanji-old-new.js +1101 -0
- package/dist/esm/transliterators/kanji-old-new.js.map +1 -0
- package/dist/esm/transliterators/mathematical-alphanumerics.d.ts +15 -0
- package/dist/esm/transliterators/mathematical-alphanumerics.js +763 -0
- package/dist/esm/transliterators/mathematical-alphanumerics.js.map +1 -0
- package/dist/esm/transliterators/prolonged-sound-marks.d.ts +13 -0
- package/dist/esm/transliterators/prolonged-sound-marks.js +145 -0
- package/dist/esm/transliterators/prolonged-sound-marks.js.map +1 -0
- package/dist/esm/transliterators/radicals.d.ts +15 -0
- package/dist/esm/transliterators/radicals.js +325 -0
- package/dist/esm/transliterators/radicals.js.map +1 -0
- package/dist/esm/transliterators/spaces.d.ts +15 -0
- package/dist/esm/transliterators/spaces.js +43 -0
- package/dist/esm/transliterators/spaces.js.map +1 -0
- package/dist/esm/types.d.ts +7 -0
- package/dist/esm/types.js +2 -0
- package/dist/esm/types.js.map +1 -0
- package/package.json +74 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ivs-svs-base.js","sourceRoot":"","sources":["../../../src/transliterators/ivs-svs-base.ts"],"names":[],"mappings":";;;AAgBA,MAAM,KAAK,GAAG,CAAC,CAAC;AAChB,MAAM,KAAK,GAAG,CAAC,CAAC;AAChB,MAAM,KAAK,GAAG,CAAC,CAAC;AAChB,MAAM,KAAK,GAAG,CAAC,CAAC;AAChB,MAAM,MAAM,GAAG,CAAC,CAAC;AACjB,MAAM,QAAQ,GAAG,CAAC,CAAC;AACnB,MAAM,QAAQ,GACZ,gxxcAAgxxc,CAAC;AACnxxc,MAAM,gBAAgB,GAAG;IACvB,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAA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"}
|
|
@@ -0,0 +1,206 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const hira_kata_table_js_1 = require("./hira-kata-table.js");
|
|
4
|
+
var CharType;
|
|
5
|
+
(function (CharType) {
|
|
6
|
+
CharType[CharType["OTHER"] = 0] = "OTHER";
|
|
7
|
+
CharType[CharType["HIRAGANA"] = 1] = "HIRAGANA";
|
|
8
|
+
CharType[CharType["HIRAGANA_HATSUON"] = 2] = "HIRAGANA_HATSUON";
|
|
9
|
+
CharType[CharType["HIRAGANA_SOKUON"] = 3] = "HIRAGANA_SOKUON";
|
|
10
|
+
CharType[CharType["HIRAGANA_ITERATION_MARK"] = 4] = "HIRAGANA_ITERATION_MARK";
|
|
11
|
+
CharType[CharType["HIRAGANA_VOICED"] = 5] = "HIRAGANA_VOICED";
|
|
12
|
+
CharType[CharType["HIRAGANA_VOICED_ITERATION_MARK"] = 6] = "HIRAGANA_VOICED_ITERATION_MARK";
|
|
13
|
+
CharType[CharType["HIRAGANA_SEMIVOICED"] = 7] = "HIRAGANA_SEMIVOICED";
|
|
14
|
+
CharType[CharType["KATAKANA"] = 8] = "KATAKANA";
|
|
15
|
+
CharType[CharType["KATAKANA_HATSUON"] = 9] = "KATAKANA_HATSUON";
|
|
16
|
+
CharType[CharType["KATAKANA_SOKUON"] = 10] = "KATAKANA_SOKUON";
|
|
17
|
+
CharType[CharType["KATAKANA_ITERATION_MARK"] = 11] = "KATAKANA_ITERATION_MARK";
|
|
18
|
+
CharType[CharType["KATAKANA_VOICED"] = 12] = "KATAKANA_VOICED";
|
|
19
|
+
CharType[CharType["KATAKANA_VOICED_ITERATION_MARK"] = 13] = "KATAKANA_VOICED_ITERATION_MARK";
|
|
20
|
+
CharType[CharType["KATAKANA_SEMIVOICED"] = 14] = "KATAKANA_SEMIVOICED";
|
|
21
|
+
CharType[CharType["KANJI"] = 15] = "KANJI";
|
|
22
|
+
CharType[CharType["KANJI_ITERATION_MARK"] = 16] = "KANJI_ITERATION_MARK";
|
|
23
|
+
})(CharType || (CharType = {}));
|
|
24
|
+
// Create lookup maps from the existing tables
|
|
25
|
+
// biome-ignore lint/style/noNonNullAssertion: safe
|
|
26
|
+
const voicingMap = new Map(hira_kata_table_js_1.voicedCharacters.map(([h, k]) => [h.codePointAt(0), k]));
|
|
27
|
+
// biome-ignore lint/style/noNonNullAssertion: safe
|
|
28
|
+
const unvoicingMap = new Map(hira_kata_table_js_1.voicedCharacters.map(([h, k]) => [k.codePointAt(0), h]));
|
|
29
|
+
// Helper function to check if a character is a hiragana
|
|
30
|
+
const isHiragana = (codepoint) => {
|
|
31
|
+
return codepoint >= 0x3041 && codepoint <= 0x3096;
|
|
32
|
+
};
|
|
33
|
+
// Helper function to check if a character is a katakana
|
|
34
|
+
const isKatakana = (codepoint) => {
|
|
35
|
+
return codepoint >= 0x30a1 && codepoint <= 0x30f6;
|
|
36
|
+
};
|
|
37
|
+
const voicedChars = new Map(hira_kata_table_js_1.voicedCharacters
|
|
38
|
+
.map(([_, c]) => {
|
|
39
|
+
// biome-ignore lint/style/noNonNullAssertion: safe
|
|
40
|
+
const codepoint = c.codePointAt(0);
|
|
41
|
+
return [codepoint, isHiragana(codepoint) ? CharType.HIRAGANA_VOICED : CharType.KATAKANA_VOICED];
|
|
42
|
+
})
|
|
43
|
+
.concat(hira_kata_table_js_1.semivoicedCharacters.map(([_, c]) => {
|
|
44
|
+
// biome-ignore lint/style/noNonNullAssertion: safe
|
|
45
|
+
const codepoint = c.codePointAt(0);
|
|
46
|
+
return [codepoint, isHiragana(codepoint) ? CharType.HIRAGANA_SEMIVOICED : CharType.KATAKANA_SEMIVOICED];
|
|
47
|
+
})));
|
|
48
|
+
// Helper function to check if a character is a kanji
|
|
49
|
+
const isKanji = (codepoint) => {
|
|
50
|
+
return ((codepoint >= 0x4e00 && codepoint <= 0x9fff) || // CJK Unified Ideographs
|
|
51
|
+
(codepoint >= 0x3400 && codepoint <= 0x4dbf) || // CJK Extension A
|
|
52
|
+
(codepoint >= 0x20000 && codepoint <= 0x2a6df) || // CJK Extension B
|
|
53
|
+
(codepoint >= 0x2a700 && codepoint <= 0x2b73f) || // CJK Extension C
|
|
54
|
+
(codepoint >= 0x2b740 && codepoint <= 0x2b81f) || // CJK Extension D
|
|
55
|
+
(codepoint >= 0x2b820 && codepoint <= 0x2ceaf) || // CJK Extension E
|
|
56
|
+
(codepoint >= 0x2ceb0 && codepoint <= 0x2ebef) || // CJK Extension F
|
|
57
|
+
(codepoint >= 0x30000 && codepoint <= 0x3134f) // CJK Extension G
|
|
58
|
+
);
|
|
59
|
+
};
|
|
60
|
+
const getCharType = (char) => {
|
|
61
|
+
const codepoint = char.codePointAt(0);
|
|
62
|
+
if (codepoint === undefined) {
|
|
63
|
+
return CharType.OTHER;
|
|
64
|
+
}
|
|
65
|
+
if (isKanji(codepoint)) {
|
|
66
|
+
return CharType.KANJI;
|
|
67
|
+
}
|
|
68
|
+
if (char.length !== 1) {
|
|
69
|
+
return CharType.OTHER;
|
|
70
|
+
}
|
|
71
|
+
switch (codepoint) {
|
|
72
|
+
case 0x3093: // ん
|
|
73
|
+
return CharType.HIRAGANA_HATSUON;
|
|
74
|
+
case 0x30f3: // ン
|
|
75
|
+
return CharType.KATAKANA_HATSUON;
|
|
76
|
+
case 0x3063: // っ
|
|
77
|
+
return CharType.HIRAGANA_SOKUON;
|
|
78
|
+
case 0x30c3: // ッ
|
|
79
|
+
return CharType.KATAKANA_SOKUON;
|
|
80
|
+
case 0x309d: // ゝ
|
|
81
|
+
case 0x3031: // 〱
|
|
82
|
+
return CharType.HIRAGANA_ITERATION_MARK;
|
|
83
|
+
case 0x309e: // ゞ
|
|
84
|
+
case 0x3032: // 〲
|
|
85
|
+
return CharType.HIRAGANA_VOICED_ITERATION_MARK;
|
|
86
|
+
case 0x30fd: // ヽ
|
|
87
|
+
case 0x3033: // 〳
|
|
88
|
+
return CharType.KATAKANA_ITERATION_MARK;
|
|
89
|
+
case 0x30fe: // ヾ
|
|
90
|
+
case 0x3034: // 〴
|
|
91
|
+
return CharType.KATAKANA_VOICED_ITERATION_MARK;
|
|
92
|
+
case 0x3005: // 々
|
|
93
|
+
return CharType.KANJI_ITERATION_MARK;
|
|
94
|
+
}
|
|
95
|
+
if (isHiragana(codepoint)) {
|
|
96
|
+
return voicedChars.get(codepoint) ?? CharType.HIRAGANA;
|
|
97
|
+
}
|
|
98
|
+
if (isKatakana(codepoint)) {
|
|
99
|
+
return voicedChars.get(codepoint) ?? CharType.KATAKANA;
|
|
100
|
+
}
|
|
101
|
+
return CharType.OTHER;
|
|
102
|
+
};
|
|
103
|
+
exports.default = (_) => function* (in_) {
|
|
104
|
+
let offset = 0;
|
|
105
|
+
let prevChar;
|
|
106
|
+
for (const c of in_) {
|
|
107
|
+
const currentChar = [c, getCharType(c.c)];
|
|
108
|
+
// Check for iteration marks
|
|
109
|
+
if (prevChar !== undefined) {
|
|
110
|
+
switch (currentChar[1]) {
|
|
111
|
+
case CharType.HIRAGANA_ITERATION_MARK:
|
|
112
|
+
switch (prevChar[1]) {
|
|
113
|
+
case CharType.HIRAGANA:
|
|
114
|
+
yield { c: prevChar[0].c, offset: offset, source: currentChar[0] };
|
|
115
|
+
offset += prevChar[0].c.length;
|
|
116
|
+
prevChar = currentChar;
|
|
117
|
+
continue;
|
|
118
|
+
case CharType.HIRAGANA_VOICED: {
|
|
119
|
+
const cp = prevChar[0].c.codePointAt(0);
|
|
120
|
+
const unvoiced = cp !== undefined ? unvoicingMap.get(cp) : undefined;
|
|
121
|
+
if (unvoiced !== undefined) {
|
|
122
|
+
yield { c: unvoiced, offset: offset, source: currentChar[0] };
|
|
123
|
+
offset += unvoiced.length;
|
|
124
|
+
prevChar = currentChar;
|
|
125
|
+
continue;
|
|
126
|
+
}
|
|
127
|
+
break;
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
break;
|
|
131
|
+
case CharType.HIRAGANA_VOICED_ITERATION_MARK:
|
|
132
|
+
switch (prevChar[1]) {
|
|
133
|
+
case CharType.HIRAGANA: {
|
|
134
|
+
const cp = prevChar[0].c.codePointAt(0);
|
|
135
|
+
const voiced = cp !== undefined ? voicingMap.get(cp) : undefined;
|
|
136
|
+
if (voiced !== undefined) {
|
|
137
|
+
yield { c: voiced, offset: offset, source: currentChar[0] };
|
|
138
|
+
offset += voiced.length;
|
|
139
|
+
prevChar = currentChar;
|
|
140
|
+
continue;
|
|
141
|
+
}
|
|
142
|
+
break;
|
|
143
|
+
}
|
|
144
|
+
case CharType.HIRAGANA_VOICED:
|
|
145
|
+
yield { c: prevChar[0].c, offset: offset, source: currentChar[0] };
|
|
146
|
+
offset += prevChar[0].c.length;
|
|
147
|
+
prevChar = currentChar;
|
|
148
|
+
continue;
|
|
149
|
+
}
|
|
150
|
+
break;
|
|
151
|
+
case CharType.KATAKANA_ITERATION_MARK:
|
|
152
|
+
switch (prevChar[1]) {
|
|
153
|
+
case CharType.KATAKANA:
|
|
154
|
+
yield { c: prevChar[0].c, offset: offset, source: currentChar[0] };
|
|
155
|
+
offset += prevChar[0].c.length;
|
|
156
|
+
prevChar = currentChar;
|
|
157
|
+
continue;
|
|
158
|
+
case CharType.KATAKANA_VOICED: {
|
|
159
|
+
const cp = prevChar[0].c.codePointAt(0);
|
|
160
|
+
const unvoiced = cp !== undefined ? unvoicingMap.get(cp) : undefined;
|
|
161
|
+
if (unvoiced !== undefined) {
|
|
162
|
+
yield { c: unvoiced, offset: offset, source: currentChar[0] };
|
|
163
|
+
offset += unvoiced.length;
|
|
164
|
+
prevChar = currentChar;
|
|
165
|
+
continue;
|
|
166
|
+
}
|
|
167
|
+
break;
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
break;
|
|
171
|
+
case CharType.KATAKANA_VOICED_ITERATION_MARK:
|
|
172
|
+
switch (prevChar[1]) {
|
|
173
|
+
case CharType.KATAKANA: {
|
|
174
|
+
const cp = prevChar[0].c.codePointAt(0);
|
|
175
|
+
const voiced = cp !== undefined ? voicingMap.get(cp) : undefined;
|
|
176
|
+
if (voiced !== undefined) {
|
|
177
|
+
yield { c: voiced, offset: offset, source: currentChar[0] };
|
|
178
|
+
offset += voiced.length;
|
|
179
|
+
prevChar = currentChar;
|
|
180
|
+
continue;
|
|
181
|
+
}
|
|
182
|
+
break;
|
|
183
|
+
}
|
|
184
|
+
case CharType.KATAKANA_VOICED:
|
|
185
|
+
yield { c: prevChar[0].c, offset: offset, source: currentChar[0] };
|
|
186
|
+
offset += prevChar[0].c.length;
|
|
187
|
+
prevChar = currentChar;
|
|
188
|
+
continue;
|
|
189
|
+
}
|
|
190
|
+
break;
|
|
191
|
+
case CharType.KANJI_ITERATION_MARK:
|
|
192
|
+
if (prevChar[1] === CharType.KANJI) {
|
|
193
|
+
yield { c: prevChar[0].c, offset: offset, source: currentChar[0] };
|
|
194
|
+
offset += prevChar[0].c.length;
|
|
195
|
+
prevChar = currentChar;
|
|
196
|
+
continue;
|
|
197
|
+
}
|
|
198
|
+
break;
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
yield { c: currentChar[0].c, offset: offset, source: currentChar[0] };
|
|
202
|
+
offset += currentChar[0].c.length;
|
|
203
|
+
prevChar = currentChar;
|
|
204
|
+
}
|
|
205
|
+
};
|
|
206
|
+
//# sourceMappingURL=japanese-iteration-marks.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"japanese-iteration-marks.js","sourceRoot":"","sources":["../../../src/transliterators/japanese-iteration-marks.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This module deals with conversion between the following character sets:
|
|
3
|
+
*
|
|
4
|
+
* - Half-width group:
|
|
5
|
+
* - Alphabets, numerics, and symbols: U+0020 - U+007E, U+00A5, and U+203E.
|
|
6
|
+
* - Half-width katakanas: U+FF61 - U+FF9F.
|
|
7
|
+
* - Full-width group:
|
|
8
|
+
* - Full-width alphabets, numerics, and symbols: U+FF01 - U+FF5E, U+FFE3, and U+FFE5.
|
|
9
|
+
* - Wave dash: U+301C.
|
|
10
|
+
* - Hiraganas: U+3041 - U+3094.
|
|
11
|
+
* - Katakanas: U+30A1 - U+30F7 and U+30FA.
|
|
12
|
+
* - Hiragana/katakana voicing marks: U+309B, U+309C, and U+30FC.
|
|
13
|
+
* - Japanese punctuations: U+3001, U+3002, U+30A0, and U+30FB.
|
|
14
|
+
*
|
|
15
|
+
* For the details of the mapping rules, please refer to *JIS X 0201 and Alike transliterator specification*.
|
|
16
|
+
*
|
|
17
|
+
* @module
|
|
18
|
+
*/
|
|
19
|
+
import type { Char } from "../types.js";
|
|
20
|
+
/**
|
|
21
|
+
* Options for the transliterator.
|
|
22
|
+
*/
|
|
23
|
+
export type Options = {
|
|
24
|
+
/**
|
|
25
|
+
* If set to `true`, the transliterator will replace full-width characters with half-width equivalents.
|
|
26
|
+
*
|
|
27
|
+
* If set to `false`, the transliterator will replace half-width characters with full-width equivalents.
|
|
28
|
+
*/
|
|
29
|
+
fullwidthToHalfwidth?: boolean;
|
|
30
|
+
/** `true` to convert characters belonging to GL area of JIS X 0201; namely alphanumerics and symbols. */
|
|
31
|
+
convertGL?: boolean;
|
|
32
|
+
/** `true` to convert characters belonging to GR area of JIS X 0201; namely (half-width) katakanas. */
|
|
33
|
+
convertGR?: boolean;
|
|
34
|
+
/**
|
|
35
|
+
* `true` to convert U+30A0 (`゠`, KATAKANA-HIRAGANA DOUBLE HYPHEN) to
|
|
36
|
+
* U+003D (`=`, EQUALS SIGN) when `fullwidthToHalfwidth` is `true` and vice versa.
|
|
37
|
+
*/
|
|
38
|
+
convertUnsafeSpecials?: boolean;
|
|
39
|
+
/** `true` to convert half-width hiraganas to full-width katakanas when `fullwidthToHalfwidth` is `true`, and vice versa. */
|
|
40
|
+
convertHiraganas?: boolean;
|
|
41
|
+
/**
|
|
42
|
+
* If set to `true`, along with `fullwidthToHalfwidth` being `false`, and `convertGR` being `true`,
|
|
43
|
+
* the transliterator will render the pair of a half-width katakana and a voiced sound mark
|
|
44
|
+
* (濁点 — voiced sound mark or 半濁点 — semi-voiced sound mark)
|
|
45
|
+
* into the literally equilavent single full-width katakana character.
|
|
46
|
+
*/
|
|
47
|
+
combineVoicedSoundMarks?: boolean;
|
|
48
|
+
/** `true` to treat U+005C (REVERSE SOLIDUS) as if it were U+00A5 (YEN SIGN) */
|
|
49
|
+
u005cAsYenSign?: boolean;
|
|
50
|
+
/** `true` to treat U+005C verbatim */
|
|
51
|
+
u005cAsBackslash?: boolean;
|
|
52
|
+
/** `true` to convert U+007E (TILDE) to U+FF5E (FULLWIDTH TILDE). When `halfwidthToFullwidth` is `true`, this option, `u007eAsWaveDash`, `u007eAsOverline`, and `u007eAsFullwidthMacron` are mutually exclusive. */
|
|
53
|
+
u007eAsFullwidthTilde?: boolean;
|
|
54
|
+
/** `true` to convert U+007E (TILDE) to U+301C (WAVE DASH). When `halfwidthToFullwidth` is `true`, this option, `u007eAsFullwidthTilde`, `u007eAsOverline`, and `u007eAsFullwidthMacron` are mutually exclusive. */
|
|
55
|
+
u007eAsWaveDash?: boolean;
|
|
56
|
+
/** `true` to convert U+007E (TILDE) to U+203E (OVERLINE). When `halfwidthToFullwidth` is `true`, this option, `u007eAsFullwidthTilde`, `u007eAsWaveDash`, and `u007eAsFullwidthMacron` are mutually exclusive. */
|
|
57
|
+
u007eAsOverline?: boolean;
|
|
58
|
+
/** `true` to convert U+007E (TILDE) to U+FFE3 (FULLWIDTH MACRON). When `halfwidthToFullwidth` is `true`, this option, `u007eAsFullwidthTilde`, `u007eAsWaveDash`, and `u007eAsOverline` are mutually exclusive. */
|
|
59
|
+
u007eAsFullwidthMacron?: boolean;
|
|
60
|
+
/** `true` to convert U+00A5 (YEN SIGN) to U+005C (REVERSE SOLIDUS) */
|
|
61
|
+
u00a5AsYenSign?: boolean;
|
|
62
|
+
};
|
|
63
|
+
/**
|
|
64
|
+
* Replace fullwidth characters with halfwidth equivalents and vice versa.
|
|
65
|
+
*
|
|
66
|
+
* See the module description for detail.
|
|
67
|
+
*
|
|
68
|
+
* @param options Options for the transliterator.
|
|
69
|
+
*/
|
|
70
|
+
declare const _default: (options: Options) => (_: Iterable<Char>) => Iterable<Char>;
|
|
71
|
+
export default _default;
|
|
@@ -0,0 +1,349 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const hira_kata_table_js_1 = require("./hira-kata-table.js");
|
|
4
|
+
const jisx0201GLTable = [
|
|
5
|
+
["\u3000", "\u0020"],
|
|
6
|
+
["\uff01", "\u0021"],
|
|
7
|
+
["\uff02", "\u0022"],
|
|
8
|
+
["\uff03", "\u0023"],
|
|
9
|
+
["\uff04", "\u0024"],
|
|
10
|
+
["\uff05", "\u0025"],
|
|
11
|
+
["\uff06", "\u0026"],
|
|
12
|
+
["\uff07", "\u0027"],
|
|
13
|
+
["\uff08", "\u0028"],
|
|
14
|
+
["\uff09", "\u0029"],
|
|
15
|
+
["\uff0a", "\u002a"],
|
|
16
|
+
["\uff0b", "\u002b"],
|
|
17
|
+
["\uff0c", "\u002c"],
|
|
18
|
+
["\uff0d", "\u002d"],
|
|
19
|
+
["\uff0e", "\u002e"],
|
|
20
|
+
["\uff0f", "\u002f"],
|
|
21
|
+
["\uff10", "\u0030"],
|
|
22
|
+
["\uff11", "\u0031"],
|
|
23
|
+
["\uff12", "\u0032"],
|
|
24
|
+
["\uff13", "\u0033"],
|
|
25
|
+
["\uff14", "\u0034"],
|
|
26
|
+
["\uff15", "\u0035"],
|
|
27
|
+
["\uff16", "\u0036"],
|
|
28
|
+
["\uff17", "\u0037"],
|
|
29
|
+
["\uff18", "\u0038"],
|
|
30
|
+
["\uff19", "\u0039"],
|
|
31
|
+
["\uff1a", "\u003a"],
|
|
32
|
+
["\uff1b", "\u003b"],
|
|
33
|
+
["\uff1c", "\u003c"],
|
|
34
|
+
["\uff1d", "\u003d"],
|
|
35
|
+
["\uff1e", "\u003e"],
|
|
36
|
+
["\uff1f", "\u003f"],
|
|
37
|
+
["\uff20", "\u0040"],
|
|
38
|
+
["\uff21", "\u0041"],
|
|
39
|
+
["\uff22", "\u0042"],
|
|
40
|
+
["\uff23", "\u0043"],
|
|
41
|
+
["\uff24", "\u0044"],
|
|
42
|
+
["\uff25", "\u0045"],
|
|
43
|
+
["\uff26", "\u0046"],
|
|
44
|
+
["\uff27", "\u0047"],
|
|
45
|
+
["\uff28", "\u0048"],
|
|
46
|
+
["\uff29", "\u0049"],
|
|
47
|
+
["\uff2a", "\u004a"],
|
|
48
|
+
["\uff2b", "\u004b"],
|
|
49
|
+
["\uff2c", "\u004c"],
|
|
50
|
+
["\uff2d", "\u004d"],
|
|
51
|
+
["\uff2e", "\u004e"],
|
|
52
|
+
["\uff2f", "\u004f"],
|
|
53
|
+
["\uff30", "\u0050"],
|
|
54
|
+
["\uff31", "\u0051"],
|
|
55
|
+
["\uff32", "\u0052"],
|
|
56
|
+
["\uff33", "\u0053"],
|
|
57
|
+
["\uff34", "\u0054"],
|
|
58
|
+
["\uff35", "\u0055"],
|
|
59
|
+
["\uff36", "\u0056"],
|
|
60
|
+
["\uff37", "\u0057"],
|
|
61
|
+
["\uff38", "\u0058"],
|
|
62
|
+
["\uff39", "\u0059"],
|
|
63
|
+
["\uff3a", "\u005a"],
|
|
64
|
+
["\uff3b", "\u005b"],
|
|
65
|
+
["\uff3d", "\u005d"],
|
|
66
|
+
["\uff3e", "\u005e"],
|
|
67
|
+
["\uff3f", "\u005f"],
|
|
68
|
+
["\uff40", "\u0060"],
|
|
69
|
+
["\uff41", "\u0061"],
|
|
70
|
+
["\uff42", "\u0062"],
|
|
71
|
+
["\uff43", "\u0063"],
|
|
72
|
+
["\uff44", "\u0064"],
|
|
73
|
+
["\uff45", "\u0065"],
|
|
74
|
+
["\uff46", "\u0066"],
|
|
75
|
+
["\uff47", "\u0067"],
|
|
76
|
+
["\uff48", "\u0068"],
|
|
77
|
+
["\uff49", "\u0069"],
|
|
78
|
+
["\uff4a", "\u006a"],
|
|
79
|
+
["\uff4b", "\u006b"],
|
|
80
|
+
["\uff4c", "\u006c"],
|
|
81
|
+
["\uff4d", "\u006d"],
|
|
82
|
+
["\uff4e", "\u006e"],
|
|
83
|
+
["\uff4f", "\u006f"],
|
|
84
|
+
["\uff50", "\u0070"],
|
|
85
|
+
["\uff51", "\u0071"],
|
|
86
|
+
["\uff52", "\u0072"],
|
|
87
|
+
["\uff53", "\u0073"],
|
|
88
|
+
["\uff54", "\u0074"],
|
|
89
|
+
["\uff55", "\u0075"],
|
|
90
|
+
["\uff56", "\u0076"],
|
|
91
|
+
["\uff57", "\u0077"],
|
|
92
|
+
["\uff58", "\u0078"],
|
|
93
|
+
["\uff59", "\u0079"],
|
|
94
|
+
["\uff5a", "\u007a"],
|
|
95
|
+
["\uff5b", "\u007b"],
|
|
96
|
+
["\uff5c", "\u007c"],
|
|
97
|
+
["\uff5d", "\u007d"],
|
|
98
|
+
];
|
|
99
|
+
const jisx0201GLOverrides = {
|
|
100
|
+
u005cAsYenSign: [["\uffe5", "\u005c"]],
|
|
101
|
+
u005cAsBackslash: [["\uff3c", "\u005c"]],
|
|
102
|
+
u007eAsFullwidthTilde: [["\uff5e", "\u007e"]],
|
|
103
|
+
u007eAsWaveDash: [["\u301c", "\u007e"]],
|
|
104
|
+
u007eAsOverline: [["\u203e", "\u007e"]],
|
|
105
|
+
u007eAsFullwidthMacron: [["\uffe3", "\u007e"]],
|
|
106
|
+
u00a5AsYenSign: [["\uffe5", "\u00a5"]],
|
|
107
|
+
};
|
|
108
|
+
const lettersGLFwdMappingsBase = Object.fromEntries(jisx0201GLTable);
|
|
109
|
+
const jisx0201GRTable = [
|
|
110
|
+
["\u3002", "\uff61"],
|
|
111
|
+
["\u300c", "\uff62"],
|
|
112
|
+
["\u300d", "\uff63"],
|
|
113
|
+
["\u3001", "\uff64"],
|
|
114
|
+
["\u30fb", "\uff65"],
|
|
115
|
+
["\u30fc", "\uff70"],
|
|
116
|
+
["\u309b", "\uff9e"],
|
|
117
|
+
["\u309c", "\uff9f"],
|
|
118
|
+
...hira_kata_table_js_1.hiraganaKatakanaTable.flatMap(([_, katakana, halfwidth]) => halfwidth === undefined ? [] : [[katakana[0], halfwidth]]),
|
|
119
|
+
...hira_kata_table_js_1.hiraganaKatakanaSmallTable.flatMap(([_, katakana, halfwidth]) => halfwidth === undefined ? [] : [[katakana, halfwidth]]),
|
|
120
|
+
];
|
|
121
|
+
const specialPunctuationsTable = [["\u30a0", "\u003d"]];
|
|
122
|
+
const voicedLettersTable = hira_kata_table_js_1.hiraganaKatakanaTable.flatMap(([_, katakana, halfwidth]) => halfwidth === undefined
|
|
123
|
+
? []
|
|
124
|
+
: [
|
|
125
|
+
...(katakana[1] === undefined ? [] : [[katakana[1], `${halfwidth}\u{ff9e}`]]),
|
|
126
|
+
...(katakana[2] === undefined ? [] : [[katakana[2], `${halfwidth}\u{ff9f}`]]),
|
|
127
|
+
]);
|
|
128
|
+
const lettersGRFwdMappingsBase = {
|
|
129
|
+
...Object.fromEntries(jisx0201GRTable),
|
|
130
|
+
...Object.fromEntries(voicedLettersTable),
|
|
131
|
+
"\u3099": "\uff9e",
|
|
132
|
+
"\u309a": "\uff9f",
|
|
133
|
+
};
|
|
134
|
+
const lettersGRFwdMappingsHiragana = Object.fromEntries([
|
|
135
|
+
...hira_kata_table_js_1.hiraganaKatakanaTable.flatMap(([hiragana, _, halfwidth]) => hiragana === undefined || halfwidth === undefined
|
|
136
|
+
? []
|
|
137
|
+
: [
|
|
138
|
+
[hiragana[0], halfwidth],
|
|
139
|
+
...(hiragana[1] === undefined ? [] : [[hiragana[1], `${halfwidth}\u{ff9e}`]]),
|
|
140
|
+
...(hiragana[2] === undefined ? [] : [[hiragana[2], `${halfwidth}\u{ff9f}`]]),
|
|
141
|
+
]),
|
|
142
|
+
...hira_kata_table_js_1.hiraganaKatakanaSmallTable.flatMap(([hiragana, _, halfwidth]) => hiragana === undefined || halfwidth === undefined ? [] : [[hiragana, halfwidth]]),
|
|
143
|
+
]);
|
|
144
|
+
const buildMutuallyExclusiveErrorMessage = (...names) => {
|
|
145
|
+
const last = names.pop();
|
|
146
|
+
return `${names.join(", ")} and ${last} are mutually exclusive, and cannot be set to true at the same time.`;
|
|
147
|
+
};
|
|
148
|
+
const getFwdMappings = (() => {
|
|
149
|
+
const mappingsVariations = {};
|
|
150
|
+
return ({ convertGL, convertGR, convertUnsafeSpecials, convertHiraganas, ...overrides }) => {
|
|
151
|
+
if (overrides.u005cAsYenSign && overrides.u00a5AsYenSign) {
|
|
152
|
+
throw new Error(buildMutuallyExclusiveErrorMessage("u005cAsYenSign", "u00a5AsYenSign"));
|
|
153
|
+
}
|
|
154
|
+
const key = `${Number(!!convertGL)}-${Number(!!convertGR)}-${Number(!!convertUnsafeSpecials)}-${Number(!!convertHiraganas)}-${Number(!!overrides.u005cAsYenSign)}-${Number(!!overrides.u005cAsBackslash)}-${Number(!!overrides.u007eAsFullwidthTilde)}-${Number(!!overrides.u007eAsWaveDash)}-${Number(!!overrides.u007eAsOverline)}-${Number(!!overrides.u007eAsFullwidthMacron)}-${Number(!!overrides.u00a5AsYenSign)}`;
|
|
155
|
+
// biome-ignore lint/suspicious/noAssignInExpressions: efficiency
|
|
156
|
+
return (mappingsVariations[key] ?? (mappingsVariations[key] = {
|
|
157
|
+
...(convertGL ? lettersGLFwdMappingsBase : {}),
|
|
158
|
+
...(convertGL
|
|
159
|
+
? Object.fromEntries(Object.entries(overrides)
|
|
160
|
+
.filter((pair) => !!pair[1])
|
|
161
|
+
.flatMap((pair) => jisx0201GLOverrides[pair[0]]))
|
|
162
|
+
: {}),
|
|
163
|
+
...(convertGL && convertUnsafeSpecials ? Object.fromEntries(specialPunctuationsTable) : {}),
|
|
164
|
+
...(convertGR ? lettersGRFwdMappingsBase : {}),
|
|
165
|
+
...(convertGR && convertHiraganas ? lettersGRFwdMappingsHiragana : {}),
|
|
166
|
+
}));
|
|
167
|
+
};
|
|
168
|
+
})();
|
|
169
|
+
const lettersGLRevMappingsBase = Object.fromEntries(jisx0201GLTable.map((pair) => [pair[1], pair[0]]));
|
|
170
|
+
const lettersGRRevMappingsBase = Object.fromEntries(jisx0201GRTable.map((pair) => [pair[1], pair[0]]));
|
|
171
|
+
const voicedLettersRevMappings = (() => {
|
|
172
|
+
var _a;
|
|
173
|
+
const result = {};
|
|
174
|
+
for (const pair of voicedLettersTable) {
|
|
175
|
+
// biome-ignore lint/suspicious/noAssignInExpressions: as intended
|
|
176
|
+
(result[_a = pair[1][0]] ?? (result[_a] = {}))[pair[1][1]] = pair[0];
|
|
177
|
+
}
|
|
178
|
+
return result;
|
|
179
|
+
})();
|
|
180
|
+
const getRevMappings = (() => {
|
|
181
|
+
const mappingsVariations = {};
|
|
182
|
+
return ({ combineVoicedSoundMarks, convertGL, convertGR, convertUnsafeSpecials, ...overrides }) => {
|
|
183
|
+
const groups = Object.entries(jisx0201GLOverrides).reduce((acc, [key, pairs]) => {
|
|
184
|
+
for (const pair of pairs) {
|
|
185
|
+
const revCode = pair[1];
|
|
186
|
+
if (acc[revCode] !== undefined) {
|
|
187
|
+
acc[revCode].push(key);
|
|
188
|
+
}
|
|
189
|
+
else {
|
|
190
|
+
acc[revCode] = [key];
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
return acc;
|
|
194
|
+
}, {});
|
|
195
|
+
for (const [_, keys] of Object.entries(groups)) {
|
|
196
|
+
const specifiedKeys = keys.filter((key) => overrides[key]);
|
|
197
|
+
if (specifiedKeys.length > 1) {
|
|
198
|
+
throw new Error(buildMutuallyExclusiveErrorMessage(...specifiedKeys));
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
const key = `${Number(!!convertGL)}-${Number(!!convertGR)}-${Number(!!convertUnsafeSpecials)}-${Number(!!overrides.u005cAsYenSign)}-${Number(!!overrides.u005cAsBackslash)}-${Number(!!overrides.u007eAsFullwidthTilde)}-${Number(!!overrides.u007eAsWaveDash)}-${Number(!!overrides.u007eAsOverline)}-${Number(!!overrides.u007eAsFullwidthMacron)}-${Number(!!overrides.u00a5AsYenSign)}`;
|
|
202
|
+
// biome-ignore lint/suspicious/noAssignInExpressions: efficiency
|
|
203
|
+
return (mappingsVariations[key] ?? (mappingsVariations[key] = {
|
|
204
|
+
...(convertGL ? lettersGLRevMappingsBase : {}),
|
|
205
|
+
...(convertGL
|
|
206
|
+
? Object.fromEntries(Object.entries(overrides)
|
|
207
|
+
.filter((pair) => !!pair[1])
|
|
208
|
+
.flatMap((pair) => jisx0201GLOverrides[pair[0]])
|
|
209
|
+
.map((pair) => [pair[1], pair[0]]))
|
|
210
|
+
: {}),
|
|
211
|
+
...(convertGR ? lettersGRRevMappingsBase : {}),
|
|
212
|
+
...(convertGL && convertUnsafeSpecials
|
|
213
|
+
? Object.fromEntries(specialPunctuationsTable.map((pair) => [pair[1], pair[0]]))
|
|
214
|
+
: {}),
|
|
215
|
+
}));
|
|
216
|
+
};
|
|
217
|
+
})();
|
|
218
|
+
const convertFullwidthToHalfWidth = (options) => {
|
|
219
|
+
const mappings = getFwdMappings(options);
|
|
220
|
+
return function* (chars) {
|
|
221
|
+
let offset = 0;
|
|
222
|
+
for (const c of chars) {
|
|
223
|
+
const cc = mappings[c.c];
|
|
224
|
+
if (cc !== undefined) {
|
|
225
|
+
yield {
|
|
226
|
+
c: cc,
|
|
227
|
+
offset: offset++,
|
|
228
|
+
source: c,
|
|
229
|
+
};
|
|
230
|
+
}
|
|
231
|
+
else {
|
|
232
|
+
yield {
|
|
233
|
+
c: c.c,
|
|
234
|
+
offset: offset++,
|
|
235
|
+
source: c,
|
|
236
|
+
};
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
};
|
|
240
|
+
};
|
|
241
|
+
const convertHalfwidthToFullwidth = (options) => {
|
|
242
|
+
const combineVoicedSoundMarks = options.combineVoicedSoundMarks && options.convertGR;
|
|
243
|
+
const lettersRevMappings = getRevMappings(options);
|
|
244
|
+
return function* (chars) {
|
|
245
|
+
let voiced;
|
|
246
|
+
let offset = 0;
|
|
247
|
+
for (const c of chars) {
|
|
248
|
+
if (voiced !== undefined) {
|
|
249
|
+
const [bc, secondMappings] = voiced;
|
|
250
|
+
voiced = undefined;
|
|
251
|
+
{
|
|
252
|
+
const cc = secondMappings[c.c];
|
|
253
|
+
if (cc !== undefined) {
|
|
254
|
+
yield {
|
|
255
|
+
c: cc,
|
|
256
|
+
offset: offset++,
|
|
257
|
+
source: bc,
|
|
258
|
+
};
|
|
259
|
+
voiced = undefined;
|
|
260
|
+
continue;
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
{
|
|
264
|
+
const cc = lettersRevMappings[bc.c];
|
|
265
|
+
if (cc !== undefined) {
|
|
266
|
+
yield {
|
|
267
|
+
c: cc,
|
|
268
|
+
offset: offset++,
|
|
269
|
+
source: bc,
|
|
270
|
+
};
|
|
271
|
+
}
|
|
272
|
+
else {
|
|
273
|
+
yield {
|
|
274
|
+
c: bc.c,
|
|
275
|
+
offset: offset++,
|
|
276
|
+
source: bc,
|
|
277
|
+
};
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
if (combineVoicedSoundMarks) {
|
|
282
|
+
const sm = voicedLettersRevMappings[c.c];
|
|
283
|
+
if (sm !== undefined) {
|
|
284
|
+
voiced = [c, sm];
|
|
285
|
+
continue;
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
{
|
|
289
|
+
const cc = lettersRevMappings[c.c];
|
|
290
|
+
if (cc !== undefined) {
|
|
291
|
+
yield {
|
|
292
|
+
c: cc,
|
|
293
|
+
offset: offset++,
|
|
294
|
+
source: c,
|
|
295
|
+
};
|
|
296
|
+
}
|
|
297
|
+
else {
|
|
298
|
+
yield {
|
|
299
|
+
c: c.c,
|
|
300
|
+
offset: offset++,
|
|
301
|
+
source: c,
|
|
302
|
+
};
|
|
303
|
+
}
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
};
|
|
307
|
+
};
|
|
308
|
+
const mergeWithDefaultsFwd = (options) => ({
|
|
309
|
+
convertGL: options.convertGL ?? true,
|
|
310
|
+
convertGR: options.convertGR ?? true,
|
|
311
|
+
convertUnsafeSpecials: options.convertUnsafeSpecials ?? true,
|
|
312
|
+
convertHiraganas: options.convertHiraganas ?? false,
|
|
313
|
+
u005cAsYenSign: options.u005cAsYenSign ?? options.u00a5AsYenSign === undefined,
|
|
314
|
+
u005cAsBackslash: options.u005cAsBackslash ?? false,
|
|
315
|
+
u007eAsFullwidthTilde: options.u007eAsFullwidthTilde ?? true,
|
|
316
|
+
u007eAsWaveDash: options.u007eAsWaveDash ?? true,
|
|
317
|
+
u007eAsOverline: options.u007eAsOverline ?? false,
|
|
318
|
+
u007eAsFullwidthMacron: options.u007eAsFullwidthMacron ?? false,
|
|
319
|
+
u00a5AsYenSign: options.u00a5AsYenSign ?? false,
|
|
320
|
+
});
|
|
321
|
+
const mergeWithDefaultsRev = (options) => ({
|
|
322
|
+
convertGL: options.convertGL ?? true,
|
|
323
|
+
convertGR: options.convertGR ?? true,
|
|
324
|
+
convertUnsafeSpecials: options.convertUnsafeSpecials ?? false,
|
|
325
|
+
combineVoicedSoundMarks: options.combineVoicedSoundMarks ?? true,
|
|
326
|
+
u005cAsYenSign: options.u005cAsYenSign ?? options.u005cAsBackslash === undefined,
|
|
327
|
+
u005cAsBackslash: options.u005cAsBackslash ?? false,
|
|
328
|
+
u007eAsFullwidthTilde: options.u007eAsFullwidthTilde ??
|
|
329
|
+
(options.u007eAsWaveDash === undefined &&
|
|
330
|
+
options.u007eAsOverline === undefined &&
|
|
331
|
+
options.u007eAsFullwidthMacron === undefined),
|
|
332
|
+
u007eAsWaveDash: options.u007eAsWaveDash ?? false,
|
|
333
|
+
u007eAsOverline: options.u007eAsOverline ?? false,
|
|
334
|
+
u007eAsFullwidthMacron: options.u007eAsFullwidthMacron ?? false,
|
|
335
|
+
u00a5AsYenSign: options.u00a5AsYenSign ?? true,
|
|
336
|
+
});
|
|
337
|
+
/**
|
|
338
|
+
* Replace fullwidth characters with halfwidth equivalents and vice versa.
|
|
339
|
+
*
|
|
340
|
+
* See the module description for detail.
|
|
341
|
+
*
|
|
342
|
+
* @param options Options for the transliterator.
|
|
343
|
+
*/
|
|
344
|
+
exports.default = (options) => {
|
|
345
|
+
return (options.fullwidthToHalfwidth ?? true)
|
|
346
|
+
? convertFullwidthToHalfWidth(mergeWithDefaultsFwd(options))
|
|
347
|
+
: convertHalfwidthToFullwidth(mergeWithDefaultsRev(options));
|
|
348
|
+
};
|
|
349
|
+
//# sourceMappingURL=jisx0201-and-alike.js.map
|