jsmigemo 0.3.1

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 (114) hide show
  1. package/README.md +97 -0
  2. package/bin/jsmigemo-cli.js +122 -0
  3. package/bin/jsmigemo-dict.js +37 -0
  4. package/bin/jsmigemo-skk2migemo.js +61 -0
  5. package/demo-list.html +116 -0
  6. package/demo-text.html +65 -0
  7. package/esm/BitList.d.ts +8 -0
  8. package/esm/BitList.js +39 -0
  9. package/esm/BitList.js.map +1 -0
  10. package/esm/BitVector.d.ts +15 -0
  11. package/esm/BitVector.js +150 -0
  12. package/esm/BitVector.js.map +1 -0
  13. package/esm/CharacterConverter.d.ts +3 -0
  14. package/esm/CharacterConverter.js +382 -0
  15. package/esm/CharacterConverter.js.map +1 -0
  16. package/esm/CompactDictionary.d.ts +17 -0
  17. package/esm/CompactDictionary.js +124 -0
  18. package/esm/CompactDictionary.js.map +1 -0
  19. package/esm/CompactDictionaryBuilder.d.ts +3 -0
  20. package/esm/CompactDictionaryBuilder.js +118 -0
  21. package/esm/CompactDictionaryBuilder.js.map +1 -0
  22. package/esm/CompactHiraganaString.d.ts +6 -0
  23. package/esm/CompactHiraganaString.js +41 -0
  24. package/esm/CompactHiraganaString.js.map +1 -0
  25. package/esm/DoubleArray.d.ts +12 -0
  26. package/esm/DoubleArray.js +70 -0
  27. package/esm/DoubleArray.js.map +1 -0
  28. package/esm/LOUDSTrie.d.ts +13 -0
  29. package/esm/LOUDSTrie.js +67 -0
  30. package/esm/LOUDSTrie.js.map +1 -0
  31. package/esm/LOUDSTrieBuilder.d.ts +4 -0
  32. package/esm/LOUDSTrieBuilder.js +69 -0
  33. package/esm/LOUDSTrieBuilder.js.map +1 -0
  34. package/esm/Migemo.d.ts +13 -0
  35. package/esm/Migemo.js +71 -0
  36. package/esm/Migemo.js.map +1 -0
  37. package/esm/RomajiProcessor.d.ts +18 -0
  38. package/esm/RomajiProcessor.js +478 -0
  39. package/esm/RomajiProcessor.js.map +1 -0
  40. package/esm/RomajiProcessor2.d.ts +15 -0
  41. package/esm/RomajiProcessor2.js +91 -0
  42. package/esm/RomajiProcessor2.js.map +1 -0
  43. package/esm/SimpleDictionary.d.ts +1 -0
  44. package/esm/SimpleDictionary.js +54 -0
  45. package/esm/SimpleDictionary.js.map +1 -0
  46. package/esm/TernaryRegexGenerator.d.ts +27 -0
  47. package/esm/TernaryRegexGenerator.js +202 -0
  48. package/esm/TernaryRegexGenerator.js.map +1 -0
  49. package/esm/index.d.ts +3 -0
  50. package/esm/index.js +5 -0
  51. package/esm/index.js.map +1 -0
  52. package/esm/utils.d.ts +5 -0
  53. package/esm/utils.js +88 -0
  54. package/esm/utils.js.map +1 -0
  55. package/index.html +55 -0
  56. package/jest.config.js +12 -0
  57. package/lib/BitList.d.ts +8 -0
  58. package/lib/BitList.js +43 -0
  59. package/lib/BitList.js.map +1 -0
  60. package/lib/BitVector.d.ts +15 -0
  61. package/lib/BitVector.js +154 -0
  62. package/lib/BitVector.js.map +1 -0
  63. package/lib/CharacterConverter.d.ts +3 -0
  64. package/lib/CharacterConverter.js +388 -0
  65. package/lib/CharacterConverter.js.map +1 -0
  66. package/lib/CompactDictionary.d.ts +17 -0
  67. package/lib/CompactDictionary.js +128 -0
  68. package/lib/CompactDictionary.js.map +1 -0
  69. package/lib/CompactDictionaryBuilder.d.ts +3 -0
  70. package/lib/CompactDictionaryBuilder.js +122 -0
  71. package/lib/CompactDictionaryBuilder.js.map +1 -0
  72. package/lib/CompactHiraganaString.d.ts +6 -0
  73. package/lib/CompactHiraganaString.js +45 -0
  74. package/lib/CompactHiraganaString.js.map +1 -0
  75. package/lib/DoubleArray.d.ts +12 -0
  76. package/lib/DoubleArray.js +74 -0
  77. package/lib/DoubleArray.js.map +1 -0
  78. package/lib/LOUDSTrie.d.ts +13 -0
  79. package/lib/LOUDSTrie.js +71 -0
  80. package/lib/LOUDSTrie.js.map +1 -0
  81. package/lib/LOUDSTrieBuilder.d.ts +4 -0
  82. package/lib/LOUDSTrieBuilder.js +73 -0
  83. package/lib/LOUDSTrieBuilder.js.map +1 -0
  84. package/lib/Migemo.d.ts +13 -0
  85. package/lib/Migemo.js +75 -0
  86. package/lib/Migemo.js.map +1 -0
  87. package/lib/RegexGenerator.d.ts +21 -0
  88. package/lib/RegexGenerator.js +150 -0
  89. package/lib/RegexGenerator.js.map +1 -0
  90. package/lib/RomajiProcessor.d.ts +18 -0
  91. package/lib/RomajiProcessor.js +484 -0
  92. package/lib/RomajiProcessor.js.map +1 -0
  93. package/lib/RomajiProcessor2.d.ts +15 -0
  94. package/lib/RomajiProcessor2.js +96 -0
  95. package/lib/RomajiProcessor2.js.map +1 -0
  96. package/lib/RomanEntry.d.ts +1 -0
  97. package/lib/RomanEntry.js +481 -0
  98. package/lib/RomanEntry.js.map +1 -0
  99. package/lib/SimpleDictionary.d.ts +1 -0
  100. package/lib/SimpleDictionary.js +56 -0
  101. package/lib/SimpleDictionary.js.map +1 -0
  102. package/lib/TernaryRegexGenerator.d.ts +27 -0
  103. package/lib/TernaryRegexGenerator.js +206 -0
  104. package/lib/TernaryRegexGenerator.js.map +1 -0
  105. package/lib/index.d.ts +3 -0
  106. package/lib/index.js +17 -0
  107. package/lib/index.js.map +1 -0
  108. package/lib/utils.d.ts +5 -0
  109. package/lib/utils.js +96 -0
  110. package/lib/utils.js.map +1 -0
  111. package/migemo-compact-dict +0 -0
  112. package/package.json +37 -0
  113. package/tsconfig.esm.json +9 -0
  114. package/umd/jsmigemo.js +1 -0
@@ -0,0 +1,481 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const utils_1 = require("./utils");
4
+ class RomanEntry {
5
+ constructor(roman, hiragana, remain) {
6
+ this.roman = roman;
7
+ this.hiragana = hiragana;
8
+ this.remain = remain;
9
+ this.index = RomanEntry.calculateIndex(roman);
10
+ }
11
+ static _calculateIndex(roman, start, end) {
12
+ let result = 0;
13
+ for (let i = 0; i < 4; i++) {
14
+ let index = i + start;
15
+ let c = index < roman.length && index < end ? roman.charCodeAt(index) : 0;
16
+ result |= c;
17
+ if (i < 3) {
18
+ result <<= 8;
19
+ }
20
+ }
21
+ return result;
22
+ }
23
+ static calculateIndex(roman) {
24
+ return RomanEntry._calculateIndex(roman, 0, 4);
25
+ }
26
+ }
27
+ const ROMAN_ENTRIES = [
28
+ new RomanEntry("-", "ー", 0),
29
+ new RomanEntry("~", "〜", 0),
30
+ new RomanEntry(".", "。", 0),
31
+ new RomanEntry(",", "、", 0),
32
+ new RomanEntry("z/", "・", 0),
33
+ new RomanEntry("z.", "…", 0),
34
+ new RomanEntry("z,", "‥", 0),
35
+ new RomanEntry("zh", "←", 0),
36
+ new RomanEntry("zj", "↓", 0),
37
+ new RomanEntry("zk", "↑", 0),
38
+ new RomanEntry("zl", "→", 0),
39
+ new RomanEntry("z-", "〜", 0),
40
+ new RomanEntry("z[", "『", 0),
41
+ new RomanEntry("z]", "』", 0),
42
+ new RomanEntry("[", "「", 0),
43
+ new RomanEntry("]", "」", 0),
44
+ new RomanEntry("va", "ゔぁ", 0),
45
+ new RomanEntry("vi", "ゔぃ", 0),
46
+ new RomanEntry("vu", "ゔ", 0),
47
+ new RomanEntry("ve", "ゔぇ", 0),
48
+ new RomanEntry("vo", "ゔぉ", 0),
49
+ new RomanEntry("vya", "ゔゃ", 0),
50
+ new RomanEntry("vyi", "ゔぃ", 0),
51
+ new RomanEntry("vyu", "ゔゅ", 0),
52
+ new RomanEntry("vye", "ゔぇ", 0),
53
+ new RomanEntry("vyo", "ゔょ", 0),
54
+ new RomanEntry("qq", "っ", 1),
55
+ new RomanEntry("vv", "っ", 1),
56
+ new RomanEntry("ll", "っ", 1),
57
+ new RomanEntry("xx", "っ", 1),
58
+ new RomanEntry("kk", "っ", 1),
59
+ new RomanEntry("gg", "っ", 1),
60
+ new RomanEntry("ss", "っ", 1),
61
+ new RomanEntry("zz", "っ", 1),
62
+ new RomanEntry("jj", "っ", 1),
63
+ new RomanEntry("tt", "っ", 1),
64
+ new RomanEntry("dd", "っ", 1),
65
+ new RomanEntry("hh", "っ", 1),
66
+ new RomanEntry("ff", "っ", 1),
67
+ new RomanEntry("bb", "っ", 1),
68
+ new RomanEntry("pp", "っ", 1),
69
+ new RomanEntry("mm", "っ", 1),
70
+ new RomanEntry("yy", "っ", 1),
71
+ new RomanEntry("rr", "っ", 1),
72
+ new RomanEntry("ww", "っ", 1),
73
+ new RomanEntry("www", "w", 2),
74
+ new RomanEntry("cc", "っ", 1),
75
+ new RomanEntry("kya", "きゃ", 0),
76
+ new RomanEntry("kyi", "きぃ", 0),
77
+ new RomanEntry("kyu", "きゅ", 0),
78
+ new RomanEntry("kye", "きぇ", 0),
79
+ new RomanEntry("kyo", "きょ", 0),
80
+ new RomanEntry("gya", "ぎゃ", 0),
81
+ new RomanEntry("gyi", "ぎぃ", 0),
82
+ new RomanEntry("gyu", "ぎゅ", 0),
83
+ new RomanEntry("gye", "ぎぇ", 0),
84
+ new RomanEntry("gyo", "ぎょ", 0),
85
+ new RomanEntry("sya", "しゃ", 0),
86
+ new RomanEntry("syi", "しぃ", 0),
87
+ new RomanEntry("syu", "しゅ", 0),
88
+ new RomanEntry("sye", "しぇ", 0),
89
+ new RomanEntry("syo", "しょ", 0),
90
+ new RomanEntry("sha", "しゃ", 0),
91
+ new RomanEntry("shi", "し", 0),
92
+ new RomanEntry("shu", "しゅ", 0),
93
+ new RomanEntry("she", "しぇ", 0),
94
+ new RomanEntry("sho", "しょ", 0),
95
+ new RomanEntry("zya", "じゃ", 0),
96
+ new RomanEntry("zyi", "じぃ", 0),
97
+ new RomanEntry("zyu", "じゅ", 0),
98
+ new RomanEntry("zye", "じぇ", 0),
99
+ new RomanEntry("zyo", "じょ", 0),
100
+ new RomanEntry("tya", "ちゃ", 0),
101
+ new RomanEntry("tyi", "ちぃ", 0),
102
+ new RomanEntry("tyu", "ちゅ", 0),
103
+ new RomanEntry("tye", "ちぇ", 0),
104
+ new RomanEntry("tyo", "ちょ", 0),
105
+ new RomanEntry("cha", "ちゃ", 0),
106
+ new RomanEntry("chi", "ち", 0),
107
+ new RomanEntry("chu", "ちゅ", 0),
108
+ new RomanEntry("che", "ちぇ", 0),
109
+ new RomanEntry("cho", "ちょ", 0),
110
+ new RomanEntry("cya", "ちゃ", 0),
111
+ new RomanEntry("cyi", "ちぃ", 0),
112
+ new RomanEntry("cyu", "ちゅ", 0),
113
+ new RomanEntry("cye", "ちぇ", 0),
114
+ new RomanEntry("cyo", "ちょ", 0),
115
+ new RomanEntry("dya", "ぢゃ", 0),
116
+ new RomanEntry("dyi", "ぢぃ", 0),
117
+ new RomanEntry("dyu", "ぢゅ", 0),
118
+ new RomanEntry("dye", "ぢぇ", 0),
119
+ new RomanEntry("dyo", "ぢょ", 0),
120
+ new RomanEntry("tsa", "つぁ", 0),
121
+ new RomanEntry("tsi", "つぃ", 0),
122
+ new RomanEntry("tse", "つぇ", 0),
123
+ new RomanEntry("tso", "つぉ", 0),
124
+ new RomanEntry("tha", "てゃ", 0),
125
+ new RomanEntry("thi", "てぃ", 0),
126
+ new RomanEntry("t'i", "てぃ", 0),
127
+ new RomanEntry("thu", "てゅ", 0),
128
+ new RomanEntry("the", "てぇ", 0),
129
+ new RomanEntry("tho", "てょ", 0),
130
+ new RomanEntry("t'yu", "てゅ", 0),
131
+ new RomanEntry("dha", "でゃ", 0),
132
+ new RomanEntry("dhi", "でぃ", 0),
133
+ new RomanEntry("d'i", "でぃ", 0),
134
+ new RomanEntry("dhu", "でゅ", 0),
135
+ new RomanEntry("dhe", "でぇ", 0),
136
+ new RomanEntry("dho", "でょ", 0),
137
+ new RomanEntry("d'yu", "でゅ", 0),
138
+ new RomanEntry("twa", "とぁ", 0),
139
+ new RomanEntry("twi", "とぃ", 0),
140
+ new RomanEntry("twu", "とぅ", 0),
141
+ new RomanEntry("twe", "とぇ", 0),
142
+ new RomanEntry("two", "とぉ", 0),
143
+ new RomanEntry("t'u", "とぅ", 0),
144
+ new RomanEntry("dwa", "どぁ", 0),
145
+ new RomanEntry("dwi", "どぃ", 0),
146
+ new RomanEntry("dwu", "どぅ", 0),
147
+ new RomanEntry("dwe", "どぇ", 0),
148
+ new RomanEntry("dwo", "どぉ", 0),
149
+ new RomanEntry("d'u", "どぅ", 0),
150
+ new RomanEntry("nya", "にゃ", 0),
151
+ new RomanEntry("nyi", "にぃ", 0),
152
+ new RomanEntry("nyu", "にゅ", 0),
153
+ new RomanEntry("nye", "にぇ", 0),
154
+ new RomanEntry("nyo", "にょ", 0),
155
+ new RomanEntry("hya", "ひゃ", 0),
156
+ new RomanEntry("hyi", "ひぃ", 0),
157
+ new RomanEntry("hyu", "ひゅ", 0),
158
+ new RomanEntry("hye", "ひぇ", 0),
159
+ new RomanEntry("hyo", "ひょ", 0),
160
+ new RomanEntry("bya", "びゃ", 0),
161
+ new RomanEntry("byi", "びぃ", 0),
162
+ new RomanEntry("byu", "びゅ", 0),
163
+ new RomanEntry("bye", "びぇ", 0),
164
+ new RomanEntry("byo", "びょ", 0),
165
+ new RomanEntry("pya", "ぴゃ", 0),
166
+ new RomanEntry("pyi", "ぴぃ", 0),
167
+ new RomanEntry("pyu", "ぴゅ", 0),
168
+ new RomanEntry("pye", "ぴぇ", 0),
169
+ new RomanEntry("pyo", "ぴょ", 0),
170
+ new RomanEntry("fa", "ふぁ", 0),
171
+ new RomanEntry("fi", "ふぃ", 0),
172
+ new RomanEntry("fu", "ふ", 0),
173
+ new RomanEntry("fe", "ふぇ", 0),
174
+ new RomanEntry("fo", "ふぉ", 0),
175
+ new RomanEntry("fya", "ふゃ", 0),
176
+ new RomanEntry("fyu", "ふゅ", 0),
177
+ new RomanEntry("fyo", "ふょ", 0),
178
+ new RomanEntry("hwa", "ふぁ", 0),
179
+ new RomanEntry("hwi", "ふぃ", 0),
180
+ new RomanEntry("hwe", "ふぇ", 0),
181
+ new RomanEntry("hwo", "ふぉ", 0),
182
+ new RomanEntry("hwyu", "ふゅ", 0),
183
+ new RomanEntry("mya", "みゃ", 0),
184
+ new RomanEntry("myi", "みぃ", 0),
185
+ new RomanEntry("myu", "みゅ", 0),
186
+ new RomanEntry("mye", "みぇ", 0),
187
+ new RomanEntry("myo", "みょ", 0),
188
+ new RomanEntry("rya", "りゃ", 0),
189
+ new RomanEntry("ryi", "りぃ", 0),
190
+ new RomanEntry("ryu", "りゅ", 0),
191
+ new RomanEntry("rye", "りぇ", 0),
192
+ new RomanEntry("ryo", "りょ", 0),
193
+ new RomanEntry("n'", "ん", 0),
194
+ new RomanEntry("nn", "ん", 0),
195
+ new RomanEntry("n", "ん", 0),
196
+ new RomanEntry("xn", "ん", 0),
197
+ new RomanEntry("a", "あ", 0),
198
+ new RomanEntry("i", "い", 0),
199
+ new RomanEntry("u", "う", 0),
200
+ new RomanEntry("wu", "う", 0),
201
+ new RomanEntry("e", "え", 0),
202
+ new RomanEntry("o", "お", 0),
203
+ new RomanEntry("xa", "ぁ", 0),
204
+ new RomanEntry("xi", "ぃ", 0),
205
+ new RomanEntry("xu", "ぅ", 0),
206
+ new RomanEntry("xe", "ぇ", 0),
207
+ new RomanEntry("xo", "ぉ", 0),
208
+ new RomanEntry("la", "ぁ", 0),
209
+ new RomanEntry("li", "ぃ", 0),
210
+ new RomanEntry("lu", "ぅ", 0),
211
+ new RomanEntry("le", "ぇ", 0),
212
+ new RomanEntry("lo", "ぉ", 0),
213
+ new RomanEntry("lyi", "ぃ", 0),
214
+ new RomanEntry("xyi", "ぃ", 0),
215
+ new RomanEntry("lye", "ぇ", 0),
216
+ new RomanEntry("xye", "ぇ", 0),
217
+ new RomanEntry("ye", "いぇ", 0),
218
+ new RomanEntry("ka", "か", 0),
219
+ new RomanEntry("ki", "き", 0),
220
+ new RomanEntry("ku", "く", 0),
221
+ new RomanEntry("ke", "け", 0),
222
+ new RomanEntry("ko", "こ", 0),
223
+ new RomanEntry("xka", "ヵ", 0),
224
+ new RomanEntry("xke", "ヶ", 0),
225
+ new RomanEntry("lka", "ヵ", 0),
226
+ new RomanEntry("lke", "ヶ", 0),
227
+ new RomanEntry("ga", "が", 0),
228
+ new RomanEntry("gi", "ぎ", 0),
229
+ new RomanEntry("gu", "ぐ", 0),
230
+ new RomanEntry("ge", "げ", 0),
231
+ new RomanEntry("go", "ご", 0),
232
+ new RomanEntry("sa", "さ", 0),
233
+ new RomanEntry("si", "し", 0),
234
+ new RomanEntry("su", "す", 0),
235
+ new RomanEntry("se", "せ", 0),
236
+ new RomanEntry("so", "そ", 0),
237
+ new RomanEntry("ca", "か", 0),
238
+ new RomanEntry("ci", "し", 0),
239
+ new RomanEntry("cu", "く", 0),
240
+ new RomanEntry("ce", "せ", 0),
241
+ new RomanEntry("co", "こ", 0),
242
+ new RomanEntry("qa", "くぁ", 0),
243
+ new RomanEntry("qi", "くぃ", 0),
244
+ new RomanEntry("qu", "く", 0),
245
+ new RomanEntry("qe", "くぇ", 0),
246
+ new RomanEntry("qo", "くぉ", 0),
247
+ new RomanEntry("kwa", "くぁ", 0),
248
+ new RomanEntry("kwi", "くぃ", 0),
249
+ new RomanEntry("kwu", "くぅ", 0),
250
+ new RomanEntry("kwe", "くぇ", 0),
251
+ new RomanEntry("kwo", "くぉ", 0),
252
+ new RomanEntry("gwa", "ぐぁ", 0),
253
+ new RomanEntry("gwi", "ぐぃ", 0),
254
+ new RomanEntry("gwu", "ぐぅ", 0),
255
+ new RomanEntry("gwe", "ぐぇ", 0),
256
+ new RomanEntry("gwo", "ぐぉ", 0),
257
+ new RomanEntry("za", "ざ", 0),
258
+ new RomanEntry("zi", "じ", 0),
259
+ new RomanEntry("zu", "ず", 0),
260
+ new RomanEntry("ze", "ぜ", 0),
261
+ new RomanEntry("zo", "ぞ", 0),
262
+ new RomanEntry("ja", "じゃ", 0),
263
+ new RomanEntry("ji", "じ", 0),
264
+ new RomanEntry("ju", "じゅ", 0),
265
+ new RomanEntry("je", "じぇ", 0),
266
+ new RomanEntry("jo", "じょ", 0),
267
+ new RomanEntry("jya", "じゃ", 0),
268
+ new RomanEntry("jyi", "じぃ", 0),
269
+ new RomanEntry("jyu", "じゅ", 0),
270
+ new RomanEntry("jye", "じぇ", 0),
271
+ new RomanEntry("jyo", "じょ", 0),
272
+ new RomanEntry("ta", "た", 0),
273
+ new RomanEntry("ti", "ち", 0),
274
+ new RomanEntry("tu", "つ", 0),
275
+ new RomanEntry("tsu", "つ", 0),
276
+ new RomanEntry("te", "て", 0),
277
+ new RomanEntry("to", "と", 0),
278
+ new RomanEntry("da", "だ", 0),
279
+ new RomanEntry("di", "ぢ", 0),
280
+ new RomanEntry("du", "づ", 0),
281
+ new RomanEntry("de", "で", 0),
282
+ new RomanEntry("do", "ど", 0),
283
+ new RomanEntry("xtu", "っ", 0),
284
+ new RomanEntry("xtsu", "っ", 0),
285
+ new RomanEntry("ltu", "っ", 0),
286
+ new RomanEntry("ltsu", "っ", 0),
287
+ new RomanEntry("na", "な", 0),
288
+ new RomanEntry("ni", "に", 0),
289
+ new RomanEntry("nu", "ぬ", 0),
290
+ new RomanEntry("ne", "ね", 0),
291
+ new RomanEntry("no", "の", 0),
292
+ new RomanEntry("ha", "は", 0),
293
+ new RomanEntry("hi", "ひ", 0),
294
+ new RomanEntry("hu", "ふ", 0),
295
+ new RomanEntry("fu", "ふ", 0),
296
+ new RomanEntry("he", "へ", 0),
297
+ new RomanEntry("ho", "ほ", 0),
298
+ new RomanEntry("ba", "ば", 0),
299
+ new RomanEntry("bi", "び", 0),
300
+ new RomanEntry("bu", "ぶ", 0),
301
+ new RomanEntry("be", "べ", 0),
302
+ new RomanEntry("bo", "ぼ", 0),
303
+ new RomanEntry("pa", "ぱ", 0),
304
+ new RomanEntry("pi", "ぴ", 0),
305
+ new RomanEntry("pu", "ぷ", 0),
306
+ new RomanEntry("pe", "ぺ", 0),
307
+ new RomanEntry("po", "ぽ", 0),
308
+ new RomanEntry("ma", "ま", 0),
309
+ new RomanEntry("mi", "み", 0),
310
+ new RomanEntry("mu", "む", 0),
311
+ new RomanEntry("me", "め", 0),
312
+ new RomanEntry("mo", "も", 0),
313
+ new RomanEntry("xya", "ゃ", 0),
314
+ new RomanEntry("lya", "ゃ", 0),
315
+ new RomanEntry("ya", "や", 0),
316
+ new RomanEntry("wyi", "ゐ", 0),
317
+ new RomanEntry("xyu", "ゅ", 0),
318
+ new RomanEntry("lyu", "ゅ", 0),
319
+ new RomanEntry("yu", "ゆ", 0),
320
+ new RomanEntry("wye", "ゑ", 0),
321
+ new RomanEntry("xyo", "ょ", 0),
322
+ new RomanEntry("lyo", "ょ", 0),
323
+ new RomanEntry("yo", "よ", 0),
324
+ new RomanEntry("ra", "ら", 0),
325
+ new RomanEntry("ri", "り", 0),
326
+ new RomanEntry("ru", "る", 0),
327
+ new RomanEntry("re", "れ", 0),
328
+ new RomanEntry("ro", "ろ", 0),
329
+ new RomanEntry("xwa", "ゎ", 0),
330
+ new RomanEntry("lwa", "ゎ", 0),
331
+ new RomanEntry("wa", "わ", 0),
332
+ new RomanEntry("wi", "うぃ", 0),
333
+ new RomanEntry("we", "うぇ", 0),
334
+ new RomanEntry("wo", "を", 0),
335
+ new RomanEntry("wha", "うぁ", 0),
336
+ new RomanEntry("whi", "うぃ", 0),
337
+ new RomanEntry("whu", "う", 0),
338
+ new RomanEntry("whe", "うぇ", 0),
339
+ new RomanEntry("who", "うぉ", 0)
340
+ ]
341
+ .sort((a, b) => a.index - b.index);
342
+ const ROMAN_INDEXES = ROMAN_ENTRIES.map(e => e.index);
343
+ class RomajiPredictiveResult {
344
+ constructor(estaglishedHiragana, predictiveSuffixes) {
345
+ this.estaglishedHiragana = estaglishedHiragana;
346
+ this.predictiveSuffixes = predictiveSuffixes;
347
+ }
348
+ }
349
+ function romajiToHiragana(romaji) {
350
+ if (romaji.length == 0) {
351
+ return "";
352
+ }
353
+ let hiragana = "";
354
+ let start = 0;
355
+ let end = 1;
356
+ while (start < romaji.length) {
357
+ let lastFound = -1;
358
+ let lower = 0;
359
+ let upper = ROMAN_INDEXES.length;
360
+ while (upper - lower > 1 && end <= romaji.length) {
361
+ let lowerKey = RomanEntry._calculateIndex(romaji, start, end);
362
+ lower = utils_1.binarySearch(ROMAN_INDEXES, lower, upper, lowerKey);
363
+ if (lower >= 0) {
364
+ lastFound = lower;
365
+ }
366
+ else {
367
+ lower = -lower - 1;
368
+ }
369
+ let upperKey = lowerKey + (1 << (32 - 8 * (end - start)));
370
+ upper = utils_1.binarySearch(ROMAN_INDEXES, lower, upper, upperKey);
371
+ if (upper < 0) {
372
+ upper = -upper - 1;
373
+ }
374
+ end++;
375
+ }
376
+ if (lastFound >= 0) {
377
+ let entry = ROMAN_ENTRIES[lastFound];
378
+ hiragana = hiragana + entry.hiragana;
379
+ start = start + entry.roman.length - entry.remain;
380
+ end = start + 1;
381
+ }
382
+ else {
383
+ hiragana = hiragana + romaji.charAt(start);
384
+ start++;
385
+ end = start + 1;
386
+ }
387
+ }
388
+ return hiragana;
389
+ }
390
+ exports.romajiToHiragana = romajiToHiragana;
391
+ function findRomanEntryPredicatively(roman, offset) {
392
+ let lastFound = -1;
393
+ let startIndex = 0;
394
+ let endIndex = ROMAN_INDEXES.length;
395
+ for (let i = 0; i < 4; i++) {
396
+ if (roman.length <= offset + i) {
397
+ break;
398
+ }
399
+ let startKey = RomanEntry._calculateIndex(roman, offset, offset + i + 1);
400
+ startIndex = utils_1.binarySearch(ROMAN_INDEXES, startIndex, endIndex, startKey);
401
+ if (startIndex >= 0) {
402
+ lastFound = startIndex;
403
+ }
404
+ else {
405
+ startIndex = -startIndex - 1;
406
+ }
407
+ let endKey = startKey + (1 << (24 - 8 * i));
408
+ endIndex = utils_1.binarySearch(ROMAN_INDEXES, startIndex, endIndex, endKey);
409
+ if (endIndex < 0) {
410
+ endIndex = -endIndex - 1;
411
+ }
412
+ if (endIndex - startIndex == 1) {
413
+ return new Set([ROMAN_ENTRIES[startIndex]]);
414
+ }
415
+ }
416
+ let result = new Set();
417
+ for (let i = startIndex; i < endIndex; i++) {
418
+ result.add(ROMAN_ENTRIES[i]);
419
+ }
420
+ return result;
421
+ }
422
+ function romajiToHiraganaPredictively(romaji) {
423
+ if (romaji.length == 0) {
424
+ return new RomajiPredictiveResult("", new Set([""]));
425
+ }
426
+ let hiragana = "";
427
+ let start = 0;
428
+ let end = 1;
429
+ while (start < romaji.length) {
430
+ let lastFound = -1;
431
+ let lower = 0;
432
+ let upper = ROMAN_INDEXES.length;
433
+ while (upper - lower > 1 && end <= romaji.length) {
434
+ let lowerKey = RomanEntry._calculateIndex(romaji, start, end);
435
+ lower = utils_1.binarySearch(ROMAN_INDEXES, lower, upper, lowerKey);
436
+ if (lower >= 0) {
437
+ lastFound = lower;
438
+ }
439
+ else {
440
+ lower = -lower - 1;
441
+ }
442
+ let upperKey = lowerKey + (1 << (32 - 8 * (end - start)));
443
+ upper = utils_1.binarySearch(ROMAN_INDEXES, lower, upper, upperKey);
444
+ if (upper < 0) {
445
+ upper = -upper - 1;
446
+ }
447
+ end++;
448
+ }
449
+ if (end > romaji.length && upper - lower != 1) {
450
+ let set = new Set();
451
+ for (let i = lower; i < upper; i++) {
452
+ let re = ROMAN_ENTRIES[i];
453
+ if (re.remain > 0) {
454
+ let set2 = findRomanEntryPredicatively(romaji, end - 1 - re.remain);
455
+ for (let re2 of set2) {
456
+ if (re2.remain == 0) {
457
+ set.add(re.hiragana + re2.hiragana);
458
+ }
459
+ }
460
+ }
461
+ else {
462
+ set.add(re.hiragana);
463
+ }
464
+ }
465
+ return new RomajiPredictiveResult(hiragana.toString(), set);
466
+ }
467
+ if (lastFound >= 0) {
468
+ let entry = ROMAN_ENTRIES[lastFound];
469
+ hiragana = hiragana + entry.hiragana;
470
+ start = start + entry.roman.length - entry.remain;
471
+ end = start + 1;
472
+ }
473
+ else {
474
+ hiragana = hiragana + romaji.charAt(start);
475
+ start++;
476
+ end = start + 1;
477
+ }
478
+ }
479
+ return new RomajiPredictiveResult(hiragana.toString(), new Set([""]));
480
+ }
481
+ //# sourceMappingURL=RomanEntry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RomanEntry.js","sourceRoot":"","sources":["../src/RomanEntry.ts"],"names":[],"mappings":"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E,CAAC,CAAC;IAC5B,IAAI,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;IAC5B,IAAI,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;IAC5B,IAAI,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;IAC5B,IAAI,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;IAC5B,IAAI,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;IAC5B,IAAI,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;IAC5B,IAAI,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;IAC5B,IAAI,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;IAC5B,IAAI,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;IAC5B,IAAI,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;IAC5B,IAAI,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;IAC5B,IAAI,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;IAC5B,IAAI,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;IAC5B,IAAI,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;IAC5B,IAAI,UAAU,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;IAC7B,IAAI,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;IAC5B,IAAI,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9B,IAAI,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9B,IAAI,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9B,IAAI,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9B,IAAI,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9B,IAAI,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9B,IAAI,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9B,IAAI,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9B,IAAI,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9B,IAAI,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9B,IAAI,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9B,IAAI,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9B,IAAI,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9B,IAAI,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9B,IAAI,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9B,IAAI,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9B,IAAI,UAAU,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;IAC7B,IAAI,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9B,IAAI,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9B,IAAI,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9B,IAAI,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9B,IAAI,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9B,IAAI,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9B,IAAI,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9B,IAAI,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9B,IAAI,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9B,IAAI,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9B,IAAI,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9B,IAAI,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9B,IAAI,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9B,IAAI,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9B,IAAI,UAAU,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;IAC7B,IAAI,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9B,IAAI,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9B,IAAI,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9B,IAAI,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9B,IAAI,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9B,IAAI,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9B,IAAI,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9B,IAAI,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9B,IAAI,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9B,IAAI,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9B,IAAI,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9B,IAAI,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9B,IAAI,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9B,IAAI,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9B,IAAI,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9B,IAAI,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9B,IAAI,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9B,IAAI,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9B,IAAI,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9B,IAAI,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9B,IAAI,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9B,IAAI,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9B,IAAI,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9B,IAAI,UAAU,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;IAC/B,IAAI,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9B,IAAI,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9B,IAAI,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9B,IAAI,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9B,IAAI,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9B,IAAI,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9B,IAAI,UAAU,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;IAC/B,IAAI,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9B,IAAI,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9B,IAAI,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9B,IAAI,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9B,IAAI,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9B,IAAI,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9B,IAAI,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9B,IAAI,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9B,IAAI,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9B,IAAI,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9B,IAAI,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9B,IAAI,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9B,IAAI,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9B,IAAI,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9B,IAAI,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9B,IAAI,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9B,IAAI,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9B,IAAI,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9B,IAAI,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9B,IAAI,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9B,IAAI,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9B,IAAI,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9B,IAAI,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9B,IAAI,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9B,IAAI,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9B,IAAI,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9B,IAAI,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9B,IAAI,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9B,IAAI,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9B,IAAI,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9B,IAAI,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9B,IAAI,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9B,IAAI,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;IAC7B,IAAI,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;IAC7B,IAAI,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;IAC5B,IAAI,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;IAC7B,IAAI,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;IAC7B,IAAI,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9B,IAAI,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9B,IAAI,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9B,IAAI,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9B,IAAI,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9B,IAAI,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9B,IAAI,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9B,IAAI,UAAU,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;IAC/B,IAAI,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9B,IAAI,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9B,IAAI,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9B,IAAI,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9B,IAAI,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9B,IAAI,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9B,IAAI,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9B,IAAI,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9B,IAAI,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9B,IAAI,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9B,IAAI,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;IAC5B,IAAI,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;IAC5B,IAAI,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;IAC3B,IAAI,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;IAC5B,IAAI,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;IAC3B,IAAI,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;IAC3B,IAAI,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;IAC3B,IAAI,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;IAC5B,IAAI,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;IAC3B,IAAI,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;IAC3B,IAAI,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;IAC5B,IAAI,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;IAC5B,IAAI,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;IAC5B,IAAI,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;IAC5B,IAAI,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;IAC5B,IAAI,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;IAC5B,IAAI,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;IAC5B,IAAI,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;IAC5B,IAAI,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;IAC5B,IAAI,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;IAC5B,IAAI,UAAU,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;IAC7B,IAAI,UAAU,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;IAC7B,IAAI,UAAU,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;IAC7B,IAAI,UAAU,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;IAC7B,IAAI,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;IAC7B,IAAI,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;IAC5B,IAAI,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;IAC5B,IAAI,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;IAC5B,IAAI,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;IAC5B,IAAI,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;IAC5B,IAAI,UAAU,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;IAC7B,IAAI,UAAU,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;IAC7B,IAAI,UAAU,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;IAC7B,IAAI,UAAU,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;IAC7B,IAAI,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;IAC5B,IAAI,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;IAC5B,IAAI,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;IAC5B,IAAI,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;IAC5B,IAAI,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;IAC5B,IAAI,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;IAC5B,IAAI,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;IAC5B,IAAI,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;IAC5B,IAAI,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;IAC5B,IAAI,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;IAC5B,IAAI,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;IAC5B,IAAI,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;IAC5B,IAAI,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;IAC5B,IAAI,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;IAC5B,IAAI,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;IAC5B,IAAI,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;IAC7B,IAAI,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;IAC7B,IAAI,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;IAC5B,IAAI,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;IAC7B,IAAI,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;IAC7B,IAAI,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9B,IAAI,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9B,IAAI,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9B,IAAI,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9B,IAAI,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9B,IAAI,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9B,IAAI,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9B,IAAI,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9B,IAAI,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9B,IAAI,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9B,IAAI,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;IAC5B,IAAI,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;IAC5B,IAAI,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;IAC5B,IAAI,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;IAC5B,IAAI,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;IAC5B,IAAI,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;IAC7B,IAAI,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;IAC5B,IAAI,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;IAC7B,IAAI,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;IAC7B,IAAI,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;IAC7B,IAAI,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9B,IAAI,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9B,IAAI,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9B,IAAI,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9B,IAAI,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9B,IAAI,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;IAC5B,IAAI,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;IAC5B,IAAI,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;IAC5B,IAAI,UAAU,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;IAC7B,IAAI,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;IAC5B,IAAI,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;IAC5B,IAAI,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;IAC5B,IAAI,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;IAC5B,IAAI,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;IAC5B,IAAI,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;IAC5B,IAAI,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;IAC5B,IAAI,UAAU,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;IAC7B,IAAI,UAAU,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;IAC9B,IAAI,UAAU,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;IAC7B,IAAI,UAAU,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;IAC9B,IAAI,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;IAC5B,IAAI,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;IAC5B,IAAI,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;IAC5B,IAAI,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;IAC5B,IAAI,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;IAC5B,IAAI,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;IAC5B,IAAI,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;IAC5B,IAAI,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;IAC5B,IAAI,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;IAC5B,IAAI,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;IAC5B,IAAI,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;IAC5B,IAAI,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;IAC5B,IAAI,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;IAC5B,IAAI,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;IAC5B,IAAI,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;IAC5B,IAAI,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;IAC5B,IAAI,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;IAC5B,IAAI,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;IAC5B,IAAI,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;IAC5B,IAAI,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;IAC5B,IAAI,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;IAC5B,IAAI,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;IAC5B,IAAI,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;IAC5B,IAAI,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;IAC5B,IAAI,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;IAC5B,IAAI,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;IAC5B,IAAI,UAAU,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;IAC7B,IAAI,UAAU,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;IAC7B,IAAI,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;IAC5B,IAAI,UAAU,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;IAC7B,IAAI,UAAU,CAAC,KAAK,EAAE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"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,56 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const utils_1 = require("./utils");
4
+ class SimpleDictionary {
5
+ constructor(keys, values) {
6
+ this.keys = keys;
7
+ this.values = values;
8
+ }
9
+ static build(file) {
10
+ let lines = file.split("\n");
11
+ let keyValuePairs = Array();
12
+ for (let line of lines) {
13
+ if (!line.startsWith(";") && line.length != 0) {
14
+ let semicolonPos = line.indexOf('\t');
15
+ let key = line.substr(0, semicolonPos);
16
+ let value = line.substr(semicolonPos + 1);
17
+ keyValuePairs.push([key, value]);
18
+ }
19
+ }
20
+ keyValuePairs.sort((a, b) => {
21
+ if (a[0] > b[0]) {
22
+ return 1;
23
+ }
24
+ else {
25
+ return -1;
26
+ }
27
+ });
28
+ let keys = keyValuePairs.map((a) => a[0]);
29
+ let values = keyValuePairs.map((a) => a[1]);
30
+ return new SimpleDictionary(keys, values);
31
+ }
32
+ predictiveSearch(hiragana) {
33
+ if (hiragana.length > 0) {
34
+ let stop = hiragana.substring(0, hiragana.length - 1) + String.fromCodePoint(hiragana.codePointAt(hiragana.length - 1) || 0 + 1);
35
+ let startPos = (0, utils_1.binarySearchString)(this.keys, 0, this.keys.length, hiragana);
36
+ if (startPos < 0) {
37
+ startPos = -(startPos + 1);
38
+ }
39
+ let endPos = (0, utils_1.binarySearchString)(this.keys, 0, this.keys.length, stop);
40
+ if (endPos < 0) {
41
+ endPos = -(endPos + 1);
42
+ }
43
+ let result = Array();
44
+ for (let i = startPos; i < endPos; i++) {
45
+ for (let j of this.values[i].split("\t")) {
46
+ result.push(j);
47
+ }
48
+ }
49
+ return result;
50
+ }
51
+ else {
52
+ return [];
53
+ }
54
+ }
55
+ }
56
+ //# sourceMappingURL=SimpleDictionary.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SimpleDictionary.js","sourceRoot":"","sources":["../src/SimpleDictionary.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ import { BitList } from "./BitList";
2
+ declare class TernaryRegexNode {
3
+ value: number;
4
+ child: TernaryRegexNode | null;
5
+ left: TernaryRegexNode | null;
6
+ right: TernaryRegexNode | null;
7
+ level: number;
8
+ successor(): TernaryRegexNode;
9
+ predecessor(): TernaryRegexNode;
10
+ }
11
+ export declare class TernaryRegexGenerator {
12
+ or: string;
13
+ beginGroup: string;
14
+ endGroup: string;
15
+ beginClass: string;
16
+ endClass: string;
17
+ newline: string;
18
+ root: TernaryRegexNode | null;
19
+ escapedCharacters: BitList;
20
+ constructor(or: string, beginGroup: string, endGroup: string, beginClass: string, endClass: string, newline: string);
21
+ static getDEFAULT(): TernaryRegexGenerator;
22
+ static initializeEscapeCharacters(): BitList;
23
+ add(word: string): void;
24
+ generateStub(node: TernaryRegexNode | null): string;
25
+ generate(): string;
26
+ }
27
+ export {};