@finbheara/names 0.9.2 → 0.11.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 (40) hide show
  1. package/README.md +38 -1
  2. package/dist/chunks/{index-0vg56t5v.js → index-61wk7v9c.js} +3 -3
  3. package/dist/chunks/{index-0qptxnwh.js → index-7vvt5hhy.js} +13 -2
  4. package/dist/chunks/{index-0qptxnwh.js.map → index-7vvt5hhy.js.map} +2 -2
  5. package/dist/chunks/index-ebebeamh.js +446 -0
  6. package/dist/chunks/index-ebebeamh.js.map +10 -0
  7. package/dist/chunks/{index-fzzq5txh.js → index-jx97zxtz.js} +4 -4
  8. package/dist/chunks/{index-fzzq5txh.js.map → index-jx97zxtz.js.map} +3 -3
  9. package/dist/chunks/{index-2fsdvhaf.js → index-kw6gbrnq.js} +2 -2
  10. package/dist/chunks/{index-knrkej0f.js → index-n4t288kj.js} +72 -8
  11. package/dist/chunks/{index-knrkej0f.js.map → index-n4t288kj.js.map} +5 -3
  12. package/dist/chunks/{index-d4wr471g.js → index-pncn9y2r.js} +2 -2
  13. package/dist/chunks/index-qsznkk4s.js +3 -0
  14. package/dist/chunks/index-qsznkk4s.js.map +9 -0
  15. package/dist/chunks/{index-852w8w1s.js → index-r5fp3znj.js} +3 -3
  16. package/dist/chunks/phrase-672g18kw.js +11 -0
  17. package/dist/classifier/index.js +3 -3
  18. package/dist/cli/census.js +4 -4
  19. package/dist/index.js +25 -8
  20. package/dist/index.js.map +1 -1
  21. package/dist/lexicon/index.js +1 -1
  22. package/dist/measure/index.js +4 -4
  23. package/dist/normalize/index.js +17 -5
  24. package/dist/normalize/index.js.map +1 -1
  25. package/dist/phonetic/index.js +10 -0
  26. package/dist/phonetic/index.js.map +9 -0
  27. package/dist/types/index.d.ts +2 -0
  28. package/dist/types/normalize/block-keys.d.ts +53 -0
  29. package/dist/types/normalize/index.d.ts +2 -0
  30. package/dist/types/normalize/name-columns.d.ts +51 -0
  31. package/dist/types/phonetic/double-metaphone.d.ts +25 -0
  32. package/dist/types/phonetic/index.d.ts +11 -0
  33. package/names.txt +11 -0
  34. package/package.json +8 -2
  35. package/dist/chunks/phrase-dczgr4vs.js +0 -11
  36. /package/dist/chunks/{index-0vg56t5v.js.map → index-61wk7v9c.js.map} +0 -0
  37. /package/dist/chunks/{index-2fsdvhaf.js.map → index-kw6gbrnq.js.map} +0 -0
  38. /package/dist/chunks/{index-d4wr471g.js.map → index-pncn9y2r.js.map} +0 -0
  39. /package/dist/chunks/{index-852w8w1s.js.map → index-r5fp3znj.js.map} +0 -0
  40. /package/dist/chunks/{phrase-dczgr4vs.js.map → phrase-672g18kw.js.map} +0 -0
@@ -0,0 +1,446 @@
1
+ // src/phonetic/double-metaphone.ts
2
+ function isVowel(c) {
3
+ return c !== "" && "AEIOUY".includes(c);
4
+ }
5
+ function isSlavoGermanic(w) {
6
+ return /W|K|CZ|WITZ/.test(w);
7
+ }
8
+ function doubleMetaphone2(word) {
9
+ const w = (word ?? "").toUpperCase();
10
+ const length = w.length;
11
+ const last = length - 1;
12
+ const slavo = isSlavoGermanic(w);
13
+ let primary = "";
14
+ let secondary = "";
15
+ const at = (i) => w.charAt(i);
16
+ const stringAt = (start, len, list) => {
17
+ if (start < 0 || start >= length)
18
+ return false;
19
+ return list.includes(w.substring(start, start + len));
20
+ };
21
+ const add = (p, s) => {
22
+ primary += p;
23
+ secondary += s === undefined ? p : s;
24
+ };
25
+ let n = 0;
26
+ if (stringAt(0, 2, ["GN", "KN", "PN", "WR", "PS"]))
27
+ n = 1;
28
+ if (at(0) === "X") {
29
+ add("S");
30
+ n = 1;
31
+ }
32
+ while (n < length && (primary.length < 4 || secondary.length < 4)) {
33
+ const c = at(n);
34
+ switch (c) {
35
+ case "A":
36
+ case "E":
37
+ case "I":
38
+ case "O":
39
+ case "U":
40
+ case "Y":
41
+ if (n === 0)
42
+ add("A");
43
+ n += 1;
44
+ break;
45
+ case "B":
46
+ add("P");
47
+ n += at(n + 1) === "B" ? 2 : 1;
48
+ break;
49
+ case "C":
50
+ if (n > 1 && !isVowel(at(n - 2)) && stringAt(n - 1, 3, ["ACH"]) && at(n + 2) !== "I" && (at(n + 2) !== "E" || stringAt(n - 2, 6, ["BACHER", "MACHER"]))) {
51
+ add("K");
52
+ n += 2;
53
+ break;
54
+ }
55
+ if (n === 0 && stringAt(0, 6, ["CAESAR"])) {
56
+ add("S");
57
+ n += 2;
58
+ break;
59
+ }
60
+ if (stringAt(n, 4, ["CHIA"])) {
61
+ add("K");
62
+ n += 2;
63
+ break;
64
+ }
65
+ if (stringAt(n, 2, ["CH"])) {
66
+ if (n > 0 && stringAt(n, 4, ["CHAE"])) {
67
+ add("K", "X");
68
+ n += 2;
69
+ break;
70
+ }
71
+ if (n === 0 && (stringAt(n + 1, 5, ["HARAC", "HARIS"]) || stringAt(n + 1, 3, ["HOR", "HYM", "HIA", "HEM"])) && !stringAt(0, 5, ["CHORE"])) {
72
+ add("K");
73
+ n += 2;
74
+ break;
75
+ }
76
+ if (stringAt(0, 4, ["VAN ", "VON "]) || stringAt(0, 3, ["SCH"]) || stringAt(n - 2, 6, ["ORCHES", "ARCHIT", "ORCHID"]) || stringAt(n + 2, 1, ["T", "S"]) || (stringAt(n - 1, 1, ["A", "O", "U", "E"]) || n === 0) && stringAt(n + 2, 1, ["L", "R", "N", "M", "B", "H", "F", "V", "W", " "])) {
77
+ add("K");
78
+ } else if (n > 0) {
79
+ if (stringAt(0, 2, ["MC"]))
80
+ add("K");
81
+ else
82
+ add("X", "K");
83
+ } else {
84
+ add("X");
85
+ }
86
+ n += 2;
87
+ break;
88
+ }
89
+ if (stringAt(n, 2, ["CZ"]) && !stringAt(n - 2, 4, ["WICZ"])) {
90
+ add("S", "X");
91
+ n += 2;
92
+ break;
93
+ }
94
+ if (stringAt(n + 1, 3, ["CIA"])) {
95
+ add("X");
96
+ n += 3;
97
+ break;
98
+ }
99
+ if (stringAt(n, 2, ["CC"]) && !(n === 1 && at(0) === "M")) {
100
+ if (stringAt(n + 2, 1, ["I", "E", "H"]) && !stringAt(n + 2, 2, ["HU"])) {
101
+ if (n === 1 && at(n - 1) === "A" || stringAt(n - 1, 5, ["UCCEE", "UCCES"])) {
102
+ add("KS");
103
+ } else {
104
+ add("X");
105
+ }
106
+ n += 3;
107
+ break;
108
+ }
109
+ add("K");
110
+ n += 2;
111
+ break;
112
+ }
113
+ if (stringAt(n, 2, ["CK", "CG", "CQ"])) {
114
+ add("K");
115
+ n += 2;
116
+ break;
117
+ }
118
+ if (stringAt(n, 2, ["CI", "CE", "CY"])) {
119
+ if (stringAt(n, 3, ["CIO", "CIE", "CIA"]))
120
+ add("S", "X");
121
+ else
122
+ add("S");
123
+ n += 2;
124
+ break;
125
+ }
126
+ add("K");
127
+ if (stringAt(n + 1, 2, [" C", " Q", " G"]))
128
+ n += 3;
129
+ else if (stringAt(n + 1, 1, ["C", "K", "Q"]) && !stringAt(n + 1, 2, ["CE", "CI"]))
130
+ n += 2;
131
+ else
132
+ n += 1;
133
+ break;
134
+ case "D":
135
+ if (stringAt(n, 2, ["DG"])) {
136
+ if (stringAt(n + 2, 1, ["I", "E", "Y"])) {
137
+ add("J");
138
+ n += 3;
139
+ } else {
140
+ add("TK");
141
+ n += 2;
142
+ }
143
+ break;
144
+ }
145
+ if (stringAt(n, 2, ["DT", "DD"])) {
146
+ add("T");
147
+ n += 2;
148
+ break;
149
+ }
150
+ add("T");
151
+ n += 1;
152
+ break;
153
+ case "F":
154
+ add("F");
155
+ n += at(n + 1) === "F" ? 2 : 1;
156
+ break;
157
+ case "G":
158
+ if (at(n + 1) === "H") {
159
+ if (n > 0 && !isVowel(at(n - 1))) {
160
+ add("K");
161
+ n += 2;
162
+ break;
163
+ }
164
+ if (n === 0) {
165
+ if (at(n + 2) === "I")
166
+ add("J");
167
+ else
168
+ add("K");
169
+ n += 2;
170
+ break;
171
+ }
172
+ if (n > 1 && stringAt(n - 2, 1, ["B", "H", "D"]) || n > 2 && stringAt(n - 3, 1, ["B", "H", "D"]) || n > 3 && stringAt(n - 4, 1, ["B", "H"])) {
173
+ n += 2;
174
+ break;
175
+ }
176
+ if (n > 2 && at(n - 1) === "U" && stringAt(n - 3, 1, ["C", "G", "L", "R", "T"])) {
177
+ add("F");
178
+ } else if (n > 0 && at(n - 1) !== "I") {
179
+ add("K");
180
+ }
181
+ n += 2;
182
+ break;
183
+ }
184
+ if (at(n + 1) === "N") {
185
+ if (n === 1 && isVowel(at(0)) && !slavo) {
186
+ add("KN", "N");
187
+ } else if (!stringAt(n + 2, 2, ["EY"]) && at(n + 1) !== "Y" && !slavo) {
188
+ add("N", "KN");
189
+ } else {
190
+ add("KN");
191
+ }
192
+ n += 2;
193
+ break;
194
+ }
195
+ if (stringAt(n + 1, 2, ["LI"]) && !slavo) {
196
+ add("KL", "L");
197
+ n += 2;
198
+ break;
199
+ }
200
+ if (n === 0 && (at(n + 1) === "Y" || stringAt(n + 1, 2, ["ES", "EP", "EB", "EL", "EY", "IB", "IL", "IN", "IE", "EI", "ER"]))) {
201
+ add("K", "J");
202
+ n += 2;
203
+ break;
204
+ }
205
+ if ((stringAt(n + 1, 2, ["ER"]) || at(n + 1) === "Y") && !stringAt(0, 6, ["DANGER", "RANGER", "MANGER"]) && !stringAt(n - 1, 1, ["E", "I"]) && !stringAt(n - 1, 3, ["RGY", "OGY"])) {
206
+ add("K", "J");
207
+ n += 2;
208
+ break;
209
+ }
210
+ if (stringAt(n + 1, 1, ["E", "I", "Y"]) || stringAt(n - 1, 4, ["AGGI", "OGGI"])) {
211
+ if (stringAt(0, 4, ["VAN ", "VON "]) || stringAt(0, 3, ["SCH"]) || stringAt(n + 1, 2, ["ET"])) {
212
+ add("K");
213
+ } else if (stringAt(n + 1, 4, ["IER "])) {
214
+ add("J");
215
+ } else {
216
+ add("J", "K");
217
+ }
218
+ n += 2;
219
+ break;
220
+ }
221
+ add("K");
222
+ n += at(n + 1) === "G" ? 2 : 1;
223
+ break;
224
+ case "H":
225
+ if ((n === 0 || isVowel(at(n - 1))) && isVowel(at(n + 1))) {
226
+ add("H");
227
+ n += 2;
228
+ } else {
229
+ n += 1;
230
+ }
231
+ break;
232
+ case "J":
233
+ if (stringAt(n, 4, ["JOSE"]) || stringAt(0, 4, ["SAN "])) {
234
+ if (n === 0 && at(n + 4) === " " || stringAt(0, 4, ["SAN "])) {
235
+ add("H");
236
+ } else {
237
+ add("J", "H");
238
+ }
239
+ n += 1;
240
+ break;
241
+ }
242
+ if (n === 0) {
243
+ add("J", "A");
244
+ } else if (isVowel(at(n - 1)) && !slavo && (at(n + 1) === "A" || at(n + 1) === "O")) {
245
+ add("J", "H");
246
+ } else if (n === last) {
247
+ add("J", "");
248
+ } else if (!stringAt(n + 1, 1, ["L", "T", "K", "S", "N", "M", "B", "Z"]) && !stringAt(n - 1, 1, ["S", "K", "L"])) {
249
+ add("J");
250
+ }
251
+ n += at(n + 1) === "J" ? 2 : 1;
252
+ break;
253
+ case "K":
254
+ add("K");
255
+ n += at(n + 1) === "K" ? 2 : 1;
256
+ break;
257
+ case "L":
258
+ if (at(n + 1) === "L") {
259
+ if (n === length - 3 && stringAt(n - 1, 4, ["ILLO", "ILLA", "ALLE"]) || (stringAt(last - 1, 2, ["AS", "OS"]) || stringAt(last, 1, ["A", "O"])) && stringAt(n - 1, 4, ["ALLE"])) {
260
+ add("L", "");
261
+ n += 2;
262
+ break;
263
+ }
264
+ n += 2;
265
+ } else {
266
+ n += 1;
267
+ }
268
+ add("L");
269
+ break;
270
+ case "M":
271
+ add("M");
272
+ if (at(n + 1) === "M" || at(n - 1) === "U" && at(n + 1) === "B" && (n + 1 === last || stringAt(n + 2, 2, ["ER"]))) {
273
+ n += 2;
274
+ } else {
275
+ n += 1;
276
+ }
277
+ break;
278
+ case "N":
279
+ add("N");
280
+ n += at(n + 1) === "N" ? 2 : 1;
281
+ break;
282
+ case "P":
283
+ if (at(n + 1) === "H") {
284
+ add("F");
285
+ n += 2;
286
+ break;
287
+ }
288
+ add("P");
289
+ n += stringAt(n + 1, 1, ["P", "B"]) ? 2 : 1;
290
+ break;
291
+ case "Q":
292
+ add("K");
293
+ n += at(n + 1) === "Q" ? 2 : 1;
294
+ break;
295
+ case "R":
296
+ if (n === last && !slavo && stringAt(n - 2, 2, ["IE"]) && !stringAt(n - 4, 2, ["ME", "MA"])) {
297
+ add("", "R");
298
+ } else {
299
+ add("R");
300
+ }
301
+ n += at(n + 1) === "R" ? 2 : 1;
302
+ break;
303
+ case "S":
304
+ if (stringAt(n - 1, 3, ["ISL", "YSL"])) {
305
+ n += 1;
306
+ break;
307
+ }
308
+ if (n === 0 && stringAt(0, 5, ["SUGAR"])) {
309
+ add("X", "S");
310
+ n += 1;
311
+ break;
312
+ }
313
+ if (stringAt(n, 2, ["SH"])) {
314
+ if (stringAt(n + 1, 4, ["HEIM", "HOEK", "HOLM", "HOLZ"]))
315
+ add("S");
316
+ else
317
+ add("X");
318
+ n += 2;
319
+ break;
320
+ }
321
+ if (stringAt(n, 3, ["SIO", "SIA"]) || stringAt(n, 4, ["SIAN"])) {
322
+ if (!slavo)
323
+ add("S", "X");
324
+ else
325
+ add("S");
326
+ n += 3;
327
+ break;
328
+ }
329
+ if (n === 0 && stringAt(n + 1, 1, ["M", "N", "L", "W"]) || at(n + 1) === "Z") {
330
+ add("S", "X");
331
+ n += at(n + 1) === "Z" ? 2 : 1;
332
+ break;
333
+ }
334
+ if (stringAt(n, 2, ["SC"])) {
335
+ if (at(n + 2) === "H") {
336
+ if (stringAt(n + 3, 2, ["OO", "ER", "EN", "UY", "ED", "EM"])) {
337
+ if (stringAt(n + 3, 2, ["ER", "EN"]))
338
+ add("X", "SK");
339
+ else
340
+ add("SK");
341
+ } else if (n === 0 && !isVowel(at(3)) && at(3) !== "W") {
342
+ add("X", "S");
343
+ } else {
344
+ add("X");
345
+ }
346
+ n += 3;
347
+ break;
348
+ }
349
+ if (stringAt(n + 2, 1, ["I", "E", "Y"])) {
350
+ add("S");
351
+ n += 3;
352
+ break;
353
+ }
354
+ add("SK");
355
+ n += 3;
356
+ break;
357
+ }
358
+ if (n === last && stringAt(n - 2, 2, ["AI", "OI"])) {
359
+ add("", "S");
360
+ } else {
361
+ add("S");
362
+ }
363
+ n += stringAt(n + 1, 1, ["S", "Z"]) ? 2 : 1;
364
+ break;
365
+ case "T":
366
+ if (stringAt(n, 4, ["TION"])) {
367
+ add("X");
368
+ n += 3;
369
+ break;
370
+ }
371
+ if (stringAt(n, 3, ["TIA", "TCH"])) {
372
+ add("X");
373
+ n += 3;
374
+ break;
375
+ }
376
+ if (stringAt(n, 2, ["TH"]) || stringAt(n, 3, ["TTH"])) {
377
+ if (stringAt(n + 2, 2, ["OM", "AM"]) || stringAt(0, 4, ["VAN ", "VON "]) || stringAt(0, 3, ["SCH"])) {
378
+ add("T");
379
+ } else {
380
+ add("0", "T");
381
+ }
382
+ n += 2;
383
+ break;
384
+ }
385
+ add("T");
386
+ n += stringAt(n + 1, 1, ["T", "D"]) ? 2 : 1;
387
+ break;
388
+ case "V":
389
+ add("F");
390
+ n += at(n + 1) === "V" ? 2 : 1;
391
+ break;
392
+ case "W":
393
+ if (stringAt(n, 2, ["WR"])) {
394
+ add("R");
395
+ n += 2;
396
+ break;
397
+ }
398
+ if (n === 0 && (isVowel(at(n + 1)) || stringAt(n, 2, ["WH"]))) {
399
+ if (isVowel(at(n + 1)))
400
+ add("A", "F");
401
+ else
402
+ add("A");
403
+ }
404
+ if (n === last && isVowel(at(n - 1)) || stringAt(n - 1, 5, ["EWSKI", "EWSKY", "OWSKI", "OWSKY"]) || stringAt(0, 3, ["SCH"])) {
405
+ add("", "F");
406
+ n += 1;
407
+ break;
408
+ }
409
+ if (stringAt(n, 4, ["WICZ", "WITZ"])) {
410
+ add("TS", "FX");
411
+ n += 4;
412
+ break;
413
+ }
414
+ n += 1;
415
+ break;
416
+ case "X":
417
+ if (!(n === last && (stringAt(n - 3, 3, ["IAU", "EAU"]) || stringAt(n - 2, 2, ["AU", "OU"])))) {
418
+ add("KS");
419
+ }
420
+ n += stringAt(n + 1, 1, ["C", "X"]) ? 2 : 1;
421
+ break;
422
+ case "Z":
423
+ if (at(n + 1) === "H") {
424
+ add("J");
425
+ n += 2;
426
+ break;
427
+ }
428
+ if (stringAt(n + 1, 2, ["ZO", "ZI", "ZA"]) || slavo && n > 0 && at(n - 1) !== "T") {
429
+ add("S", "TS");
430
+ } else {
431
+ add("S");
432
+ }
433
+ n += at(n + 1) === "Z" ? 2 : 1;
434
+ break;
435
+ default:
436
+ n += 1;
437
+ break;
438
+ }
439
+ }
440
+ return [primary.slice(0, 4), secondary.slice(0, 4)];
441
+ }
442
+
443
+ export { doubleMetaphone2 };
444
+
445
+ //# debugId=48794DFF0F1B895264756E2164756E21
446
+ //# sourceMappingURL=index-ebebeamh.js.map
@@ -0,0 +1,10 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/phonetic/double-metaphone.ts"],
4
+ "sourcesContent": [
5
+ "/**\n * Double Metaphone: a phonetic key for a word, as it sounds rather than as it is spelt.\n *\n * Unlike Soundex it emits TWO codes per word, a primary and a secondary\n * (alternate), so a word can be looked up under either pronunciation. That\n * double-code behaviour is what a sound-alike lookup wants: `Smith` and `Smyth`\n * (SM0 / XMT) collide, and `Kavanagh` / `Cavanagh` both encode to KFNK. It is a\n * general key, not a surname key: a transcribed spoken word and a printed name are\n * asked the same question, how does this sound.\n *\n * It follows the reference Double Metaphone control flow (2000): the same silent\n * onsets (GN/KN/PN/WR/PS), GH / CH / C-variant / PH->F / vowel-only-at-start\n * rules, Slavo-Germanic detection, and the 4-character code cap. It is NOT\n * guaranteed byte-perfect against every entry of the reference test table, but it\n * reproduces the standard rule set and groups the classic sound-alikes.\n *\n * Plain TypeScript, no dependencies and no state.\n */\n\n/** AEIOUY — Double Metaphone treats Y as a vowel. Empty string is not a vowel. */\nfunction isVowel(c: string): boolean {\n\treturn c !== \"\" && \"AEIOUY\".includes(c);\n}\n\n/** Slavo-Germanic words get special S/Z/J handling in the reference algorithm. */\nfunction isSlavoGermanic(w: string): boolean {\n\treturn /W|K|CZ|WITZ/.test(w);\n}\n\n/**\n * Encode `word` into its [primary, secondary] Double Metaphone codes. When the\n * word has no phonetic alternate, secondary === primary. Non-letters are left\n * to the caller to strip (`metaphoneBlocks` in `/normalize` keeps A-Z only); this\n * operates on the raw uppercased string.\n */\nexport function doubleMetaphone(word: string): [string, string] {\n\tconst w = (word ?? \"\").toUpperCase();\n\tconst length = w.length;\n\tconst last = length - 1;\n\tconst slavo = isSlavoGermanic(w);\n\n\tlet primary = \"\";\n\tlet secondary = \"\";\n\n\t/** Character at index i (or \"\" out of range — never undefined). */\n\tconst at = (i: number): string => w.charAt(i);\n\t/** True if the fixed-length window at `start` equals any option. */\n\tconst stringAt = (start: number, len: number, list: string[]): boolean => {\n\t\tif (start < 0 || start >= length) return false;\n\t\treturn list.includes(w.substring(start, start + len));\n\t};\n\t/** Append to both codes (secondary defaults to the primary append). */\n\tconst add = (p: string, s?: string): void => {\n\t\tprimary += p;\n\t\tsecondary += s === undefined ? p : s;\n\t};\n\n\tlet n = 0;\n\n\t// Silent onsets: skip the first letter.\n\tif (stringAt(0, 2, [\"GN\", \"KN\", \"PN\", \"WR\", \"PS\"])) n = 1;\n\t// Initial X is pronounced like S (e.g. \"Xavier\").\n\tif (at(0) === \"X\") {\n\t\tadd(\"S\");\n\t\tn = 1;\n\t}\n\n\twhile (n < length && (primary.length < 4 || secondary.length < 4)) {\n\t\tconst c = at(n);\n\t\tswitch (c) {\n\t\t\tcase \"A\":\n\t\t\tcase \"E\":\n\t\t\tcase \"I\":\n\t\t\tcase \"O\":\n\t\t\tcase \"U\":\n\t\t\tcase \"Y\":\n\t\t\t\t// Only a leading vowel is coded (all vowels -> \"A\").\n\t\t\t\tif (n === 0) add(\"A\");\n\t\t\t\tn += 1;\n\t\t\t\tbreak;\n\n\t\t\tcase \"B\":\n\t\t\t\tadd(\"P\");\n\t\t\t\tn += at(n + 1) === \"B\" ? 2 : 1;\n\t\t\t\tbreak;\n\n\t\t\tcase \"C\":\n\t\t\t\t// Various Germanic: e.g. \"bacher\", \"macher\".\n\t\t\t\tif (\n\t\t\t\t\tn > 1 &&\n\t\t\t\t\t!isVowel(at(n - 2)) &&\n\t\t\t\t\tstringAt(n - 1, 3, [\"ACH\"]) &&\n\t\t\t\t\tat(n + 2) !== \"I\" &&\n\t\t\t\t\t(at(n + 2) !== \"E\" || stringAt(n - 2, 6, [\"BACHER\", \"MACHER\"]))\n\t\t\t\t) {\n\t\t\t\t\tadd(\"K\");\n\t\t\t\t\tn += 2;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\t// Special case \"caesar\".\n\t\t\t\tif (n === 0 && stringAt(0, 6, [\"CAESAR\"])) {\n\t\t\t\t\tadd(\"S\");\n\t\t\t\t\tn += 2;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\t// Italian \"chianti\".\n\t\t\t\tif (stringAt(n, 4, [\"CHIA\"])) {\n\t\t\t\t\tadd(\"K\");\n\t\t\t\t\tn += 2;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tif (stringAt(n, 2, [\"CH\"])) {\n\t\t\t\t\t// \"michael\".\n\t\t\t\t\tif (n > 0 && stringAt(n, 4, [\"CHAE\"])) {\n\t\t\t\t\t\tadd(\"K\", \"X\");\n\t\t\t\t\t\tn += 2;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\t// Greek roots e.g. \"chemistry\", \"chorus\".\n\t\t\t\t\tif (\n\t\t\t\t\t\tn === 0 &&\n\t\t\t\t\t\t(stringAt(n + 1, 5, [\"HARAC\", \"HARIS\"]) ||\n\t\t\t\t\t\t\tstringAt(n + 1, 3, [\"HOR\", \"HYM\", \"HIA\", \"HEM\"])) &&\n\t\t\t\t\t\t!stringAt(0, 5, [\"CHORE\"])\n\t\t\t\t\t) {\n\t\t\t\t\t\tadd(\"K\");\n\t\t\t\t\t\tn += 2;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\t// Germanic / Greek / otherwise hard \"kh\" sound.\n\t\t\t\t\tif (\n\t\t\t\t\t\tstringAt(0, 4, [\"VAN \", \"VON \"]) ||\n\t\t\t\t\t\tstringAt(0, 3, [\"SCH\"]) ||\n\t\t\t\t\t\tstringAt(n - 2, 6, [\"ORCHES\", \"ARCHIT\", \"ORCHID\"]) ||\n\t\t\t\t\t\tstringAt(n + 2, 1, [\"T\", \"S\"]) ||\n\t\t\t\t\t\t((stringAt(n - 1, 1, [\"A\", \"O\", \"U\", \"E\"]) || n === 0) &&\n\t\t\t\t\t\t\tstringAt(n + 2, 1, [\"L\", \"R\", \"N\", \"M\", \"B\", \"H\", \"F\", \"V\", \"W\", \" \"]))\n\t\t\t\t\t) {\n\t\t\t\t\t\tadd(\"K\");\n\t\t\t\t\t} else if (n > 0) {\n\t\t\t\t\t\tif (stringAt(0, 2, [\"MC\"])) add(\"K\");\n\t\t\t\t\t\telse add(\"X\", \"K\");\n\t\t\t\t\t} else {\n\t\t\t\t\t\tadd(\"X\");\n\t\t\t\t\t}\n\t\t\t\t\tn += 2;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\t// e.g. \"czerny\".\n\t\t\t\tif (stringAt(n, 2, [\"CZ\"]) && !stringAt(n - 2, 4, [\"WICZ\"])) {\n\t\t\t\t\tadd(\"S\", \"X\");\n\t\t\t\t\tn += 2;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\t// e.g. \"focaccia\".\n\t\t\t\tif (stringAt(n + 1, 3, [\"CIA\"])) {\n\t\t\t\t\tadd(\"X\");\n\t\t\t\t\tn += 3;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\t// Double C, but not \"McClellan\".\n\t\t\t\tif (stringAt(n, 2, [\"CC\"]) && !(n === 1 && at(0) === \"M\")) {\n\t\t\t\t\t// \"bellocchio\" but not \"bacchus\".\n\t\t\t\t\tif (stringAt(n + 2, 1, [\"I\", \"E\", \"H\"]) && !stringAt(n + 2, 2, [\"HU\"])) {\n\t\t\t\t\t\t// \"accident\", \"accede\", \"succeed\".\n\t\t\t\t\t\tif ((n === 1 && at(n - 1) === \"A\") || stringAt(n - 1, 5, [\"UCCEE\", \"UCCES\"])) {\n\t\t\t\t\t\t\tadd(\"KS\");\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tadd(\"X\");\n\t\t\t\t\t\t}\n\t\t\t\t\t\tn += 3;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\t// Any other CC: a hard K.\n\t\t\t\t\tadd(\"K\");\n\t\t\t\t\tn += 2;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tif (stringAt(n, 2, [\"CK\", \"CG\", \"CQ\"])) {\n\t\t\t\t\tadd(\"K\");\n\t\t\t\t\tn += 2;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tif (stringAt(n, 2, [\"CI\", \"CE\", \"CY\"])) {\n\t\t\t\t\t// Italian vs English.\n\t\t\t\t\tif (stringAt(n, 3, [\"CIO\", \"CIE\", \"CIA\"])) add(\"S\", \"X\");\n\t\t\t\t\telse add(\"S\");\n\t\t\t\t\tn += 2;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tadd(\"K\");\n\t\t\t\tif (stringAt(n + 1, 2, [\" C\", \" Q\", \" G\"])) n += 3;\n\t\t\t\telse if (stringAt(n + 1, 1, [\"C\", \"K\", \"Q\"]) && !stringAt(n + 1, 2, [\"CE\", \"CI\"])) n += 2;\n\t\t\t\telse n += 1;\n\t\t\t\tbreak;\n\n\t\t\tcase \"D\":\n\t\t\t\tif (stringAt(n, 2, [\"DG\"])) {\n\t\t\t\t\tif (stringAt(n + 2, 1, [\"I\", \"E\", \"Y\"])) {\n\t\t\t\t\t\t// \"edge\".\n\t\t\t\t\t\tadd(\"J\");\n\t\t\t\t\t\tn += 3;\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// \"edgar\".\n\t\t\t\t\t\tadd(\"TK\");\n\t\t\t\t\t\tn += 2;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tif (stringAt(n, 2, [\"DT\", \"DD\"])) {\n\t\t\t\t\tadd(\"T\");\n\t\t\t\t\tn += 2;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tadd(\"T\");\n\t\t\t\tn += 1;\n\t\t\t\tbreak;\n\n\t\t\tcase \"F\":\n\t\t\t\tadd(\"F\");\n\t\t\t\tn += at(n + 1) === \"F\" ? 2 : 1;\n\t\t\t\tbreak;\n\n\t\t\tcase \"G\":\n\t\t\t\tif (at(n + 1) === \"H\") {\n\t\t\t\t\tif (n > 0 && !isVowel(at(n - 1))) {\n\t\t\t\t\t\tadd(\"K\");\n\t\t\t\t\t\tn += 2;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tif (n === 0) {\n\t\t\t\t\t\t// \"ghislane\", \"ghiradelli\".\n\t\t\t\t\t\tif (at(n + 2) === \"I\") add(\"J\");\n\t\t\t\t\t\telse add(\"K\");\n\t\t\t\t\t\tn += 2;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\t// GH after B, H or D two or three back is silent.\n\t\t\t\t\tif (\n\t\t\t\t\t\t(n > 1 && stringAt(n - 2, 1, [\"B\", \"H\", \"D\"])) ||\n\t\t\t\t\t\t(n > 2 && stringAt(n - 3, 1, [\"B\", \"H\", \"D\"])) ||\n\t\t\t\t\t\t(n > 3 && stringAt(n - 4, 1, [\"B\", \"H\"]))\n\t\t\t\t\t) {\n\t\t\t\t\t\tn += 2;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\t// e.g. \"laugh\", \"cough\", \"rough\", \"tough\".\n\t\t\t\t\tif (n > 2 && at(n - 1) === \"U\" && stringAt(n - 3, 1, [\"C\", \"G\", \"L\", \"R\", \"T\"])) {\n\t\t\t\t\t\tadd(\"F\");\n\t\t\t\t\t} else if (n > 0 && at(n - 1) !== \"I\") {\n\t\t\t\t\t\tadd(\"K\");\n\t\t\t\t\t}\n\t\t\t\t\tn += 2;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tif (at(n + 1) === \"N\") {\n\t\t\t\t\tif (n === 1 && isVowel(at(0)) && !slavo) {\n\t\t\t\t\t\tadd(\"KN\", \"N\");\n\t\t\t\t\t} else if (!stringAt(n + 2, 2, [\"EY\"]) && at(n + 1) !== \"Y\" && !slavo) {\n\t\t\t\t\t\tadd(\"N\", \"KN\");\n\t\t\t\t\t} else {\n\t\t\t\t\t\tadd(\"KN\");\n\t\t\t\t\t}\n\t\t\t\t\tn += 2;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\t// \"tagliaro\".\n\t\t\t\tif (stringAt(n + 1, 2, [\"LI\"]) && !slavo) {\n\t\t\t\t\tadd(\"KL\", \"L\");\n\t\t\t\t\tn += 2;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\t// Initial \"GE-/GY-\" variants that can sound soft.\n\t\t\t\tif (\n\t\t\t\t\tn === 0 &&\n\t\t\t\t\t(at(n + 1) === \"Y\" ||\n\t\t\t\t\t\tstringAt(n + 1, 2, [\"ES\", \"EP\", \"EB\", \"EL\", \"EY\", \"IB\", \"IL\", \"IN\", \"IE\", \"EI\", \"ER\"]))\n\t\t\t\t) {\n\t\t\t\t\tadd(\"K\", \"J\");\n\t\t\t\t\tn += 2;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\t// -GER-, -GY-.\n\t\t\t\tif (\n\t\t\t\t\t(stringAt(n + 1, 2, [\"ER\"]) || at(n + 1) === \"Y\") &&\n\t\t\t\t\t!stringAt(0, 6, [\"DANGER\", \"RANGER\", \"MANGER\"]) &&\n\t\t\t\t\t!stringAt(n - 1, 1, [\"E\", \"I\"]) &&\n\t\t\t\t\t!stringAt(n - 1, 3, [\"RGY\", \"OGY\"])\n\t\t\t\t) {\n\t\t\t\t\tadd(\"K\", \"J\");\n\t\t\t\t\tn += 2;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\t// Italian e.g. \"biaggi\".\n\t\t\t\tif (stringAt(n + 1, 1, [\"E\", \"I\", \"Y\"]) || stringAt(n - 1, 4, [\"AGGI\", \"OGGI\"])) {\n\t\t\t\t\tif (\n\t\t\t\t\t\tstringAt(0, 4, [\"VAN \", \"VON \"]) ||\n\t\t\t\t\t\tstringAt(0, 3, [\"SCH\"]) ||\n\t\t\t\t\t\tstringAt(n + 1, 2, [\"ET\"])\n\t\t\t\t\t) {\n\t\t\t\t\t\tadd(\"K\");\n\t\t\t\t\t} else if (stringAt(n + 1, 4, [\"IER \"])) {\n\t\t\t\t\t\tadd(\"J\");\n\t\t\t\t\t} else {\n\t\t\t\t\t\tadd(\"J\", \"K\");\n\t\t\t\t\t}\n\t\t\t\t\tn += 2;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tadd(\"K\");\n\t\t\t\tn += at(n + 1) === \"G\" ? 2 : 1;\n\t\t\t\tbreak;\n\n\t\t\tcase \"H\":\n\t\t\t\t// Only kept if first-and-before-vowel, or between two vowels.\n\t\t\t\tif ((n === 0 || isVowel(at(n - 1))) && isVowel(at(n + 1))) {\n\t\t\t\t\tadd(\"H\");\n\t\t\t\t\tn += 2;\n\t\t\t\t} else {\n\t\t\t\t\tn += 1;\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase \"J\":\n\t\t\t\t// Spanish \"jose\", \"san jacinto\".\n\t\t\t\tif (stringAt(n, 4, [\"JOSE\"]) || stringAt(0, 4, [\"SAN \"])) {\n\t\t\t\t\tif ((n === 0 && at(n + 4) === \" \") || stringAt(0, 4, [\"SAN \"])) {\n\t\t\t\t\t\tadd(\"H\");\n\t\t\t\t\t} else {\n\t\t\t\t\t\tadd(\"J\", \"H\");\n\t\t\t\t\t}\n\t\t\t\t\tn += 1;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tif (n === 0) {\n\t\t\t\t\t// \"Jankelowicz\" / anglicised \"Yankelovich\".\n\t\t\t\t\tadd(\"J\", \"A\");\n\t\t\t\t} else if (isVowel(at(n - 1)) && !slavo && (at(n + 1) === \"A\" || at(n + 1) === \"O\")) {\n\t\t\t\t\tadd(\"J\", \"H\");\n\t\t\t\t} else if (n === last) {\n\t\t\t\t\tadd(\"J\", \"\");\n\t\t\t\t} else if (\n\t\t\t\t\t!stringAt(n + 1, 1, [\"L\", \"T\", \"K\", \"S\", \"N\", \"M\", \"B\", \"Z\"]) &&\n\t\t\t\t\t!stringAt(n - 1, 1, [\"S\", \"K\", \"L\"])\n\t\t\t\t) {\n\t\t\t\t\tadd(\"J\");\n\t\t\t\t}\n\t\t\t\tn += at(n + 1) === \"J\" ? 2 : 1;\n\t\t\t\tbreak;\n\n\t\t\tcase \"K\":\n\t\t\t\tadd(\"K\");\n\t\t\t\tn += at(n + 1) === \"K\" ? 2 : 1;\n\t\t\t\tbreak;\n\n\t\t\tcase \"L\":\n\t\t\t\tif (at(n + 1) === \"L\") {\n\t\t\t\t\t// Spanish silent-LL e.g. \"cabrillo\", \"gallegos\".\n\t\t\t\t\tif (\n\t\t\t\t\t\t(n === length - 3 && stringAt(n - 1, 4, [\"ILLO\", \"ILLA\", \"ALLE\"])) ||\n\t\t\t\t\t\t((stringAt(last - 1, 2, [\"AS\", \"OS\"]) || stringAt(last, 1, [\"A\", \"O\"])) &&\n\t\t\t\t\t\t\tstringAt(n - 1, 4, [\"ALLE\"]))\n\t\t\t\t\t) {\n\t\t\t\t\t\tadd(\"L\", \"\");\n\t\t\t\t\t\tn += 2;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tn += 2;\n\t\t\t\t} else {\n\t\t\t\t\tn += 1;\n\t\t\t\t}\n\t\t\t\tadd(\"L\");\n\t\t\t\tbreak;\n\n\t\t\tcase \"M\":\n\t\t\t\tadd(\"M\");\n\t\t\t\tif (\n\t\t\t\t\tat(n + 1) === \"M\" ||\n\t\t\t\t\t// Silent B: \"dumb\", \"thumb\", \"comb\".\n\t\t\t\t\t(at(n - 1) === \"U\" && at(n + 1) === \"B\" && (n + 1 === last || stringAt(n + 2, 2, [\"ER\"])))\n\t\t\t\t) {\n\t\t\t\t\tn += 2;\n\t\t\t\t} else {\n\t\t\t\t\tn += 1;\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase \"N\":\n\t\t\t\tadd(\"N\");\n\t\t\t\tn += at(n + 1) === \"N\" ? 2 : 1;\n\t\t\t\tbreak;\n\n\t\t\tcase \"P\":\n\t\t\t\tif (at(n + 1) === \"H\") {\n\t\t\t\t\tadd(\"F\");\n\t\t\t\t\tn += 2;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tadd(\"P\");\n\t\t\t\t// \"campbell\", \"raspberry\".\n\t\t\t\tn += stringAt(n + 1, 1, [\"P\", \"B\"]) ? 2 : 1;\n\t\t\t\tbreak;\n\n\t\t\tcase \"Q\":\n\t\t\t\tadd(\"K\");\n\t\t\t\tn += at(n + 1) === \"Q\" ? 2 : 1;\n\t\t\t\tbreak;\n\n\t\t\tcase \"R\":\n\t\t\t\t// French final \"-ier\" e.g. \"rogier\" (but not \"hochmeier\").\n\t\t\t\tif (\n\t\t\t\t\tn === last &&\n\t\t\t\t\t!slavo &&\n\t\t\t\t\tstringAt(n - 2, 2, [\"IE\"]) &&\n\t\t\t\t\t!stringAt(n - 4, 2, [\"ME\", \"MA\"])\n\t\t\t\t) {\n\t\t\t\t\tadd(\"\", \"R\");\n\t\t\t\t} else {\n\t\t\t\t\tadd(\"R\");\n\t\t\t\t}\n\t\t\t\tn += at(n + 1) === \"R\" ? 2 : 1;\n\t\t\t\tbreak;\n\n\t\t\tcase \"S\":\n\t\t\t\t// \"island\", \"isle\", \"carlisle\".\n\t\t\t\tif (stringAt(n - 1, 3, [\"ISL\", \"YSL\"])) {\n\t\t\t\t\tn += 1;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\t// \"sugar\".\n\t\t\t\tif (n === 0 && stringAt(0, 5, [\"SUGAR\"])) {\n\t\t\t\t\tadd(\"X\", \"S\");\n\t\t\t\t\tn += 1;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tif (stringAt(n, 2, [\"SH\"])) {\n\t\t\t\t\t// Germanic \"sh\".\n\t\t\t\t\tif (stringAt(n + 1, 4, [\"HEIM\", \"HOEK\", \"HOLM\", \"HOLZ\"])) add(\"S\");\n\t\t\t\t\telse add(\"X\");\n\t\t\t\t\tn += 2;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\t// Italian / Armenian.\n\t\t\t\tif (stringAt(n, 3, [\"SIO\", \"SIA\"]) || stringAt(n, 4, [\"SIAN\"])) {\n\t\t\t\t\tif (!slavo) add(\"S\", \"X\");\n\t\t\t\t\telse add(\"S\");\n\t\t\t\t\tn += 3;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\t// German onset \"sm/sn/sl/sw\", and any \"sz\".\n\t\t\t\tif ((n === 0 && stringAt(n + 1, 1, [\"M\", \"N\", \"L\", \"W\"])) || at(n + 1) === \"Z\") {\n\t\t\t\t\tadd(\"S\", \"X\");\n\t\t\t\t\tn += at(n + 1) === \"Z\" ? 2 : 1;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tif (stringAt(n, 2, [\"SC\"])) {\n\t\t\t\t\t// SC: SCH reads SK or X, SCE/SCI/SCY reads S, any other SC reads SK.\n\t\t\t\t\tif (at(n + 2) === \"H\") {\n\t\t\t\t\t\t// Dutch e.g. \"school\", \"schooner\".\n\t\t\t\t\t\tif (stringAt(n + 3, 2, [\"OO\", \"ER\", \"EN\", \"UY\", \"ED\", \"EM\"])) {\n\t\t\t\t\t\t\tif (stringAt(n + 3, 2, [\"ER\", \"EN\"])) add(\"X\", \"SK\");\n\t\t\t\t\t\t\telse add(\"SK\");\n\t\t\t\t\t\t} else if (n === 0 && !isVowel(at(3)) && at(3) !== \"W\") {\n\t\t\t\t\t\t\tadd(\"X\", \"S\");\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tadd(\"X\");\n\t\t\t\t\t\t}\n\t\t\t\t\t\tn += 3;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tif (stringAt(n + 2, 1, [\"I\", \"E\", \"Y\"])) {\n\t\t\t\t\t\tadd(\"S\");\n\t\t\t\t\t\tn += 3;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tadd(\"SK\");\n\t\t\t\t\tn += 3;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\t// French final \"-ais/-ois\".\n\t\t\t\tif (n === last && stringAt(n - 2, 2, [\"AI\", \"OI\"])) {\n\t\t\t\t\tadd(\"\", \"S\");\n\t\t\t\t} else {\n\t\t\t\t\tadd(\"S\");\n\t\t\t\t}\n\t\t\t\tn += stringAt(n + 1, 1, [\"S\", \"Z\"]) ? 2 : 1;\n\t\t\t\tbreak;\n\n\t\t\tcase \"T\":\n\t\t\t\tif (stringAt(n, 4, [\"TION\"])) {\n\t\t\t\t\tadd(\"X\");\n\t\t\t\t\tn += 3;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tif (stringAt(n, 3, [\"TIA\", \"TCH\"])) {\n\t\t\t\t\tadd(\"X\");\n\t\t\t\t\tn += 3;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tif (stringAt(n, 2, [\"TH\"]) || stringAt(n, 3, [\"TTH\"])) {\n\t\t\t\t\t// \"thomas\", \"thames\", or Germanic -> hard T.\n\t\t\t\t\tif (\n\t\t\t\t\t\tstringAt(n + 2, 2, [\"OM\", \"AM\"]) ||\n\t\t\t\t\t\tstringAt(0, 4, [\"VAN \", \"VON \"]) ||\n\t\t\t\t\t\tstringAt(0, 3, [\"SCH\"])\n\t\t\t\t\t) {\n\t\t\t\t\t\tadd(\"T\");\n\t\t\t\t\t} else {\n\t\t\t\t\t\tadd(\"0\", \"T\");\n\t\t\t\t\t}\n\t\t\t\t\tn += 2;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tadd(\"T\");\n\t\t\t\tn += stringAt(n + 1, 1, [\"T\", \"D\"]) ? 2 : 1;\n\t\t\t\tbreak;\n\n\t\t\tcase \"V\":\n\t\t\t\tadd(\"F\");\n\t\t\t\tn += at(n + 1) === \"V\" ? 2 : 1;\n\t\t\t\tbreak;\n\n\t\t\tcase \"W\":\n\t\t\t\t// \"wr\" -> R.\n\t\t\t\tif (stringAt(n, 2, [\"WR\"])) {\n\t\t\t\t\tadd(\"R\");\n\t\t\t\t\tn += 2;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tif (n === 0 && (isVowel(at(n + 1)) || stringAt(n, 2, [\"WH\"]))) {\n\t\t\t\t\t// \"Wasserman\" ~ \"Vasserman\"; \"Uomo\" ~ \"Womo\".\n\t\t\t\t\tif (isVowel(at(n + 1))) add(\"A\", \"F\");\n\t\t\t\t\telse add(\"A\");\n\t\t\t\t}\n\t\t\t\t// \"Arnow\" ~ \"Arnoff\"; Polish/Slavic \"-owski\".\n\t\t\t\tif (\n\t\t\t\t\t(n === last && isVowel(at(n - 1))) ||\n\t\t\t\t\tstringAt(n - 1, 5, [\"EWSKI\", \"EWSKY\", \"OWSKI\", \"OWSKY\"]) ||\n\t\t\t\t\tstringAt(0, 3, [\"SCH\"])\n\t\t\t\t) {\n\t\t\t\t\tadd(\"\", \"F\");\n\t\t\t\t\tn += 1;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\t// Polish e.g. \"filipowicz\".\n\t\t\t\tif (stringAt(n, 4, [\"WICZ\", \"WITZ\"])) {\n\t\t\t\t\tadd(\"TS\", \"FX\");\n\t\t\t\t\tn += 4;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tn += 1;\n\t\t\t\tbreak;\n\n\t\t\tcase \"X\":\n\t\t\t\t// French final \"-eaux/-aux\" is silent.\n\t\t\t\tif (\n\t\t\t\t\t!(n === last && (stringAt(n - 3, 3, [\"IAU\", \"EAU\"]) || stringAt(n - 2, 2, [\"AU\", \"OU\"])))\n\t\t\t\t) {\n\t\t\t\t\tadd(\"KS\");\n\t\t\t\t}\n\t\t\t\tn += stringAt(n + 1, 1, [\"C\", \"X\"]) ? 2 : 1;\n\t\t\t\tbreak;\n\n\t\t\tcase \"Z\":\n\t\t\t\t// Chinese pinyin \"zhao\".\n\t\t\t\tif (at(n + 1) === \"H\") {\n\t\t\t\t\tadd(\"J\");\n\t\t\t\t\tn += 2;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tif (stringAt(n + 1, 2, [\"ZO\", \"ZI\", \"ZA\"]) || (slavo && n > 0 && at(n - 1) !== \"T\")) {\n\t\t\t\t\tadd(\"S\", \"TS\");\n\t\t\t\t} else {\n\t\t\t\t\tadd(\"S\");\n\t\t\t\t}\n\t\t\t\tn += at(n + 1) === \"Z\" ? 2 : 1;\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\tn += 1;\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n\treturn [primary.slice(0, 4), secondary.slice(0, 4)];\n}\n"
6
+ ],
7
+ "mappings": "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",
8
+ "debugId": "48794DFF0F1B895264756E2164756E21",
9
+ "names": []
10
+ }
@@ -3,7 +3,7 @@ import {
3
3
  normalizeApostrophes2,
4
4
  lexiconKey2,
5
5
  Lexicon2
6
- } from "./index-0qptxnwh.js";
6
+ } from "./index-7vvt5hhy.js";
7
7
  import {
8
8
  canonicalTeamName2,
9
9
  isTeamPrint2
@@ -170,7 +170,7 @@ function scrubNameDetail2(printed, options = {}) {
170
170
  rules.push("accept-team");
171
171
  return { value: s, refused: false, rules };
172
172
  }
173
- if (s.split(" ").filter((t) => t !== "").length < 2) {
173
+ if (s.split(/[ ,]/).filter((t) => t !== "").length < 2) {
174
174
  rules.push("refuse-single-token");
175
175
  return { value: NAME_REFUSED2, refused: true, rules };
176
176
  }
@@ -1057,5 +1057,5 @@ function personNameFromIcao2(icao, print) {
1057
1057
 
1058
1058
  export { NAME_REFUSED2, stripEveryAside2, stripTrailingCredentials2, scrubNameDetail2, scrubName2, foldNameKey2, nameFold2, PLATFORM_PLACEHOLDERS2, NAME_PLACEHOLDERS2, isPlaceholderPrint2, isNoNamePrint2, COMPOUND_SURNAMES2, isCompoundSurname2, spaceAfterComma2, isNameSuffix, tokenize, inferNameOrder2, commaReading2, lexiconNameOrder, resolveNameOrder2, splitPersonName2, classifyCell2, capitalise2, nameCase2, SURNAME_SEPARATOR2, GIVEN_SEPARATOR2, titleCaseNamePart2, spellingLookup2, parsePersonName2, formatPersonDisplay2, personDisplayName2, NAME_TRADITIONS2, traditionFromIndex2, isIcaoName2, levelOf2, givenKeyAbbreviates2, givenAbbreviates2, PersonName2, DEFAULT_PERSON_NAME_CAPACITY2, traditionLookupOf2, createPersonNameFactory2, createCachingPersonNameFactory2, defaultPersonNameFactory2, personName2, personNameFromIcao2 };
1059
1059
 
1060
- //# debugId=49F5F13DC88ECCC664756E2164756E21
1061
- //# sourceMappingURL=index-fzzq5txh.js.map
1060
+ //# debugId=6DB0BC302D69D65E64756E2164756E21
1061
+ //# sourceMappingURL=index-jx97zxtz.js.map