@delali/narsil 0.1.15 → 0.2.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 (251) hide show
  1. package/NOTICE +54 -0
  2. package/README.md +38 -982
  3. package/dist/adapters/filesystem.mjs +1 -1
  4. package/dist/adapters/indexeddb.mjs +1 -1
  5. package/dist/{chunk-WISGW24C.mjs → chunk-AUMKFYTG.mjs} +1 -1
  6. package/dist/{chunk-HRABJLPB.mjs → chunk-BKAI2WXI.mjs} +1 -0
  7. package/dist/chunk-GHJWC2E5.mjs +9 -0
  8. package/dist/chunk-KH3YGMVT.mjs +15 -0
  9. package/dist/{chunk-ALB35PRQ.mjs → chunk-M2EDG55Y.mjs} +8 -0
  10. package/dist/{chunk-HMO6OMZ3.mjs → chunk-S6IAXOBA.mjs} +1073 -506
  11. package/dist/chunk-TGP5M5R7.mjs +880 -0
  12. package/dist/chunk-U2BKYEC7.mjs +254 -0
  13. package/dist/{chunk-MEW7HD75.mjs → chunk-XAKNSWIK.mjs} +2543 -1154
  14. package/dist/{config-CojEPOgS.d.ts → config-P27AtSn4.d.ts} +28 -7
  15. package/dist/direct-executor-2FV3MEDD.mjs +5 -0
  16. package/dist/distribution/coordinator/etcd.d.ts +2 -2
  17. package/dist/distribution/coordinator/etcd.mjs +2 -2
  18. package/dist/distribution/coordinator/in-memory.d.ts +2 -2
  19. package/dist/distribution.d.ts +10 -4
  20. package/dist/distribution.mjs +1875 -1772
  21. package/dist/embeddings/openai.mjs +1 -1
  22. package/dist/index.browser.mjs +4566 -1783
  23. package/dist/index.d.ts +14 -5
  24. package/dist/index.mjs +6 -5
  25. package/dist/{language-ONQ3iVDf.d.ts → language-CmJBHf1j.d.ts} +4 -1
  26. package/dist/languages/albanian.d.ts +5 -0
  27. package/dist/languages/albanian.mjs +103 -0
  28. package/dist/languages/amharic.d.ts +5 -0
  29. package/dist/languages/amharic.mjs +240 -0
  30. package/dist/languages/arabic.d.ts +1 -1
  31. package/dist/languages/arabic.mjs +939 -154
  32. package/dist/languages/armenian.d.ts +1 -1
  33. package/dist/languages/armenian.mjs +275 -243
  34. package/dist/languages/azerbaijani.d.ts +5 -0
  35. package/dist/languages/azerbaijani.mjs +152 -0
  36. package/dist/languages/bambara.d.ts +5 -0
  37. package/dist/languages/bambara.mjs +60 -0
  38. package/dist/languages/basque.d.ts +5 -0
  39. package/dist/languages/basque.mjs +726 -0
  40. package/dist/languages/belarusian.d.ts +5 -0
  41. package/dist/languages/belarusian.mjs +100 -0
  42. package/dist/languages/bengali.d.ts +5 -0
  43. package/dist/languages/bengali.mjs +128 -0
  44. package/dist/languages/bosnian.d.ts +5 -0
  45. package/dist/languages/bosnian.mjs +197 -0
  46. package/dist/languages/breton.d.ts +5 -0
  47. package/dist/languages/breton.mjs +96 -0
  48. package/dist/languages/bulgarian.d.ts +1 -1
  49. package/dist/languages/bulgarian.mjs +11 -2
  50. package/dist/languages/burmese.d.ts +5 -0
  51. package/dist/languages/burmese.mjs +57 -0
  52. package/dist/languages/catalan.d.ts +5 -0
  53. package/dist/languages/catalan.mjs +987 -0
  54. package/dist/languages/chinese.d.ts +1 -1
  55. package/dist/languages/chinese.mjs +4 -3
  56. package/dist/languages/croatian.d.ts +5 -0
  57. package/dist/languages/croatian.mjs +191 -0
  58. package/dist/languages/czech.d.ts +5 -0
  59. package/dist/languages/czech.mjs +628 -0
  60. package/dist/languages/dagbani.d.ts +1 -1
  61. package/dist/languages/dagbani.mjs +11 -2
  62. package/dist/languages/danish.d.ts +1 -1
  63. package/dist/languages/danish.mjs +215 -110
  64. package/dist/languages/dutch.d.ts +1 -1
  65. package/dist/languages/dutch.mjs +1248 -163
  66. package/dist/languages/english.d.ts +1 -1
  67. package/dist/languages/english.mjs +2 -1
  68. package/dist/languages/esperanto.d.ts +5 -0
  69. package/dist/languages/esperanto.mjs +689 -0
  70. package/dist/languages/estonian.d.ts +5 -0
  71. package/dist/languages/estonian.mjs +2160 -0
  72. package/dist/languages/ewe.d.ts +1 -1
  73. package/dist/languages/ewe.mjs +11 -2
  74. package/dist/languages/faroese.d.ts +5 -0
  75. package/dist/languages/faroese.mjs +93 -0
  76. package/dist/languages/fijian.d.ts +5 -0
  77. package/dist/languages/fijian.mjs +55 -0
  78. package/dist/languages/finnish.d.ts +1 -1
  79. package/dist/languages/finnish.mjs +528 -263
  80. package/dist/languages/french.d.ts +1 -1
  81. package/dist/languages/french.mjs +950 -437
  82. package/dist/languages/ga.d.ts +1 -1
  83. package/dist/languages/ga.mjs +2 -1
  84. package/dist/languages/galician.d.ts +5 -0
  85. package/dist/languages/galician.mjs +172 -0
  86. package/dist/languages/georgian.d.ts +5 -0
  87. package/dist/languages/georgian.mjs +91 -0
  88. package/dist/languages/german.d.ts +1 -1
  89. package/dist/languages/german.mjs +432 -162
  90. package/dist/languages/greek.d.ts +1 -1
  91. package/dist/languages/greek.mjs +1970 -281
  92. package/dist/languages/guarani.d.ts +5 -0
  93. package/dist/languages/guarani.mjs +132 -0
  94. package/dist/languages/gujarati.d.ts +5 -0
  95. package/dist/languages/gujarati.mjs +234 -0
  96. package/dist/languages/haitian-creole.d.ts +5 -0
  97. package/dist/languages/haitian-creole.mjs +106 -0
  98. package/dist/languages/hausa.d.ts +1 -1
  99. package/dist/languages/hausa.mjs +2 -1
  100. package/dist/languages/hawaiian.d.ts +5 -0
  101. package/dist/languages/hawaiian.mjs +69 -0
  102. package/dist/languages/hebrew.d.ts +5 -0
  103. package/dist/languages/hebrew.mjs +213 -0
  104. package/dist/languages/hindi.d.ts +1 -1
  105. package/dist/languages/hindi.mjs +175 -97
  106. package/dist/languages/hungarian.d.ts +1 -1
  107. package/dist/languages/hungarian.mjs +412 -326
  108. package/dist/languages/icelandic.d.ts +5 -0
  109. package/dist/languages/icelandic.mjs +161 -0
  110. package/dist/languages/igbo.d.ts +1 -1
  111. package/dist/languages/igbo.mjs +2 -1
  112. package/dist/languages/indonesian.d.ts +1 -1
  113. package/dist/languages/indonesian.mjs +329 -137
  114. package/dist/languages/irish.d.ts +1 -1
  115. package/dist/languages/irish.mjs +223 -139
  116. package/dist/languages/italian.d.ts +1 -1
  117. package/dist/languages/italian.mjs +703 -406
  118. package/dist/languages/japanese.d.ts +1 -1
  119. package/dist/languages/japanese.mjs +5 -108
  120. package/dist/languages/kannada.d.ts +5 -0
  121. package/dist/languages/kannada.mjs +94 -0
  122. package/dist/languages/kazakh.d.ts +5 -0
  123. package/dist/languages/kazakh.mjs +90 -0
  124. package/dist/languages/khmer.d.ts +5 -0
  125. package/dist/languages/khmer.mjs +181 -0
  126. package/dist/languages/kinyarwanda.d.ts +5 -0
  127. package/dist/languages/kinyarwanda.mjs +99 -0
  128. package/dist/languages/kirundi.d.ts +5 -0
  129. package/dist/languages/kirundi.mjs +92 -0
  130. package/dist/languages/korean.d.ts +5 -0
  131. package/dist/languages/korean.mjs +252 -0
  132. package/dist/languages/kurmanji.d.ts +5 -0
  133. package/dist/languages/kurmanji.mjs +50 -0
  134. package/dist/languages/kyrgyz.d.ts +5 -0
  135. package/dist/languages/kyrgyz.mjs +108 -0
  136. package/dist/languages/lao.d.ts +5 -0
  137. package/dist/languages/lao.mjs +63 -0
  138. package/dist/languages/latin.d.ts +5 -0
  139. package/dist/languages/latin.mjs +69 -0
  140. package/dist/languages/latvian.d.ts +5 -0
  141. package/dist/languages/latvian.mjs +173 -0
  142. package/dist/languages/lingala.d.ts +5 -0
  143. package/dist/languages/lingala.mjs +61 -0
  144. package/dist/languages/lithuanian.d.ts +5 -0
  145. package/dist/languages/lithuanian.mjs +571 -0
  146. package/dist/languages/luxembourgish.d.ts +5 -0
  147. package/dist/languages/luxembourgish.mjs +214 -0
  148. package/dist/languages/macedonian.d.ts +5 -0
  149. package/dist/languages/macedonian.mjs +808 -0
  150. package/dist/languages/malagasy.d.ts +5 -0
  151. package/dist/languages/malagasy.mjs +67 -0
  152. package/dist/languages/malay.d.ts +5 -0
  153. package/dist/languages/malay.mjs +482 -0
  154. package/dist/languages/malayalam.d.ts +5 -0
  155. package/dist/languages/malayalam.mjs +122 -0
  156. package/dist/languages/maltese.d.ts +5 -0
  157. package/dist/languages/maltese.mjs +139 -0
  158. package/dist/languages/maori.d.ts +5 -0
  159. package/dist/languages/maori.mjs +79 -0
  160. package/dist/languages/marathi.d.ts +5 -0
  161. package/dist/languages/marathi.mjs +111 -0
  162. package/dist/languages/nepali.d.ts +1 -1
  163. package/dist/languages/nepali.mjs +209 -99
  164. package/dist/languages/norwegian.d.ts +1 -1
  165. package/dist/languages/norwegian.mjs +218 -85
  166. package/dist/languages/oromo.d.ts +5 -0
  167. package/dist/languages/oromo.mjs +78 -0
  168. package/dist/languages/persian.d.ts +5 -0
  169. package/dist/languages/persian.mjs +710 -0
  170. package/dist/languages/polish.d.ts +5 -0
  171. package/dist/languages/polish.mjs +614 -0
  172. package/dist/languages/portuguese.d.ts +1 -1
  173. package/dist/languages/portuguese.mjs +613 -380
  174. package/dist/languages/punjabi.d.ts +5 -0
  175. package/dist/languages/punjabi.mjs +197 -0
  176. package/dist/languages/romanian.d.ts +1 -1
  177. package/dist/languages/romanian.mjs +561 -382
  178. package/dist/languages/russian.d.ts +1 -1
  179. package/dist/languages/russian.mjs +373 -244
  180. package/dist/languages/samoan.d.ts +5 -0
  181. package/dist/languages/samoan.mjs +63 -0
  182. package/dist/languages/sanskrit.d.ts +1 -1
  183. package/dist/languages/sanskrit.mjs +2 -2
  184. package/dist/languages/scottish-gaelic.d.ts +5 -0
  185. package/dist/languages/scottish-gaelic.mjs +370 -0
  186. package/dist/languages/serbian.d.ts +1 -1
  187. package/dist/languages/serbian.mjs +3635 -155
  188. package/dist/languages/shona.d.ts +5 -0
  189. package/dist/languages/shona.mjs +91 -0
  190. package/dist/languages/sinhala.d.ts +5 -0
  191. package/dist/languages/sinhala.mjs +182 -0
  192. package/dist/languages/slovak.d.ts +5 -0
  193. package/dist/languages/slovak.mjs +430 -0
  194. package/dist/languages/slovenian.d.ts +1 -1
  195. package/dist/languages/slovenian.mjs +11 -2
  196. package/dist/languages/sorani.d.ts +5 -0
  197. package/dist/languages/sorani.mjs +156 -0
  198. package/dist/languages/spanish.d.ts +1 -1
  199. package/dist/languages/spanish.mjs +676 -374
  200. package/dist/languages/swahili.d.ts +1 -1
  201. package/dist/languages/swahili.mjs +2 -1
  202. package/dist/languages/swedish.d.ts +1 -1
  203. package/dist/languages/swedish.mjs +237 -95
  204. package/dist/languages/tagalog.d.ts +5 -0
  205. package/dist/languages/tagalog.mjs +159 -0
  206. package/dist/languages/tamil.d.ts +1 -1
  207. package/dist/languages/tamil.mjs +836 -64
  208. package/dist/languages/tatar.d.ts +5 -0
  209. package/dist/languages/tatar.mjs +1017 -0
  210. package/dist/languages/telugu.d.ts +5 -0
  211. package/dist/languages/telugu.mjs +62 -0
  212. package/dist/languages/thai.d.ts +5 -0
  213. package/dist/languages/thai.mjs +65 -0
  214. package/dist/languages/tibetan.d.ts +5 -0
  215. package/dist/languages/tibetan.mjs +119 -0
  216. package/dist/languages/tigrinya.d.ts +5 -0
  217. package/dist/languages/tigrinya.mjs +194 -0
  218. package/dist/languages/tongan.d.ts +5 -0
  219. package/dist/languages/tongan.mjs +56 -0
  220. package/dist/languages/turkish.d.ts +1 -1
  221. package/dist/languages/turkish.mjs +1246 -393
  222. package/dist/languages/twi.d.ts +1 -1
  223. package/dist/languages/twi.mjs +13 -2
  224. package/dist/languages/ukrainian.d.ts +1 -1
  225. package/dist/languages/ukrainian.mjs +125 -47
  226. package/dist/languages/urdu.d.ts +5 -0
  227. package/dist/languages/urdu.mjs +528 -0
  228. package/dist/languages/vietnamese.d.ts +5 -0
  229. package/dist/languages/vietnamese.mjs +277 -0
  230. package/dist/languages/welsh.d.ts +5 -0
  231. package/dist/languages/welsh.mjs +446 -0
  232. package/dist/languages/wolof.d.ts +5 -0
  233. package/dist/languages/wolof.mjs +79 -0
  234. package/dist/languages/xhosa.d.ts +5 -0
  235. package/dist/languages/xhosa.mjs +95 -0
  236. package/dist/languages/yoruba.d.ts +1 -1
  237. package/dist/languages/yoruba.mjs +1 -0
  238. package/dist/languages/zulu.d.ts +1 -1
  239. package/dist/languages/zulu.mjs +2 -1
  240. package/dist/narsil-CMZRPDlQ.d.ts +159 -0
  241. package/dist/persistence/durability/checkpoint-worker.d.ts +13 -0
  242. package/dist/persistence/durability/checkpoint-worker.mjs +6 -5
  243. package/dist/{schema-DCgkO1j4.d.ts → schema-BnvLvjRp.d.ts} +5 -3
  244. package/dist/server.d.ts +4 -3
  245. package/dist/server.mjs +13 -2
  246. package/dist/{types-DHX6zGeD.d.ts → types-BRTcBgAp.d.ts} +1 -1
  247. package/dist/workers/entry.mjs +2 -2
  248. package/package.json +10 -3
  249. package/dist/chunk-TW6BXTOL.mjs +0 -338
  250. package/dist/direct-executor-E52FFGDE.mjs +0 -4
  251. package/dist/narsil-D-84Nvm4.d.ts +0 -72
@@ -1,188 +1,1272 @@
1
- // src/languages/dutch.ts
2
- var VOWELS = "aeiouy\xE8";
3
- function isVowel(ch) {
4
- return VOWELS.includes(ch);
5
- }
6
- function isVowelOrJ(ch) {
7
- return VOWELS.includes(ch) || ch === "j";
8
- }
9
- function findRegions(word) {
10
- let r1 = word.length;
11
- let r2 = word.length;
12
- let i = 1;
13
- while (i < word.length) {
14
- if (!isVowel(word[i]) && isVowel(word[i - 1])) {
15
- r1 = i + 1;
16
- break;
1
+ import { BaseStemmer } from '../chunk-U2BKYEC7.mjs';
2
+
3
+ // src/languages/snowball/dutch.ts
4
+ var a_0 = [
5
+ ["a", 1],
6
+ ["e", 2],
7
+ ["o", 1],
8
+ ["u", 1],
9
+ ["\xE0", 1],
10
+ ["\xE1", 1],
11
+ ["\xE2", 1],
12
+ ["\xE4", 1],
13
+ ["\xE8", 2],
14
+ ["\xE9", 2],
15
+ ["\xEA", 2],
16
+ ["e\xEB", 3],
17
+ ["i\xEB", 4],
18
+ ["\xF2", 1],
19
+ ["\xF3", 1],
20
+ ["\xF4", 1],
21
+ ["\xF6", 1],
22
+ ["\xF9", 1],
23
+ ["\xFA", 1],
24
+ ["\xFB", 1],
25
+ ["\xFC", 1]
26
+ ];
27
+ var a_1 = [
28
+ ["nde", 8],
29
+ ["en", 7],
30
+ ["s", 2],
31
+ ["'s", 1, 1],
32
+ ["es", 4, 2],
33
+ ["ies", 3, 1],
34
+ ["aus", 6, 4],
35
+ ["\xE9s", 5, 5]
36
+ ];
37
+ var a_2 = [
38
+ ["de", 5],
39
+ ["ge", 2],
40
+ ["ische", 4],
41
+ ["je", 1],
42
+ ["lijke", 3],
43
+ ["le", 9],
44
+ ["ene", 10],
45
+ ["re", 8],
46
+ ["se", 7],
47
+ ["te", 6],
48
+ ["ieve", 11]
49
+ ];
50
+ var a_3 = [
51
+ ["heid", 3],
52
+ ["fie", 7],
53
+ ["gie", 8],
54
+ ["atie", 1],
55
+ ["isme", 5],
56
+ ["ing", 5],
57
+ ["arij", 6],
58
+ ["erij", 5],
59
+ ["sel", 3],
60
+ ["rder", 4],
61
+ ["ster", 3],
62
+ ["iteit", 2],
63
+ ["dst", 10],
64
+ ["tst", 9]
65
+ ];
66
+ var a_4 = [
67
+ ["end", 9],
68
+ ["atief", 2],
69
+ ["erig", 9],
70
+ ["achtig", 3],
71
+ ["ioneel", 1],
72
+ ["baar", 3],
73
+ ["laar", 5],
74
+ ["naar", 4],
75
+ ["raar", 6],
76
+ ["eriger", 9],
77
+ ["achtiger", 3],
78
+ ["lijker", 8],
79
+ ["tant", 7],
80
+ ["erigst", 9],
81
+ ["achtigst", 3],
82
+ ["lijkst", 8]
83
+ ];
84
+ var a_5 = [
85
+ ["ig", 1],
86
+ ["iger", 1],
87
+ ["igst", 1]
88
+ ];
89
+ var a_6 = [
90
+ ["ft", 2],
91
+ ["kt", 1],
92
+ ["pt", 3]
93
+ ];
94
+ var as_6 = ["k", "f", "p"];
95
+ var a_7 = [
96
+ ["bb", 1],
97
+ ["cc", 2],
98
+ ["dd", 3],
99
+ ["ff", 4],
100
+ ["gg", 5],
101
+ ["hh", 6],
102
+ ["jj", 7],
103
+ ["kk", 8],
104
+ ["ll", 9],
105
+ ["mm", 10],
106
+ ["nn", 11],
107
+ ["pp", 12],
108
+ ["qq", 13],
109
+ ["rr", 14],
110
+ ["ss", 15],
111
+ ["tt", 16],
112
+ ["v", 4],
113
+ ["vv", 17, 1],
114
+ ["ww", 18],
115
+ ["xx", 19],
116
+ ["z", 15],
117
+ ["zz", 20, 1]
118
+ ];
119
+ var a_8 = [
120
+ ["d", 1],
121
+ ["t", 2]
122
+ ];
123
+ var a_9 = [
124
+ ["", -1],
125
+ ["eft", 1, 1],
126
+ ["vaa", 1, 2],
127
+ ["val", 1, 3],
128
+ ["vali", -1, 1],
129
+ ["vare", 1, 5]
130
+ ];
131
+ var a_10 = [
132
+ ["\xEB", 1],
133
+ ["\xEF", 2]
134
+ ];
135
+ var as_10 = ["e", "i"];
136
+ var a_11 = [
137
+ ["\xEB", 1],
138
+ ["\xEF", 2]
139
+ ];
140
+ var as_11 = ["e", "i"];
141
+ var g_E = [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 120];
142
+ var g_AIOU = [1, 65, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 11, 120, 46, 15];
143
+ var g_AEIOU = [17, 65, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 139, 127, 46, 15];
144
+ var g_v = [17, 65, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 139, 127, 46, 15];
145
+ var g_v_WX = [17, 65, 208, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 139, 127, 46, 15];
146
+ var DutchStemmer = class extends BaseStemmer {
147
+ #I_p2 = 0;
148
+ #I_p1 = 0;
149
+ #r_V() {
150
+ const v_1 = this.limit - this.c;
151
+ lab0: {
152
+ lab1: {
153
+ if (!this.in_grouping_b(g_v, 97, 252)) break lab1;
154
+ break lab0;
155
+ }
156
+ if (!this.eq_s_b("ij")) return false;
17
157
  }
18
- i++;
158
+ this.c = this.limit - v_1;
159
+ return true;
19
160
  }
20
- if (r1 < 3) r1 = 3;
21
- i = r1;
22
- while (i < word.length) {
23
- if (!isVowel(word[i]) && i > 0 && isVowel(word[i - 1])) {
24
- r2 = i + 1;
25
- break;
161
+ #r_C() {
162
+ const v_1 = this.limit - this.c;
163
+ lab0: {
164
+ if (!this.eq_s_b("ij")) break lab0;
165
+ return false;
26
166
  }
27
- i++;
28
- }
29
- return { r1, r2 };
30
- }
31
- function markConsonantIY(word) {
32
- const chars = word.split("");
33
- if (chars.length > 0 && chars[0] === "y") {
34
- chars[0] = "Y";
167
+ if (!this.out_grouping_b(g_v, 97, 252)) return false;
168
+ this.c = this.limit - v_1;
169
+ return true;
35
170
  }
36
- for (let i = 1; i < chars.length; i++) {
37
- if (chars[i] === "y" && isVowel(chars[i - 1])) {
38
- chars[i] = "Y";
39
- }
40
- if (chars[i] === "i" && isVowel(chars[i - 1]) && i + 1 < chars.length && isVowel(chars[i + 1])) {
41
- chars[i] = "I";
171
+ #r_lengthen_V() {
172
+ let a;
173
+ let S_ch;
174
+ const v_1 = this.limit - this.c;
175
+ lab0: {
176
+ if (!this.out_grouping_b(g_v_WX, 97, 252)) break lab0;
177
+ this.ket = this.c;
178
+ a = this.find_among_b(a_0);
179
+ if (a === 0) break lab0;
180
+ this.bra = this.c;
181
+ switch (a) {
182
+ case 1: {
183
+ const v_2 = this.limit - this.c;
184
+ lab1: {
185
+ lab2: {
186
+ if (!this.out_grouping_b(g_AEIOU, 97, 252)) break lab2;
187
+ break lab1;
188
+ }
189
+ if (
190
+ /**@type {boolean}*/
191
+ this.c > this.limit_backward
192
+ ) break lab0;
193
+ }
194
+ this.c = this.limit - v_2;
195
+ S_ch = this.slice_to();
196
+ {
197
+ const c = this.c;
198
+ this.insert(c, c, S_ch);
199
+ this.c = c;
200
+ }
201
+ break;
202
+ }
203
+ case 2: {
204
+ const v_3 = this.limit - this.c;
205
+ lab3: {
206
+ lab4: {
207
+ if (!this.out_grouping_b(g_AEIOU, 97, 252)) break lab4;
208
+ break lab3;
209
+ }
210
+ if (
211
+ /**@type {boolean}*/
212
+ this.c > this.limit_backward
213
+ ) break lab0;
214
+ }
215
+ {
216
+ const v_4 = this.limit - this.c;
217
+ lab5: {
218
+ lab6: {
219
+ lab7: {
220
+ if (!this.in_grouping_b(g_AIOU, 97, 252)) break lab7;
221
+ break lab6;
222
+ }
223
+ if (!this.in_grouping_b(g_E, 101, 235)) break lab5;
224
+ if (
225
+ /**@type {boolean}*/
226
+ this.c > this.limit_backward
227
+ ) break lab5;
228
+ }
229
+ break lab0;
230
+ }
231
+ this.c = this.limit - v_4;
232
+ }
233
+ {
234
+ const v_5 = this.limit - this.c;
235
+ lab8: {
236
+ if (this.c <= this.limit_backward) break lab8;
237
+ this.c--;
238
+ if (!this.in_grouping_b(g_AIOU, 97, 252)) break lab8;
239
+ if (!this.out_grouping_b(g_AEIOU, 97, 252)) break lab8;
240
+ break lab0;
241
+ }
242
+ this.c = this.limit - v_5;
243
+ }
244
+ this.c = this.limit - v_3;
245
+ S_ch = this.slice_to();
246
+ {
247
+ const c = this.c;
248
+ this.insert(c, c, S_ch);
249
+ this.c = c;
250
+ }
251
+ break;
252
+ }
253
+ case 3: {
254
+ this.slice_from("e\xEBe");
255
+ break;
256
+ }
257
+ case 4: {
258
+ this.slice_from("iee");
259
+ break;
260
+ }
261
+ }
42
262
  }
263
+ this.c = this.limit - v_1;
264
+ return true;
43
265
  }
44
- return chars.join("");
45
- }
46
- function undouble(word) {
47
- if (word.endsWith("kk") || word.endsWith("dd") || word.endsWith("tt")) {
48
- return word.slice(0, -1);
49
- }
50
- return word;
51
- }
52
- function removeEnSuffix(word, r1) {
53
- if (!word.endsWith("en")) return word;
54
- if (word.length - 2 < r1) return word;
55
- const beforeSuffix = word.length - 2;
56
- if (beforeSuffix <= 0 || isVowel(word[beforeSuffix - 1])) return word;
57
- const base = word.slice(0, -2);
58
- if (base.endsWith("gem")) return word;
59
- return undouble(base);
60
- }
61
- function step1(word, r1) {
62
- if (word.endsWith("heden") && word.length - 5 >= r1) {
63
- return `${word.slice(0, -5)}heid`;
64
- }
65
- if (word.endsWith("ene") && word.length - 3 >= r1) {
66
- const beforeSuffix = word.length - 3;
67
- if (beforeSuffix > 0 && !isVowel(word[beforeSuffix - 1])) {
68
- const base = word.slice(0, -3);
69
- if (!base.endsWith("gem")) {
70
- return undouble(base);
266
+ #r_Step_1c() {
267
+ let a;
268
+ this.ket = this.c;
269
+ a = this.find_among_b(a_8);
270
+ if (a === 0) return false;
271
+ this.bra = this.c;
272
+ if (
273
+ /**@type {boolean}*/
274
+ this.#I_p1 > this.c
275
+ ) return false;
276
+ if (!this.#r_C()) return false;
277
+ switch (a) {
278
+ case 1: {
279
+ {
280
+ const v_1 = this.limit - this.c;
281
+ lab0: {
282
+ if (!this.eq_s_b("n")) break lab0;
283
+ if (
284
+ /**@type {boolean}*/
285
+ this.#I_p1 > this.c
286
+ ) break lab0;
287
+ return false;
288
+ }
289
+ this.c = this.limit - v_1;
290
+ }
291
+ lab1: {
292
+ const v_2 = this.limit - this.c;
293
+ lab2: {
294
+ if (!this.eq_s_b("in")) break lab2;
295
+ if (
296
+ /**@type {boolean}*/
297
+ this.c > this.limit_backward
298
+ ) break lab2;
299
+ this.slice_from("n");
300
+ break lab1;
301
+ }
302
+ this.c = this.limit - v_2;
303
+ this.slice_del();
304
+ }
305
+ break;
306
+ }
307
+ case 2: {
308
+ {
309
+ const v_3 = this.limit - this.c;
310
+ lab3: {
311
+ if (!this.eq_s_b("h")) break lab3;
312
+ if (
313
+ /**@type {boolean}*/
314
+ this.#I_p1 > this.c
315
+ ) break lab3;
316
+ return false;
317
+ }
318
+ this.c = this.limit - v_3;
319
+ }
320
+ {
321
+ const v_4 = this.limit - this.c;
322
+ lab4: {
323
+ if (!this.eq_s_b("en")) break lab4;
324
+ if (
325
+ /**@type {boolean}*/
326
+ this.c > this.limit_backward
327
+ ) break lab4;
328
+ return false;
329
+ }
330
+ this.c = this.limit - v_4;
331
+ }
332
+ this.slice_del();
333
+ break;
71
334
  }
72
335
  }
336
+ return true;
73
337
  }
74
- if (word.endsWith("en") && !word.endsWith("ene") && word.length - 2 >= r1) {
75
- const beforeSuffix = word.length - 2;
76
- if (beforeSuffix > 0 && !isVowel(word[beforeSuffix - 1])) {
77
- const base = word.slice(0, -2);
78
- if (!base.endsWith("gem")) {
79
- return undouble(base);
338
+ #r_measure() {
339
+ this.#I_p1 = this.limit;
340
+ this.#I_p2 = this.limit;
341
+ const v_1 = this.c;
342
+ lab0: {
343
+ while (true) {
344
+ lab1: {
345
+ if (!this.out_grouping(g_v, 97, 252)) break lab1;
346
+ continue;
347
+ }
348
+ break;
349
+ }
350
+ {
351
+ let v_2 = 1;
352
+ while (true) {
353
+ const v_3 = this.c;
354
+ lab2: {
355
+ lab3: {
356
+ lab4: {
357
+ if (!this.eq_s("ij")) break lab4;
358
+ break lab3;
359
+ }
360
+ if (!this.in_grouping(g_v, 97, 252)) break lab2;
361
+ }
362
+ v_2--;
363
+ continue;
364
+ }
365
+ this.c = v_3;
366
+ break;
367
+ }
368
+ if (v_2 > 0) break lab0;
369
+ }
370
+ if (!this.out_grouping(g_v, 97, 252)) break lab0;
371
+ this.#I_p1 = this.c;
372
+ while (true) {
373
+ lab5: {
374
+ if (!this.out_grouping(g_v, 97, 252)) break lab5;
375
+ continue;
376
+ }
377
+ break;
80
378
  }
379
+ {
380
+ let v_4 = 1;
381
+ while (true) {
382
+ const v_5 = this.c;
383
+ lab6: {
384
+ lab7: {
385
+ lab8: {
386
+ if (!this.eq_s("ij")) break lab8;
387
+ break lab7;
388
+ }
389
+ if (!this.in_grouping(g_v, 97, 252)) break lab6;
390
+ }
391
+ v_4--;
392
+ continue;
393
+ }
394
+ this.c = v_5;
395
+ break;
396
+ }
397
+ if (v_4 > 0) break lab0;
398
+ }
399
+ if (!this.out_grouping(g_v, 97, 252)) break lab0;
400
+ this.#I_p2 = this.c;
81
401
  }
402
+ this.c = v_1;
403
+ return true;
82
404
  }
83
- if (word.endsWith("se") && word.length - 2 >= r1) {
84
- const beforeSuffix = word.length - 2;
85
- if (beforeSuffix > 0 && !isVowelOrJ(word[beforeSuffix - 1])) {
86
- return word.slice(0, -2);
405
+ #stem() {
406
+ let a;
407
+ let B_GE_removed;
408
+ let B_stemmed;
409
+ B_stemmed = false;
410
+ this.#r_measure();
411
+ this.limit_backward = this.c;
412
+ this.c = this.limit;
413
+ const v_1 = this.limit - this.c;
414
+ lab0: {
415
+ this.ket = this.c;
416
+ a = this.find_among_b(a_1);
417
+ if (a === 0) break lab0;
418
+ this.bra = this.c;
419
+ switch (a) {
420
+ case 1: {
421
+ this.slice_del();
422
+ break;
423
+ }
424
+ case 2: {
425
+ if (
426
+ /**@type {boolean}*/
427
+ this.#I_p1 > this.c
428
+ ) break lab0;
429
+ {
430
+ const v_2 = this.limit - this.c;
431
+ lab1: {
432
+ if (!this.eq_s_b("t")) break lab1;
433
+ if (
434
+ /**@type {boolean}*/
435
+ this.#I_p1 > this.c
436
+ ) break lab1;
437
+ break lab0;
438
+ }
439
+ this.c = this.limit - v_2;
440
+ }
441
+ if (!this.#r_C()) break lab0;
442
+ this.slice_del();
443
+ break;
444
+ }
445
+ case 3: {
446
+ if (
447
+ /**@type {boolean}*/
448
+ this.#I_p1 > this.c
449
+ ) break lab0;
450
+ this.slice_from("ie");
451
+ break;
452
+ }
453
+ case 4: {
454
+ lab2: {
455
+ const v_3 = this.limit - this.c;
456
+ lab3: {
457
+ const v_4 = this.limit - this.c;
458
+ if (!this.eq_s_b("ar")) break lab3;
459
+ if (
460
+ /**@type {boolean}*/
461
+ this.#I_p1 > this.c
462
+ ) break lab3;
463
+ if (!this.#r_C()) break lab3;
464
+ this.c = this.limit - v_4;
465
+ this.slice_del();
466
+ this.#r_lengthen_V();
467
+ break lab2;
468
+ }
469
+ this.c = this.limit - v_3;
470
+ lab4: {
471
+ const v_5 = this.limit - this.c;
472
+ if (!this.eq_s_b("er")) break lab4;
473
+ if (
474
+ /**@type {boolean}*/
475
+ this.#I_p1 > this.c
476
+ ) break lab4;
477
+ if (!this.#r_C()) break lab4;
478
+ this.c = this.limit - v_5;
479
+ this.slice_del();
480
+ break lab2;
481
+ }
482
+ this.c = this.limit - v_3;
483
+ if (
484
+ /**@type {boolean}*/
485
+ this.#I_p1 > this.c
486
+ ) break lab0;
487
+ if (!this.#r_C()) break lab0;
488
+ this.slice_from("e");
489
+ }
490
+ break;
491
+ }
492
+ case 5: {
493
+ if (
494
+ /**@type {boolean}*/
495
+ this.#I_p1 > this.c
496
+ ) break lab0;
497
+ this.slice_from("\xE9");
498
+ break;
499
+ }
500
+ case 6: {
501
+ if (
502
+ /**@type {boolean}*/
503
+ this.#I_p1 > this.c
504
+ ) break lab0;
505
+ if (!this.#r_V()) break lab0;
506
+ this.slice_from("au");
507
+ break;
508
+ }
509
+ case 7: {
510
+ lab5: {
511
+ const v_6 = this.limit - this.c;
512
+ lab6: {
513
+ if (!this.eq_s_b("hed")) break lab6;
514
+ if (
515
+ /**@type {boolean}*/
516
+ this.#I_p1 > this.c
517
+ ) break lab6;
518
+ this.bra = this.c;
519
+ this.slice_from("heid");
520
+ break lab5;
521
+ }
522
+ this.c = this.limit - v_6;
523
+ lab7: {
524
+ if (!this.eq_s_b("nd")) break lab7;
525
+ this.slice_del();
526
+ break lab5;
527
+ }
528
+ this.c = this.limit - v_6;
529
+ lab8: {
530
+ if (!this.eq_s_b("d")) break lab8;
531
+ if (
532
+ /**@type {boolean}*/
533
+ this.#I_p1 > this.c
534
+ ) break lab8;
535
+ if (!this.#r_C()) break lab8;
536
+ this.bra = this.c;
537
+ this.slice_del();
538
+ break lab5;
539
+ }
540
+ this.c = this.limit - v_6;
541
+ lab9: {
542
+ lab10: {
543
+ lab11: {
544
+ if (!this.eq_s_b("i")) break lab11;
545
+ break lab10;
546
+ }
547
+ if (!this.eq_s_b("j")) break lab9;
548
+ }
549
+ if (!this.#r_V()) break lab9;
550
+ this.slice_del();
551
+ break lab5;
552
+ }
553
+ this.c = this.limit - v_6;
554
+ if (
555
+ /**@type {boolean}*/
556
+ this.#I_p1 > this.c
557
+ ) break lab0;
558
+ if (!this.#r_C()) break lab0;
559
+ this.slice_del();
560
+ this.#r_lengthen_V();
561
+ }
562
+ break;
563
+ }
564
+ case 8: {
565
+ this.slice_from("nd");
566
+ break;
567
+ }
568
+ }
569
+ B_stemmed = true;
87
570
  }
88
- }
89
- if (word.endsWith("s") && !word.endsWith("se") && word.length - 1 >= r1) {
90
- const beforeSuffix = word.length - 1;
91
- if (beforeSuffix > 0 && !isVowelOrJ(word[beforeSuffix - 1])) {
92
- return word.slice(0, -1);
571
+ this.c = this.limit - v_1;
572
+ const v_7 = this.limit - this.c;
573
+ lab12: {
574
+ this.ket = this.c;
575
+ a = this.find_among_b(a_2);
576
+ if (a === 0) break lab12;
577
+ this.bra = this.c;
578
+ switch (a) {
579
+ case 1: {
580
+ lab13: {
581
+ const v_8 = this.limit - this.c;
582
+ lab14: {
583
+ if (!this.eq_s_b("'t")) break lab14;
584
+ this.bra = this.c;
585
+ this.slice_del();
586
+ break lab13;
587
+ }
588
+ this.c = this.limit - v_8;
589
+ lab15: {
590
+ if (!this.eq_s_b("et")) break lab15;
591
+ this.bra = this.c;
592
+ if (
593
+ /**@type {boolean}*/
594
+ this.#I_p1 > this.c
595
+ ) break lab15;
596
+ if (!this.#r_C()) break lab15;
597
+ this.slice_del();
598
+ break lab13;
599
+ }
600
+ this.c = this.limit - v_8;
601
+ lab16: {
602
+ if (!this.eq_s_b("rnt")) break lab16;
603
+ this.bra = this.c;
604
+ this.slice_from("rn");
605
+ break lab13;
606
+ }
607
+ this.c = this.limit - v_8;
608
+ lab17: {
609
+ if (!this.eq_s_b("t")) break lab17;
610
+ this.bra = this.c;
611
+ if (
612
+ /**@type {boolean}*/
613
+ this.#I_p1 > this.c
614
+ ) break lab17;
615
+ const v_9 = this.limit - this.c;
616
+ if (this.c <= this.limit_backward) break lab17;
617
+ this.c--;
618
+ lab18: {
619
+ lab19: {
620
+ if (!this.in_grouping_b(g_v, 97, 252)) break lab19;
621
+ break lab18;
622
+ }
623
+ if (!this.eq_s_b("ij")) break lab17;
624
+ }
625
+ this.c = this.limit - v_9;
626
+ this.slice_del();
627
+ break lab13;
628
+ }
629
+ this.c = this.limit - v_8;
630
+ lab20: {
631
+ if (!this.eq_s_b("ink")) break lab20;
632
+ this.bra = this.c;
633
+ this.slice_from("ing");
634
+ break lab13;
635
+ }
636
+ this.c = this.limit - v_8;
637
+ lab21: {
638
+ if (!this.eq_s_b("mp")) break lab21;
639
+ this.bra = this.c;
640
+ this.slice_from("m");
641
+ break lab13;
642
+ }
643
+ this.c = this.limit - v_8;
644
+ lab22: {
645
+ if (!this.eq_s_b("'")) break lab22;
646
+ this.bra = this.c;
647
+ if (
648
+ /**@type {boolean}*/
649
+ this.#I_p1 > this.c
650
+ ) break lab22;
651
+ this.slice_del();
652
+ break lab13;
653
+ }
654
+ this.c = this.limit - v_8;
655
+ this.bra = this.c;
656
+ if (
657
+ /**@type {boolean}*/
658
+ this.#I_p1 > this.c
659
+ ) break lab12;
660
+ if (!this.#r_C()) break lab12;
661
+ this.slice_del();
662
+ }
663
+ break;
664
+ }
665
+ case 2: {
666
+ if (
667
+ /**@type {boolean}*/
668
+ this.#I_p1 > this.c
669
+ ) break lab12;
670
+ this.slice_from("g");
671
+ break;
672
+ }
673
+ case 3: {
674
+ if (
675
+ /**@type {boolean}*/
676
+ this.#I_p1 > this.c
677
+ ) break lab12;
678
+ this.slice_from("lijk");
679
+ break;
680
+ }
681
+ case 4: {
682
+ if (
683
+ /**@type {boolean}*/
684
+ this.#I_p1 > this.c
685
+ ) break lab12;
686
+ this.slice_from("isch");
687
+ break;
688
+ }
689
+ case 5: {
690
+ if (
691
+ /**@type {boolean}*/
692
+ this.#I_p1 > this.c
693
+ ) break lab12;
694
+ if (!this.#r_C()) break lab12;
695
+ this.slice_del();
696
+ break;
697
+ }
698
+ case 6: {
699
+ if (
700
+ /**@type {boolean}*/
701
+ this.#I_p1 > this.c
702
+ ) break lab12;
703
+ this.slice_from("t");
704
+ break;
705
+ }
706
+ case 7: {
707
+ if (
708
+ /**@type {boolean}*/
709
+ this.#I_p1 > this.c
710
+ ) break lab12;
711
+ this.slice_from("s");
712
+ break;
713
+ }
714
+ case 8: {
715
+ if (
716
+ /**@type {boolean}*/
717
+ this.#I_p1 > this.c
718
+ ) break lab12;
719
+ this.slice_from("r");
720
+ break;
721
+ }
722
+ case 9: {
723
+ if (
724
+ /**@type {boolean}*/
725
+ this.#I_p1 > this.c
726
+ ) break lab12;
727
+ this.slice_del();
728
+ this.insert(this.c, this.c, "l");
729
+ this.#r_lengthen_V();
730
+ break;
731
+ }
732
+ case 10: {
733
+ if (
734
+ /**@type {boolean}*/
735
+ this.#I_p1 > this.c
736
+ ) break lab12;
737
+ if (!this.#r_C()) break lab12;
738
+ this.slice_del();
739
+ this.insert(this.c, this.c, "en");
740
+ this.#r_lengthen_V();
741
+ break;
742
+ }
743
+ case 11: {
744
+ if (
745
+ /**@type {boolean}*/
746
+ this.#I_p1 > this.c
747
+ ) break lab12;
748
+ if (!this.#r_C()) break lab12;
749
+ this.slice_from("ief");
750
+ break;
751
+ }
752
+ }
753
+ B_stemmed = true;
93
754
  }
94
- }
95
- return word;
96
- }
97
- function step2(word, r1) {
98
- if (word.endsWith("e") && word.length - 1 >= r1) {
99
- const beforeSuffix = word.length - 1;
100
- if (beforeSuffix > 0 && !isVowel(word[beforeSuffix - 1])) {
101
- return { word: undouble(word.slice(0, -1)), removedE: true };
755
+ this.c = this.limit - v_7;
756
+ const v_10 = this.limit - this.c;
757
+ lab23: {
758
+ this.ket = this.c;
759
+ a = this.find_among_b(a_3);
760
+ if (a === 0) break lab23;
761
+ this.bra = this.c;
762
+ switch (a) {
763
+ case 1: {
764
+ if (
765
+ /**@type {boolean}*/
766
+ this.#I_p1 > this.c
767
+ ) break lab23;
768
+ this.slice_from("eer");
769
+ break;
770
+ }
771
+ case 2: {
772
+ if (
773
+ /**@type {boolean}*/
774
+ this.#I_p1 > this.c
775
+ ) break lab23;
776
+ this.slice_del();
777
+ this.#r_lengthen_V();
778
+ break;
779
+ }
780
+ case 3: {
781
+ if (
782
+ /**@type {boolean}*/
783
+ this.#I_p1 > this.c
784
+ ) break lab23;
785
+ this.slice_del();
786
+ break;
787
+ }
788
+ case 4: {
789
+ this.slice_from("r");
790
+ break;
791
+ }
792
+ case 5: {
793
+ lab24: {
794
+ const v_11 = this.limit - this.c;
795
+ lab25: {
796
+ if (!this.eq_s_b("ild")) break lab25;
797
+ this.slice_from("er");
798
+ break lab24;
799
+ }
800
+ this.c = this.limit - v_11;
801
+ if (
802
+ /**@type {boolean}*/
803
+ this.#I_p1 > this.c
804
+ ) break lab23;
805
+ this.slice_del();
806
+ this.#r_lengthen_V();
807
+ }
808
+ break;
809
+ }
810
+ case 6: {
811
+ if (
812
+ /**@type {boolean}*/
813
+ this.#I_p1 > this.c
814
+ ) break lab23;
815
+ if (!this.#r_C()) break lab23;
816
+ this.slice_from("aar");
817
+ break;
818
+ }
819
+ case 7: {
820
+ if (
821
+ /**@type {boolean}*/
822
+ this.#I_p2 > this.c
823
+ ) break lab23;
824
+ this.slice_del();
825
+ this.insert(this.c, this.c, "f");
826
+ this.#r_lengthen_V();
827
+ break;
828
+ }
829
+ case 8: {
830
+ if (
831
+ /**@type {boolean}*/
832
+ this.#I_p2 > this.c
833
+ ) break lab23;
834
+ this.slice_del();
835
+ this.insert(this.c, this.c, "g");
836
+ this.#r_lengthen_V();
837
+ break;
838
+ }
839
+ case 9: {
840
+ if (
841
+ /**@type {boolean}*/
842
+ this.#I_p1 > this.c
843
+ ) break lab23;
844
+ if (!this.#r_C()) break lab23;
845
+ this.slice_from("t");
846
+ break;
847
+ }
848
+ case 10: {
849
+ if (
850
+ /**@type {boolean}*/
851
+ this.#I_p1 > this.c
852
+ ) break lab23;
853
+ if (!this.#r_C()) break lab23;
854
+ this.slice_from("d");
855
+ break;
856
+ }
857
+ }
858
+ B_stemmed = true;
102
859
  }
103
- }
104
- return { word, removedE: false };
105
- }
106
- function step3a(word, r2) {
107
- if (word.endsWith("heid") && word.length - 4 >= r2) {
108
- if (!word.slice(0, -4).endsWith("c")) {
109
- return word.slice(0, -4);
860
+ this.c = this.limit - v_10;
861
+ const v_12 = this.limit - this.c;
862
+ lab26: {
863
+ lab27: {
864
+ const v_13 = this.limit - this.c;
865
+ lab28: {
866
+ this.ket = this.c;
867
+ a = this.find_among_b(a_4);
868
+ if (a === 0) break lab28;
869
+ this.bra = this.c;
870
+ switch (a) {
871
+ case 1: {
872
+ if (
873
+ /**@type {boolean}*/
874
+ this.#I_p1 > this.c
875
+ ) break lab28;
876
+ this.slice_from("ie");
877
+ break;
878
+ }
879
+ case 2: {
880
+ if (
881
+ /**@type {boolean}*/
882
+ this.#I_p1 > this.c
883
+ ) break lab28;
884
+ this.slice_from("eer");
885
+ break;
886
+ }
887
+ case 3: {
888
+ if (
889
+ /**@type {boolean}*/
890
+ this.#I_p1 > this.c
891
+ ) break lab28;
892
+ this.slice_del();
893
+ break;
894
+ }
895
+ case 4: {
896
+ if (
897
+ /**@type {boolean}*/
898
+ this.#I_p1 > this.c
899
+ ) break lab28;
900
+ if (!this.#r_V()) break lab28;
901
+ this.slice_from("n");
902
+ break;
903
+ }
904
+ case 5: {
905
+ if (
906
+ /**@type {boolean}*/
907
+ this.#I_p1 > this.c
908
+ ) break lab28;
909
+ if (!this.#r_V()) break lab28;
910
+ this.slice_from("l");
911
+ break;
912
+ }
913
+ case 6: {
914
+ if (
915
+ /**@type {boolean}*/
916
+ this.#I_p1 > this.c
917
+ ) break lab28;
918
+ if (!this.#r_V()) break lab28;
919
+ this.slice_from("r");
920
+ break;
921
+ }
922
+ case 7: {
923
+ if (
924
+ /**@type {boolean}*/
925
+ this.#I_p1 > this.c
926
+ ) break lab28;
927
+ this.slice_from("teer");
928
+ break;
929
+ }
930
+ case 8: {
931
+ if (
932
+ /**@type {boolean}*/
933
+ this.#I_p1 > this.c
934
+ ) break lab28;
935
+ this.slice_from("lijk");
936
+ break;
937
+ }
938
+ case 9: {
939
+ if (
940
+ /**@type {boolean}*/
941
+ this.#I_p1 > this.c
942
+ ) break lab28;
943
+ if (!this.#r_C()) break lab28;
944
+ this.slice_del();
945
+ this.#r_lengthen_V();
946
+ break;
947
+ }
948
+ }
949
+ break lab27;
950
+ }
951
+ this.c = this.limit - v_13;
952
+ this.ket = this.c;
953
+ if (this.find_among_b(a_5) === 0) break lab26;
954
+ this.bra = this.c;
955
+ if (
956
+ /**@type {boolean}*/
957
+ this.#I_p1 > this.c
958
+ ) break lab26;
959
+ {
960
+ const v_14 = this.limit - this.c;
961
+ lab29: {
962
+ if (!this.eq_s_b("inn")) break lab29;
963
+ if (
964
+ /**@type {boolean}*/
965
+ this.c > this.limit_backward
966
+ ) break lab29;
967
+ break lab26;
968
+ }
969
+ this.c = this.limit - v_14;
970
+ }
971
+ if (!this.#r_C()) break lab26;
972
+ this.slice_del();
973
+ this.#r_lengthen_V();
974
+ }
975
+ B_stemmed = true;
110
976
  }
111
- }
112
- return word;
113
- }
114
- function step3b(word, r1, r2, removedE) {
115
- if (word.endsWith("end") && word.length - 3 >= r2) {
116
- word = word.slice(0, -3);
117
- if (word.endsWith("ig") && word.length - 2 >= r2 && !word.endsWith("eig")) {
118
- return word.slice(0, -2);
977
+ this.c = this.limit - v_12;
978
+ this.c = this.limit_backward;
979
+ B_GE_removed = false;
980
+ const v_15 = this.c;
981
+ lab30: {
982
+ const v_16 = this.c;
983
+ this.bra = this.c;
984
+ if (!this.eq_s("ge")) break lab30;
985
+ this.ket = this.c;
986
+ const v_17 = this.c;
987
+ if (this.c + 3 > this.limit) break lab30;
988
+ this.c += 3;
989
+ this.c = v_17;
990
+ const v_18 = this.c;
991
+ while (true) {
992
+ const v_19 = this.c;
993
+ lab32: {
994
+ lab33: {
995
+ lab34: {
996
+ if (!this.eq_s("ij")) break lab34;
997
+ break lab33;
998
+ }
999
+ if (!this.in_grouping(g_v, 97, 252)) break lab32;
1000
+ }
1001
+ break;
1002
+ }
1003
+ this.c = v_19;
1004
+ if (this.c >= this.limit) break lab30;
1005
+ this.c++;
1006
+ }
1007
+ while (true) {
1008
+ const v_20 = this.c;
1009
+ lab35: {
1010
+ lab36: {
1011
+ lab37: {
1012
+ if (!this.eq_s("ij")) break lab37;
1013
+ break lab36;
1014
+ }
1015
+ if (!this.in_grouping(g_v, 97, 252)) break lab35;
1016
+ }
1017
+ continue;
1018
+ }
1019
+ this.c = v_20;
1020
+ break;
1021
+ }
1022
+ if (
1023
+ /**@type {boolean}*/
1024
+ this.c >= this.limit
1025
+ ) break lab30;
1026
+ this.c = v_18;
1027
+ a = this.find_among(a_9);
1028
+ switch (a) {
1029
+ case 1: {
1030
+ break lab30;
1031
+ }
1032
+ }
1033
+ B_GE_removed = true;
1034
+ this.slice_del();
1035
+ const v_21 = this.c;
1036
+ lab38: {
1037
+ this.bra = this.c;
1038
+ a = this.find_among(a_10);
1039
+ if (a === 0) break lab38;
1040
+ this.ket = this.c;
1041
+ this.slice_from(as_10[a - 1]);
1042
+ }
1043
+ this.c = v_21;
1044
+ this.c = v_16;
1045
+ this.#r_measure();
119
1046
  }
120
- return undouble(word);
121
- }
122
- if (word.endsWith("ing") && word.length - 3 >= r2) {
123
- word = word.slice(0, -3);
124
- if (word.endsWith("ig") && word.length - 2 >= r2 && !word.endsWith("eig")) {
125
- return word.slice(0, -2);
1047
+ this.c = v_15;
1048
+ this.limit_backward = this.c;
1049
+ this.c = this.limit;
1050
+ const v_22 = this.limit - this.c;
1051
+ lab39: {
1052
+ if (!B_GE_removed) break lab39;
1053
+ B_stemmed = true;
1054
+ if (!this.#r_Step_1c()) break lab39;
126
1055
  }
127
- return undouble(word);
128
- }
129
- if (word.endsWith("ig") && word.length - 2 >= r2) {
130
- if (!word.endsWith("eig")) {
131
- return word.slice(0, -2);
1056
+ this.c = this.limit - v_22;
1057
+ this.c = this.limit_backward;
1058
+ B_GE_removed = false;
1059
+ const v_23 = this.c;
1060
+ lab40: {
1061
+ const v_24 = this.c;
1062
+ if (this.c >= this.limit) break lab40;
1063
+ this.c++;
1064
+ while (true) {
1065
+ lab42: {
1066
+ this.bra = this.c;
1067
+ if (!this.eq_s("ge")) break lab42;
1068
+ this.ket = this.c;
1069
+ break;
1070
+ }
1071
+ if (this.c >= this.limit) break lab40;
1072
+ this.c++;
1073
+ }
1074
+ const v_25 = this.c;
1075
+ if (this.c + 3 > this.limit) break lab40;
1076
+ this.c += 3;
1077
+ this.c = v_25;
1078
+ const v_26 = this.c;
1079
+ while (true) {
1080
+ const v_27 = this.c;
1081
+ lab44: {
1082
+ lab45: {
1083
+ lab46: {
1084
+ if (!this.eq_s("ij")) break lab46;
1085
+ break lab45;
1086
+ }
1087
+ if (!this.in_grouping(g_v, 97, 252)) break lab44;
1088
+ }
1089
+ break;
1090
+ }
1091
+ this.c = v_27;
1092
+ if (this.c >= this.limit) break lab40;
1093
+ this.c++;
1094
+ }
1095
+ while (true) {
1096
+ const v_28 = this.c;
1097
+ lab47: {
1098
+ lab48: {
1099
+ lab49: {
1100
+ if (!this.eq_s("ij")) break lab49;
1101
+ break lab48;
1102
+ }
1103
+ if (!this.in_grouping(g_v, 97, 252)) break lab47;
1104
+ }
1105
+ continue;
1106
+ }
1107
+ this.c = v_28;
1108
+ break;
1109
+ }
1110
+ if (
1111
+ /**@type {boolean}*/
1112
+ this.c >= this.limit
1113
+ ) break lab40;
1114
+ this.c = v_26;
1115
+ B_GE_removed = true;
1116
+ this.slice_del();
1117
+ const v_29 = this.c;
1118
+ lab50: {
1119
+ this.bra = this.c;
1120
+ a = this.find_among(a_11);
1121
+ if (a === 0) break lab50;
1122
+ this.ket = this.c;
1123
+ this.slice_from(as_11[a - 1]);
1124
+ }
1125
+ this.c = v_29;
1126
+ this.c = v_24;
1127
+ this.#r_measure();
132
1128
  }
133
- return word;
134
- }
135
- if (word.endsWith("lijk") && word.length - 4 >= r2) {
136
- word = word.slice(0, -4);
137
- const result = step2(word, r1);
138
- return result.word;
139
- }
140
- if (word.endsWith("baar") && word.length - 4 >= r2) {
141
- return word.slice(0, -4);
142
- }
143
- if (word.endsWith("bar") && word.length - 3 >= r2) {
144
- if (removedE) {
145
- return word.slice(0, -3);
1129
+ this.c = v_23;
1130
+ this.limit_backward = this.c;
1131
+ this.c = this.limit;
1132
+ const v_30 = this.limit - this.c;
1133
+ lab51: {
1134
+ if (!B_GE_removed) break lab51;
1135
+ B_stemmed = true;
1136
+ if (!this.#r_Step_1c()) break lab51;
1137
+ }
1138
+ this.c = this.limit - v_30;
1139
+ this.c = this.limit_backward;
1140
+ this.limit_backward = this.c;
1141
+ this.c = this.limit;
1142
+ const v_31 = this.limit - this.c;
1143
+ lab52: {
1144
+ this.ket = this.c;
1145
+ a = this.find_among_b(a_6);
1146
+ if (a === 0) break lab52;
1147
+ this.bra = this.c;
1148
+ this.slice_from(as_6[a - 1]);
1149
+ B_stemmed = true;
1150
+ }
1151
+ this.c = this.limit - v_31;
1152
+ const v_32 = this.limit - this.c;
1153
+ lab53: {
1154
+ if (!B_stemmed) break lab53;
1155
+ this.ket = this.c;
1156
+ a = this.find_among_b(a_7);
1157
+ if (a === 0) break lab53;
1158
+ this.bra = this.c;
1159
+ switch (a) {
1160
+ case 1: {
1161
+ this.slice_from("b");
1162
+ break;
1163
+ }
1164
+ case 2: {
1165
+ this.slice_from("c");
1166
+ break;
1167
+ }
1168
+ case 3: {
1169
+ this.slice_from("d");
1170
+ break;
1171
+ }
1172
+ case 4: {
1173
+ this.slice_from("f");
1174
+ break;
1175
+ }
1176
+ case 5: {
1177
+ this.slice_from("g");
1178
+ break;
1179
+ }
1180
+ case 6: {
1181
+ this.slice_from("h");
1182
+ break;
1183
+ }
1184
+ case 7: {
1185
+ this.slice_from("j");
1186
+ break;
1187
+ }
1188
+ case 8: {
1189
+ this.slice_from("k");
1190
+ break;
1191
+ }
1192
+ case 9: {
1193
+ this.slice_from("l");
1194
+ break;
1195
+ }
1196
+ case 10: {
1197
+ this.slice_from("m");
1198
+ break;
1199
+ }
1200
+ case 11: {
1201
+ {
1202
+ const v_33 = this.limit - this.c;
1203
+ lab54: {
1204
+ if (!this.eq_s_b("i")) break lab54;
1205
+ if (
1206
+ /**@type {boolean}*/
1207
+ this.c > this.limit_backward
1208
+ ) break lab54;
1209
+ break lab53;
1210
+ }
1211
+ this.c = this.limit - v_33;
1212
+ }
1213
+ this.slice_from("n");
1214
+ break;
1215
+ }
1216
+ case 12: {
1217
+ this.slice_from("p");
1218
+ break;
1219
+ }
1220
+ case 13: {
1221
+ this.slice_from("q");
1222
+ break;
1223
+ }
1224
+ case 14: {
1225
+ this.slice_from("r");
1226
+ break;
1227
+ }
1228
+ case 15: {
1229
+ this.slice_from("s");
1230
+ break;
1231
+ }
1232
+ case 16: {
1233
+ this.slice_from("t");
1234
+ break;
1235
+ }
1236
+ case 17: {
1237
+ this.slice_from("v");
1238
+ break;
1239
+ }
1240
+ case 18: {
1241
+ this.slice_from("w");
1242
+ break;
1243
+ }
1244
+ case 19: {
1245
+ this.slice_from("x");
1246
+ break;
1247
+ }
1248
+ case 20: {
1249
+ this.slice_from("z");
1250
+ break;
1251
+ }
1252
+ }
146
1253
  }
147
- return word;
1254
+ this.c = this.limit - v_32;
1255
+ this.c = this.limit_backward;
1256
+ return true;
148
1257
  }
149
- return word;
150
- }
151
- var DOUBLE_VOWELS = ["aa", "ee", "oo", "uu"];
152
- function undoubleVowel(word) {
153
- if (word.length < 4) return word;
154
- const lastChar = word[word.length - 1];
155
- if (isVowel(lastChar) || lastChar === "I" || lastChar === "Y") return word;
156
- const penultimate = word.slice(word.length - 3, word.length - 1);
157
- if (!DOUBLE_VOWELS.includes(penultimate)) return word;
158
- const charBeforeDouble = word[word.length - 4];
159
- if (charBeforeDouble === void 0 || isVowel(charBeforeDouble)) return word;
160
- return word.slice(0, word.length - 2) + word[word.length - 1];
161
- }
162
- var RE_UPPERCASE_I = /I/g;
163
- var RE_UPPERCASE_Y = /Y/g;
164
- function restoreCase(word) {
165
- return word.replace(RE_UPPERCASE_I, "i").replace(RE_UPPERCASE_Y, "y");
166
- }
167
- function stem(word) {
168
- if (word.length < 3) return word;
169
- word = word.toLowerCase();
170
- word = markConsonantIY(word);
171
- const { r1, r2 } = findRegions(word);
172
- word = step1(word, r1);
173
- const step2Result = step2(word, r1);
174
- word = step2Result.word;
175
- const removedE = step2Result.removedE;
176
- const beforeStep3a = word;
177
- word = step3a(word, r2);
178
- if (word !== beforeStep3a) {
179
- word = removeEnSuffix(word, r1);
1258
+ stem(input) {
1259
+ this.setCurrent(input);
1260
+ this.#stem();
1261
+ return this.getCurrent();
180
1262
  }
181
- word = step3b(word, r1, r2, removedE);
182
- word = undoubleVowel(word);
183
- word = restoreCase(word);
184
- return word;
1263
+ };
1264
+ var shared = new DutchStemmer();
1265
+ function stem(token) {
1266
+ return shared.stem(token);
185
1267
  }
1268
+
1269
+ // src/languages/dutch.ts
186
1270
  var stopWords = /* @__PURE__ */ new Set([
187
1271
  "de",
188
1272
  "en",
@@ -288,9 +1372,10 @@ var stopWords = /* @__PURE__ */ new Set([
288
1372
  ]);
289
1373
  var dutch = {
290
1374
  name: "dutch",
1375
+ revision: "eb6473f45d748c66",
291
1376
  stemmer: stem,
292
1377
  stopWords,
293
- tokenizer: { splitPattern: /[^a-z0-9àèéìòóù'-]+/gi }
1378
+ tokenizer: { splitPattern: /[^a-z0-9àäèéëìïòóöùü'-]+/gi }
294
1379
  };
295
1380
 
296
1381
  export { dutch };