@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.
Files changed (130) hide show
  1. package/README.ja.md +177 -0
  2. package/README.md +177 -0
  3. package/dist/cjs/chars.d.ts +3 -0
  4. package/dist/cjs/chars.js +42 -0
  5. package/dist/cjs/chars.js.map +1 -0
  6. package/dist/cjs/index.d.ts +35 -0
  7. package/dist/cjs/index.js +48 -0
  8. package/dist/cjs/index.js.map +1 -0
  9. package/dist/cjs/intrinsics.d.ts +4 -0
  10. package/dist/cjs/intrinsics.js +33 -0
  11. package/dist/cjs/intrinsics.js.map +1 -0
  12. package/dist/cjs/recipes.d.ts +176 -0
  13. package/dist/cjs/recipes.js +155 -0
  14. package/dist/cjs/recipes.js.map +1 -0
  15. package/dist/cjs/transliterators/circled-or-squared.d.ts +27 -0
  16. package/dist/cjs/transliterators/circled-or-squared.js +491 -0
  17. package/dist/cjs/transliterators/circled-or-squared.js.map +1 -0
  18. package/dist/cjs/transliterators/combined.d.ts +15 -0
  19. package/dist/cjs/transliterators/combined.js +510 -0
  20. package/dist/cjs/transliterators/combined.js.map +1 -0
  21. package/dist/cjs/transliterators/hira-kata-composition.d.ts +11 -0
  22. package/dist/cjs/transliterators/hira-kata-composition.js +46 -0
  23. package/dist/cjs/transliterators/hira-kata-composition.js.map +1 -0
  24. package/dist/cjs/transliterators/hira-kata-table.d.ts +4 -0
  25. package/dist/cjs/transliterators/hira-kata-table.js +80 -0
  26. package/dist/cjs/transliterators/hira-kata-table.js.map +1 -0
  27. package/dist/cjs/transliterators/hira-kata.d.ts +6 -0
  28. package/dist/cjs/transliterators/hira-kata.js +67 -0
  29. package/dist/cjs/transliterators/hira-kata.js.map +1 -0
  30. package/dist/cjs/transliterators/hyphens.d.ts +35 -0
  31. package/dist/cjs/transliterators/hyphens.js +329 -0
  32. package/dist/cjs/transliterators/hyphens.js.map +1 -0
  33. package/dist/cjs/transliterators/ideographic-annotations.d.ts +15 -0
  34. package/dist/cjs/transliterators/ideographic-annotations.js +39 -0
  35. package/dist/cjs/transliterators/ideographic-annotations.js.map +1 -0
  36. package/dist/cjs/transliterators/index.d.ts +19 -0
  37. package/dist/cjs/transliterators/index.js +67 -0
  38. package/dist/cjs/transliterators/index.js.map +1 -0
  39. package/dist/cjs/transliterators/ivs-svs-base.d.ts +34 -0
  40. package/dist/cjs/transliterators/ivs-svs-base.js +567 -0
  41. package/dist/cjs/transliterators/ivs-svs-base.js.map +1 -0
  42. package/dist/cjs/transliterators/japanese-iteration-marks.d.ts +4 -0
  43. package/dist/cjs/transliterators/japanese-iteration-marks.js +206 -0
  44. package/dist/cjs/transliterators/japanese-iteration-marks.js.map +1 -0
  45. package/dist/cjs/transliterators/jisx0201-and-alike.d.ts +71 -0
  46. package/dist/cjs/transliterators/jisx0201-and-alike.js +349 -0
  47. package/dist/cjs/transliterators/jisx0201-and-alike.js.map +1 -0
  48. package/dist/cjs/transliterators/kanji-old-new.d.ts +15 -0
  49. package/dist/cjs/transliterators/kanji-old-new.js +1103 -0
  50. package/dist/cjs/transliterators/kanji-old-new.js.map +1 -0
  51. package/dist/cjs/transliterators/mathematical-alphanumerics.d.ts +15 -0
  52. package/dist/cjs/transliterators/mathematical-alphanumerics.js +765 -0
  53. package/dist/cjs/transliterators/mathematical-alphanumerics.js.map +1 -0
  54. package/dist/cjs/transliterators/prolonged-sound-marks.d.ts +13 -0
  55. package/dist/cjs/transliterators/prolonged-sound-marks.js +147 -0
  56. package/dist/cjs/transliterators/prolonged-sound-marks.js.map +1 -0
  57. package/dist/cjs/transliterators/radicals.d.ts +15 -0
  58. package/dist/cjs/transliterators/radicals.js +327 -0
  59. package/dist/cjs/transliterators/radicals.js.map +1 -0
  60. package/dist/cjs/transliterators/spaces.d.ts +15 -0
  61. package/dist/cjs/transliterators/spaces.js +45 -0
  62. package/dist/cjs/transliterators/spaces.js.map +1 -0
  63. package/dist/cjs/types.d.ts +7 -0
  64. package/dist/cjs/types.js +3 -0
  65. package/dist/cjs/types.js.map +1 -0
  66. package/dist/esm/chars.d.ts +3 -0
  67. package/dist/esm/chars.js +37 -0
  68. package/dist/esm/chars.js.map +1 -0
  69. package/dist/esm/index.d.ts +35 -0
  70. package/dist/esm/index.js +40 -0
  71. package/dist/esm/index.js.map +1 -0
  72. package/dist/esm/intrinsics.d.ts +4 -0
  73. package/dist/esm/intrinsics.js +28 -0
  74. package/dist/esm/intrinsics.js.map +1 -0
  75. package/dist/esm/package.json +1 -0
  76. package/dist/esm/recipes.d.ts +176 -0
  77. package/dist/esm/recipes.js +151 -0
  78. package/dist/esm/recipes.js.map +1 -0
  79. package/dist/esm/transliterators/circled-or-squared.d.ts +27 -0
  80. package/dist/esm/transliterators/circled-or-squared.js +489 -0
  81. package/dist/esm/transliterators/circled-or-squared.js.map +1 -0
  82. package/dist/esm/transliterators/combined.d.ts +15 -0
  83. package/dist/esm/transliterators/combined.js +508 -0
  84. package/dist/esm/transliterators/combined.js.map +1 -0
  85. package/dist/esm/transliterators/hira-kata-composition.d.ts +11 -0
  86. package/dist/esm/transliterators/hira-kata-composition.js +44 -0
  87. package/dist/esm/transliterators/hira-kata-composition.js.map +1 -0
  88. package/dist/esm/transliterators/hira-kata-table.d.ts +4 -0
  89. package/dist/esm/transliterators/hira-kata-table.js +77 -0
  90. package/dist/esm/transliterators/hira-kata-table.js.map +1 -0
  91. package/dist/esm/transliterators/hira-kata.d.ts +6 -0
  92. package/dist/esm/transliterators/hira-kata.js +65 -0
  93. package/dist/esm/transliterators/hira-kata.js.map +1 -0
  94. package/dist/esm/transliterators/hyphens.d.ts +35 -0
  95. package/dist/esm/transliterators/hyphens.js +326 -0
  96. package/dist/esm/transliterators/hyphens.js.map +1 -0
  97. package/dist/esm/transliterators/ideographic-annotations.d.ts +15 -0
  98. package/dist/esm/transliterators/ideographic-annotations.js +37 -0
  99. package/dist/esm/transliterators/ideographic-annotations.js.map +1 -0
  100. package/dist/esm/transliterators/index.d.ts +19 -0
  101. package/dist/esm/transliterators/index.js +30 -0
  102. package/dist/esm/transliterators/index.js.map +1 -0
  103. package/dist/esm/transliterators/ivs-svs-base.d.ts +34 -0
  104. package/dist/esm/transliterators/ivs-svs-base.js +564 -0
  105. package/dist/esm/transliterators/ivs-svs-base.js.map +1 -0
  106. package/dist/esm/transliterators/japanese-iteration-marks.d.ts +4 -0
  107. package/dist/esm/transliterators/japanese-iteration-marks.js +204 -0
  108. package/dist/esm/transliterators/japanese-iteration-marks.js.map +1 -0
  109. package/dist/esm/transliterators/jisx0201-and-alike.d.ts +71 -0
  110. package/dist/esm/transliterators/jisx0201-and-alike.js +347 -0
  111. package/dist/esm/transliterators/jisx0201-and-alike.js.map +1 -0
  112. package/dist/esm/transliterators/kanji-old-new.d.ts +15 -0
  113. package/dist/esm/transliterators/kanji-old-new.js +1101 -0
  114. package/dist/esm/transliterators/kanji-old-new.js.map +1 -0
  115. package/dist/esm/transliterators/mathematical-alphanumerics.d.ts +15 -0
  116. package/dist/esm/transliterators/mathematical-alphanumerics.js +763 -0
  117. package/dist/esm/transliterators/mathematical-alphanumerics.js.map +1 -0
  118. package/dist/esm/transliterators/prolonged-sound-marks.d.ts +13 -0
  119. package/dist/esm/transliterators/prolonged-sound-marks.js +145 -0
  120. package/dist/esm/transliterators/prolonged-sound-marks.js.map +1 -0
  121. package/dist/esm/transliterators/radicals.d.ts +15 -0
  122. package/dist/esm/transliterators/radicals.js +325 -0
  123. package/dist/esm/transliterators/radicals.js.map +1 -0
  124. package/dist/esm/transliterators/spaces.d.ts +15 -0
  125. package/dist/esm/transliterators/spaces.js +43 -0
  126. package/dist/esm/transliterators/spaces.js.map +1 -0
  127. package/dist/esm/types.d.ts +7 -0
  128. package/dist/esm/types.js +2 -0
  129. package/dist/esm/types.js.map +1 -0
  130. 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,4 @@
1
+ import type { Char } from "../types.js";
2
+ export type Options = Record<string, never>;
3
+ declare const _default: (_: Options) => ((_: Iterable<Char>) => Iterable<Char>);
4
+ export default _default;
@@ -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