@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,396 +1,623 @@
1
- // src/languages/portuguese.ts
2
- var VOWELS = "aeiou\xE0\xE1\xE2\xE9\xEA\xED\xF3\xF4\xFA\xFC";
3
- function isVowel(ch) {
4
- return VOWELS.includes(ch);
5
- }
6
- function findRegions(word) {
7
- const length = word.length;
8
- let rv = length;
9
- if (length > 3) {
10
- if (!isVowel(word[1])) {
11
- for (let i = 2; i < length; i++) {
12
- if (isVowel(word[i])) {
13
- rv = i + 1;
14
- break;
15
- }
16
- }
17
- } else if (isVowel(word[0]) && isVowel(word[1])) {
18
- for (let i = 2; i < length; i++) {
19
- if (!isVowel(word[i])) {
20
- rv = i + 1;
21
- break;
1
+ import { removeMarks } from '../chunk-KH3YGMVT.mjs';
2
+ import { withNormalisedSpellings } from '../chunk-GHJWC2E5.mjs';
3
+ import { BaseStemmer } from '../chunk-U2BKYEC7.mjs';
4
+
5
+ // src/languages/snowball/portuguese.ts
6
+ var a_0 = [
7
+ ["", 3],
8
+ ["\xE3", 1, 1],
9
+ ["\xF5", 2, 2]
10
+ ];
11
+ var a_1 = [
12
+ ["", 3],
13
+ ["a~", 1, 1],
14
+ ["o~", 2, 2]
15
+ ];
16
+ var a_2 = [
17
+ ["ic", -1],
18
+ ["ad", -1],
19
+ ["os", -1],
20
+ ["iv", 1]
21
+ ];
22
+ var a_3 = [
23
+ ["ante", 1],
24
+ ["avel", 1],
25
+ ["\xEDvel", 1]
26
+ ];
27
+ var a_4 = [
28
+ ["ic", 1],
29
+ ["abil", 1],
30
+ ["iv", 1]
31
+ ];
32
+ var a_5 = [
33
+ ["ica", 1],
34
+ ["\xE2ncia", 1],
35
+ ["\xEAncia", 4],
36
+ ["logia", 2],
37
+ ["ira", 9],
38
+ ["adora", 1],
39
+ ["osa", 1],
40
+ ["ista", 1],
41
+ ["iva", 8],
42
+ ["eza", 1],
43
+ ["idade", 7],
44
+ ["ante", 1],
45
+ ["mente", 6],
46
+ ["amente", 5, 1],
47
+ ["\xE1vel", 1],
48
+ ["\xEDvel", 1],
49
+ ["ico", 1],
50
+ ["ismo", 1],
51
+ ["oso", 1],
52
+ ["amento", 1],
53
+ ["imento", 1],
54
+ ["ivo", 8],
55
+ ["a\xE7a~o", 1],
56
+ ["u\xE7a~o", 3],
57
+ ["ador", 1],
58
+ ["icas", 1],
59
+ ["\xEAncias", 4],
60
+ ["logias", 2],
61
+ ["iras", 9],
62
+ ["adoras", 1],
63
+ ["osas", 1],
64
+ ["istas", 1],
65
+ ["ivas", 8],
66
+ ["ezas", 1],
67
+ ["idades", 7],
68
+ ["adores", 1],
69
+ ["antes", 1],
70
+ ["a\xE7o~es", 1],
71
+ ["u\xE7o~es", 3],
72
+ ["icos", 1],
73
+ ["ismos", 1],
74
+ ["osos", 1],
75
+ ["amentos", 1],
76
+ ["imentos", 1],
77
+ ["ivos", 8]
78
+ ];
79
+ var a_6 = [
80
+ ["ada", 1],
81
+ ["ida", 1],
82
+ ["ia", 1],
83
+ ["aria", 1, 1],
84
+ ["eria", 1, 2],
85
+ ["iria", 1, 3],
86
+ ["ara", 1],
87
+ ["era", 1],
88
+ ["ira", 1],
89
+ ["ava", 1],
90
+ ["asse", 1],
91
+ ["esse", 1],
92
+ ["isse", 1],
93
+ ["aste", 1],
94
+ ["este", 1],
95
+ ["iste", 1],
96
+ ["ei", 1],
97
+ ["arei", 1, 1],
98
+ ["erei", 1, 2],
99
+ ["irei", 1, 3],
100
+ ["am", 1],
101
+ ["iam", 1, 1],
102
+ ["ariam", 1, 1],
103
+ ["eriam", 1, 2],
104
+ ["iriam", 1, 3],
105
+ ["aram", 1, 5],
106
+ ["eram", 1, 6],
107
+ ["iram", 1, 7],
108
+ ["avam", 1, 8],
109
+ ["em", 1],
110
+ ["arem", 1, 1],
111
+ ["erem", 1, 2],
112
+ ["irem", 1, 3],
113
+ ["assem", 1, 4],
114
+ ["essem", 1, 5],
115
+ ["issem", 1, 6],
116
+ ["ado", 1],
117
+ ["ido", 1],
118
+ ["ando", 1],
119
+ ["endo", 1],
120
+ ["indo", 1],
121
+ ["ara~o", 1],
122
+ ["era~o", 1],
123
+ ["ira~o", 1],
124
+ ["ar", 1],
125
+ ["er", 1],
126
+ ["ir", 1],
127
+ ["as", 1],
128
+ ["adas", 1, 1],
129
+ ["idas", 1, 2],
130
+ ["ias", 1, 3],
131
+ ["arias", 1, 1],
132
+ ["erias", 1, 2],
133
+ ["irias", 1, 3],
134
+ ["aras", 1, 7],
135
+ ["eras", 1, 8],
136
+ ["iras", 1, 9],
137
+ ["avas", 1, 10],
138
+ ["es", 1],
139
+ ["ardes", 1, 1],
140
+ ["erdes", 1, 2],
141
+ ["irdes", 1, 3],
142
+ ["ares", 1, 4],
143
+ ["eres", 1, 5],
144
+ ["ires", 1, 6],
145
+ ["asses", 1, 7],
146
+ ["esses", 1, 8],
147
+ ["isses", 1, 9],
148
+ ["astes", 1, 10],
149
+ ["estes", 1, 11],
150
+ ["istes", 1, 12],
151
+ ["is", 1],
152
+ ["ais", 1, 1],
153
+ ["eis", 1, 2],
154
+ ["areis", 1, 1],
155
+ ["ereis", 1, 2],
156
+ ["ireis", 1, 3],
157
+ ["\xE1reis", 1, 4],
158
+ ["\xE9reis", 1, 5],
159
+ ["\xEDreis", 1, 6],
160
+ ["\xE1sseis", 1, 7],
161
+ ["\xE9sseis", 1, 8],
162
+ ["\xEDsseis", 1, 9],
163
+ ["\xE1veis", 1, 10],
164
+ ["\xEDeis", 1, 11],
165
+ ["ar\xEDeis", 1, 1],
166
+ ["er\xEDeis", 1, 2],
167
+ ["ir\xEDeis", 1, 3],
168
+ ["ados", 1],
169
+ ["idos", 1],
170
+ ["amos", 1],
171
+ ["\xE1ramos", 1, 1],
172
+ ["\xE9ramos", 1, 2],
173
+ ["\xEDramos", 1, 3],
174
+ ["\xE1vamos", 1, 4],
175
+ ["\xEDamos", 1, 5],
176
+ ["ar\xEDamos", 1, 1],
177
+ ["er\xEDamos", 1, 2],
178
+ ["ir\xEDamos", 1, 3],
179
+ ["emos", 1],
180
+ ["aremos", 1, 1],
181
+ ["eremos", 1, 2],
182
+ ["iremos", 1, 3],
183
+ ["\xE1ssemos", 1, 4],
184
+ ["\xEAssemos", 1, 5],
185
+ ["\xEDssemos", 1, 6],
186
+ ["imos", 1],
187
+ ["armos", 1],
188
+ ["ermos", 1],
189
+ ["irmos", 1],
190
+ ["\xE1mos", 1],
191
+ ["ar\xE1s", 1],
192
+ ["er\xE1s", 1],
193
+ ["ir\xE1s", 1],
194
+ ["eu", 1],
195
+ ["iu", 1],
196
+ ["ou", 1],
197
+ ["ar\xE1", 1],
198
+ ["er\xE1", 1],
199
+ ["ir\xE1", 1]
200
+ ];
201
+ var a_7 = [
202
+ ["a", 1],
203
+ ["i", 1],
204
+ ["o", 1],
205
+ ["os", 1],
206
+ ["\xE1", 1],
207
+ ["\xED", 1],
208
+ ["\xF3", 1]
209
+ ];
210
+ var a_8 = [
211
+ ["e", 1],
212
+ ["\xE7", 2],
213
+ ["\xE9", 1],
214
+ ["\xEA", 1]
215
+ ];
216
+ var g_v = [17, 65, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 19, 12, 2];
217
+ var PortugueseStemmer = class extends BaseStemmer {
218
+ #stem() {
219
+ let a;
220
+ let I_p2;
221
+ let I_p1;
222
+ let I_pV;
223
+ const v_1 = this.c;
224
+ while (true) {
225
+ const v_2 = this.c;
226
+ lab1: {
227
+ this.bra = this.c;
228
+ a = this.find_among(a_0);
229
+ this.ket = this.c;
230
+ switch (a) {
231
+ case 1: {
232
+ this.slice_from("a~");
233
+ break;
234
+ }
235
+ case 2: {
236
+ this.slice_from("o~");
237
+ break;
238
+ }
239
+ case 3: {
240
+ if (this.c >= this.limit) break lab1;
241
+ this.c++;
242
+ break;
243
+ }
22
244
  }
245
+ continue;
23
246
  }
24
- } else {
25
- rv = 3;
26
- }
27
- }
28
- let r1 = length;
29
- for (let i = 1; i < length; i++) {
30
- if (!isVowel(word[i]) && isVowel(word[i - 1])) {
31
- r1 = i + 1;
247
+ this.c = v_2;
32
248
  break;
33
249
  }
34
- }
35
- let r2 = length;
36
- for (let i = r1 + 1; i < length; i++) {
37
- if (!isVowel(word[i]) && isVowel(word[i - 1])) {
38
- r2 = i + 1;
39
- break;
40
- }
41
- }
42
- return { rv, r1, r2 };
43
- }
44
- function endsWith(word, suffix) {
45
- return word.endsWith(suffix);
46
- }
47
- function suffixInRegion(word, suffix, regionStart) {
48
- return word.length - suffix.length >= regionStart;
49
- }
50
- function removeSuffix(word, suffix) {
51
- return word.slice(0, word.length - suffix.length);
52
- }
53
- function replaceSuffix(word, suffix, replacement) {
54
- return word.slice(0, word.length - suffix.length) + replacement;
55
- }
56
- var STANDARD_SUFFIXES = [
57
- { suffix: "amentos", group: 1 },
58
- { suffix: "imentos", group: 1 },
59
- { suffix: "adoras", group: 1 },
60
- { suffix: "adores", group: 1 },
61
- { suffix: "logias", group: 2 },
62
- { suffix: "idades", group: 7 },
63
- { suffix: "amento", group: 1 },
64
- { suffix: "imento", group: 1 },
65
- { suffix: "adora", group: 1 },
66
- { suffix: "istas", group: 1 },
67
- { suffix: "antes", group: 1 },
68
- { suffix: "ismos", group: 1 },
69
- { suffix: "\xE2ncia", group: 1 },
70
- { suffix: "logia", group: 2 },
71
- { suffix: "\xEAncia", group: 4 },
72
- { suffix: "\xEAncias", group: 4 },
73
- { suffix: "amente", group: 5 },
74
- { suffix: "mente", group: 6 },
75
- { suffix: "idade", group: 7 },
76
- { suffix: "\xE1vel", group: 1 },
77
- { suffix: "\xEDvel", group: 1 },
78
- { suffix: "ador", group: 1 },
79
- { suffix: "ante", group: 1 },
80
- { suffix: "ista", group: 1 },
81
- { suffix: "ismo", group: 1 },
82
- { suffix: "icas", group: 1 },
83
- { suffix: "icos", group: 1 },
84
- { suffix: "osas", group: 1 },
85
- { suffix: "osos", group: 1 },
86
- { suffix: "iva", group: 8 },
87
- { suffix: "ivo", group: 8 },
88
- { suffix: "ivas", group: 8 },
89
- { suffix: "ivos", group: 8 },
90
- { suffix: "ica", group: 1 },
91
- { suffix: "ico", group: 1 },
92
- { suffix: "osa", group: 1 },
93
- { suffix: "oso", group: 1 },
94
- { suffix: "ezas", group: 1 },
95
- { suffix: "eza", group: 1 },
96
- { suffix: "ira", group: 9 },
97
- { suffix: "iras", group: 9 },
98
- { suffix: "a\xE7a~o", group: 1 },
99
- { suffix: "u\xE7a~o", group: 3 },
100
- { suffix: "a\xE7o~es", group: 1 },
101
- { suffix: "u\xE7o~es", group: 3 }
102
- ];
103
- function findLongestMatch(word, suffixes) {
104
- let best = null;
105
- for (const entry of suffixes) {
106
- if (endsWith(word, entry.suffix)) {
107
- if (best === null || entry.suffix.length > best.suffix.length) {
108
- best = entry;
250
+ this.c = v_1;
251
+ {
252
+ I_pV = this.limit;
253
+ I_p1 = this.limit;
254
+ I_p2 = this.limit;
255
+ const v_3 = this.c;
256
+ lab3: {
257
+ lab4: {
258
+ const v_4 = this.c;
259
+ lab5: {
260
+ if (!this.in_grouping(g_v, 97, 250)) break lab5;
261
+ lab6: {
262
+ const v_5 = this.c;
263
+ lab7: {
264
+ if (!this.out_grouping(g_v, 97, 250)) break lab7;
265
+ if (!this.go_out_grouping(g_v, 97, 250)) break lab7;
266
+ this.c++;
267
+ break lab6;
268
+ }
269
+ this.c = v_5;
270
+ if (!this.in_grouping(g_v, 97, 250)) break lab5;
271
+ if (!this.go_in_grouping(g_v, 97, 250)) break lab5;
272
+ this.c++;
273
+ }
274
+ break lab4;
275
+ }
276
+ this.c = v_4;
277
+ if (!this.out_grouping(g_v, 97, 250)) break lab3;
278
+ lab8: {
279
+ const v_6 = this.c;
280
+ lab9: {
281
+ if (!this.out_grouping(g_v, 97, 250)) break lab9;
282
+ if (!this.go_out_grouping(g_v, 97, 250)) break lab9;
283
+ this.c++;
284
+ break lab8;
285
+ }
286
+ this.c = v_6;
287
+ if (!this.in_grouping(g_v, 97, 250)) break lab3;
288
+ if (this.c >= this.limit) break lab3;
289
+ this.c++;
290
+ }
291
+ }
292
+ I_pV = this.c;
109
293
  }
110
- }
111
- }
112
- return best;
113
- }
114
- function removeStandardSuffix(word, r1, r2, rv) {
115
- const match = findLongestMatch(word, STANDARD_SUFFIXES);
116
- if (match === null) return { word, changed: false };
117
- const { suffix, group } = match;
118
- if (group === 1) {
119
- if (!suffixInRegion(word, suffix, r2)) return { word, changed: false };
120
- return { word: removeSuffix(word, suffix), changed: true };
121
- }
122
- if (group === 2) {
123
- if (!suffixInRegion(word, suffix, r2)) return { word, changed: false };
124
- return { word: replaceSuffix(word, suffix, "log"), changed: true };
125
- }
126
- if (group === 3) {
127
- if (!suffixInRegion(word, suffix, r2)) return { word, changed: false };
128
- return { word: replaceSuffix(word, suffix, "u"), changed: true };
129
- }
130
- if (group === 4) {
131
- if (!suffixInRegion(word, suffix, r2)) return { word, changed: false };
132
- return { word: replaceSuffix(word, suffix, "ente"), changed: true };
133
- }
134
- if (group === 5) {
135
- if (!suffixInRegion(word, suffix, r1)) return { word, changed: false };
136
- word = removeSuffix(word, suffix);
137
- if (endsWith(word, "iv") && suffixInRegion(word, "iv", r2)) {
138
- word = removeSuffix(word, "iv");
139
- if (endsWith(word, "at") && suffixInRegion(word, "at", r2)) {
140
- word = removeSuffix(word, "at");
294
+ this.c = v_3;
295
+ const v_7 = this.c;
296
+ lab10: {
297
+ if (!this.go_out_grouping(g_v, 97, 250)) break lab10;
298
+ this.c++;
299
+ if (!this.go_in_grouping(g_v, 97, 250)) break lab10;
300
+ this.c++;
301
+ I_p1 = this.c;
302
+ if (!this.go_out_grouping(g_v, 97, 250)) break lab10;
303
+ this.c++;
304
+ if (!this.go_in_grouping(g_v, 97, 250)) break lab10;
305
+ this.c++;
306
+ I_p2 = this.c;
141
307
  }
142
- } else if (endsWith(word, "os") && suffixInRegion(word, "os", r2)) {
143
- word = removeSuffix(word, "os");
144
- } else if (endsWith(word, "ic") && suffixInRegion(word, "ic", r2)) {
145
- word = removeSuffix(word, "ic");
146
- } else if (endsWith(word, "ad") && suffixInRegion(word, "ad", r2)) {
147
- word = removeSuffix(word, "ad");
148
- }
149
- return { word, changed: true };
150
- }
151
- if (group === 6) {
152
- if (!suffixInRegion(word, suffix, r2)) return { word, changed: false };
153
- word = removeSuffix(word, suffix);
154
- if (endsWith(word, "ante") && suffixInRegion(word, "ante", r2)) {
155
- word = removeSuffix(word, "ante");
156
- } else if (endsWith(word, "avel") && suffixInRegion(word, "avel", r2)) {
157
- word = removeSuffix(word, "avel");
158
- } else if (endsWith(word, "\xEDvel") && suffixInRegion(word, "\xEDvel", r2)) {
159
- word = removeSuffix(word, "\xEDvel");
308
+ this.c = v_7;
160
309
  }
161
- return { word, changed: true };
162
- }
163
- if (group === 7) {
164
- if (!suffixInRegion(word, suffix, r2)) return { word, changed: false };
165
- word = removeSuffix(word, suffix);
166
- if (endsWith(word, "abil") && suffixInRegion(word, "abil", r2)) {
167
- word = removeSuffix(word, "abil");
168
- } else if (endsWith(word, "ic") && suffixInRegion(word, "ic", r2)) {
169
- word = removeSuffix(word, "ic");
170
- } else if (endsWith(word, "iv") && suffixInRegion(word, "iv", r2)) {
171
- word = removeSuffix(word, "iv");
172
- }
173
- return { word, changed: true };
174
- }
175
- if (group === 8) {
176
- if (!suffixInRegion(word, suffix, r2)) return { word, changed: false };
177
- word = removeSuffix(word, suffix);
178
- if (endsWith(word, "at") && suffixInRegion(word, "at", r2)) {
179
- word = removeSuffix(word, "at");
180
- }
181
- return { word, changed: true };
182
- }
183
- if (group === 9) {
184
- if (!suffixInRegion(word, suffix, rv)) return { word, changed: false };
185
- const withoutSuffix = removeSuffix(word, suffix);
186
- if (endsWith(withoutSuffix, "e")) {
187
- return { word: replaceSuffix(word, suffix, "ir"), changed: true };
188
- }
189
- return { word, changed: false };
190
- }
191
- return { word, changed: false };
192
- }
193
- var VERB_SUFFIXES = [
194
- "ar\xEDamos",
195
- "er\xEDamos",
196
- "ir\xEDamos",
197
- "\xE1ssemos",
198
- "\xEAssemos",
199
- "\xEDssemos",
200
- "\xE1ramos",
201
- "\xE9ramos",
202
- "\xEDramos",
203
- "\xE1vamos",
204
- "\xEDamos",
205
- "aremos",
206
- "eremos",
207
- "iremos",
208
- "ar\xEDeis",
209
- "er\xEDeis",
210
- "ir\xEDeis",
211
- "\xE1sseis",
212
- "\xE9sseis",
213
- "\xEDsseis",
214
- "\xE1veis",
215
- "\xEDeis",
216
- "ardes",
217
- "erdes",
218
- "irdes",
219
- "areis",
220
- "ereis",
221
- "ireis",
222
- "\xE1reis",
223
- "\xE9reis",
224
- "\xEDreis",
225
- "asses",
226
- "esses",
227
- "isses",
228
- "astes",
229
- "estes",
230
- "istes",
231
- "ariam",
232
- "eriam",
233
- "iriam",
234
- "arias",
235
- "erias",
236
- "irias",
237
- "assem",
238
- "essem",
239
- "issem",
240
- "armos",
241
- "ermos",
242
- "irmos",
243
- "aram",
244
- "eram",
245
- "iram",
246
- "avam",
247
- "arem",
248
- "erem",
249
- "irem",
250
- "ando",
251
- "endo",
252
- "indo",
253
- "ados",
254
- "idos",
255
- "amos",
256
- "emos",
257
- "imos",
258
- "ar\xE1s",
259
- "er\xE1s",
260
- "ir\xE1s",
261
- "ares",
262
- "eres",
263
- "ires",
264
- "avas",
265
- "aria",
266
- "eria",
267
- "iria",
268
- "asse",
269
- "esse",
270
- "isse",
271
- "aste",
272
- "este",
273
- "iste",
274
- "arei",
275
- "erei",
276
- "irei",
277
- "ada",
278
- "ida",
279
- "ara",
280
- "era",
281
- "ira",
282
- "ava",
283
- "ado",
284
- "ido",
285
- "ais",
286
- "eis",
287
- "is",
288
- "iam",
289
- "\xE1mos",
290
- "ara~o",
291
- "era~o",
292
- "ira~o",
293
- "am",
294
- "em",
295
- "ar",
296
- "er",
297
- "ir",
298
- "as",
299
- "es",
300
- "eu",
301
- "iu",
302
- "ou",
303
- "ia",
304
- "ei",
305
- "ar\xE1",
306
- "er\xE1",
307
- "ir\xE1"
308
- ];
309
- function removeVerbSuffix(word, rv) {
310
- let longestSuffix = null;
311
- for (const suffix of VERB_SUFFIXES) {
312
- if (endsWith(word, suffix) && suffixInRegion(word, suffix, rv)) {
313
- if (longestSuffix === null || suffix.length > longestSuffix.length) {
314
- longestSuffix = suffix;
310
+ this.limit_backward = this.c;
311
+ this.c = this.limit;
312
+ const v_8 = this.limit - this.c;
313
+ lab11: {
314
+ lab12: {
315
+ const v_9 = this.limit - this.c;
316
+ lab13: {
317
+ const v_10 = this.limit - this.c;
318
+ lab14: {
319
+ const v_11 = this.limit - this.c;
320
+ lab15: {
321
+ this.ket = this.c;
322
+ a = this.find_among_b(a_5);
323
+ if (a === 0) break lab15;
324
+ this.bra = this.c;
325
+ switch (a) {
326
+ case 1: {
327
+ if (
328
+ /**@type {boolean}*/
329
+ I_p2 > this.c
330
+ ) break lab15;
331
+ this.slice_del();
332
+ break;
333
+ }
334
+ case 2: {
335
+ if (
336
+ /**@type {boolean}*/
337
+ I_p2 > this.c
338
+ ) break lab15;
339
+ this.slice_from("log");
340
+ break;
341
+ }
342
+ case 3: {
343
+ if (
344
+ /**@type {boolean}*/
345
+ I_p2 > this.c
346
+ ) break lab15;
347
+ this.slice_from("u");
348
+ break;
349
+ }
350
+ case 4: {
351
+ if (
352
+ /**@type {boolean}*/
353
+ I_p2 > this.c
354
+ ) break lab15;
355
+ this.slice_from("ente");
356
+ break;
357
+ }
358
+ case 5: {
359
+ if (
360
+ /**@type {boolean}*/
361
+ I_p1 > this.c
362
+ ) break lab15;
363
+ this.slice_del();
364
+ const v_12 = this.limit - this.c;
365
+ lab16: {
366
+ this.ket = this.c;
367
+ a = this.find_among_b(a_2);
368
+ if (a === 0) {
369
+ this.c = this.limit - v_12;
370
+ break lab16;
371
+ }
372
+ this.bra = this.c;
373
+ if (
374
+ /**@type {boolean}*/
375
+ I_p2 > this.c
376
+ ) {
377
+ this.c = this.limit - v_12;
378
+ break lab16;
379
+ }
380
+ this.slice_del();
381
+ switch (a) {
382
+ case 1: {
383
+ this.ket = this.c;
384
+ if (!this.eq_s_b("at")) {
385
+ this.c = this.limit - v_12;
386
+ break lab16;
387
+ }
388
+ this.bra = this.c;
389
+ if (
390
+ /**@type {boolean}*/
391
+ I_p2 > this.c
392
+ ) {
393
+ this.c = this.limit - v_12;
394
+ break lab16;
395
+ }
396
+ this.slice_del();
397
+ break;
398
+ }
399
+ }
400
+ }
401
+ break;
402
+ }
403
+ case 6: {
404
+ if (
405
+ /**@type {boolean}*/
406
+ I_p2 > this.c
407
+ ) break lab15;
408
+ this.slice_del();
409
+ const v_13 = this.limit - this.c;
410
+ lab17: {
411
+ this.ket = this.c;
412
+ if (this.find_among_b(a_3) === 0) {
413
+ this.c = this.limit - v_13;
414
+ break lab17;
415
+ }
416
+ this.bra = this.c;
417
+ if (
418
+ /**@type {boolean}*/
419
+ I_p2 > this.c
420
+ ) {
421
+ this.c = this.limit - v_13;
422
+ break lab17;
423
+ }
424
+ this.slice_del();
425
+ }
426
+ break;
427
+ }
428
+ case 7: {
429
+ if (
430
+ /**@type {boolean}*/
431
+ I_p2 > this.c
432
+ ) break lab15;
433
+ this.slice_del();
434
+ const v_14 = this.limit - this.c;
435
+ lab18: {
436
+ this.ket = this.c;
437
+ if (this.find_among_b(a_4) === 0) {
438
+ this.c = this.limit - v_14;
439
+ break lab18;
440
+ }
441
+ this.bra = this.c;
442
+ if (
443
+ /**@type {boolean}*/
444
+ I_p2 > this.c
445
+ ) {
446
+ this.c = this.limit - v_14;
447
+ break lab18;
448
+ }
449
+ this.slice_del();
450
+ }
451
+ break;
452
+ }
453
+ case 8: {
454
+ if (
455
+ /**@type {boolean}*/
456
+ I_p2 > this.c
457
+ ) break lab15;
458
+ this.slice_del();
459
+ const v_15 = this.limit - this.c;
460
+ lab19: {
461
+ this.ket = this.c;
462
+ if (!this.eq_s_b("at")) {
463
+ this.c = this.limit - v_15;
464
+ break lab19;
465
+ }
466
+ this.bra = this.c;
467
+ if (
468
+ /**@type {boolean}*/
469
+ I_p2 > this.c
470
+ ) {
471
+ this.c = this.limit - v_15;
472
+ break lab19;
473
+ }
474
+ this.slice_del();
475
+ }
476
+ break;
477
+ }
478
+ case 9: {
479
+ if (
480
+ /**@type {boolean}*/
481
+ I_pV > this.c
482
+ ) break lab15;
483
+ if (!this.eq_s_b("e")) break lab15;
484
+ this.slice_from("ir");
485
+ break;
486
+ }
487
+ }
488
+ break lab14;
489
+ }
490
+ this.c = this.limit - v_11;
491
+ if (this.c < I_pV) break lab13;
492
+ const v_16 = this.limit_backward;
493
+ this.limit_backward = I_pV;
494
+ this.ket = this.c;
495
+ if (this.find_among_b(a_6) === 0) {
496
+ this.limit_backward = v_16;
497
+ break lab13;
498
+ }
499
+ this.bra = this.c;
500
+ this.slice_del();
501
+ this.limit_backward = v_16;
502
+ }
503
+ this.c = this.limit - v_10;
504
+ const v_17 = this.limit - this.c;
505
+ lab20: {
506
+ this.ket = this.c;
507
+ if (!this.eq_s_b("i")) break lab20;
508
+ this.bra = this.c;
509
+ const v_18 = this.limit - this.c;
510
+ if (!this.eq_s_b("c")) break lab20;
511
+ this.c = this.limit - v_18;
512
+ if (
513
+ /**@type {boolean}*/
514
+ I_pV > this.c
515
+ ) break lab20;
516
+ this.slice_del();
517
+ }
518
+ this.c = this.limit - v_17;
519
+ break lab12;
520
+ }
521
+ this.c = this.limit - v_9;
522
+ this.ket = this.c;
523
+ if (this.find_among_b(a_7) === 0) break lab11;
524
+ this.bra = this.c;
525
+ if (
526
+ /**@type {boolean}*/
527
+ I_pV > this.c
528
+ ) break lab11;
529
+ this.slice_del();
315
530
  }
316
531
  }
317
- }
318
- if (longestSuffix !== null) {
319
- return { word: removeSuffix(word, longestSuffix), changed: true };
320
- }
321
- return { word, changed: false };
322
- }
323
- var RESIDUAL_SUFFIXES = ["a", "i", "o", "os", "\xE1", "\xED", "\xF3"];
324
- function removeResidualSuffix(word, rv) {
325
- let longestSuffix = null;
326
- for (const suffix of RESIDUAL_SUFFIXES) {
327
- if (endsWith(word, suffix) && suffixInRegion(word, suffix, rv)) {
328
- if (longestSuffix === null || suffix.length > longestSuffix.length) {
329
- longestSuffix = suffix;
532
+ this.c = this.limit - v_8;
533
+ const v_19 = this.limit - this.c;
534
+ lab21: {
535
+ this.ket = this.c;
536
+ a = this.find_among_b(a_8);
537
+ if (a === 0) break lab21;
538
+ this.bra = this.c;
539
+ switch (a) {
540
+ case 1: {
541
+ if (
542
+ /**@type {boolean}*/
543
+ I_pV > this.c
544
+ ) break lab21;
545
+ this.slice_del();
546
+ this.ket = this.c;
547
+ lab22: {
548
+ const v_20 = this.limit - this.c;
549
+ lab23: {
550
+ if (!this.eq_s_b("u")) break lab23;
551
+ this.bra = this.c;
552
+ const v_21 = this.limit - this.c;
553
+ if (!this.eq_s_b("g")) break lab23;
554
+ this.c = this.limit - v_21;
555
+ break lab22;
556
+ }
557
+ this.c = this.limit - v_20;
558
+ if (!this.eq_s_b("i")) break lab21;
559
+ this.bra = this.c;
560
+ const v_22 = this.limit - this.c;
561
+ if (!this.eq_s_b("c")) break lab21;
562
+ this.c = this.limit - v_22;
563
+ }
564
+ if (
565
+ /**@type {boolean}*/
566
+ I_pV > this.c
567
+ ) break lab21;
568
+ this.slice_del();
569
+ break;
570
+ }
571
+ case 2: {
572
+ this.slice_from("c");
573
+ break;
574
+ }
330
575
  }
331
576
  }
332
- }
333
- if (longestSuffix !== null) {
334
- return { word: removeSuffix(word, longestSuffix), changed: true };
335
- }
336
- return { word, changed: false };
337
- }
338
- function removeResidualForm(word, rv) {
339
- if (endsWith(word, "\xEA") && suffixInRegion(word, "\xEA", rv)) {
340
- return removeSuffix(word, "\xEA");
341
- }
342
- if (endsWith(word, "\xE9") && suffixInRegion(word, "\xE9", rv)) {
343
- return removeSuffix(word, "\xE9");
344
- }
345
- if (endsWith(word, "e") && suffixInRegion(word, "e", rv)) {
346
- word = removeSuffix(word, "e");
347
- if (endsWith(word, "gu") && suffixInRegion(word, "u", rv)) {
348
- word = removeSuffix(word, "u");
349
- } else if (endsWith(word, "ci") && suffixInRegion(word, "i", rv)) {
350
- word = removeSuffix(word, "i");
351
- }
352
- return word;
353
- }
354
- if (endsWith(word, "\xE7")) {
355
- return replaceSuffix(word, "\xE7", "c");
356
- }
357
- return word;
358
- }
359
- function normalizeNasals(word) {
360
- return word.replace(/\u00e3/g, "a~").replace(/\u00f5/g, "o~");
361
- }
362
- function restoreNasals(word) {
363
- return word.replace(/a~/g, "\xE3").replace(/o~/g, "\xF5");
364
- }
365
- function stem(word) {
366
- if (word.length < 3) return word;
367
- word = word.toLowerCase();
368
- word = normalizeNasals(word);
369
- const { rv, r1, r2 } = findRegions(word);
370
- const standardResult = removeStandardSuffix(word, r1, r2, rv);
371
- let standardOrVerbChanged = standardResult.changed;
372
- if (standardResult.changed) {
373
- word = standardResult.word;
374
- } else {
375
- const verbResult = removeVerbSuffix(word, rv);
376
- standardOrVerbChanged = verbResult.changed;
377
- word = verbResult.word;
378
- }
379
- if (standardOrVerbChanged) {
380
- if (endsWith(word, "i") && suffixInRegion(word, "i", rv)) {
381
- const preceding = word.length >= 2 ? word[word.length - 2] : "";
382
- if (preceding === "c") {
383
- word = removeSuffix(word, "i");
577
+ this.c = this.limit - v_19;
578
+ this.c = this.limit_backward;
579
+ const v_23 = this.c;
580
+ while (true) {
581
+ const v_24 = this.c;
582
+ lab25: {
583
+ this.bra = this.c;
584
+ a = this.find_among(a_1);
585
+ this.ket = this.c;
586
+ switch (a) {
587
+ case 1: {
588
+ this.slice_from("\xE3");
589
+ break;
590
+ }
591
+ case 2: {
592
+ this.slice_from("\xF5");
593
+ break;
594
+ }
595
+ case 3: {
596
+ if (this.c >= this.limit) break lab25;
597
+ this.c++;
598
+ break;
599
+ }
600
+ }
601
+ continue;
384
602
  }
603
+ this.c = v_24;
604
+ break;
385
605
  }
386
- } else {
387
- const residualResult = removeResidualSuffix(word, rv);
388
- word = residualResult.word;
606
+ this.c = v_23;
607
+ return true;
389
608
  }
390
- word = removeResidualForm(word, rv);
391
- word = restoreNasals(word);
392
- return word;
609
+ stem(input) {
610
+ this.setCurrent(input);
611
+ this.#stem();
612
+ return this.getCurrent();
613
+ }
614
+ };
615
+ var shared = new PortugueseStemmer();
616
+ function stem(token) {
617
+ return shared.stem(token);
393
618
  }
619
+
620
+ // src/languages/portuguese.ts
394
621
  var stopWords = /* @__PURE__ */ new Set([
395
622
  "de",
396
623
  "a",
@@ -596,11 +823,17 @@ var stopWords = /* @__PURE__ */ new Set([
596
823
  "ter\xEDamos",
597
824
  "teriam"
598
825
  ]);
826
+ var DIAERESIS = /\u0308/g;
827
+ function normalize(token) {
828
+ return removeMarks(token, DIAERESIS);
829
+ }
599
830
  var portuguese = {
600
831
  name: "portuguese",
832
+ revision: "c0a0c5c97ab9ca6e",
601
833
  stemmer: stem,
602
- stopWords,
603
- tokenizer: { splitPattern: /[^a-z0-9\u00e0-\u00fa]+/gi }
834
+ stopWords: withNormalisedSpellings(stopWords, normalize),
835
+ normalizer: normalize,
836
+ tokenizer: { splitPattern: /[^a-z0-9àáâãçéêíóôõúü]+/gi }
604
837
  };
605
838
 
606
839
  export { portuguese };