@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,395 +1,696 @@
1
- // src/languages/spanish.ts
2
- var VOWELS = "aeiou\xE1\xE9\xED\xF3\xFA\xFC";
3
- var ACCENT_A = /á/g;
4
- var ACCENT_E = /é/g;
5
- var ACCENT_I = /í/g;
6
- var ACCENT_O = /ó/g;
7
- var ACCENT_U = /ú/g;
8
- var STEP1_GROUP1_SUFFIXES = [
9
- "amientos",
10
- "imientos",
11
- "amiento",
12
- "imiento",
13
- "aciones",
14
- "uciones",
15
- "adoras",
16
- "adores",
17
- "ancias",
18
- "encias",
19
- "adora",
20
- "antes",
21
- "anzas",
22
- "ismos",
23
- "istas",
24
- "ables",
25
- "ibles",
26
- "aci\xF3n",
27
- "uci\xF3n",
28
- "icas",
29
- "ador",
30
- "ante",
31
- "anza",
32
- "icos",
33
- "ismo",
34
- "ista",
35
- "osas",
36
- "osos",
37
- "iva",
38
- "ivo",
39
- "ivas",
40
- "ivos",
41
- "ica",
42
- "ico",
43
- "osa",
44
- "oso",
45
- "able",
46
- "ible"
1
+ import { BaseStemmer } from '../chunk-U2BKYEC7.mjs';
2
+
3
+ // src/languages/snowball/spanish.ts
4
+ var a_0 = [
5
+ ["", 6],
6
+ ["\xE1", 1, 1],
7
+ ["\xE9", 2, 2],
8
+ ["\xED", 3, 3],
9
+ ["\xF3", 4, 4],
10
+ ["\xFA", 5, 5]
47
11
  ];
48
- var STEP1_GROUP2_SUFFIXES = ["log\xEDas", "log\xEDa"];
49
- var STEP1_GROUP3_SUFFIXES = ["uci\xF3n", "uciones"];
50
- var STEP1_GROUP4_SUFFIXES = ["encia", "encias"];
51
- var STEP1_GROUP5_SUFFIXES = ["amente"];
52
- var STEP1_GROUP6_SUFFIXES = ["mente"];
53
- var STEP1_GROUP7_SUFFIXES = ["idades", "idad"];
54
- var STEP1_ALL_SUFFIXES = [
55
- ...STEP1_GROUP1_SUFFIXES,
56
- ...STEP1_GROUP2_SUFFIXES,
57
- ...STEP1_GROUP3_SUFFIXES,
58
- ...STEP1_GROUP4_SUFFIXES,
59
- ...STEP1_GROUP5_SUFFIXES,
60
- ...STEP1_GROUP6_SUFFIXES,
61
- ...STEP1_GROUP7_SUFFIXES
12
+ var a_1 = [
13
+ ["la", -1],
14
+ ["sela", -1, 1],
15
+ ["le", -1],
16
+ ["me", -1],
17
+ ["se", -1],
18
+ ["lo", -1],
19
+ ["selo", -1, 1],
20
+ ["las", -1],
21
+ ["selas", -1, 1],
22
+ ["les", -1],
23
+ ["los", -1],
24
+ ["selos", -1, 1],
25
+ ["nos", -1]
62
26
  ];
63
- var Y_VERB_SUFFIXES = ["yeron", "yendo", "yamos", "yais", "yan", "yen", "yas", "yes", "ya", "ye", "yo", "y\xF3"];
64
- var STEP2B_VERB_SUFFIXES = [
65
- "i\xE9ramos",
66
- "i\xE9semos",
67
- "er\xEDamos",
68
- "ar\xEDamos",
69
- "ir\xEDamos",
70
- "\xE1ramos",
71
- "\xE1bamos",
72
- "\xE1semos",
73
- "\xEDamos",
74
- "ar\xEDais",
75
- "er\xEDais",
76
- "ir\xEDais",
77
- "ieran",
78
- "iesen",
79
- "ieron",
80
- "ir\xEDan",
81
- "er\xEDan",
82
- "ar\xEDan",
83
- "arais",
84
- "aseis",
85
- "er\xE9is",
86
- "ar\xE9is",
87
- "ir\xE9is",
88
- "ir\xEDas",
89
- "er\xEDas",
90
- "ar\xEDas",
91
- "ieras",
92
- "ieses",
93
- "abais",
94
- "aremos",
95
- "eremos",
96
- "iremos",
97
- "isteis",
98
- "asteis",
99
- "ierais",
100
- "ieseis",
101
- "iendo",
102
- "ando",
103
- "ar\xE1n",
104
- "er\xE1n",
105
- "ir\xE1n",
106
- "aron",
107
- "aban",
108
- "aran",
109
- "adas",
110
- "idas",
111
- "abas",
112
- "aras",
113
- "ases",
114
- "ir\xEDa",
115
- "er\xEDa",
116
- "ar\xEDa",
117
- "iera",
118
- "iese",
119
- "aste",
120
- "iste",
121
- "ados",
122
- "idos",
123
- "amos",
124
- "imos",
125
- "\xEDan",
126
- "\xE1is",
127
- "aba",
128
- "ada",
129
- "ida",
130
- "ara",
131
- "ase",
132
- "ado",
133
- "ido",
134
- "\xEDas",
135
- "\xE9is",
136
- "\xEDa",
137
- "ad",
138
- "ed",
139
- "id",
140
- "an",
141
- "i\xF3",
142
- "ar",
143
- "er",
144
- "ir",
145
- "as",
146
- "es",
147
- "\xEDs",
148
- "en",
149
- "ar\xE1",
150
- "er\xE1",
151
- "ir\xE1",
152
- "ar\xE9",
153
- "er\xE9",
154
- "ir\xE9",
155
- "\xE1t"
27
+ var a_2 = [
28
+ ["ando", 6],
29
+ ["iendo", 6],
30
+ ["yendo", 7],
31
+ ["\xE1ndo", 2],
32
+ ["i\xE9ndo", 1],
33
+ ["ar", 6],
34
+ ["er", 6],
35
+ ["ir", 6],
36
+ ["\xE1r", 3],
37
+ ["\xE9r", 4],
38
+ ["\xEDr", 5]
156
39
  ];
157
- var RESIDUAL_SUFFIXES = ["os", "a", "o", "\xE1", "\xED", "\xF3"];
158
- function isVowel(ch) {
159
- return VOWELS.includes(ch);
160
- }
161
- function findRegions(word) {
162
- let rv = word.length;
163
- let r1 = word.length;
164
- let r2 = word.length;
165
- if (word.length >= 2) {
166
- if (!isVowel(word[1])) {
167
- for (let i = 2; i < word.length; i++) {
168
- if (isVowel(word[i])) {
169
- rv = i + 1;
170
- break;
40
+ var a_3 = [
41
+ ["ic", -1],
42
+ ["ad", -1],
43
+ ["os", -1],
44
+ ["iv", 1]
45
+ ];
46
+ var a_4 = [
47
+ ["able", 1],
48
+ ["ible", 1],
49
+ ["ante", 1]
50
+ ];
51
+ var a_5 = [
52
+ ["ic", 1],
53
+ ["abil", 1],
54
+ ["iv", 1]
55
+ ];
56
+ var a_6 = [
57
+ ["ica", 1],
58
+ ["ancia", 2],
59
+ ["encia", 5],
60
+ ["adora", 2],
61
+ ["osa", 1],
62
+ ["ista", 1],
63
+ ["iva", 9],
64
+ ["anza", 1],
65
+ ["log\xEDa", 3],
66
+ ["idad", 8],
67
+ ["able", 1],
68
+ ["ible", 1],
69
+ ["ante", 2],
70
+ ["mente", 7],
71
+ ["amente", 6, 1],
72
+ ["acion", 2],
73
+ ["ucion", 4],
74
+ ["aci\xF3n", 2],
75
+ ["uci\xF3n", 4],
76
+ ["ico", 1],
77
+ ["ismo", 1],
78
+ ["oso", 1],
79
+ ["amiento", 1],
80
+ ["imiento", 1],
81
+ ["ivo", 9],
82
+ ["ador", 2],
83
+ ["icas", 1],
84
+ ["ancias", 2],
85
+ ["encias", 5],
86
+ ["adoras", 2],
87
+ ["osas", 1],
88
+ ["istas", 1],
89
+ ["ivas", 9],
90
+ ["anzas", 1],
91
+ ["log\xEDas", 3],
92
+ ["idades", 8],
93
+ ["ables", 1],
94
+ ["ibles", 1],
95
+ ["aciones", 2],
96
+ ["uciones", 4],
97
+ ["adores", 2],
98
+ ["antes", 2],
99
+ ["icos", 1],
100
+ ["ismos", 1],
101
+ ["osos", 1],
102
+ ["amientos", 1],
103
+ ["imientos", 1],
104
+ ["ivos", 9]
105
+ ];
106
+ var a_7 = [
107
+ ["ya", 1],
108
+ ["ye", 1],
109
+ ["yan", 1],
110
+ ["yen", 1],
111
+ ["yeron", 1],
112
+ ["yendo", 1],
113
+ ["yo", 1],
114
+ ["yas", 1],
115
+ ["yes", 1],
116
+ ["yais", 1],
117
+ ["yamos", 1],
118
+ ["y\xF3", 1]
119
+ ];
120
+ var a_8 = [
121
+ ["aba", 2],
122
+ ["ada", 2],
123
+ ["ida", 2],
124
+ ["ara", 2],
125
+ ["iera", 2],
126
+ ["\xEDa", 2],
127
+ ["ar\xEDa", 2, 1],
128
+ ["er\xEDa", 2, 2],
129
+ ["ir\xEDa", 2, 3],
130
+ ["ad", 2],
131
+ ["ed", 2],
132
+ ["id", 2],
133
+ ["ase", 2],
134
+ ["iese", 2],
135
+ ["aste", 2],
136
+ ["iste", 2],
137
+ ["an", 2],
138
+ ["aban", 2, 1],
139
+ ["aran", 2, 2],
140
+ ["ieran", 2, 3],
141
+ ["\xEDan", 2, 4],
142
+ ["ar\xEDan", 2, 1],
143
+ ["er\xEDan", 2, 2],
144
+ ["ir\xEDan", 2, 3],
145
+ ["en", 1],
146
+ ["asen", 2, 1],
147
+ ["iesen", 2, 2],
148
+ ["aron", 2],
149
+ ["ieron", 2],
150
+ ["ar\xE1n", 2],
151
+ ["er\xE1n", 2],
152
+ ["ir\xE1n", 2],
153
+ ["ado", 2],
154
+ ["ido", 2],
155
+ ["ando", 2],
156
+ ["iendo", 2],
157
+ ["ar", 2],
158
+ ["er", 2],
159
+ ["ir", 2],
160
+ ["as", 2],
161
+ ["abas", 2, 1],
162
+ ["adas", 2, 2],
163
+ ["idas", 2, 3],
164
+ ["aras", 2, 4],
165
+ ["ieras", 2, 5],
166
+ ["\xEDas", 2, 6],
167
+ ["ar\xEDas", 2, 1],
168
+ ["er\xEDas", 2, 2],
169
+ ["ir\xEDas", 2, 3],
170
+ ["es", 1],
171
+ ["ases", 2, 1],
172
+ ["ieses", 2, 2],
173
+ ["abais", 2],
174
+ ["arais", 2],
175
+ ["ierais", 2],
176
+ ["\xEDais", 2],
177
+ ["ar\xEDais", 2, 1],
178
+ ["er\xEDais", 2, 2],
179
+ ["ir\xEDais", 2, 3],
180
+ ["aseis", 2],
181
+ ["ieseis", 2],
182
+ ["asteis", 2],
183
+ ["isteis", 2],
184
+ ["\xE1is", 2],
185
+ ["\xE9is", 1],
186
+ ["ar\xE9is", 2, 1],
187
+ ["er\xE9is", 2, 2],
188
+ ["ir\xE9is", 2, 3],
189
+ ["ados", 2],
190
+ ["idos", 2],
191
+ ["amos", 2],
192
+ ["\xE1bamos", 2, 1],
193
+ ["\xE1ramos", 2, 2],
194
+ ["i\xE9ramos", 2, 3],
195
+ ["\xEDamos", 2, 4],
196
+ ["ar\xEDamos", 2, 1],
197
+ ["er\xEDamos", 2, 2],
198
+ ["ir\xEDamos", 2, 3],
199
+ ["emos", 1],
200
+ ["aremos", 2, 1],
201
+ ["eremos", 2, 2],
202
+ ["iremos", 2, 3],
203
+ ["\xE1semos", 2, 4],
204
+ ["i\xE9semos", 2, 5],
205
+ ["imos", 2],
206
+ ["ar\xE1s", 2],
207
+ ["er\xE1s", 2],
208
+ ["ir\xE1s", 2],
209
+ ["\xEDs", 2],
210
+ ["ar\xE1", 2],
211
+ ["er\xE1", 2],
212
+ ["ir\xE1", 2],
213
+ ["ar\xE9", 2],
214
+ ["er\xE9", 2],
215
+ ["ir\xE9", 2],
216
+ ["i\xF3", 2]
217
+ ];
218
+ var a_9 = [
219
+ ["a", 1],
220
+ ["e", 2],
221
+ ["o", 1],
222
+ ["os", 1],
223
+ ["\xE1", 1],
224
+ ["\xE9", 2],
225
+ ["\xED", 1],
226
+ ["\xF3", 1]
227
+ ];
228
+ var g_v = [17, 65, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 17, 4, 10];
229
+ var SpanishStemmer = class extends BaseStemmer {
230
+ #stem() {
231
+ let a;
232
+ let I_p2;
233
+ let I_p1;
234
+ let I_pV;
235
+ {
236
+ I_pV = this.limit;
237
+ I_p1 = this.limit;
238
+ I_p2 = this.limit;
239
+ const v_1 = this.c;
240
+ lab1: {
241
+ lab2: {
242
+ const v_2 = this.c;
243
+ lab3: {
244
+ if (!this.in_grouping(g_v, 97, 252)) break lab3;
245
+ lab4: {
246
+ const v_3 = this.c;
247
+ lab5: {
248
+ if (!this.out_grouping(g_v, 97, 252)) break lab5;
249
+ if (!this.go_out_grouping(g_v, 97, 252)) break lab5;
250
+ this.c++;
251
+ break lab4;
252
+ }
253
+ this.c = v_3;
254
+ if (!this.in_grouping(g_v, 97, 252)) break lab3;
255
+ if (!this.go_in_grouping(g_v, 97, 252)) break lab3;
256
+ this.c++;
257
+ }
258
+ break lab2;
259
+ }
260
+ this.c = v_2;
261
+ if (!this.out_grouping(g_v, 97, 252)) break lab1;
262
+ lab6: {
263
+ const v_4 = this.c;
264
+ lab7: {
265
+ if (!this.out_grouping(g_v, 97, 252)) break lab7;
266
+ if (!this.go_out_grouping(g_v, 97, 252)) break lab7;
267
+ this.c++;
268
+ break lab6;
269
+ }
270
+ this.c = v_4;
271
+ if (!this.in_grouping(g_v, 97, 252)) break lab1;
272
+ if (this.c >= this.limit) break lab1;
273
+ this.c++;
274
+ }
171
275
  }
276
+ I_pV = this.c;
172
277
  }
173
- } else if (isVowel(word[0])) {
174
- for (let i = 2; i < word.length; i++) {
175
- if (!isVowel(word[i])) {
176
- rv = i + 1;
177
- break;
178
- }
278
+ this.c = v_1;
279
+ const v_5 = this.c;
280
+ lab8: {
281
+ if (!this.go_out_grouping(g_v, 97, 252)) break lab8;
282
+ this.c++;
283
+ if (!this.go_in_grouping(g_v, 97, 252)) break lab8;
284
+ this.c++;
285
+ I_p1 = this.c;
286
+ if (!this.go_out_grouping(g_v, 97, 252)) break lab8;
287
+ this.c++;
288
+ if (!this.go_in_grouping(g_v, 97, 252)) break lab8;
289
+ this.c++;
290
+ I_p2 = this.c;
179
291
  }
180
- } else {
181
- rv = 3;
292
+ this.c = v_5;
182
293
  }
183
- }
184
- for (let i = 0; i < word.length - 1; i++) {
185
- if (isVowel(word[i]) && !isVowel(word[i + 1])) {
186
- r1 = i + 2;
187
- break;
188
- }
189
- }
190
- for (let i = r1; i < word.length - 1; i++) {
191
- if (isVowel(word[i]) && !isVowel(word[i + 1])) {
192
- r2 = i + 2;
193
- break;
194
- }
195
- }
196
- return { rv, r1, r2 };
197
- }
198
- function endsWith(word, suffix) {
199
- return word.endsWith(suffix);
200
- }
201
- function removeSuffix(word, suffix) {
202
- return word.slice(0, word.length - suffix.length);
203
- }
204
- function suffixInRegion(word, suffix, regionStart) {
205
- return word.length - suffix.length >= regionStart;
206
- }
207
- function findLongestAmong(word, suffixes, regionStart) {
208
- let longestMatch = null;
209
- for (const suffix of suffixes) {
210
- if (endsWith(word, suffix) && suffixInRegion(word, suffix, regionStart)) {
211
- if (longestMatch === null || suffix.length > longestMatch.length) {
212
- longestMatch = suffix;
213
- }
214
- }
215
- }
216
- return longestMatch;
217
- }
218
- function removeAccents(word) {
219
- return word.replace(ACCENT_A, "a").replace(ACCENT_E, "e").replace(ACCENT_I, "i").replace(ACCENT_O, "o").replace(ACCENT_U, "u");
220
- }
221
- var ATTACHED_PRONOUNS = ["selas", "selos", "sela", "selo", "las", "les", "los", "nos", "la", "le", "lo", "me", "se"];
222
- var PRONOUN_VERB_SUFFIXES = ["i\xE9ndo", "\xE1ndo", "\xE1r", "\xE9r", "\xEDr", "iendo", "ando", "yendo", "ar", "er", "ir"];
223
- function step0AttachedPronoun(word, rv) {
224
- for (const pronoun of ATTACHED_PRONOUNS) {
225
- if (!endsWith(word, pronoun)) continue;
226
- if (!suffixInRegion(word, pronoun, rv)) continue;
227
- const beforePronoun = removeSuffix(word, pronoun);
228
- for (const verbSuffix of PRONOUN_VERB_SUFFIXES) {
229
- if (!endsWith(beforePronoun, verbSuffix)) continue;
230
- if (verbSuffix === "yendo" && endsWith(removeSuffix(beforePronoun, "yendo"), "u")) {
231
- return removeSuffix(word, pronoun);
232
- }
233
- if (verbSuffix === "i\xE9ndo") {
234
- return `${removeSuffix(word, pronoun).slice(0, -5)}iendo`;
235
- }
236
- if (verbSuffix === "\xE1ndo") {
237
- return `${removeSuffix(word, pronoun).slice(0, -4)}ando`;
238
- }
239
- if (verbSuffix === "\xE1r") {
240
- return `${removeSuffix(word, pronoun).slice(0, -2)}ar`;
241
- }
242
- if (verbSuffix === "\xE9r") {
243
- return `${removeSuffix(word, pronoun).slice(0, -2)}er`;
244
- }
245
- if (verbSuffix === "\xEDr") {
246
- return `${removeSuffix(word, pronoun).slice(0, -2)}ir`;
247
- }
248
- return removeSuffix(word, pronoun);
249
- }
250
- }
251
- return word;
252
- }
253
- function step1StandardSuffix(word, r1, r2) {
254
- let longestSuffix = null;
255
- for (const s of STEP1_ALL_SUFFIXES) {
256
- if (endsWith(word, s)) {
257
- if (longestSuffix === null || s.length > longestSuffix.length) {
258
- longestSuffix = s;
259
- }
260
- }
261
- }
262
- if (!longestSuffix) return { word, changed: false };
263
- if (STEP1_GROUP1_SUFFIXES.includes(longestSuffix)) {
264
- if (longestSuffix === "iva" || longestSuffix === "ivo" || longestSuffix === "ivas" || longestSuffix === "ivos") {
265
- if (!suffixInRegion(word, longestSuffix, r2)) return { word, changed: false };
266
- word = removeSuffix(word, longestSuffix);
267
- if (endsWith(word, "at") && suffixInRegion(word, "at", r2)) {
268
- word = removeSuffix(word, "at");
294
+ this.limit_backward = this.c;
295
+ this.c = this.limit;
296
+ const v_6 = this.limit - this.c;
297
+ lab9: {
298
+ this.ket = this.c;
299
+ if (this.find_among_b(a_1) === 0) break lab9;
300
+ this.bra = this.c;
301
+ a = this.find_among_b(a_2);
302
+ if (a === 0) break lab9;
303
+ if (
304
+ /**@type {boolean}*/
305
+ I_pV > this.c
306
+ ) break lab9;
307
+ switch (a) {
308
+ case 1: {
309
+ this.bra = this.c;
310
+ this.slice_from("iendo");
311
+ break;
312
+ }
313
+ case 2: {
314
+ this.bra = this.c;
315
+ this.slice_from("ando");
316
+ break;
317
+ }
318
+ case 3: {
319
+ this.bra = this.c;
320
+ this.slice_from("ar");
321
+ break;
322
+ }
323
+ case 4: {
324
+ this.bra = this.c;
325
+ this.slice_from("er");
326
+ break;
327
+ }
328
+ case 5: {
329
+ this.bra = this.c;
330
+ this.slice_from("ir");
331
+ break;
332
+ }
333
+ case 6: {
334
+ this.slice_del();
335
+ break;
336
+ }
337
+ case 7: {
338
+ if (!this.eq_s_b("u")) break lab9;
339
+ this.slice_del();
340
+ break;
341
+ }
269
342
  }
270
- return { word, changed: true };
271
343
  }
272
- if (!suffixInRegion(word, longestSuffix, r2)) return { word, changed: false };
273
- return { word: removeSuffix(word, longestSuffix), changed: true };
274
- }
275
- if (STEP1_GROUP2_SUFFIXES.includes(longestSuffix)) {
276
- if (!suffixInRegion(word, longestSuffix, r2)) return { word, changed: false };
277
- return { word: `${removeSuffix(word, longestSuffix)}log`, changed: true };
278
- }
279
- if (STEP1_GROUP3_SUFFIXES.includes(longestSuffix)) {
280
- if (!suffixInRegion(word, longestSuffix, r2)) return { word, changed: false };
281
- return { word: `${removeSuffix(word, longestSuffix)}u`, changed: true };
282
- }
283
- if (STEP1_GROUP4_SUFFIXES.includes(longestSuffix)) {
284
- if (!suffixInRegion(word, longestSuffix, r2)) return { word, changed: false };
285
- return { word: `${removeSuffix(word, longestSuffix)}ente`, changed: true };
286
- }
287
- if (STEP1_GROUP5_SUFFIXES.includes(longestSuffix)) {
288
- if (!suffixInRegion(word, longestSuffix, r1)) return { word, changed: false };
289
- word = removeSuffix(word, longestSuffix);
290
- if (endsWith(word, "iv") && suffixInRegion(word, "iv", r2)) {
291
- word = removeSuffix(word, "iv");
292
- if (endsWith(word, "at") && suffixInRegion(word, "at", r2)) {
293
- word = removeSuffix(word, "at");
344
+ this.c = this.limit - v_6;
345
+ const v_7 = this.limit - this.c;
346
+ lab10: {
347
+ lab11: {
348
+ const v_8 = this.limit - this.c;
349
+ lab12: {
350
+ this.ket = this.c;
351
+ a = this.find_among_b(a_6);
352
+ if (a === 0) break lab12;
353
+ this.bra = this.c;
354
+ switch (a) {
355
+ case 1: {
356
+ if (
357
+ /**@type {boolean}*/
358
+ I_p2 > this.c
359
+ ) break lab12;
360
+ this.slice_del();
361
+ break;
362
+ }
363
+ case 2: {
364
+ if (
365
+ /**@type {boolean}*/
366
+ I_p2 > this.c
367
+ ) break lab12;
368
+ this.slice_del();
369
+ const v_9 = this.limit - this.c;
370
+ lab13: {
371
+ this.ket = this.c;
372
+ if (!this.eq_s_b("ic")) {
373
+ this.c = this.limit - v_9;
374
+ break lab13;
375
+ }
376
+ this.bra = this.c;
377
+ if (
378
+ /**@type {boolean}*/
379
+ I_p2 > this.c
380
+ ) {
381
+ this.c = this.limit - v_9;
382
+ break lab13;
383
+ }
384
+ this.slice_del();
385
+ }
386
+ break;
387
+ }
388
+ case 3: {
389
+ if (
390
+ /**@type {boolean}*/
391
+ I_p2 > this.c
392
+ ) break lab12;
393
+ this.slice_from("log");
394
+ break;
395
+ }
396
+ case 4: {
397
+ if (
398
+ /**@type {boolean}*/
399
+ I_p2 > this.c
400
+ ) break lab12;
401
+ this.slice_from("u");
402
+ break;
403
+ }
404
+ case 5: {
405
+ if (
406
+ /**@type {boolean}*/
407
+ I_p2 > this.c
408
+ ) break lab12;
409
+ this.slice_from("ente");
410
+ break;
411
+ }
412
+ case 6: {
413
+ if (
414
+ /**@type {boolean}*/
415
+ I_p1 > this.c
416
+ ) break lab12;
417
+ this.slice_del();
418
+ const v_10 = this.limit - this.c;
419
+ lab14: {
420
+ this.ket = this.c;
421
+ a = this.find_among_b(a_3);
422
+ if (a === 0) {
423
+ this.c = this.limit - v_10;
424
+ break lab14;
425
+ }
426
+ this.bra = this.c;
427
+ if (
428
+ /**@type {boolean}*/
429
+ I_p2 > this.c
430
+ ) {
431
+ this.c = this.limit - v_10;
432
+ break lab14;
433
+ }
434
+ this.slice_del();
435
+ switch (a) {
436
+ case 1: {
437
+ this.ket = this.c;
438
+ if (!this.eq_s_b("at")) {
439
+ this.c = this.limit - v_10;
440
+ break lab14;
441
+ }
442
+ this.bra = this.c;
443
+ if (
444
+ /**@type {boolean}*/
445
+ I_p2 > this.c
446
+ ) {
447
+ this.c = this.limit - v_10;
448
+ break lab14;
449
+ }
450
+ this.slice_del();
451
+ break;
452
+ }
453
+ }
454
+ }
455
+ break;
456
+ }
457
+ case 7: {
458
+ if (
459
+ /**@type {boolean}*/
460
+ I_p2 > this.c
461
+ ) break lab12;
462
+ this.slice_del();
463
+ const v_11 = this.limit - this.c;
464
+ lab15: {
465
+ this.ket = this.c;
466
+ if (this.find_among_b(a_4) === 0) {
467
+ this.c = this.limit - v_11;
468
+ break lab15;
469
+ }
470
+ this.bra = this.c;
471
+ if (
472
+ /**@type {boolean}*/
473
+ I_p2 > this.c
474
+ ) {
475
+ this.c = this.limit - v_11;
476
+ break lab15;
477
+ }
478
+ this.slice_del();
479
+ }
480
+ break;
481
+ }
482
+ case 8: {
483
+ if (
484
+ /**@type {boolean}*/
485
+ I_p2 > this.c
486
+ ) break lab12;
487
+ this.slice_del();
488
+ const v_12 = this.limit - this.c;
489
+ lab16: {
490
+ this.ket = this.c;
491
+ if (this.find_among_b(a_5) === 0) {
492
+ this.c = this.limit - v_12;
493
+ break lab16;
494
+ }
495
+ this.bra = this.c;
496
+ if (
497
+ /**@type {boolean}*/
498
+ I_p2 > this.c
499
+ ) {
500
+ this.c = this.limit - v_12;
501
+ break lab16;
502
+ }
503
+ this.slice_del();
504
+ }
505
+ break;
506
+ }
507
+ case 9: {
508
+ if (
509
+ /**@type {boolean}*/
510
+ I_p2 > this.c
511
+ ) break lab12;
512
+ this.slice_del();
513
+ const v_13 = this.limit - this.c;
514
+ lab17: {
515
+ this.ket = this.c;
516
+ if (!this.eq_s_b("at")) {
517
+ this.c = this.limit - v_13;
518
+ break lab17;
519
+ }
520
+ this.bra = this.c;
521
+ if (
522
+ /**@type {boolean}*/
523
+ I_p2 > this.c
524
+ ) {
525
+ this.c = this.limit - v_13;
526
+ break lab17;
527
+ }
528
+ this.slice_del();
529
+ }
530
+ break;
531
+ }
532
+ }
533
+ break lab11;
534
+ }
535
+ this.c = this.limit - v_8;
536
+ lab18: {
537
+ if (this.c < I_pV) break lab18;
538
+ const v_14 = this.limit_backward;
539
+ this.limit_backward = I_pV;
540
+ this.ket = this.c;
541
+ if (this.find_among_b(a_7) === 0) {
542
+ this.limit_backward = v_14;
543
+ break lab18;
544
+ }
545
+ this.bra = this.c;
546
+ this.limit_backward = v_14;
547
+ if (!this.eq_s_b("u")) break lab18;
548
+ this.slice_del();
549
+ break lab11;
550
+ }
551
+ this.c = this.limit - v_8;
552
+ if (this.c < I_pV) break lab10;
553
+ const v_15 = this.limit_backward;
554
+ this.limit_backward = I_pV;
555
+ this.ket = this.c;
556
+ a = this.find_among_b(a_8);
557
+ if (a === 0) {
558
+ this.limit_backward = v_15;
559
+ break lab10;
560
+ }
561
+ this.bra = this.c;
562
+ this.limit_backward = v_15;
563
+ switch (a) {
564
+ case 1: {
565
+ const v_16 = this.limit - this.c;
566
+ lab19: {
567
+ if (!this.eq_s_b("u")) {
568
+ this.c = this.limit - v_16;
569
+ break lab19;
570
+ }
571
+ const v_17 = this.limit - this.c;
572
+ if (!this.eq_s_b("g")) {
573
+ this.c = this.limit - v_16;
574
+ break lab19;
575
+ }
576
+ this.c = this.limit - v_17;
577
+ }
578
+ this.bra = this.c;
579
+ this.slice_del();
580
+ break;
581
+ }
582
+ case 2: {
583
+ this.slice_del();
584
+ break;
585
+ }
586
+ }
294
587
  }
295
- } else if (endsWith(word, "os") && suffixInRegion(word, "os", r2)) {
296
- word = removeSuffix(word, "os");
297
- } else if (endsWith(word, "ic") && suffixInRegion(word, "ic", r2)) {
298
- word = removeSuffix(word, "ic");
299
- } else if (endsWith(word, "ad") && suffixInRegion(word, "ad", r2)) {
300
- word = removeSuffix(word, "ad");
301
- }
302
- return { word, changed: true };
303
- }
304
- if (STEP1_GROUP6_SUFFIXES.includes(longestSuffix)) {
305
- if (!suffixInRegion(word, longestSuffix, r2)) return { word, changed: false };
306
- word = removeSuffix(word, longestSuffix);
307
- if (endsWith(word, "ante") && suffixInRegion(word, "ante", r2)) {
308
- word = removeSuffix(word, "ante");
309
- } else if (endsWith(word, "able") && suffixInRegion(word, "able", r2)) {
310
- word = removeSuffix(word, "able");
311
- } else if (endsWith(word, "ible") && suffixInRegion(word, "ible", r2)) {
312
- word = removeSuffix(word, "ible");
313
- }
314
- return { word, changed: true };
315
- }
316
- if (STEP1_GROUP7_SUFFIXES.includes(longestSuffix)) {
317
- if (!suffixInRegion(word, longestSuffix, r2)) return { word, changed: false };
318
- word = removeSuffix(word, longestSuffix);
319
- if (endsWith(word, "abil") && suffixInRegion(word, "abil", r2)) {
320
- word = removeSuffix(word, "abil");
321
- } else if (endsWith(word, "ic") && suffixInRegion(word, "ic", r2)) {
322
- word = removeSuffix(word, "ic");
323
- } else if (endsWith(word, "iv") && suffixInRegion(word, "iv", r2)) {
324
- word = removeSuffix(word, "iv");
325
- }
326
- return { word, changed: true };
327
- }
328
- return { word, changed: false };
329
- }
330
- function step2aYVerbSuffix(word, rv) {
331
- const suffix = findLongestAmong(word, Y_VERB_SUFFIXES, rv);
332
- if (suffix) {
333
- const stemmed = removeSuffix(word, suffix);
334
- if (stemmed.length > 0 && stemmed[stemmed.length - 1] === "u") {
335
- return { word: stemmed, changed: true };
336
588
  }
337
- }
338
- return { word, changed: false };
339
- }
340
- function step2bVerbSuffix(word, rv) {
341
- const suffix = findLongestAmong(word, STEP2B_VERB_SUFFIXES, rv);
342
- if (!suffix) return { word, changed: false };
343
- if (suffix === "en" || suffix === "es" || suffix === "\xE9is" || suffix === "emos") {
344
- word = removeSuffix(word, suffix);
345
- if (endsWith(word, "gu")) {
346
- if (suffixInRegion(word, "u", rv)) {
347
- word = removeSuffix(word, "u");
589
+ this.c = this.limit - v_7;
590
+ const v_18 = this.limit - this.c;
591
+ lab20: {
592
+ this.ket = this.c;
593
+ a = this.find_among_b(a_9);
594
+ if (a === 0) break lab20;
595
+ this.bra = this.c;
596
+ switch (a) {
597
+ case 1: {
598
+ if (
599
+ /**@type {boolean}*/
600
+ I_pV > this.c
601
+ ) break lab20;
602
+ this.slice_del();
603
+ break;
604
+ }
605
+ case 2: {
606
+ if (
607
+ /**@type {boolean}*/
608
+ I_pV > this.c
609
+ ) break lab20;
610
+ this.slice_del();
611
+ const v_19 = this.limit - this.c;
612
+ lab21: {
613
+ this.ket = this.c;
614
+ if (!this.eq_s_b("u")) {
615
+ this.c = this.limit - v_19;
616
+ break lab21;
617
+ }
618
+ this.bra = this.c;
619
+ const v_20 = this.limit - this.c;
620
+ if (!this.eq_s_b("g")) {
621
+ this.c = this.limit - v_19;
622
+ break lab21;
623
+ }
624
+ this.c = this.limit - v_20;
625
+ if (
626
+ /**@type {boolean}*/
627
+ I_pV > this.c
628
+ ) {
629
+ this.c = this.limit - v_19;
630
+ break lab21;
631
+ }
632
+ this.slice_del();
633
+ }
634
+ break;
635
+ }
348
636
  }
349
637
  }
350
- return { word, changed: true };
351
- }
352
- return { word: removeSuffix(word, suffix), changed: true };
353
- }
354
- function step3ResidualSuffix(word, rv) {
355
- const suffix = findLongestAmong(word, RESIDUAL_SUFFIXES, rv);
356
- if (suffix) {
357
- return removeSuffix(word, suffix);
358
- }
359
- if (endsWith(word, "e") || endsWith(word, "\xE9")) {
360
- const eSuffix = endsWith(word, "\xE9") ? "\xE9" : "e";
361
- if (suffixInRegion(word, eSuffix, rv)) {
362
- word = removeSuffix(word, eSuffix);
363
- if (endsWith(word, "gu") && suffixInRegion(word, "u", rv)) {
364
- word = removeSuffix(word, "u");
638
+ this.c = this.limit - v_18;
639
+ this.c = this.limit_backward;
640
+ const v_21 = this.c;
641
+ while (true) {
642
+ const v_22 = this.c;
643
+ lab23: {
644
+ this.bra = this.c;
645
+ a = this.find_among(a_0);
646
+ this.ket = this.c;
647
+ switch (a) {
648
+ case 1: {
649
+ this.slice_from("a");
650
+ break;
651
+ }
652
+ case 2: {
653
+ this.slice_from("e");
654
+ break;
655
+ }
656
+ case 3: {
657
+ this.slice_from("i");
658
+ break;
659
+ }
660
+ case 4: {
661
+ this.slice_from("o");
662
+ break;
663
+ }
664
+ case 5: {
665
+ this.slice_from("u");
666
+ break;
667
+ }
668
+ case 6: {
669
+ if (this.c >= this.limit) break lab23;
670
+ this.c++;
671
+ break;
672
+ }
673
+ }
674
+ continue;
365
675
  }
366
- return word;
676
+ this.c = v_22;
677
+ break;
367
678
  }
679
+ this.c = v_21;
680
+ return true;
368
681
  }
369
- return word;
370
- }
371
- function stem(word) {
372
- if (word.length < 3) return word;
373
- const { rv, r1, r2 } = findRegions(word);
374
- word = step0AttachedPronoun(word, rv);
375
- const step1Result = step1StandardSuffix(word, r1, r2);
376
- let stemChanged = step1Result.changed;
377
- word = step1Result.word;
378
- if (!stemChanged) {
379
- const step2aResult = step2aYVerbSuffix(word, rv);
380
- if (step2aResult.changed) {
381
- word = step2aResult.word;
382
- stemChanged = true;
383
- } else {
384
- const step2bResult = step2bVerbSuffix(word, rv);
385
- word = step2bResult.word;
386
- stemChanged = step2bResult.changed;
387
- }
682
+ stem(input) {
683
+ this.setCurrent(input);
684
+ this.#stem();
685
+ return this.getCurrent();
388
686
  }
389
- word = step3ResidualSuffix(word, rv);
390
- word = removeAccents(word);
391
- return word;
687
+ };
688
+ var shared = new SpanishStemmer();
689
+ function stem(token) {
690
+ return shared.stem(token);
392
691
  }
692
+
693
+ // src/languages/spanish.ts
393
694
  var stopWords = /* @__PURE__ */ new Set([
394
695
  "a",
395
696
  "al",
@@ -596,6 +897,7 @@ var stopWords = /* @__PURE__ */ new Set([
596
897
  ]);
597
898
  var spanish = {
598
899
  name: "spanish",
900
+ revision: "8dc152fd2fcce882",
599
901
  stemmer: stem,
600
902
  stopWords,
601
903
  tokenizer: {