@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,176 @@
1
+ import type { Mapping } from "./transliterators/hyphens.js";
2
+ import type { TransliteratorConfig } from "./transliterators/index.js";
3
+ import type { Charset } from "./transliterators/ivs-svs-base.js";
4
+ export type TransliterationRecipe = {
5
+ /**
6
+ * Replace codepoints that correspond to old-style kanji glyphs (旧字体; kyu-ji-tai) with their modern equivalents (新字体; shin-ji-tai).
7
+ * @example
8
+ * ```js
9
+ * // Input: "舊字體の變換"
10
+ * // Output: "旧字体の変換"
11
+ * ```
12
+ */
13
+ kanjiOldNew?: boolean;
14
+ /**
15
+ * Convert between hiragana and katakana scripts.
16
+ * @example
17
+ * ```js
18
+ * // Input: "ひらがな" (with "hira-to-kata")
19
+ * // Output: "ヒラガナ"
20
+ * // Input: "カタカナ" (with "kata-to-hira")
21
+ * // Output: "かたかな"
22
+ * ```
23
+ */
24
+ hiraKata?: "hira-to-kata" | "kata-to-hira";
25
+ /**
26
+ * Replace Japanese iteration marks with the characters they represent.
27
+ * @example
28
+ * ```js
29
+ * // Input: "時々"
30
+ * // Output: "時時"
31
+ * // Input: "いすゞ"
32
+ * // Output: "いすず"
33
+ * ```
34
+ */
35
+ replaceJapaneseIterationMarks?: boolean;
36
+ /**
37
+ * Replace "suspicious" hyphens with prolonged sound marks, and vice versa.
38
+ * @example
39
+ * ```js
40
+ * // Input: "スーパ-" (with hyphen-minus)
41
+ * // Output: "スーパー" (becomes prolonged sound mark)
42
+ * ```
43
+ */
44
+ replaceSuspiciousHyphensToProlongedSoundMarks?: boolean;
45
+ /**
46
+ * Replace circled or squared characters with their corresponding templates.
47
+ * @example
48
+ * ```js
49
+ * // Input: "①②③"
50
+ * // Output: "(1)(2)(3)"
51
+ * // Input: "㊙㊗"
52
+ * // Output: "(秘)(祝)"
53
+ * ```
54
+ */
55
+ replaceCircledOrSquaredCharacters?: boolean | "exclude-emojis";
56
+ /**
57
+ * Replace combined characters with their corresponding characters.
58
+ * @example
59
+ * ```js
60
+ * // Input: "㍻" (single character for Heisei era)
61
+ * // Output: "平成"
62
+ * // Input: "㈱"
63
+ * // Output: "(株)"
64
+ * ```
65
+ */
66
+ replaceCombinedCharacters?: boolean;
67
+ /**
68
+ * Replace ideographic annotations used in the traditional method of Chinese-to-Japanese translation deviced in the ancient Japan.
69
+ * @example
70
+ * ```js
71
+ * // Input: "㆖㆘" (ideographic annotations)
72
+ * // Output: "上下"
73
+ * ```
74
+ */
75
+ replaceIdeographicAnnotations?: boolean;
76
+ /**
77
+ * Replace codepoints for the Kang Xi radicals whose glyphs resemble those of CJK ideographs with the CJK ideograph counterparts.
78
+ * @example
79
+ * ```js
80
+ * // Input: "⾔⾨⾷" (Kangxi radicals)
81
+ * // Output: "言門食" (CJK ideographs)
82
+ * ```
83
+ */
84
+ replaceRadicals?: boolean;
85
+ /**
86
+ * Replace various space characters with plain whitespaces or empty strings.
87
+ * @example
88
+ * ```js
89
+ * // Input: "A B" (ideographic space U+3000)
90
+ * // Output: "A B" (half-width space)
91
+ * // Input: "A B" (non-breaking space U+00A0)
92
+ * // Output: "A B" (regular space)
93
+ * ```
94
+ */
95
+ replaceSpaces?: boolean;
96
+ /**
97
+ * Replace various dash or hyphen symbols with those common in Japanese writing.
98
+ * @example
99
+ * ```js
100
+ * // Input: "2019—2020" (em dash)
101
+ * // Output: "2019-2020" (hyphen-minus)
102
+ * // Input: "A–B" (en dash)
103
+ * // Output: "A-B"
104
+ * ```
105
+ */
106
+ replaceHyphens?: boolean | Mapping[];
107
+ /**
108
+ * Replace mathematical alphanumerics with their plain ASCII equivalents.
109
+ * @example
110
+ * ```js
111
+ * // Input: "𝐀𝐁𝐂" (mathematical bold)
112
+ * // Output: "ABC"
113
+ * // Input: "𝟏𝟐𝟑" (mathematical bold digits)
114
+ * // Output: "123"
115
+ * ```
116
+ */
117
+ replaceMathematicalAlphanumerics?: boolean;
118
+ /**
119
+ * Combine decomposed hiraganas and katakanas into single counterparts.
120
+ * @example
121
+ * ```js
122
+ * // Input: "が" (か + ゙)
123
+ * // Output: "が" (single character)
124
+ * // Input: "ヘ゜" (ヘ + ゜)
125
+ * // Output: "ペ" (single character)
126
+ * ```
127
+ */
128
+ combineDecomposedHiraganasAndKatakanas?: boolean;
129
+ /**
130
+ * Replace half-width characters in that they are marked as half-width or ambiguous in the East Asian Width table to the fullwidth equivalents.
131
+ * Specify `"u005c-as-yen-sign"` instead of a boolean to treat the backslash character (U+005C) as the yen sign in JIS X 0201.
132
+ * @example
133
+ * ```js
134
+ * // Input: "ABC123"
135
+ * // Output: "ABC123"
136
+ * // Input: "カタカナ"
137
+ * // Output: "カタカナ"
138
+ * ```
139
+ */
140
+ toFullwidth?: boolean | "u005c-as-yen-sign";
141
+ /**
142
+ * Replace full-width characters with their half-width equivalents.
143
+ * Specify `"hankaku-kana"` instead of a boolean to handle half-width katakanas too.
144
+ * @example
145
+ * ```js
146
+ * // Input: "ABC123"
147
+ * // Output: "ABC123"
148
+ * // Input: "カタカナ" (with hankaku-kana)
149
+ * // Output: "カタカナ"
150
+ * ```
151
+ */
152
+ toHalfwidth?: boolean | "hankaku-kana";
153
+ /**
154
+ * Replace CJK ideographs followed by IVSes and SVSes with those without selectors based on Adobe-Japan1 character mappings.
155
+ * Specify `"drop-all-selectors"` to get rid of all selectors from the result.
156
+ * @example
157
+ * ```js
158
+ * // Input: "葛󠄀" (葛 + IVS U+E0100)
159
+ * // Output: "葛" (without selector)
160
+ * // Input: "辻󠄀" (辻 + IVS)
161
+ * // Output: "辻"
162
+ * ```
163
+ */
164
+ removeIVSSVS?: boolean | "drop-all-selectors";
165
+ /**
166
+ * Charset assumed during IVS/SVS transliteration. The default is `"unijis_2004"`.
167
+ */
168
+ charset?: Charset;
169
+ };
170
+ /**
171
+ * Builds an array of {@link TransliteratorConfig} from a recipe object.
172
+ *
173
+ * @param recipe An object that conforms to {@link TransliterationRecipe}.
174
+ * @returns An array of {@link TransliteratorConfig} that can be passed to {@link intrinsics.makeChainedTransliterator}.
175
+ */
176
+ export declare const buildTransliteratorConfigsFromRecipe: (recipe: TransliterationRecipe) => TransliteratorConfig[];
@@ -0,0 +1,155 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.buildTransliteratorConfigsFromRecipe = void 0;
4
+ const applicationOrder = [
5
+ "kanjiOldNew",
6
+ "replaceSuspiciousHyphensToProlongedSoundMarks",
7
+ "replaceCircledOrSquaredCharacters",
8
+ "replaceCombinedCharacters",
9
+ "replaceIdeographicAnnotations",
10
+ "replaceRadicals",
11
+ "replaceSpaces",
12
+ "replaceHyphens",
13
+ "replaceMathematicalAlphanumerics",
14
+ "combineDecomposedHiraganasAndKatakanas",
15
+ "toFullwidth",
16
+ "hiraKata",
17
+ "replaceJapaneseIterationMarks",
18
+ "toHalfwidth",
19
+ "removeIVSSVS",
20
+ ];
21
+ const insertHead = (ctx, config, forceReplace) => {
22
+ const i = ctx.head.findIndex((c) => c[0] === config[0]);
23
+ if (i >= 0) {
24
+ return forceReplace
25
+ ? {
26
+ ...ctx,
27
+ head: [...ctx.head.slice(0, i), config, ...ctx.head.slice(i + 1)],
28
+ }
29
+ : ctx;
30
+ }
31
+ return {
32
+ ...ctx,
33
+ head: [config, ...ctx.head],
34
+ };
35
+ };
36
+ const insertMiddle = (ctx, config, forceReplace) => {
37
+ const i = ctx.tail.findIndex((c) => c[0] === config[0]);
38
+ if (i >= 0) {
39
+ return forceReplace
40
+ ? {
41
+ ...ctx,
42
+ tail: [...ctx.tail.slice(0, i), config, ...ctx.tail.slice(i + 1)],
43
+ }
44
+ : ctx;
45
+ }
46
+ return {
47
+ ...ctx,
48
+ tail: [config, ...ctx.tail],
49
+ };
50
+ };
51
+ const insertTail = (ctx, config, forceReplace) => {
52
+ const i = ctx.tail.findIndex((c) => c[0] === config[0]);
53
+ if (i >= 0) {
54
+ return forceReplace
55
+ ? {
56
+ ...ctx,
57
+ tail: [...ctx.tail.slice(0, i), ...ctx.tail.slice(i + 1), config],
58
+ }
59
+ : ctx;
60
+ }
61
+ return {
62
+ ...ctx,
63
+ tail: [...ctx.tail, config],
64
+ };
65
+ };
66
+ const removeIVSSVS = (ctx, dropSelectorsAltogether, charset) => insertTail(insertHead(ctx, ["ivs-svs-base", { mode: "ivs-or-svs" }], true), ["ivs-svs-base", { mode: "base", dropSelectorsAltogether, charset: charset }], true);
67
+ const transliteratorAppliers = {
68
+ kanjiOldNew: (ctx, recipe) => recipe.kanjiOldNew ? insertMiddle(removeIVSSVS(ctx, false, recipe.charset), ["kanji-old-new", {}]) : ctx,
69
+ hiraKata: (ctx, recipe) => (recipe.hiraKata ? insertMiddle(ctx, ["hira-kata", { mode: recipe.hiraKata }]) : ctx),
70
+ replaceJapaneseIterationMarks: (ctx, recipe) => {
71
+ if (!recipe.replaceJapaneseIterationMarks)
72
+ return ctx;
73
+ // Insert HiraKataComposition at head to ensure composed forms
74
+ ctx = insertHead(ctx, ["hira-kata-composition", { composeNonCombiningMarks: true }]);
75
+ // Then insert the japanese-iteration-marks in the middle
76
+ return insertMiddle(ctx, ["japanese-iteration-marks", {}]);
77
+ },
78
+ replaceSuspiciousHyphensToProlongedSoundMarks: (ctx, recipe) => recipe.replaceSuspiciousHyphensToProlongedSoundMarks
79
+ ? insertMiddle(ctx, ["prolonged-sound-marks", { replaceProlongedMarksFollowingAlnums: true }])
80
+ : ctx,
81
+ replaceCircledOrSquaredCharacters: (ctx, recipe) => recipe.replaceCircledOrSquaredCharacters
82
+ ? insertMiddle(ctx, [
83
+ "circled-or-squared",
84
+ {
85
+ includeEmojis: recipe.replaceCircledOrSquaredCharacters !== "exclude-emojis",
86
+ },
87
+ ])
88
+ : ctx,
89
+ replaceCombinedCharacters: (ctx, recipe) => recipe.replaceCombinedCharacters ? insertMiddle(ctx, ["combined", {}]) : ctx,
90
+ replaceIdeographicAnnotations: (ctx, recipe) => recipe.replaceIdeographicAnnotations ? insertMiddle(ctx, ["ideographic-annotations", {}]) : ctx,
91
+ replaceRadicals: (ctx, recipe) => (recipe.replaceRadicals ? insertMiddle(ctx, ["radicals", {}]) : ctx),
92
+ replaceSpaces: (ctx, recipe) => (recipe.replaceSpaces ? insertMiddle(ctx, ["spaces", {}]) : ctx),
93
+ replaceHyphens: (ctx, recipe) => recipe.replaceHyphens
94
+ ? insertMiddle(ctx, [
95
+ "hyphens",
96
+ {
97
+ precedence: typeof recipe.replaceHyphens === "boolean" ? ["jisx0208_90_windows", "jisx0201"] : recipe.replaceHyphens,
98
+ },
99
+ ])
100
+ : ctx,
101
+ replaceMathematicalAlphanumerics: (ctx, recipe) => recipe.replaceMathematicalAlphanumerics ? insertMiddle(ctx, ["mathematical-alphanumerics", {}]) : ctx,
102
+ combineDecomposedHiraganasAndKatakanas: (ctx, recipe) => recipe.combineDecomposedHiraganasAndKatakanas
103
+ ? insertHead(ctx, ["hira-kata-composition", { composeNonCombiningMarks: true }])
104
+ : ctx,
105
+ toHalfwidth: (ctx, recipe) => {
106
+ if (recipe.toHalfwidth && recipe.toFullwidth) {
107
+ throw ["toHalfwidth and toFullwidth are mutually exclusive"];
108
+ }
109
+ return recipe.toHalfwidth
110
+ ? insertTail(ctx, [
111
+ "jisx0201-and-alike",
112
+ { fullwidthToHalfwidth: true, convertGL: true, convertGR: recipe.toHalfwidth === "hankaku-kana" },
113
+ ])
114
+ : ctx;
115
+ },
116
+ toFullwidth: (ctx, recipe) => {
117
+ if (recipe.toFullwidth && recipe.toHalfwidth) {
118
+ throw ["toFullwidth and toHalfwidth are mutually exclusive"];
119
+ }
120
+ return recipe.toFullwidth
121
+ ? insertTail(ctx, [
122
+ "jisx0201-and-alike",
123
+ { fullwidthToHalfwidth: false, u005cAsYenSign: recipe.toFullwidth === "u005c-as-yen-sign" },
124
+ ])
125
+ : ctx;
126
+ },
127
+ removeIVSSVS: (ctx, recipe) => recipe.removeIVSSVS ? removeIVSSVS(ctx, recipe.removeIVSSVS === "drop-all-selectors", recipe.charset) : ctx,
128
+ };
129
+ /**
130
+ * Builds an array of {@link TransliteratorConfig} from a recipe object.
131
+ *
132
+ * @param recipe An object that conforms to {@link TransliterationRecipe}.
133
+ * @returns An array of {@link TransliteratorConfig} that can be passed to {@link intrinsics.makeChainedTransliterator}.
134
+ */
135
+ const buildTransliteratorConfigsFromRecipe = (recipe) => {
136
+ let ctx = { head: [], tail: [] };
137
+ const errors = [];
138
+ for (const k of applicationOrder) {
139
+ try {
140
+ ctx = transliteratorAppliers[k](ctx, recipe);
141
+ }
142
+ catch (e) {
143
+ if (!Array.isArray(e)) {
144
+ throw e;
145
+ }
146
+ errors.push([k, e]);
147
+ }
148
+ }
149
+ if (errors.length) {
150
+ throw new Error(errors.map(([tl, errors]) => `${tl}: ${errors.join(", ")}`).join("; "));
151
+ }
152
+ return [...ctx.head, ...ctx.tail];
153
+ };
154
+ exports.buildTransliteratorConfigsFromRecipe = buildTransliteratorConfigsFromRecipe;
155
+ //# sourceMappingURL=recipes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"recipes.js","sourceRoot":"","sources":["../../src/recipes.ts"],"names":[],"mappings":";;;AA8KA,MAAM,gBAAgB,GAAgC;IACpD,aAAa;IACb,+CAA+C;IAC/C,mCAAmC;IACnC,2BAA2B;IAC3B,+BAA+B;IAC/B,iBAAiB;IACjB,eAAe;IACf,gBAAgB;IAChB,kCAAkC;IAClC,wCAAwC;IACxC,aAAa;IACb,UAAU;IACV,+BAA+B;IAC/B,aAAa;IACb,cAAc;CACf,CAAC;AAOF,MAAM,UAAU,GAAG,CACjB,GAAoC,EACpC,MAA4B,EAC5B,YAAsB,EACW,EAAE;IACnC,MAAM,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IACxD,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACX,OAAO,YAAY;YACjB,CAAC,CAAC;gBACE,GAAG,GAAG;gBACN,IAAI,EAAE,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;aAClE;YACH,CAAC,CAAC,GAAG,CAAC;IACV,CAAC;IACD,OAAO;QACL,GAAG,GAAG;QACN,IAAI,EAAE,CAAC,MAAM,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC;KAC5B,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,YAAY,GAAG,CACnB,GAAoC,EACpC,MAA4B,EAC5B,YAAsB,EACW,EAAE;IACnC,MAAM,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IACxD,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACX,OAAO,YAAY;YACjB,CAAC,CAAC;gBACE,GAAG,GAAG;gBACN,IAAI,EAAE,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;aAClE;YACH,CAAC,CAAC,GAAG,CAAC;IACV,CAAC;IACD,OAAO;QACL,GAAG,GAAG;QACN,IAAI,EAAE,CAAC,MAAM,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC;KAC5B,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,UAAU,GAAG,CACjB,GAAoC,EACpC,MAA4B,EAC5B,YAAsB,EACW,EAAE;IACnC,MAAM,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IACxD,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACX,OAAO,YAAY;YACjB,CAAC,CAAC;gBACE,GAAG,GAAG;gBACN,IAAI,EAAE,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC;aAClE;YACH,CAAC,CAAC,GAAG,CAAC;IACV,CAAC;IACD,OAAO;QACL,GAAG,GAAG;QACN,IAAI,EAAE,CAAC,GAAG,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC;KAC5B,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,YAAY,GAAG,CAAC,GAAoC,EAAE,uBAAgC,EAAE,OAAiB,EAAE,EAAE,CACjH,UAAU,CACR,UAAU,CAAC,GAAG,EAAE,CAAC,cAAc,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,EAAE,IAAI,CAAC,EAC/D,CAAC,cAAc,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,uBAAuB,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAC7E,IAAI,CACL,CAAC;AAEJ,MAAM,sBAAsB,GAKxB;IACF,WAAW,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,CAC3B,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,YAAY,CAAC,YAAY,CAAC,GAAG,EAAE,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;IAC1G,QAAQ,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;IAChH,6BAA6B,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE;QAC7C,IAAI,CAAC,MAAM,CAAC,6BAA6B;YAAE,OAAO,GAAG,CAAC;QACtD,8DAA8D;QAC9D,GAAG,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,uBAAuB,EAAE,EAAE,wBAAwB,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QACrF,yDAAyD;QACzD,OAAO,YAAY,CAAC,GAAG,EAAE,CAAC,0BAA0B,EAAE,EAAE,CAAC,CAAC,CAAC;IAC7D,CAAC;IACD,6CAA6C,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,CAC7D,MAAM,CAAC,6CAA6C;QAClD,CAAC,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC,uBAAuB,EAAE,EAAE,oCAAoC,EAAE,IAAI,EAAE,CAAC,CAAC;QAC9F,CAAC,CAAC,GAAG;IACT,iCAAiC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,CACjD,MAAM,CAAC,iCAAiC;QACtC,CAAC,CAAC,YAAY,CAAC,GAAG,EAAE;YAChB,oBAAoB;YACpB;gBACE,aAAa,EAAE,MAAM,CAAC,iCAAiC,KAAK,gBAAgB;aAC7E;SACF,CAAC;QACJ,CAAC,CAAC,GAAG;IACT,yBAAyB,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,CACzC,MAAM,CAAC,yBAAyB,CAAC,CAAC,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;IAC9E,6BAA6B,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,CAC7C,MAAM,CAAC,6BAA6B,CAAC,CAAC,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC,yBAAyB,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;IACjG,eAAe,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;IACtG,aAAa,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;IAChG,cAAc,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,CAC9B,MAAM,CAAC,cAAc;QACnB,CAAC,CAAC,YAAY,CAAC,GAAG,EAAE;YAChB,SAAS;YACT;gBACE,UAAU,EACR,OAAO,MAAM,CAAC,cAAc,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,qBAAqB,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,cAAc;aAC3G;SACF,CAAC;QACJ,CAAC,CAAC,GAAG;IACT,gCAAgC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,CAChD,MAAM,CAAC,gCAAgC,CAAC,CAAC,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC,4BAA4B,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;IACvG,sCAAsC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,CACtD,MAAM,CAAC,sCAAsC;QAC3C,CAAC,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,uBAAuB,EAAE,EAAE,wBAAwB,EAAE,IAAI,EAAE,CAAC,CAAC;QAChF,CAAC,CAAC,GAAG;IACT,WAAW,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE;QAC3B,IAAI,MAAM,CAAC,WAAW,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;YAC7C,MAAM,CAAC,oDAAoD,CAAC,CAAC;QAC/D,CAAC;QACD,OAAO,MAAM,CAAC,WAAW;YACvB,CAAC,CAAC,UAAU,CAAC,GAAG,EAAE;gBACd,oBAAoB;gBACpB,EAAE,oBAAoB,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,CAAC,WAAW,KAAK,cAAc,EAAE;aAClG,CAAC;YACJ,CAAC,CAAC,GAAG,CAAC;IACV,CAAC;IACD,WAAW,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE;QAC3B,IAAI,MAAM,CAAC,WAAW,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;YAC7C,MAAM,CAAC,oDAAoD,CAAC,CAAC;QAC/D,CAAC;QACD,OAAO,MAAM,CAAC,WAAW;YACvB,CAAC,CAAC,UAAU,CAAC,GAAG,EAAE;gBACd,oBAAoB;gBACpB,EAAE,oBAAoB,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,CAAC,WAAW,KAAK,mBAAmB,EAAE;aAC5F,CAAC;YACJ,CAAC,CAAC,GAAG,CAAC;IACV,CAAC;IACD,YAAY,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,CAC5B,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,GAAG,EAAE,MAAM,CAAC,YAAY,KAAK,oBAAoB,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG;CAC9G,CAAC;AAEF;;;;;GAKG;AACI,MAAM,oCAAoC,GAAG,CAAC,MAA6B,EAA0B,EAAE;IAC5G,IAAI,GAAG,GAAoC,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;IAClE,MAAM,MAAM,GAAyB,EAAE,CAAC;IACxC,KAAK,MAAM,CAAC,IAAI,gBAAgB,EAAE,CAAC;QACjC,IAAI,CAAC;YACH,GAAG,GAAG,sBAAsB,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QAC/C,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;gBACtB,MAAM,CAAC,CAAC;YACV,CAAC;YACD,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAa,CAAC,CAAC,CAAC;QAClC,CAAC;IACH,CAAC;IACD,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QAClB,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,GAAG,EAAE,KAAK,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAC1F,CAAC;IACD,OAAO,CAAC,GAAG,GAAG,CAAC,IAAI,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC;AACpC,CAAC,CAAC;AAjBW,QAAA,oCAAoC,wCAiB/C"}
@@ -0,0 +1,27 @@
1
+ /***
2
+ * Transliterator that replaces circled or squared characters with their corresponding templates.
3
+ *
4
+ * @module
5
+ */
6
+ import type { Char } from "../types.ts";
7
+ export type Options = {
8
+ /**
9
+ * Templates used to render circled or squared characters.
10
+ */
11
+ templates?: {
12
+ circle?: string;
13
+ square?: string;
14
+ };
15
+ /**
16
+ * Whether to include emojis in the transliteration. If false, only non-emoji characters will be processed.
17
+ */
18
+ includeEmojis?: boolean;
19
+ };
20
+ /**
21
+ * A transliterator that replaces circled or squared characters.
22
+ *
23
+ * @param options Options for the transliterator.
24
+ * @returns An iterable that yields transliterated characters.
25
+ */
26
+ declare const _default: (options: Options) => ((_: Iterable<Char>) => Iterable<Char>);
27
+ export default _default;