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 (43) hide show
  1. checksums.yaml +7 -0
  2. data/.rubocop.yml +36 -0
  3. data/Gemfile +6 -0
  4. data/README.ja.md +229 -0
  5. data/README.md +229 -0
  6. data/Rakefile +30 -0
  7. data/codegen/dataset.rb +215 -0
  8. data/codegen/emitters/circled_or_squared_transliterator_data.rb +30 -0
  9. data/codegen/emitters/combined_transliterator_data.rb +28 -0
  10. data/codegen/emitters/hyphens_transliterator_data.rb +48 -0
  11. data/codegen/emitters/ivs_svs_base_transliterator_data.rb +121 -0
  12. data/codegen/emitters/simple_transliterator.rb +76 -0
  13. data/codegen/emitters/utils.rb +45 -0
  14. data/codegen/emitters.rb +8 -0
  15. data/codegen/main.rb +109 -0
  16. data/lib/yosina/char.rb +65 -0
  17. data/lib/yosina/chars.rb +152 -0
  18. data/lib/yosina/recipes.rb +359 -0
  19. data/lib/yosina/transliterator.rb +49 -0
  20. data/lib/yosina/transliterators/circled_or_squared.rb +67 -0
  21. data/lib/yosina/transliterators/circled_or_squared_data.rb +469 -0
  22. data/lib/yosina/transliterators/combined.rb +52 -0
  23. data/lib/yosina/transliterators/combined_data.rb +495 -0
  24. data/lib/yosina/transliterators/hira_kata.rb +106 -0
  25. data/lib/yosina/transliterators/hira_kata_composition.rb +103 -0
  26. data/lib/yosina/transliterators/hira_kata_table.rb +116 -0
  27. data/lib/yosina/transliterators/hyphens.rb +83 -0
  28. data/lib/yosina/transliterators/hyphens_data.rb +60 -0
  29. data/lib/yosina/transliterators/ideographic_annotations.rb +73 -0
  30. data/lib/yosina/transliterators/ivs_svs_base.rb +169 -0
  31. data/lib/yosina/transliterators/ivs_svs_base_data.rb +0 -0
  32. data/lib/yosina/transliterators/japanese_iteration_marks.rb +261 -0
  33. data/lib/yosina/transliterators/jisx0201_and_alike.rb +451 -0
  34. data/lib/yosina/transliterators/kanji_old_new.rb +1137 -0
  35. data/lib/yosina/transliterators/mathematical_alphanumerics.rb +799 -0
  36. data/lib/yosina/transliterators/prolonged_sound_marks.rb +206 -0
  37. data/lib/yosina/transliterators/radicals.rb +361 -0
  38. data/lib/yosina/transliterators/spaces.rb +79 -0
  39. data/lib/yosina/transliterators.rb +57 -0
  40. data/lib/yosina/version.rb +5 -0
  41. data/lib/yosina.rb +62 -0
  42. data/yosina.gemspec +41 -0
  43. metadata +159 -0
@@ -0,0 +1,799 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Yosina
4
+ module Transliterators
5
+ # Replace mathematical alphanumeric symbols with plain characters
6
+ module MathematicalAlphanumerics
7
+ # Generated mapping data from mathematical_alphanumerics.json
8
+ MATHEMATICAL_ALPHANUMERICS_MAPPINGS = {
9
+ "\u{2102}" => 'C',
10
+ "\u{210a}" => 'g',
11
+ "\u{210b}" => 'H',
12
+ "\u{210c}" => 'H',
13
+ "\u{210e}" => 'h',
14
+ "\u{2110}" => 'I',
15
+ "\u{2111}" => 'I',
16
+ "\u{2113}" => 'l',
17
+ "\u{2115}" => 'N',
18
+ "\u{2119}" => 'P',
19
+ "\u{211a}" => 'Q',
20
+ "\u{211b}" => 'R',
21
+ "\u{211c}" => 'R',
22
+ "\u{2124}" => 'Z',
23
+ "\u{2126}" => "\u{3a9}",
24
+ "\u{212a}" => 'K',
25
+ "\u{212c}" => 'B',
26
+ "\u{212d}" => 'C',
27
+ "\u{212f}" => 'e',
28
+ "\u{2130}" => 'E',
29
+ "\u{2131}" => 'F',
30
+ "\u{2133}" => 'M',
31
+ "\u{2134}" => 'o',
32
+ "\u{213c}" => "\u{3c0}",
33
+ "\u{213d}" => "\u{3b3}",
34
+ "\u{213e}" => "\u{393}",
35
+ "\u{213f}" => "\u{3a0}",
36
+ "\u{2140}" => "\u{3a3}",
37
+ "\u{2211}" => "\u{3a3}",
38
+ "\u{2145}" => 'D',
39
+ "\u{2146}" => 'd',
40
+ "\u{2147}" => 'e',
41
+ "\u{2148}" => 'i',
42
+ "\u{2149}" => 'j',
43
+ "\u{1d400}" => 'A',
44
+ "\u{1d401}" => 'B',
45
+ "\u{1d402}" => 'C',
46
+ "\u{1d403}" => 'D',
47
+ "\u{1d404}" => 'E',
48
+ "\u{1d405}" => 'F',
49
+ "\u{1d406}" => 'G',
50
+ "\u{1d407}" => 'H',
51
+ "\u{1d408}" => 'I',
52
+ "\u{1d409}" => 'J',
53
+ "\u{1d40a}" => 'K',
54
+ "\u{1d40b}" => 'L',
55
+ "\u{1d40c}" => 'M',
56
+ "\u{1d40d}" => 'N',
57
+ "\u{1d40e}" => 'O',
58
+ "\u{1d40f}" => 'P',
59
+ "\u{1d410}" => 'Q',
60
+ "\u{1d411}" => 'R',
61
+ "\u{1d412}" => 'S',
62
+ "\u{1d413}" => 'T',
63
+ "\u{1d414}" => 'U',
64
+ "\u{1d415}" => 'V',
65
+ "\u{1d416}" => 'W',
66
+ "\u{1d417}" => 'X',
67
+ "\u{1d418}" => 'Y',
68
+ "\u{1d419}" => 'Z',
69
+ "\u{1d434}" => 'A',
70
+ "\u{1d435}" => 'B',
71
+ "\u{1d436}" => 'C',
72
+ "\u{1d437}" => 'D',
73
+ "\u{1d438}" => 'E',
74
+ "\u{1d439}" => 'F',
75
+ "\u{1d43a}" => 'G',
76
+ "\u{1d43b}" => 'H',
77
+ "\u{1d43c}" => 'I',
78
+ "\u{1d43d}" => 'J',
79
+ "\u{1d43e}" => 'K',
80
+ "\u{1d43f}" => 'L',
81
+ "\u{1d440}" => 'M',
82
+ "\u{1d441}" => 'N',
83
+ "\u{1d442}" => 'O',
84
+ "\u{1d443}" => 'P',
85
+ "\u{1d444}" => 'Q',
86
+ "\u{1d445}" => 'R',
87
+ "\u{1d446}" => 'S',
88
+ "\u{1d447}" => 'T',
89
+ "\u{1d448}" => 'U',
90
+ "\u{1d449}" => 'V',
91
+ "\u{1d44a}" => 'W',
92
+ "\u{1d44b}" => 'X',
93
+ "\u{1d44c}" => 'Y',
94
+ "\u{1d44d}" => 'Z',
95
+ "\u{1d468}" => 'A',
96
+ "\u{1d469}" => 'B',
97
+ "\u{1d46a}" => 'C',
98
+ "\u{1d46b}" => 'D',
99
+ "\u{1d46c}" => 'E',
100
+ "\u{1d46d}" => 'F',
101
+ "\u{1d46e}" => 'G',
102
+ "\u{1d46f}" => 'H',
103
+ "\u{1d470}" => 'I',
104
+ "\u{1d471}" => 'J',
105
+ "\u{1d472}" => 'K',
106
+ "\u{1d473}" => 'L',
107
+ "\u{1d474}" => 'M',
108
+ "\u{1d475}" => 'N',
109
+ "\u{1d476}" => 'O',
110
+ "\u{1d477}" => 'P',
111
+ "\u{1d478}" => 'Q',
112
+ "\u{1d479}" => 'R',
113
+ "\u{1d47a}" => 'S',
114
+ "\u{1d47b}" => 'T',
115
+ "\u{1d47c}" => 'U',
116
+ "\u{1d47d}" => 'V',
117
+ "\u{1d47e}" => 'W',
118
+ "\u{1d47f}" => 'X',
119
+ "\u{1d480}" => 'Y',
120
+ "\u{1d481}" => 'Z',
121
+ "\u{1d5a0}" => 'A',
122
+ "\u{1d5a1}" => 'B',
123
+ "\u{1d5a2}" => 'C',
124
+ "\u{1d5a3}" => 'D',
125
+ "\u{1d5a4}" => 'E',
126
+ "\u{1d5a5}" => 'F',
127
+ "\u{1d5a6}" => 'G',
128
+ "\u{1d5a7}" => 'H',
129
+ "\u{1d5a8}" => 'I',
130
+ "\u{1d5a9}" => 'J',
131
+ "\u{1d5aa}" => 'K',
132
+ "\u{1d5ab}" => 'L',
133
+ "\u{1d5ac}" => 'M',
134
+ "\u{1d5ad}" => 'N',
135
+ "\u{1d5ae}" => 'O',
136
+ "\u{1d5af}" => 'P',
137
+ "\u{1d5b0}" => 'Q',
138
+ "\u{1d5b1}" => 'R',
139
+ "\u{1d5b2}" => 'S',
140
+ "\u{1d5b3}" => 'T',
141
+ "\u{1d5b4}" => 'U',
142
+ "\u{1d5b5}" => 'V',
143
+ "\u{1d5b6}" => 'W',
144
+ "\u{1d5b7}" => 'X',
145
+ "\u{1d5b8}" => 'Y',
146
+ "\u{1d5b9}" => 'Z',
147
+ "\u{1d5d4}" => 'A',
148
+ "\u{1d5d5}" => 'B',
149
+ "\u{1d5d6}" => 'C',
150
+ "\u{1d5d7}" => 'D',
151
+ "\u{1d5d8}" => 'E',
152
+ "\u{1d5d9}" => 'F',
153
+ "\u{1d5da}" => 'G',
154
+ "\u{1d5db}" => 'H',
155
+ "\u{1d5dc}" => 'I',
156
+ "\u{1d5dd}" => 'J',
157
+ "\u{1d5de}" => 'K',
158
+ "\u{1d5df}" => 'L',
159
+ "\u{1d5e0}" => 'M',
160
+ "\u{1d5e1}" => 'N',
161
+ "\u{1d5e2}" => 'O',
162
+ "\u{1d5e3}" => 'P',
163
+ "\u{1d5e4}" => 'Q',
164
+ "\u{1d5e5}" => 'R',
165
+ "\u{1d5e6}" => 'S',
166
+ "\u{1d5e7}" => 'T',
167
+ "\u{1d5e8}" => 'U',
168
+ "\u{1d5e9}" => 'V',
169
+ "\u{1d5ea}" => 'W',
170
+ "\u{1d5eb}" => 'X',
171
+ "\u{1d5ec}" => 'Y',
172
+ "\u{1d5ed}" => 'Z',
173
+ "\u{1d608}" => 'A',
174
+ "\u{1d609}" => 'B',
175
+ "\u{1d60a}" => 'C',
176
+ "\u{1d60b}" => 'D',
177
+ "\u{1d60c}" => 'E',
178
+ "\u{1d60d}" => 'F',
179
+ "\u{1d60e}" => 'G',
180
+ "\u{1d60f}" => 'H',
181
+ "\u{1d610}" => 'I',
182
+ "\u{1d611}" => 'J',
183
+ "\u{1d612}" => 'K',
184
+ "\u{1d613}" => 'L',
185
+ "\u{1d614}" => 'M',
186
+ "\u{1d615}" => 'N',
187
+ "\u{1d616}" => 'O',
188
+ "\u{1d617}" => 'P',
189
+ "\u{1d618}" => 'Q',
190
+ "\u{1d619}" => 'R',
191
+ "\u{1d61a}" => 'S',
192
+ "\u{1d61b}" => 'T',
193
+ "\u{1d61c}" => 'U',
194
+ "\u{1d61d}" => 'V',
195
+ "\u{1d61e}" => 'W',
196
+ "\u{1d61f}" => 'X',
197
+ "\u{1d620}" => 'Y',
198
+ "\u{1d621}" => 'Z',
199
+ "\u{1d63c}" => 'A',
200
+ "\u{1d63d}" => 'B',
201
+ "\u{1d63e}" => 'C',
202
+ "\u{1d63f}" => 'D',
203
+ "\u{1d640}" => 'E',
204
+ "\u{1d641}" => 'F',
205
+ "\u{1d642}" => 'G',
206
+ "\u{1d643}" => 'H',
207
+ "\u{1d644}" => 'I',
208
+ "\u{1d645}" => 'J',
209
+ "\u{1d646}" => 'K',
210
+ "\u{1d647}" => 'L',
211
+ "\u{1d648}" => 'M',
212
+ "\u{1d649}" => 'N',
213
+ "\u{1d64a}" => 'O',
214
+ "\u{1d64b}" => 'P',
215
+ "\u{1d64c}" => 'Q',
216
+ "\u{1d64d}" => 'R',
217
+ "\u{1d64e}" => 'S',
218
+ "\u{1d64f}" => 'T',
219
+ "\u{1d650}" => 'U',
220
+ "\u{1d651}" => 'V',
221
+ "\u{1d652}" => 'W',
222
+ "\u{1d653}" => 'X',
223
+ "\u{1d654}" => 'Y',
224
+ "\u{1d655}" => 'Z',
225
+ "\u{1d49c}" => 'A',
226
+ "\u{1d49e}" => 'C',
227
+ "\u{1d49f}" => 'D',
228
+ "\u{1d4a2}" => 'G',
229
+ "\u{1d4a5}" => 'J',
230
+ "\u{1d4a6}" => 'K',
231
+ "\u{2112}" => 'L',
232
+ "\u{1d4a9}" => 'N',
233
+ "\u{1d4aa}" => 'O',
234
+ "\u{1d4ab}" => 'P',
235
+ "\u{1d4ac}" => 'Q',
236
+ "\u{1d4ae}" => 'S',
237
+ "\u{1d4af}" => 'T',
238
+ "\u{1d4b0}" => 'U',
239
+ "\u{1d4b1}" => 'V',
240
+ "\u{1d4b2}" => 'W',
241
+ "\u{1d4b3}" => 'X',
242
+ "\u{1d4b4}" => 'Y',
243
+ "\u{1d4b5}" => 'Z',
244
+ "\u{1d4d0}" => 'A',
245
+ "\u{1d4d1}" => 'B',
246
+ "\u{1d4d2}" => 'C',
247
+ "\u{1d4d3}" => 'D',
248
+ "\u{1d4d4}" => 'E',
249
+ "\u{1d4d5}" => 'F',
250
+ "\u{1d4d6}" => 'G',
251
+ "\u{1d4d7}" => 'H',
252
+ "\u{1d4d8}" => 'I',
253
+ "\u{1d4d9}" => 'J',
254
+ "\u{1d4da}" => 'K',
255
+ "\u{1d4db}" => 'L',
256
+ "\u{1d4dc}" => 'M',
257
+ "\u{1d4dd}" => 'N',
258
+ "\u{1d4de}" => 'O',
259
+ "\u{1d4df}" => 'P',
260
+ "\u{1d4e0}" => 'Q',
261
+ "\u{1d4e1}" => 'R',
262
+ "\u{1d4e2}" => 'S',
263
+ "\u{1d4e3}" => 'T',
264
+ "\u{1d4e4}" => 'U',
265
+ "\u{1d4e5}" => 'V',
266
+ "\u{1d4e6}" => 'W',
267
+ "\u{1d4e7}" => 'X',
268
+ "\u{1d4e8}" => 'Y',
269
+ "\u{1d4e9}" => 'Z',
270
+ "\u{1d504}" => 'A',
271
+ "\u{1d505}" => 'B',
272
+ "\u{1d507}" => 'D',
273
+ "\u{1d508}" => 'E',
274
+ "\u{1d509}" => 'F',
275
+ "\u{1d50a}" => 'G',
276
+ "\u{1d50d}" => 'J',
277
+ "\u{1d50e}" => 'K',
278
+ "\u{1d50f}" => 'L',
279
+ "\u{1d510}" => 'M',
280
+ "\u{1d511}" => 'N',
281
+ "\u{1d512}" => 'O',
282
+ "\u{1d513}" => 'P',
283
+ "\u{1d514}" => 'Q',
284
+ "\u{1d516}" => 'S',
285
+ "\u{1d517}" => 'T',
286
+ "\u{1d518}" => 'U',
287
+ "\u{1d519}" => 'V',
288
+ "\u{1d51a}" => 'W',
289
+ "\u{1d51b}" => 'X',
290
+ "\u{1d51c}" => 'Y',
291
+ "\u{2128}" => 'Z',
292
+ "\u{1d56c}" => 'A',
293
+ "\u{1d56d}" => 'B',
294
+ "\u{1d56e}" => 'C',
295
+ "\u{1d56f}" => 'D',
296
+ "\u{1d570}" => 'E',
297
+ "\u{1d571}" => 'F',
298
+ "\u{1d572}" => 'G',
299
+ "\u{1d573}" => 'H',
300
+ "\u{1d574}" => 'I',
301
+ "\u{1d575}" => 'J',
302
+ "\u{1d576}" => 'K',
303
+ "\u{1d577}" => 'L',
304
+ "\u{1d578}" => 'M',
305
+ "\u{1d579}" => 'N',
306
+ "\u{1d57a}" => 'O',
307
+ "\u{1d57b}" => 'P',
308
+ "\u{1d57c}" => 'Q',
309
+ "\u{1d57d}" => 'R',
310
+ "\u{1d57e}" => 'S',
311
+ "\u{1d57f}" => 'T',
312
+ "\u{1d580}" => 'U',
313
+ "\u{1d581}" => 'V',
314
+ "\u{1d582}" => 'W',
315
+ "\u{1d583}" => 'X',
316
+ "\u{1d584}" => 'Y',
317
+ "\u{1d585}" => 'Z',
318
+ "\u{1d670}" => 'A',
319
+ "\u{1d671}" => 'B',
320
+ "\u{1d672}" => 'C',
321
+ "\u{1d673}" => 'D',
322
+ "\u{1d674}" => 'E',
323
+ "\u{1d675}" => 'F',
324
+ "\u{1d676}" => 'G',
325
+ "\u{1d677}" => 'H',
326
+ "\u{1d678}" => 'I',
327
+ "\u{1d679}" => 'J',
328
+ "\u{1d67a}" => 'K',
329
+ "\u{1d67b}" => 'L',
330
+ "\u{1d67c}" => 'M',
331
+ "\u{1d67d}" => 'N',
332
+ "\u{1d67e}" => 'O',
333
+ "\u{1d67f}" => 'P',
334
+ "\u{1d680}" => 'Q',
335
+ "\u{1d681}" => 'R',
336
+ "\u{1d682}" => 'S',
337
+ "\u{1d683}" => 'T',
338
+ "\u{1d684}" => 'U',
339
+ "\u{1d685}" => 'V',
340
+ "\u{1d686}" => 'W',
341
+ "\u{1d687}" => 'X',
342
+ "\u{1d688}" => 'Y',
343
+ "\u{1d689}" => 'Z',
344
+ "\u{1d538}" => 'A',
345
+ "\u{1d539}" => 'B',
346
+ "\u{1d53b}" => 'D',
347
+ "\u{1d53c}" => 'E',
348
+ "\u{1d53d}" => 'F',
349
+ "\u{1d53e}" => 'G',
350
+ "\u{210d}" => 'H',
351
+ "\u{1d540}" => 'I',
352
+ "\u{1d541}" => 'J',
353
+ "\u{1d542}" => 'K',
354
+ "\u{1d543}" => 'L',
355
+ "\u{1d544}" => 'M',
356
+ "\u{1d546}" => 'O',
357
+ "\u{211d}" => 'R',
358
+ "\u{1d54a}" => 'S',
359
+ "\u{1d54b}" => 'T',
360
+ "\u{1d54c}" => 'U',
361
+ "\u{1d54d}" => 'V',
362
+ "\u{1d54e}" => 'W',
363
+ "\u{1d54f}" => 'X',
364
+ "\u{1d550}" => 'Y',
365
+ "\u{1d41a}" => 'a',
366
+ "\u{1d41b}" => 'b',
367
+ "\u{1d41c}" => 'c',
368
+ "\u{1d41d}" => 'd',
369
+ "\u{1d41e}" => 'e',
370
+ "\u{1d41f}" => 'f',
371
+ "\u{1d420}" => 'g',
372
+ "\u{1d421}" => 'h',
373
+ "\u{1d422}" => 'i',
374
+ "\u{1d423}" => 'j',
375
+ "\u{1d424}" => 'k',
376
+ "\u{1d425}" => 'l',
377
+ "\u{1d426}" => 'm',
378
+ "\u{1d427}" => 'n',
379
+ "\u{1d428}" => 'o',
380
+ "\u{1d429}" => 'p',
381
+ "\u{1d42a}" => 'q',
382
+ "\u{1d42b}" => 'r',
383
+ "\u{1d42c}" => 's',
384
+ "\u{1d42d}" => 't',
385
+ "\u{1d42e}" => 'u',
386
+ "\u{1d42f}" => 'v',
387
+ "\u{1d430}" => 'w',
388
+ "\u{1d431}" => 'x',
389
+ "\u{1d432}" => 'y',
390
+ "\u{1d433}" => 'z',
391
+ "\u{1d44e}" => 'a',
392
+ "\u{1d44f}" => 'b',
393
+ "\u{1d450}" => 'c',
394
+ "\u{1d451}" => 'd',
395
+ "\u{1d452}" => 'e',
396
+ "\u{1d453}" => 'f',
397
+ "\u{1d454}" => 'g',
398
+ "\u{1d456}" => 'i',
399
+ "\u{1d457}" => 'j',
400
+ "\u{1d458}" => 'k',
401
+ "\u{1d459}" => 'l',
402
+ "\u{1d45a}" => 'm',
403
+ "\u{1d45b}" => 'n',
404
+ "\u{1d45c}" => 'o',
405
+ "\u{1d45d}" => 'p',
406
+ "\u{1d45e}" => 'q',
407
+ "\u{1d45f}" => 'r',
408
+ "\u{1d460}" => 's',
409
+ "\u{1d461}" => 't',
410
+ "\u{1d462}" => 'u',
411
+ "\u{1d463}" => 'v',
412
+ "\u{1d464}" => 'w',
413
+ "\u{1d465}" => 'x',
414
+ "\u{1d466}" => 'y',
415
+ "\u{1d467}" => 'z',
416
+ "\u{1d482}" => 'a',
417
+ "\u{1d483}" => 'b',
418
+ "\u{1d484}" => 'c',
419
+ "\u{1d485}" => 'd',
420
+ "\u{1d486}" => 'e',
421
+ "\u{1d487}" => 'f',
422
+ "\u{1d488}" => 'g',
423
+ "\u{1d489}" => 'h',
424
+ "\u{1d48a}" => 'i',
425
+ "\u{1d48b}" => 'j',
426
+ "\u{1d48c}" => 'k',
427
+ "\u{1d48d}" => 'l',
428
+ "\u{1d48e}" => 'm',
429
+ "\u{1d48f}" => 'n',
430
+ "\u{1d490}" => 'o',
431
+ "\u{1d491}" => 'p',
432
+ "\u{1d492}" => 'q',
433
+ "\u{1d493}" => 'r',
434
+ "\u{1d494}" => 's',
435
+ "\u{1d495}" => 't',
436
+ "\u{1d496}" => 'u',
437
+ "\u{1d497}" => 'v',
438
+ "\u{1d498}" => 'w',
439
+ "\u{1d499}" => 'x',
440
+ "\u{1d49a}" => 'y',
441
+ "\u{1d49b}" => 'z',
442
+ "\u{1d5ba}" => 'a',
443
+ "\u{1d5bb}" => 'b',
444
+ "\u{1d5bc}" => 'c',
445
+ "\u{1d5bd}" => 'd',
446
+ "\u{1d5be}" => 'e',
447
+ "\u{1d5bf}" => 'f',
448
+ "\u{1d5c0}" => 'g',
449
+ "\u{1d5c1}" => 'h',
450
+ "\u{1d5c2}" => 'i',
451
+ "\u{1d5c3}" => 'j',
452
+ "\u{1d5c4}" => 'k',
453
+ "\u{1d5c5}" => 'l',
454
+ "\u{1d5c6}" => 'm',
455
+ "\u{1d5c7}" => 'n',
456
+ "\u{1d5c8}" => 'o',
457
+ "\u{1d5c9}" => 'p',
458
+ "\u{1d5ca}" => 'q',
459
+ "\u{1d5cb}" => 'r',
460
+ "\u{1d5cc}" => 's',
461
+ "\u{1d5cd}" => 't',
462
+ "\u{1d5ce}" => 'u',
463
+ "\u{1d5cf}" => 'v',
464
+ "\u{1d5d0}" => 'w',
465
+ "\u{1d5d1}" => 'x',
466
+ "\u{1d5d2}" => 'y',
467
+ "\u{1d5d3}" => 'z',
468
+ "\u{1d5ee}" => 'a',
469
+ "\u{1d5ef}" => 'b',
470
+ "\u{1d5f0}" => 'c',
471
+ "\u{1d5f1}" => 'd',
472
+ "\u{1d5f2}" => 'e',
473
+ "\u{1d5f3}" => 'f',
474
+ "\u{1d5f4}" => 'g',
475
+ "\u{1d5f5}" => 'h',
476
+ "\u{1d5f6}" => 'i',
477
+ "\u{1d5f7}" => 'j',
478
+ "\u{1d5f8}" => 'k',
479
+ "\u{1d5f9}" => 'l',
480
+ "\u{1d5fa}" => 'm',
481
+ "\u{1d5fb}" => 'n',
482
+ "\u{1d5fc}" => 'o',
483
+ "\u{1d5fd}" => 'p',
484
+ "\u{1d5fe}" => 'q',
485
+ "\u{1d5ff}" => 'r',
486
+ "\u{1d600}" => 's',
487
+ "\u{1d601}" => 't',
488
+ "\u{1d602}" => 'u',
489
+ "\u{1d603}" => 'v',
490
+ "\u{1d604}" => 'w',
491
+ "\u{1d605}" => 'x',
492
+ "\u{1d606}" => 'y',
493
+ "\u{1d607}" => 'z',
494
+ "\u{1d622}" => 'a',
495
+ "\u{1d623}" => 'b',
496
+ "\u{1d624}" => 'c',
497
+ "\u{1d625}" => 'd',
498
+ "\u{1d626}" => 'e',
499
+ "\u{1d627}" => 'f',
500
+ "\u{1d628}" => 'g',
501
+ "\u{1d629}" => 'h',
502
+ "\u{1d62a}" => 'i',
503
+ "\u{1d62b}" => 'j',
504
+ "\u{1d62c}" => 'k',
505
+ "\u{1d62d}" => 'l',
506
+ "\u{1d62e}" => 'm',
507
+ "\u{1d62f}" => 'n',
508
+ "\u{1d630}" => 'o',
509
+ "\u{1d631}" => 'p',
510
+ "\u{1d632}" => 'q',
511
+ "\u{1d633}" => 'r',
512
+ "\u{1d634}" => 's',
513
+ "\u{1d635}" => 't',
514
+ "\u{1d636}" => 'u',
515
+ "\u{1d637}" => 'v',
516
+ "\u{1d638}" => 'w',
517
+ "\u{1d639}" => 'x',
518
+ "\u{1d63a}" => 'y',
519
+ "\u{1d63b}" => 'z',
520
+ "\u{1d656}" => 'a',
521
+ "\u{1d657}" => 'b',
522
+ "\u{1d658}" => 'c',
523
+ "\u{1d659}" => 'd',
524
+ "\u{1d65a}" => 'e',
525
+ "\u{1d65b}" => 'f',
526
+ "\u{1d65c}" => 'g',
527
+ "\u{1d65d}" => 'h',
528
+ "\u{1d65e}" => 'i',
529
+ "\u{1d65f}" => 'j',
530
+ "\u{1d660}" => 'k',
531
+ "\u{1d661}" => 'l',
532
+ "\u{1d662}" => 'm',
533
+ "\u{1d663}" => 'n',
534
+ "\u{1d664}" => 'o',
535
+ "\u{1d665}" => 'p',
536
+ "\u{1d666}" => 'q',
537
+ "\u{1d667}" => 'r',
538
+ "\u{1d668}" => 's',
539
+ "\u{1d669}" => 't',
540
+ "\u{1d66a}" => 'u',
541
+ "\u{1d66b}" => 'v',
542
+ "\u{1d66c}" => 'w',
543
+ "\u{1d66d}" => 'x',
544
+ "\u{1d66e}" => 'y',
545
+ "\u{1d66f}" => 'z',
546
+ "\u{1d4b6}" => 'a',
547
+ "\u{1d4b7}" => 'b',
548
+ "\u{1d4b8}" => 'c',
549
+ "\u{1d4b9}" => 'd',
550
+ "\u{1d4bb}" => 'f',
551
+ "\u{1d4bd}" => 'h',
552
+ "\u{1d4be}" => 'i',
553
+ "\u{1d4bf}" => 'j',
554
+ "\u{1d4c0}" => 'k',
555
+ "\u{1d4c1}" => 'l',
556
+ "\u{1d4c2}" => 'm',
557
+ "\u{1d4c3}" => 'n',
558
+ "\u{1d4c5}" => 'p',
559
+ "\u{1d4c6}" => 'q',
560
+ "\u{1d4c7}" => 'r',
561
+ "\u{1d4c8}" => 's',
562
+ "\u{1d4c9}" => 't',
563
+ "\u{1d4ca}" => 'u',
564
+ "\u{1d4cb}" => 'v',
565
+ "\u{1d4cc}" => 'w',
566
+ "\u{1d4cd}" => 'x',
567
+ "\u{1d4ce}" => 'y',
568
+ "\u{1d4cf}" => 'z',
569
+ "\u{1d4ea}" => 'a',
570
+ "\u{1d4eb}" => 'b',
571
+ "\u{1d4ec}" => 'c',
572
+ "\u{1d4ed}" => 'd',
573
+ "\u{1d4ee}" => 'e',
574
+ "\u{1d4ef}" => 'f',
575
+ "\u{1d4f0}" => 'g',
576
+ "\u{1d4f1}" => 'h',
577
+ "\u{1d4f2}" => 'i',
578
+ "\u{1d4f3}" => 'j',
579
+ "\u{1d4f4}" => 'k',
580
+ "\u{1d4f5}" => 'l',
581
+ "\u{1d4f6}" => 'm',
582
+ "\u{1d4f7}" => 'n',
583
+ "\u{1d4f8}" => 'o',
584
+ "\u{1d4f9}" => 'p',
585
+ "\u{1d4fa}" => 'q',
586
+ "\u{1d4fb}" => 'r',
587
+ "\u{1d4fc}" => 's',
588
+ "\u{1d4fd}" => 't',
589
+ "\u{1d4fe}" => 'u',
590
+ "\u{1d4ff}" => 'v',
591
+ "\u{1d500}" => 'w',
592
+ "\u{1d501}" => 'x',
593
+ "\u{1d502}" => 'y',
594
+ "\u{1d503}" => 'z',
595
+ "\u{1d51e}" => 'a',
596
+ "\u{1d51f}" => 'b',
597
+ "\u{1d520}" => 'c',
598
+ "\u{1d521}" => 'd',
599
+ "\u{1d522}" => 'e',
600
+ "\u{1d523}" => 'f',
601
+ "\u{1d524}" => 'g',
602
+ "\u{1d525}" => 'h',
603
+ "\u{1d526}" => 'i',
604
+ "\u{1d527}" => 'j',
605
+ "\u{1d528}" => 'k',
606
+ "\u{1d529}" => 'l',
607
+ "\u{1d52a}" => 'm',
608
+ "\u{1d52b}" => 'n',
609
+ "\u{1d52c}" => 'o',
610
+ "\u{1d52d}" => 'p',
611
+ "\u{1d52e}" => 'q',
612
+ "\u{1d52f}" => 'r',
613
+ "\u{1d530}" => 's',
614
+ "\u{1d531}" => 't',
615
+ "\u{1d532}" => 'u',
616
+ "\u{1d533}" => 'v',
617
+ "\u{1d534}" => 'w',
618
+ "\u{1d535}" => 'x',
619
+ "\u{1d536}" => 'y',
620
+ "\u{1d537}" => 'z',
621
+ "\u{1d586}" => 'a',
622
+ "\u{1d587}" => 'b',
623
+ "\u{1d588}" => 'c',
624
+ "\u{1d589}" => 'd',
625
+ "\u{1d58a}" => 'e',
626
+ "\u{1d58b}" => 'f',
627
+ "\u{1d58c}" => 'g',
628
+ "\u{1d58d}" => 'h',
629
+ "\u{1d58e}" => 'i',
630
+ "\u{1d58f}" => 'j',
631
+ "\u{1d590}" => 'k',
632
+ "\u{1d591}" => 'l',
633
+ "\u{1d592}" => 'm',
634
+ "\u{1d593}" => 'n',
635
+ "\u{1d594}" => 'o',
636
+ "\u{1d595}" => 'p',
637
+ "\u{1d596}" => 'q',
638
+ "\u{1d597}" => 'r',
639
+ "\u{1d598}" => 's',
640
+ "\u{1d599}" => 't',
641
+ "\u{1d59a}" => 'u',
642
+ "\u{1d59b}" => 'v',
643
+ "\u{1d59c}" => 'w',
644
+ "\u{1d59d}" => 'x',
645
+ "\u{1d59e}" => 'y',
646
+ "\u{1d59f}" => 'z',
647
+ "\u{1d68a}" => 'a',
648
+ "\u{1d68b}" => 'b',
649
+ "\u{1d68c}" => 'c',
650
+ "\u{1d68d}" => 'd',
651
+ "\u{1d68e}" => 'e',
652
+ "\u{1d68f}" => 'f',
653
+ "\u{1d690}" => 'g',
654
+ "\u{1d691}" => 'h',
655
+ "\u{1d692}" => 'i',
656
+ "\u{1d693}" => 'j',
657
+ "\u{1d694}" => 'k',
658
+ "\u{1d695}" => 'l',
659
+ "\u{1d696}" => 'm',
660
+ "\u{1d697}" => 'n',
661
+ "\u{1d698}" => 'o',
662
+ "\u{1d699}" => 'p',
663
+ "\u{1d69a}" => 'q',
664
+ "\u{1d69b}" => 'r',
665
+ "\u{1d69c}" => 's',
666
+ "\u{1d69d}" => 't',
667
+ "\u{1d69e}" => 'u',
668
+ "\u{1d69f}" => 'v',
669
+ "\u{1d6a0}" => 'w',
670
+ "\u{1d6a1}" => 'x',
671
+ "\u{1d6a2}" => 'y',
672
+ "\u{1d6a3}" => 'z',
673
+ "\u{1d552}" => 'a',
674
+ "\u{1d553}" => 'b',
675
+ "\u{1d554}" => 'c',
676
+ "\u{1d555}" => 'd',
677
+ "\u{1d556}" => 'e',
678
+ "\u{1d557}" => 'f',
679
+ "\u{1d558}" => 'g',
680
+ "\u{1d559}" => 'h',
681
+ "\u{1d55a}" => 'i',
682
+ "\u{1d55b}" => 'j',
683
+ "\u{1d55c}" => 'k',
684
+ "\u{1d55d}" => 'l',
685
+ "\u{1d55e}" => 'm',
686
+ "\u{1d55f}" => 'n',
687
+ "\u{1d560}" => 'o',
688
+ "\u{1d561}" => 'p',
689
+ "\u{1d562}" => 'q',
690
+ "\u{1d563}" => 'r',
691
+ "\u{1d564}" => 's',
692
+ "\u{1d565}" => 't',
693
+ "\u{1d566}" => 'u',
694
+ "\u{1d567}" => 'v',
695
+ "\u{1d568}" => 'w',
696
+ "\u{1d569}" => 'x',
697
+ "\u{1d56a}" => 'y',
698
+ "\u{1d56b}" => 'z',
699
+ "\u{1d7ce}" => '0',
700
+ "\u{1d7cf}" => '1',
701
+ "\u{1d7d0}" => '2',
702
+ "\u{1d7d1}" => '3',
703
+ "\u{1d7d2}" => '4',
704
+ "\u{1d7d3}" => '5',
705
+ "\u{1d7d4}" => '6',
706
+ "\u{1d7d5}" => '7',
707
+ "\u{1d7d6}" => '8',
708
+ "\u{1d7d7}" => '9',
709
+ "\u{1d7d8}" => '0',
710
+ "\u{1d7d9}" => '1',
711
+ "\u{1d7da}" => '2',
712
+ "\u{1d7db}" => '3',
713
+ "\u{1d7dc}" => '4',
714
+ "\u{1d7dd}" => '5',
715
+ "\u{1d7de}" => '6',
716
+ "\u{1d7df}" => '7',
717
+ "\u{1d7e0}" => '8',
718
+ "\u{1d7e1}" => '9',
719
+ "\u{1d7e2}" => '0',
720
+ "\u{1d7e3}" => '1',
721
+ "\u{1d7e4}" => '2',
722
+ "\u{1d7e5}" => '3',
723
+ "\u{1d7e6}" => '4',
724
+ "\u{1d7e7}" => '5',
725
+ "\u{1d7e8}" => '6',
726
+ "\u{1d7e9}" => '7',
727
+ "\u{1d7ea}" => '8',
728
+ "\u{1d7eb}" => '9',
729
+ "\u{1d7ec}" => '0',
730
+ "\u{1d7ed}" => '1',
731
+ "\u{1d7ee}" => '2',
732
+ "\u{1d7ef}" => '3',
733
+ "\u{1d7f0}" => '4',
734
+ "\u{1d7f1}" => '5',
735
+ "\u{1d7f2}" => '6',
736
+ "\u{1d7f3}" => '7',
737
+ "\u{1d7f4}" => '8',
738
+ "\u{1d7f5}" => '9',
739
+ "\u{1d7f6}" => '0',
740
+ "\u{1d7f7}" => '1',
741
+ "\u{1d7f8}" => '2',
742
+ "\u{1d7f9}" => '3',
743
+ "\u{1d7fa}" => '4',
744
+ "\u{1d7fb}" => '5',
745
+ "\u{1d7fc}" => '6',
746
+ "\u{1d7fd}" => '7',
747
+ "\u{1d7fe}" => '8',
748
+ "\u{1d7ff}" => '9'
749
+ }.freeze
750
+
751
+ # Transliterator for mathematical_alphanumerics
752
+ class Transliterator < Yosina::BaseTransliterator
753
+ # Initialize the transliterator with options
754
+ #
755
+ # @param _options [Hash] Configuration options (currently unused)
756
+ def initialize(_options = {})
757
+ # Options currently unused for mathematical_alphanumerics transliterator
758
+ super()
759
+ end
760
+
761
+ # Replace mathematical alphanumeric symbols with plain characters
762
+ #
763
+ # @param input_chars [Enumerable<Char>] The characters to transliterate
764
+ # @return [Enumerable<Char>] The transliterated characters
765
+ def call(input_chars)
766
+ offset = 0
767
+
768
+ result = input_chars.filter_map do |char|
769
+ replacement = MATHEMATICAL_ALPHANUMERICS_MAPPINGS[char.c]
770
+ c = if replacement
771
+ # Skip empty replacements (character removal)
772
+ next if replacement.empty?
773
+
774
+ Char.new(c: replacement, offset: offset, source: char)
775
+ else
776
+ char.with_offset(offset)
777
+ end
778
+ offset += c.c.length
779
+ c
780
+ end
781
+
782
+ class << result
783
+ include Yosina::Chars
784
+ end
785
+
786
+ result
787
+ end
788
+ end
789
+
790
+ # Factory method to create a mathematical_alphanumerics transliterator
791
+ #
792
+ # @param options [Hash] Configuration options
793
+ # @return [Transliterator] A new mathematical_alphanumerics transliterator instance
794
+ def self.call(options = {})
795
+ Transliterator.new(options)
796
+ end
797
+ end
798
+ end
799
+ end