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