@delali/narsil 0.1.14 → 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 -972
  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 +12 -3
  245. package/dist/server.mjs +183 -64
  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,427 +1,723 @@
1
- // src/languages/italian.ts
2
- var VOWELS = "aeiou\xE0\xE8\xE9\xEC\xF2\xF3\xF9";
3
- var RE_QU = /qu/g;
4
- function isVowel(ch) {
5
- return VOWELS.includes(ch);
6
- }
7
- function findRegions(word) {
8
- const length = word.length;
9
- let rv = length;
10
- if (length > 3) {
11
- if (!isVowel(word[1])) {
12
- for (let i = 2; i < length; i++) {
13
- if (isVowel(word[i])) {
14
- rv = i + 1;
15
- break;
1
+ import { BaseStemmer } from '../chunk-U2BKYEC7.mjs';
2
+
3
+ // src/languages/snowball/italian.ts
4
+ var a_0 = [
5
+ ["all'", -1],
6
+ ["d'", -1],
7
+ ["dall'", -1],
8
+ ["dell'", -1],
9
+ ["gl'", -1],
10
+ ["l'", -1],
11
+ ["m'", -1],
12
+ ["nell'", -1],
13
+ ["quell'", -1],
14
+ ["quest'", -1],
15
+ ["s'", -1],
16
+ ["sull'", -1],
17
+ ["t'", -1],
18
+ ["tutt'", -1],
19
+ ["un'", -1],
20
+ ["v'", -1]
21
+ ];
22
+ var a_1 = [
23
+ ["", 7],
24
+ ["qu", 6, 1],
25
+ ["\xE1", 1, 2],
26
+ ["\xE9", 2, 3],
27
+ ["\xED", 3, 4],
28
+ ["\xF3", 4, 5],
29
+ ["\xFA", 5, 6]
30
+ ];
31
+ var a_2 = [
32
+ ["", 3],
33
+ ["I", 1, 1],
34
+ ["U", 2, 2]
35
+ ];
36
+ var a_3 = [
37
+ ["la", -1],
38
+ ["cela", -1, 1],
39
+ ["gliela", -1, 2],
40
+ ["mela", -1, 3],
41
+ ["tela", -1, 4],
42
+ ["vela", -1, 5],
43
+ ["le", -1],
44
+ ["cele", -1, 1],
45
+ ["gliele", -1, 2],
46
+ ["mele", -1, 3],
47
+ ["tele", -1, 4],
48
+ ["vele", -1, 5],
49
+ ["ne", -1],
50
+ ["cene", -1, 1],
51
+ ["gliene", -1, 2],
52
+ ["mene", -1, 3],
53
+ ["sene", -1, 4],
54
+ ["tene", -1, 5],
55
+ ["vene", -1, 6],
56
+ ["ci", -1],
57
+ ["li", -1],
58
+ ["celi", -1, 1],
59
+ ["glieli", -1, 2],
60
+ ["meli", -1, 3],
61
+ ["teli", -1, 4],
62
+ ["veli", -1, 5],
63
+ ["gli", -1, 6],
64
+ ["mi", -1],
65
+ ["si", -1],
66
+ ["ti", -1],
67
+ ["vi", -1],
68
+ ["lo", -1],
69
+ ["celo", -1, 1],
70
+ ["glielo", -1, 2],
71
+ ["melo", -1, 3],
72
+ ["telo", -1, 4],
73
+ ["velo", -1, 5]
74
+ ];
75
+ var a_4 = [
76
+ ["ando", 1],
77
+ ["endo", 1],
78
+ ["ar", 2],
79
+ ["er", 2],
80
+ ["ir", 2]
81
+ ];
82
+ var as_4 = ["", "e"];
83
+ var a_5 = [
84
+ ["ic", -1],
85
+ ["abil", -1],
86
+ ["os", -1],
87
+ ["iv", 1]
88
+ ];
89
+ var a_6 = [
90
+ ["ic", 1],
91
+ ["abil", 1],
92
+ ["iv", 1]
93
+ ];
94
+ var a_7 = [
95
+ ["ica", 1],
96
+ ["logia", 3],
97
+ ["osa", 1],
98
+ ["ista", 1],
99
+ ["iva", 9],
100
+ ["anza", 1],
101
+ ["enza", 5],
102
+ ["ice", 1],
103
+ ["atrice", 1, 1],
104
+ ["iche", 1],
105
+ ["logie", 3],
106
+ ["abile", 1],
107
+ ["ibile", 1],
108
+ ["usione", 4],
109
+ ["azione", 2],
110
+ ["uzione", 4],
111
+ ["atore", 2],
112
+ ["ose", 1],
113
+ ["ante", 1],
114
+ ["mente", 1],
115
+ ["amente", 7, 1],
116
+ ["iste", 1],
117
+ ["ive", 9],
118
+ ["anze", 1],
119
+ ["enze", 5],
120
+ ["ici", 1],
121
+ ["atrici", 1, 1],
122
+ ["ichi", 1],
123
+ ["abili", 1],
124
+ ["ibili", 1],
125
+ ["ismi", 1],
126
+ ["usioni", 4],
127
+ ["azioni", 2],
128
+ ["uzioni", 4],
129
+ ["atori", 2],
130
+ ["osi", 1],
131
+ ["anti", 1],
132
+ ["amenti", 6],
133
+ ["imenti", 6],
134
+ ["isti", 1],
135
+ ["ivi", 9],
136
+ ["ico", 1],
137
+ ["ismo", 1],
138
+ ["oso", 1],
139
+ ["amento", 6],
140
+ ["imento", 6],
141
+ ["ivo", 9],
142
+ ["it\xE0", 8],
143
+ ["ist\xE0", 1],
144
+ ["ist\xE8", 1],
145
+ ["ist\xEC", 1]
146
+ ];
147
+ var a_8 = [
148
+ ["isca", 1],
149
+ ["enda", 1],
150
+ ["ata", 1],
151
+ ["ita", 1],
152
+ ["uta", 1],
153
+ ["ava", 1],
154
+ ["eva", 1],
155
+ ["iva", 1],
156
+ ["erebbe", 1],
157
+ ["irebbe", 1],
158
+ ["isce", 1],
159
+ ["ende", 1],
160
+ ["are", 1],
161
+ ["ere", 1],
162
+ ["ire", 1],
163
+ ["asse", 1],
164
+ ["ate", 1],
165
+ ["avate", 1, 1],
166
+ ["evate", 1, 2],
167
+ ["ivate", 1, 3],
168
+ ["ete", 1],
169
+ ["erete", 1, 1],
170
+ ["irete", 1, 2],
171
+ ["ite", 1],
172
+ ["ereste", 1],
173
+ ["ireste", 1],
174
+ ["ute", 1],
175
+ ["erai", 1],
176
+ ["irai", 1],
177
+ ["isci", 1],
178
+ ["endi", 1],
179
+ ["erei", 1],
180
+ ["irei", 1],
181
+ ["assi", 1],
182
+ ["ati", 1],
183
+ ["iti", 1],
184
+ ["eresti", 1],
185
+ ["iresti", 1],
186
+ ["uti", 1],
187
+ ["avi", 1],
188
+ ["evi", 1],
189
+ ["ivi", 1],
190
+ ["isco", 1],
191
+ ["ando", 1],
192
+ ["endo", 1],
193
+ ["Yamo", 1],
194
+ ["iamo", 1],
195
+ ["avamo", 1],
196
+ ["evamo", 1],
197
+ ["ivamo", 1],
198
+ ["eremo", 1],
199
+ ["iremo", 1],
200
+ ["assimo", 1],
201
+ ["ammo", 1],
202
+ ["emmo", 1],
203
+ ["eremmo", 1, 1],
204
+ ["iremmo", 1, 2],
205
+ ["immo", 1],
206
+ ["ano", 1],
207
+ ["iscano", 1, 1],
208
+ ["avano", 1, 2],
209
+ ["evano", 1, 3],
210
+ ["ivano", 1, 4],
211
+ ["eranno", 1],
212
+ ["iranno", 1],
213
+ ["ono", 1],
214
+ ["iscono", 1, 1],
215
+ ["arono", 1, 2],
216
+ ["erono", 1, 3],
217
+ ["irono", 1, 4],
218
+ ["erebbero", 1],
219
+ ["irebbero", 1],
220
+ ["assero", 1],
221
+ ["essero", 1],
222
+ ["issero", 1],
223
+ ["ato", 1],
224
+ ["ito", 1],
225
+ ["uto", 1],
226
+ ["avo", 1],
227
+ ["evo", 1],
228
+ ["ivo", 1],
229
+ ["ar", 1],
230
+ ["ir", 1],
231
+ ["er\xE0", 1],
232
+ ["ir\xE0", 1],
233
+ ["er\xF2", 1],
234
+ ["ir\xF2", 1]
235
+ ];
236
+ var g_v = [17, 65, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 8, 2, 1];
237
+ var g_AEIO = [17, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 8, 2];
238
+ var g_CG = [17];
239
+ var ItalianStemmer = class extends BaseStemmer {
240
+ #stem() {
241
+ let a;
242
+ let I_p2;
243
+ let I_p1;
244
+ let I_pV;
245
+ const v_1 = this.c;
246
+ lab0: {
247
+ this.bra = this.c;
248
+ if (this.find_among(a_0) === 0) break lab0;
249
+ this.ket = this.c;
250
+ if (
251
+ /**@type {boolean}*/
252
+ this.c >= this.limit
253
+ ) break lab0;
254
+ this.slice_del();
255
+ }
256
+ this.c = v_1;
257
+ const v_2 = this.c;
258
+ {
259
+ const v_3 = this.c;
260
+ while (true) {
261
+ const v_4 = this.c;
262
+ lab2: {
263
+ this.bra = this.c;
264
+ a = this.find_among(a_1);
265
+ this.ket = this.c;
266
+ switch (a) {
267
+ case 1: {
268
+ this.slice_from("\xE0");
269
+ break;
270
+ }
271
+ case 2: {
272
+ this.slice_from("\xE8");
273
+ break;
274
+ }
275
+ case 3: {
276
+ this.slice_from("\xEC");
277
+ break;
278
+ }
279
+ case 4: {
280
+ this.slice_from("\xF2");
281
+ break;
282
+ }
283
+ case 5: {
284
+ this.slice_from("\xF9");
285
+ break;
286
+ }
287
+ case 6: {
288
+ this.slice_from("qU");
289
+ break;
290
+ }
291
+ case 7: {
292
+ if (this.c >= this.limit) break lab2;
293
+ this.c++;
294
+ break;
295
+ }
296
+ }
297
+ continue;
16
298
  }
299
+ this.c = v_4;
300
+ break;
17
301
  }
18
- } else if (isVowel(word[0]) && isVowel(word[1])) {
19
- for (let i = 2; i < length; i++) {
20
- if (!isVowel(word[i])) {
21
- rv = i + 1;
22
- break;
302
+ this.c = v_3;
303
+ while (true) {
304
+ const v_5 = this.c;
305
+ lab3: {
306
+ while (true) {
307
+ const v_6 = this.c;
308
+ lab5: {
309
+ if (!this.in_grouping(g_v, 97, 249)) break lab5;
310
+ this.bra = this.c;
311
+ lab6: {
312
+ const v_7 = this.c;
313
+ lab7: {
314
+ if (!this.eq_s("u")) break lab7;
315
+ this.ket = this.c;
316
+ if (!this.in_grouping(g_v, 97, 249)) break lab7;
317
+ this.slice_from("U");
318
+ break lab6;
319
+ }
320
+ this.c = v_7;
321
+ if (!this.eq_s("i")) break lab5;
322
+ this.ket = this.c;
323
+ if (!this.in_grouping(g_v, 97, 249)) break lab5;
324
+ this.slice_from("I");
325
+ }
326
+ this.c = v_6;
327
+ break;
328
+ }
329
+ this.c = v_6;
330
+ if (this.c >= this.limit) break lab3;
331
+ this.c++;
332
+ }
333
+ continue;
23
334
  }
24
- }
25
- } else {
26
- rv = 3;
27
- }
28
- }
29
- let r1 = length;
30
- for (let i = 1; i < length; i++) {
31
- if (!isVowel(word[i]) && isVowel(word[i - 1])) {
32
- r1 = i + 1;
33
- break;
34
- }
35
- }
36
- let r2 = length;
37
- for (let i = r1 + 1; i < length; i++) {
38
- if (!isVowel(word[i]) && isVowel(word[i - 1])) {
39
- r2 = i + 1;
40
- break;
41
- }
42
- }
43
- return { rv, r1, r2 };
44
- }
45
- var RE_ACCENT_A = /á/g;
46
- var RE_ACCENT_E = /é/g;
47
- var RE_ACCENT_I = /í/g;
48
- var RE_ACCENT_O = /ó/g;
49
- var RE_ACCENT_U = /ú/g;
50
- function replaceAccentedVowels(word) {
51
- return word.replace(RE_ACCENT_A, "\xE0").replace(RE_ACCENT_E, "\xE8").replace(RE_ACCENT_I, "\xEC").replace(RE_ACCENT_O, "\xF2").replace(RE_ACCENT_U, "\xF9");
52
- }
53
- function markVowelPairsAsUppercase(word) {
54
- let result = "";
55
- for (let i = 0; i < word.length; i++) {
56
- const ch = word[i];
57
- if (i > 0 && i < word.length - 1 && isVowel(word[i - 1]) && isVowel(word[i + 1])) {
58
- if (ch === "i") {
59
- result += "I";
60
- continue;
61
- }
62
- if (ch === "u") {
63
- result += "U";
64
- continue;
335
+ this.c = v_5;
336
+ break;
65
337
  }
66
338
  }
67
- result += ch;
68
- }
69
- return result;
70
- }
71
- var RE_UPPERCASE_I = /I/g;
72
- var RE_UPPERCASE_U = /U/g;
73
- function restoreMarkedVowels(word) {
74
- return word.replace(RE_UPPERCASE_I, "i").replace(RE_UPPERCASE_U, "u");
75
- }
76
- function endsWith(word, suffix) {
77
- return word.endsWith(suffix);
78
- }
79
- function suffixInRegion(word, suffix, regionStart) {
80
- return word.length - suffix.length >= regionStart;
81
- }
82
- function removeSuffix(word, suffix) {
83
- return word.slice(0, word.length - suffix.length);
84
- }
85
- var STANDARD_SUFFIXES = [
86
- { suffix: "atrice", group: "A" },
87
- { suffix: "atrici", group: "A" },
88
- { suffix: "azione", group: "B" },
89
- { suffix: "azioni", group: "B" },
90
- { suffix: "uzione", group: "D" },
91
- { suffix: "uzioni", group: "D" },
92
- { suffix: "usione", group: "D" },
93
- { suffix: "usioni", group: "D" },
94
- { suffix: "amento", group: "F" },
95
- { suffix: "amenti", group: "F" },
96
- { suffix: "imento", group: "F" },
97
- { suffix: "imenti", group: "F" },
98
- { suffix: "amente", group: "G" },
99
- { suffix: "atore", group: "B" },
100
- { suffix: "atori", group: "B" },
101
- { suffix: "mente", group: "A" },
102
- { suffix: "logia", group: "C" },
103
- { suffix: "logie", group: "C" },
104
- { suffix: "abile", group: "A" },
105
- { suffix: "abili", group: "A" },
106
- { suffix: "ibile", group: "A" },
107
- { suffix: "ibili", group: "A" },
108
- { suffix: "ista", group: "A" },
109
- { suffix: "iste", group: "A" },
110
- { suffix: "isti", group: "A" },
111
- { suffix: "ist\xE0", group: "A" },
112
- { suffix: "ist\xE8", group: "A" },
113
- { suffix: "ist\xEC", group: "A" },
114
- { suffix: "anza", group: "A" },
115
- { suffix: "anze", group: "A" },
116
- { suffix: "enza", group: "E" },
117
- { suffix: "enze", group: "E" },
118
- { suffix: "iche", group: "A" },
119
- { suffix: "ichi", group: "A" },
120
- { suffix: "ismo", group: "A" },
121
- { suffix: "ismi", group: "A" },
122
- { suffix: "ante", group: "A" },
123
- { suffix: "anti", group: "A" },
124
- { suffix: "ica", group: "A" },
125
- { suffix: "ice", group: "A" },
126
- { suffix: "ico", group: "A" },
127
- { suffix: "ici", group: "A" },
128
- { suffix: "osa", group: "A" },
129
- { suffix: "ose", group: "A" },
130
- { suffix: "oso", group: "A" },
131
- { suffix: "osi", group: "A" },
132
- { suffix: "iva", group: "I" },
133
- { suffix: "ive", group: "I" },
134
- { suffix: "ivo", group: "I" },
135
- { suffix: "ivi", group: "I" },
136
- { suffix: "it\xE0", group: "H" }
137
- ];
138
- function findLongestSuffix(word, suffixes) {
139
- let best = null;
140
- for (const entry of suffixes) {
141
- if (endsWith(word, entry.suffix)) {
142
- if (best === null || entry.suffix.length > best.suffix.length) {
143
- best = entry;
339
+ this.c = v_2;
340
+ {
341
+ I_pV = this.limit;
342
+ I_p1 = this.limit;
343
+ I_p2 = this.limit;
344
+ const v_8 = this.c;
345
+ lab9: {
346
+ lab10: {
347
+ const v_9 = this.c;
348
+ lab11: {
349
+ if (!this.in_grouping(g_v, 97, 249)) break lab11;
350
+ lab12: {
351
+ const v_10 = this.c;
352
+ lab13: {
353
+ if (!this.out_grouping(g_v, 97, 249)) break lab13;
354
+ if (!this.go_out_grouping(g_v, 97, 249)) break lab13;
355
+ this.c++;
356
+ break lab12;
357
+ }
358
+ this.c = v_10;
359
+ if (!this.in_grouping(g_v, 97, 249)) break lab11;
360
+ if (!this.go_in_grouping(g_v, 97, 249)) break lab11;
361
+ this.c++;
362
+ }
363
+ break lab10;
364
+ }
365
+ this.c = v_9;
366
+ lab14: {
367
+ if (!this.eq_s("divan")) break lab14;
368
+ break lab10;
369
+ }
370
+ this.c = v_9;
371
+ if (!this.out_grouping(g_v, 97, 249)) break lab9;
372
+ lab15: {
373
+ const v_11 = this.c;
374
+ lab16: {
375
+ if (!this.out_grouping(g_v, 97, 249)) break lab16;
376
+ if (!this.go_out_grouping(g_v, 97, 249)) break lab16;
377
+ this.c++;
378
+ break lab15;
379
+ }
380
+ this.c = v_11;
381
+ if (!this.in_grouping(g_v, 97, 249)) break lab9;
382
+ if (this.c >= this.limit) break lab9;
383
+ this.c++;
384
+ }
385
+ }
386
+ I_pV = this.c;
144
387
  }
145
- }
146
- }
147
- return best;
148
- }
149
- function removeStandardSuffix(word, r1, r2, rv) {
150
- const match = findLongestSuffix(word, STANDARD_SUFFIXES);
151
- if (match === null) return { word, changed: false };
152
- const { suffix, group } = match;
153
- if (group === "A") {
154
- if (!suffixInRegion(word, suffix, r2)) return { word, changed: false };
155
- return { word: removeSuffix(word, suffix), changed: true };
156
- }
157
- if (group === "B") {
158
- if (!suffixInRegion(word, suffix, r2)) return { word, changed: false };
159
- word = removeSuffix(word, suffix);
160
- if (endsWith(word, "ic") && suffixInRegion(word, "ic", r2)) {
161
- word = removeSuffix(word, "ic");
162
- }
163
- return { word, changed: true };
164
- }
165
- if (group === "C") {
166
- if (!suffixInRegion(word, suffix, r2)) return { word, changed: false };
167
- return { word: `${removeSuffix(word, suffix)}log`, changed: true };
168
- }
169
- if (group === "D") {
170
- if (!suffixInRegion(word, suffix, r2)) return { word, changed: false };
171
- return { word: `${removeSuffix(word, suffix)}u`, changed: true };
172
- }
173
- if (group === "E") {
174
- if (!suffixInRegion(word, suffix, r2)) return { word, changed: false };
175
- return { word: `${removeSuffix(word, suffix)}ente`, changed: true };
176
- }
177
- if (group === "F") {
178
- if (!suffixInRegion(word, suffix, rv)) return { word, changed: false };
179
- return { word: removeSuffix(word, suffix), changed: true };
180
- }
181
- if (group === "G") {
182
- if (!suffixInRegion(word, suffix, r1)) return { word, changed: false };
183
- word = removeSuffix(word, suffix);
184
- if (endsWith(word, "iv") && suffixInRegion(word, "iv", r2)) {
185
- word = removeSuffix(word, "iv");
186
- if (endsWith(word, "at") && suffixInRegion(word, "at", r2)) {
187
- word = removeSuffix(word, "at");
388
+ this.c = v_8;
389
+ const v_12 = this.c;
390
+ lab17: {
391
+ if (!this.go_out_grouping(g_v, 97, 249)) break lab17;
392
+ this.c++;
393
+ if (!this.go_in_grouping(g_v, 97, 249)) break lab17;
394
+ this.c++;
395
+ I_p1 = this.c;
396
+ if (!this.go_out_grouping(g_v, 97, 249)) break lab17;
397
+ this.c++;
398
+ if (!this.go_in_grouping(g_v, 97, 249)) break lab17;
399
+ this.c++;
400
+ I_p2 = this.c;
188
401
  }
189
- } else if (endsWith(word, "os") && suffixInRegion(word, "os", r2)) {
190
- word = removeSuffix(word, "os");
191
- } else if (endsWith(word, "ic") && suffixInRegion(word, "ic", r2)) {
192
- word = removeSuffix(word, "ic");
193
- } else if (endsWith(word, "abil") && suffixInRegion(word, "abil", r2)) {
194
- word = removeSuffix(word, "abil");
195
- }
196
- return { word, changed: true };
197
- }
198
- if (group === "H") {
199
- if (!suffixInRegion(word, suffix, r2)) return { word, changed: false };
200
- word = removeSuffix(word, suffix);
201
- if (endsWith(word, "abil") && suffixInRegion(word, "abil", r2)) {
202
- word = removeSuffix(word, "abil");
203
- } else if (endsWith(word, "ic") && suffixInRegion(word, "ic", r2)) {
204
- word = removeSuffix(word, "ic");
205
- } else if (endsWith(word, "iv") && suffixInRegion(word, "iv", r2)) {
206
- word = removeSuffix(word, "iv");
402
+ this.c = v_12;
207
403
  }
208
- return { word, changed: true };
209
- }
210
- if (group === "I") {
211
- if (!suffixInRegion(word, suffix, r2)) return { word, changed: false };
212
- word = removeSuffix(word, suffix);
213
- if (endsWith(word, "at") && suffixInRegion(word, "at", r2)) {
214
- word = removeSuffix(word, "at");
215
- if (endsWith(word, "ic") && suffixInRegion(word, "ic", r2)) {
216
- word = removeSuffix(word, "ic");
217
- }
404
+ this.limit_backward = this.c;
405
+ this.c = this.limit;
406
+ const v_13 = this.limit - this.c;
407
+ lab18: {
408
+ this.ket = this.c;
409
+ if (this.find_among_b(a_3) === 0) break lab18;
410
+ this.bra = this.c;
411
+ a = this.find_among_b(a_4);
412
+ if (a === 0) break lab18;
413
+ if (
414
+ /**@type {boolean}*/
415
+ I_pV > this.c
416
+ ) break lab18;
417
+ this.slice_from(as_4[a - 1]);
218
418
  }
219
- return { word, changed: true };
220
- }
221
- return { word, changed: false };
222
- }
223
- var VERB_SUFFIXES = [
224
- "erebbero",
225
- "irebbero",
226
- "erebbe",
227
- "irebbe",
228
- "assero",
229
- "essero",
230
- "issero",
231
- "assimo",
232
- "eremmo",
233
- "iremmo",
234
- "eranno",
235
- "iranno",
236
- "ereste",
237
- "ireste",
238
- "iscano",
239
- "iscono",
240
- "eremo",
241
- "iremo",
242
- "avamo",
243
- "evamo",
244
- "ivamo",
245
- "avate",
246
- "evate",
247
- "ivate",
248
- "erete",
249
- "irete",
250
- "arono",
251
- "erono",
252
- "irono",
253
- "avano",
254
- "evano",
255
- "ivano",
256
- "eresti",
257
- "iresti",
258
- "isco",
259
- "isca",
260
- "isce",
261
- "isci",
262
- "ando",
263
- "endo",
264
- "Yamo",
265
- "iamo",
266
- "ammo",
267
- "emmo",
268
- "immo",
269
- "asse",
270
- "aste",
271
- "este",
272
- "iste",
273
- "erai",
274
- "irai",
275
- "erei",
276
- "irei",
277
- "ava",
278
- "eva",
279
- "iva",
280
- "ata",
281
- "ita",
282
- "uta",
283
- "ate",
284
- "ete",
285
- "ite",
286
- "ute",
287
- "ati",
288
- "iti",
289
- "uti",
290
- "ato",
291
- "ito",
292
- "uto",
293
- "avo",
294
- "evo",
295
- "ivo",
296
- "ano",
297
- "ono",
298
- "are",
299
- "ere",
300
- "ire",
301
- "assi",
302
- "avi",
303
- "evi",
304
- "ivi",
305
- "endi",
306
- "ar",
307
- "ir",
308
- "er\xE0",
309
- "ir\xE0",
310
- "er\xF2",
311
- "ir\xF2"
312
- ];
313
- var ATTACHED_PRONOUN_SUFFIXES = [
314
- "gliela",
315
- "gliele",
316
- "glieli",
317
- "glielo",
318
- "gliene",
319
- "cela",
320
- "cele",
321
- "celi",
322
- "celo",
323
- "cene",
324
- "mela",
325
- "mele",
326
- "meli",
327
- "melo",
328
- "mene",
329
- "sene",
330
- "tela",
331
- "tele",
332
- "teli",
333
- "telo",
334
- "tene",
335
- "vela",
336
- "vele",
337
- "veli",
338
- "velo",
339
- "vene",
340
- "gli",
341
- "la",
342
- "le",
343
- "li",
344
- "lo",
345
- "ci",
346
- "mi",
347
- "ne",
348
- "si",
349
- "ti",
350
- "vi"
351
- ];
352
- var ATTACHED_PRONOUN_PRECEDING = ["ando", "endo", "ar", "er", "ir"];
353
- function removeAttachedPronouns(word, rv) {
354
- let longestPronoun = null;
355
- for (const pronoun of ATTACHED_PRONOUN_SUFFIXES) {
356
- if (endsWith(word, pronoun) && suffixInRegion(word, pronoun, rv)) {
357
- if (longestPronoun === null || pronoun.length > longestPronoun.length) {
358
- longestPronoun = pronoun;
419
+ this.c = this.limit - v_13;
420
+ const v_14 = this.limit - this.c;
421
+ lab19: {
422
+ lab20: {
423
+ const v_15 = this.limit - this.c;
424
+ lab21: {
425
+ this.ket = this.c;
426
+ a = this.find_among_b(a_7);
427
+ if (a === 0) break lab21;
428
+ this.bra = this.c;
429
+ switch (a) {
430
+ case 1: {
431
+ if (
432
+ /**@type {boolean}*/
433
+ I_p2 > this.c
434
+ ) break lab21;
435
+ this.slice_del();
436
+ break;
437
+ }
438
+ case 2: {
439
+ if (
440
+ /**@type {boolean}*/
441
+ I_p2 > this.c
442
+ ) break lab21;
443
+ this.slice_del();
444
+ const v_16 = this.limit - this.c;
445
+ lab22: {
446
+ this.ket = this.c;
447
+ if (!this.eq_s_b("ic")) {
448
+ this.c = this.limit - v_16;
449
+ break lab22;
450
+ }
451
+ this.bra = this.c;
452
+ if (
453
+ /**@type {boolean}*/
454
+ I_p2 > this.c
455
+ ) {
456
+ this.c = this.limit - v_16;
457
+ break lab22;
458
+ }
459
+ this.slice_del();
460
+ }
461
+ break;
462
+ }
463
+ case 3: {
464
+ if (
465
+ /**@type {boolean}*/
466
+ I_p2 > this.c
467
+ ) break lab21;
468
+ this.slice_from("log");
469
+ break;
470
+ }
471
+ case 4: {
472
+ if (
473
+ /**@type {boolean}*/
474
+ I_p2 > this.c
475
+ ) break lab21;
476
+ this.slice_from("u");
477
+ break;
478
+ }
479
+ case 5: {
480
+ if (
481
+ /**@type {boolean}*/
482
+ I_p2 > this.c
483
+ ) break lab21;
484
+ this.slice_from("ente");
485
+ break;
486
+ }
487
+ case 6: {
488
+ if (
489
+ /**@type {boolean}*/
490
+ I_pV > this.c
491
+ ) break lab21;
492
+ this.slice_del();
493
+ break;
494
+ }
495
+ case 7: {
496
+ if (
497
+ /**@type {boolean}*/
498
+ I_p1 > this.c
499
+ ) break lab21;
500
+ this.slice_del();
501
+ const v_17 = this.limit - this.c;
502
+ lab23: {
503
+ this.ket = this.c;
504
+ a = this.find_among_b(a_5);
505
+ if (a === 0) {
506
+ this.c = this.limit - v_17;
507
+ break lab23;
508
+ }
509
+ this.bra = this.c;
510
+ if (
511
+ /**@type {boolean}*/
512
+ I_p2 > this.c
513
+ ) {
514
+ this.c = this.limit - v_17;
515
+ break lab23;
516
+ }
517
+ this.slice_del();
518
+ switch (a) {
519
+ case 1: {
520
+ this.ket = this.c;
521
+ if (!this.eq_s_b("at")) {
522
+ this.c = this.limit - v_17;
523
+ break lab23;
524
+ }
525
+ this.bra = this.c;
526
+ if (
527
+ /**@type {boolean}*/
528
+ I_p2 > this.c
529
+ ) {
530
+ this.c = this.limit - v_17;
531
+ break lab23;
532
+ }
533
+ this.slice_del();
534
+ break;
535
+ }
536
+ }
537
+ }
538
+ break;
539
+ }
540
+ case 8: {
541
+ if (
542
+ /**@type {boolean}*/
543
+ I_p2 > this.c
544
+ ) break lab21;
545
+ this.slice_del();
546
+ const v_18 = this.limit - this.c;
547
+ lab24: {
548
+ this.ket = this.c;
549
+ if (this.find_among_b(a_6) === 0) {
550
+ this.c = this.limit - v_18;
551
+ break lab24;
552
+ }
553
+ this.bra = this.c;
554
+ if (
555
+ /**@type {boolean}*/
556
+ I_p2 > this.c
557
+ ) {
558
+ this.c = this.limit - v_18;
559
+ break lab24;
560
+ }
561
+ this.slice_del();
562
+ }
563
+ break;
564
+ }
565
+ case 9: {
566
+ if (
567
+ /**@type {boolean}*/
568
+ I_p2 > this.c
569
+ ) break lab21;
570
+ this.slice_del();
571
+ const v_19 = this.limit - this.c;
572
+ lab25: {
573
+ this.ket = this.c;
574
+ if (!this.eq_s_b("at")) {
575
+ this.c = this.limit - v_19;
576
+ break lab25;
577
+ }
578
+ this.bra = this.c;
579
+ if (
580
+ /**@type {boolean}*/
581
+ I_p2 > this.c
582
+ ) {
583
+ this.c = this.limit - v_19;
584
+ break lab25;
585
+ }
586
+ this.slice_del();
587
+ this.ket = this.c;
588
+ if (!this.eq_s_b("ic")) {
589
+ this.c = this.limit - v_19;
590
+ break lab25;
591
+ }
592
+ this.bra = this.c;
593
+ if (
594
+ /**@type {boolean}*/
595
+ I_p2 > this.c
596
+ ) {
597
+ this.c = this.limit - v_19;
598
+ break lab25;
599
+ }
600
+ this.slice_del();
601
+ }
602
+ break;
603
+ }
604
+ }
605
+ break lab20;
606
+ }
607
+ this.c = this.limit - v_15;
608
+ if (this.c < I_pV) break lab19;
609
+ const v_20 = this.limit_backward;
610
+ this.limit_backward = I_pV;
611
+ this.ket = this.c;
612
+ if (this.find_among_b(a_8) === 0) {
613
+ this.limit_backward = v_20;
614
+ break lab19;
615
+ }
616
+ this.bra = this.c;
617
+ this.slice_del();
618
+ this.limit_backward = v_20;
359
619
  }
360
620
  }
361
- }
362
- if (longestPronoun === null) return word;
363
- const stemmed = removeSuffix(word, longestPronoun);
364
- for (const preceding of ATTACHED_PRONOUN_PRECEDING) {
365
- if (endsWith(stemmed, preceding)) {
366
- if (preceding === "ar" || preceding === "er" || preceding === "ir") {
367
- return `${removeSuffix(stemmed, preceding) + preceding}e`;
621
+ this.c = this.limit - v_14;
622
+ const v_21 = this.limit - this.c;
623
+ {
624
+ const v_22 = this.limit - this.c;
625
+ lab27: {
626
+ this.ket = this.c;
627
+ if (!this.in_grouping_b(g_AEIO, 97, 242)) {
628
+ this.c = this.limit - v_22;
629
+ break lab27;
630
+ }
631
+ this.bra = this.c;
632
+ if (
633
+ /**@type {boolean}*/
634
+ I_pV > this.c
635
+ ) {
636
+ this.c = this.limit - v_22;
637
+ break lab27;
638
+ }
639
+ this.slice_del();
640
+ this.ket = this.c;
641
+ if (!this.eq_s_b("i")) {
642
+ this.c = this.limit - v_22;
643
+ break lab27;
644
+ }
645
+ this.bra = this.c;
646
+ if (
647
+ /**@type {boolean}*/
648
+ I_pV > this.c
649
+ ) {
650
+ this.c = this.limit - v_22;
651
+ break lab27;
652
+ }
653
+ this.slice_del();
368
654
  }
369
- return stemmed;
370
- }
371
- }
372
- return word;
373
- }
374
- function removeVerbSuffix(word, rv) {
375
- let longestSuffix = null;
376
- for (const suffix of VERB_SUFFIXES) {
377
- if (endsWith(word, suffix)) {
378
- if (longestSuffix === null || suffix.length > longestSuffix.length) {
379
- longestSuffix = suffix;
655
+ const v_23 = this.limit - this.c;
656
+ lab28: {
657
+ this.ket = this.c;
658
+ if (!this.eq_s_b("h")) {
659
+ this.c = this.limit - v_23;
660
+ break lab28;
661
+ }
662
+ this.bra = this.c;
663
+ if (!this.in_grouping_b(g_CG, 99, 103)) {
664
+ this.c = this.limit - v_23;
665
+ break lab28;
666
+ }
667
+ if (
668
+ /**@type {boolean}*/
669
+ I_pV > this.c
670
+ ) {
671
+ this.c = this.limit - v_23;
672
+ break lab28;
673
+ }
674
+ this.slice_del();
380
675
  }
381
676
  }
382
- }
383
- if (longestSuffix !== null && suffixInRegion(word, longestSuffix, rv)) {
384
- return { word: removeSuffix(word, longestSuffix), changed: true };
385
- }
386
- return { word, changed: false };
387
- }
388
- function removeResidualSuffix(word, rv) {
389
- const lastChar = word[word.length - 1];
390
- if (lastChar === "a" || lastChar === "e" || lastChar === "i" || lastChar === "o" || lastChar === "\xE0" || lastChar === "\xE8" || lastChar === "\xEC" || lastChar === "\xF2") {
391
- if (suffixInRegion(word, lastChar, rv)) {
392
- word = word.slice(0, -1);
393
- if (word.length > 0 && word[word.length - 1] === "i" && suffixInRegion(word, "i", rv)) {
394
- word = word.slice(0, -1);
677
+ this.c = this.limit - v_21;
678
+ this.c = this.limit_backward;
679
+ const v_24 = this.c;
680
+ while (true) {
681
+ const v_25 = this.c;
682
+ lab30: {
683
+ this.bra = this.c;
684
+ a = this.find_among(a_2);
685
+ this.ket = this.c;
686
+ switch (a) {
687
+ case 1: {
688
+ this.slice_from("i");
689
+ break;
690
+ }
691
+ case 2: {
692
+ this.slice_from("u");
693
+ break;
694
+ }
695
+ case 3: {
696
+ if (this.c >= this.limit) break lab30;
697
+ this.c++;
698
+ break;
699
+ }
700
+ }
701
+ continue;
395
702
  }
703
+ this.c = v_25;
704
+ break;
396
705
  }
706
+ this.c = v_24;
707
+ return true;
397
708
  }
398
- if (endsWith(word, "h") && suffixInRegion(word, "h", rv)) {
399
- const twoBack = word.length >= 2 ? word[word.length - 2] : "";
400
- if (twoBack === "c" || twoBack === "g") {
401
- word = word.slice(0, -1);
402
- }
403
- }
404
- return word;
405
- }
406
- function stem(word) {
407
- if (word.length < 3) return word;
408
- word = word.toLowerCase();
409
- word = replaceAccentedVowels(word);
410
- word = word.replace(RE_QU, "qU");
411
- word = markVowelPairsAsUppercase(word);
412
- const { rv, r1, r2 } = findRegions(word);
413
- word = removeAttachedPronouns(word, rv);
414
- const standardResult = removeStandardSuffix(word, r1, r2, rv);
415
- if (standardResult.changed) {
416
- word = standardResult.word;
417
- } else {
418
- const verbResult = removeVerbSuffix(word, rv);
419
- word = verbResult.word;
709
+ stem(input) {
710
+ this.setCurrent(input);
711
+ this.#stem();
712
+ return this.getCurrent();
420
713
  }
421
- word = removeResidualSuffix(word, rv);
422
- word = restoreMarkedVowels(word);
423
- return word;
714
+ };
715
+ var shared = new ItalianStemmer();
716
+ function stem(token) {
717
+ return shared.stem(token);
424
718
  }
719
+
720
+ // src/languages/italian.ts
425
721
  var stopWords = /* @__PURE__ */ new Set([
426
722
  "ad",
427
723
  "al",
@@ -705,9 +1001,10 @@ var stopWords = /* @__PURE__ */ new Set([
705
1001
  ]);
706
1002
  var italian = {
707
1003
  name: "italian",
1004
+ revision: "c4d2339182390e18",
708
1005
  stemmer: stem,
709
1006
  stopWords,
710
- tokenizer: { splitPattern: /[^a-z0-9\u00e0\u00e8\u00e9\u00ec\u00f2\u00f3\u00f9'-]+/gi }
1007
+ tokenizer: { splitPattern: /[^a-z0-9àèéìîòóù-]+/gi }
711
1008
  };
712
1009
 
713
1010
  export { italian };