indickit 0.5.0 → 0.8.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.
- package/README.md +182 -14
- package/dist/deromanize.js +1129 -0
- package/dist/phonetic-search.js +1329 -0
- package/dist/phonetic.js +85 -16
- package/dist/romanize.js +743 -0
- package/dist/types/js/deromanize.d.ts +57 -0
- package/dist/types/js/phonetic-search.d.ts +104 -0
- package/dist/types/js/phonetic.d.ts +14 -0
- package/dist/types/js/romanize.d.ts +55 -0
- package/package.json +14 -2
package/dist/phonetic.js
CHANGED
|
@@ -1,11 +1,14 @@
|
|
|
1
1
|
// phonetic/rules.json
|
|
2
2
|
var rules_default = {
|
|
3
|
-
version: "2026-10-
|
|
3
|
+
version: "2026-10-07",
|
|
4
4
|
folds: [
|
|
5
5
|
"bn-case",
|
|
6
|
+
"brahmic-av-u",
|
|
6
7
|
"drop-vowels",
|
|
7
8
|
"drop-y",
|
|
9
|
+
"flap-r",
|
|
8
10
|
"gu-case",
|
|
11
|
+
"latin-ngh",
|
|
9
12
|
"latin-w-u",
|
|
10
13
|
"ml-case",
|
|
11
14
|
"nasal-all",
|
|
@@ -100,7 +103,13 @@ var rules_default = {
|
|
|
100
103
|
},
|
|
101
104
|
virama_offset: 77,
|
|
102
105
|
candrabindu_offset: 1,
|
|
103
|
-
candrabindu_class: "ṁ"
|
|
106
|
+
candrabindu_class: "ṁ",
|
|
107
|
+
nukta_offset: 60,
|
|
108
|
+
flap_offsets: [
|
|
109
|
+
33,
|
|
110
|
+
34
|
|
111
|
+
],
|
|
112
|
+
flap_class: "ṛ"
|
|
104
113
|
},
|
|
105
114
|
extra: {
|
|
106
115
|
ৎ: "t",
|
|
@@ -117,7 +126,14 @@ var rules_default = {
|
|
|
117
126
|
ൿ: "k",
|
|
118
127
|
ൔ: "m",
|
|
119
128
|
ൕ: "y",
|
|
120
|
-
ൖ: "l"
|
|
129
|
+
ൖ: "l",
|
|
130
|
+
ड़: "ṛ",
|
|
131
|
+
ढ़: "ṛ",
|
|
132
|
+
ড়: "ṛ",
|
|
133
|
+
ঢ়: "ṛ",
|
|
134
|
+
ଡ଼: "ṛ",
|
|
135
|
+
ଢ଼: "ṛ",
|
|
136
|
+
ੜ: "ṛ"
|
|
121
137
|
},
|
|
122
138
|
urdu: {
|
|
123
139
|
from: 1536,
|
|
@@ -139,7 +155,7 @@ var rules_default = {
|
|
|
139
155
|
ڈ: "ṭ",
|
|
140
156
|
ذ: "c",
|
|
141
157
|
ر: "r",
|
|
142
|
-
ڑ: "
|
|
158
|
+
ڑ: "ṛ",
|
|
143
159
|
ز: "c",
|
|
144
160
|
ژ: "c",
|
|
145
161
|
س: "s",
|
|
@@ -181,7 +197,7 @@ var rules_default = {
|
|
|
181
197
|
ڌ: "t",
|
|
182
198
|
ڍ: "ṭ",
|
|
183
199
|
ڏ: "t",
|
|
184
|
-
ڙ: "
|
|
200
|
+
ڙ: "ṛ",
|
|
185
201
|
ڦ: "p",
|
|
186
202
|
ڪ: "k",
|
|
187
203
|
ڱ: "ṅ",
|
|
@@ -301,7 +317,7 @@ var rules_default = {
|
|
|
301
317
|
ᱯ: "p",
|
|
302
318
|
ᱰ: "ṭ",
|
|
303
319
|
ᱱ: "n",
|
|
304
|
-
ᱲ: "
|
|
320
|
+
ᱲ: "ṛ",
|
|
305
321
|
ᱳ: "o",
|
|
306
322
|
ᱴ: "ṭ",
|
|
307
323
|
ᱵ: "p",
|
|
@@ -313,6 +329,10 @@ var rules_default = {
|
|
|
313
329
|
},
|
|
314
330
|
latin: {
|
|
315
331
|
groups: [
|
|
332
|
+
[
|
|
333
|
+
"ngh",
|
|
334
|
+
"nĝ"
|
|
335
|
+
],
|
|
316
336
|
[
|
|
317
337
|
"chh",
|
|
318
338
|
"c"
|
|
@@ -420,9 +440,11 @@ var rules_default = {
|
|
|
420
440
|
v: "p",
|
|
421
441
|
w: "p",
|
|
422
442
|
ñ: "n",
|
|
443
|
+
ĝ: "k",
|
|
423
444
|
ṁ: "n",
|
|
424
445
|
ṅ: "n",
|
|
425
446
|
ṇ: "n",
|
|
447
|
+
ṛ: "t",
|
|
426
448
|
ṭ: "t"
|
|
427
449
|
},
|
|
428
450
|
vowels: "aeiou",
|
|
@@ -436,6 +458,26 @@ var rules_default = {
|
|
|
436
458
|
"drop-final-vowel": false
|
|
437
459
|
},
|
|
438
460
|
branches: [
|
|
461
|
+
{
|
|
462
|
+
from: 2304,
|
|
463
|
+
to: 3455,
|
|
464
|
+
class: "v",
|
|
465
|
+
also: "u",
|
|
466
|
+
after: "aṁ",
|
|
467
|
+
not_before: "aieo"
|
|
468
|
+
},
|
|
469
|
+
{
|
|
470
|
+
from: 1536,
|
|
471
|
+
to: 7295,
|
|
472
|
+
class: "ṛ",
|
|
473
|
+
also: "r"
|
|
474
|
+
},
|
|
475
|
+
{
|
|
476
|
+
from: 0,
|
|
477
|
+
to: 127,
|
|
478
|
+
class: "ĝ",
|
|
479
|
+
also: "h"
|
|
480
|
+
},
|
|
439
481
|
{
|
|
440
482
|
from: 0,
|
|
441
483
|
to: 127,
|
|
@@ -455,6 +497,10 @@ var rules_default = {
|
|
|
455
497
|
also: "u"
|
|
456
498
|
}
|
|
457
499
|
],
|
|
500
|
+
joined: {
|
|
501
|
+
min_classes: 8,
|
|
502
|
+
when: "the strict keys find nobody"
|
|
503
|
+
},
|
|
458
504
|
digit_zeros: [
|
|
459
505
|
48,
|
|
460
506
|
1632,
|
|
@@ -565,6 +611,7 @@ var rules_default = {
|
|
|
565
611
|
};
|
|
566
612
|
|
|
567
613
|
// js/phonetic.ts
|
|
614
|
+
var DELETED = "\x00";
|
|
568
615
|
function compile(rules) {
|
|
569
616
|
const b = rules.brahmic;
|
|
570
617
|
const byOffset = new Array(128);
|
|
@@ -588,26 +635,31 @@ function compile(rules) {
|
|
|
588
635
|
}
|
|
589
636
|
function readBrahmic(word) {
|
|
590
637
|
let out = "";
|
|
638
|
+
let last = -1;
|
|
591
639
|
for (let i = 0;i < word.length; i++) {
|
|
592
640
|
const ch = word[i];
|
|
593
641
|
const x = extra.get(ch);
|
|
594
642
|
if (x !== undefined) {
|
|
595
643
|
out += x;
|
|
644
|
+
last = -1;
|
|
596
645
|
continue;
|
|
597
646
|
}
|
|
598
647
|
const o = word.charCodeAt(i);
|
|
599
648
|
if (o < b.from || o > b.to)
|
|
600
649
|
continue;
|
|
601
650
|
const off = o & 127;
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
|
|
651
|
+
const c = byOffset[off];
|
|
652
|
+
if (off === b.nukta_offset && b.flap_offsets.includes(last) && out) {
|
|
653
|
+
out = out.slice(0, -1) + b.flap_class;
|
|
654
|
+
} else if (off === b.virama_offset) {} else if (off === b.candrabindu_offset) {
|
|
605
655
|
out += b.candrabindu_class;
|
|
606
|
-
|
|
656
|
+
} else if (c !== undefined) {
|
|
657
|
+
out += c;
|
|
607
658
|
}
|
|
608
|
-
const c = byOffset[off];
|
|
609
659
|
if (c !== undefined)
|
|
610
|
-
|
|
660
|
+
last = off;
|
|
661
|
+
else if (off !== b.nukta_offset && off !== b.virama_offset)
|
|
662
|
+
last = -1;
|
|
611
663
|
}
|
|
612
664
|
return out;
|
|
613
665
|
}
|
|
@@ -728,6 +780,11 @@ function compile(rules) {
|
|
|
728
780
|
runs += out[i];
|
|
729
781
|
return runs;
|
|
730
782
|
}
|
|
783
|
+
function fits(classes, i, br) {
|
|
784
|
+
const prev = i > 0 ? classes[i - 1] : "^";
|
|
785
|
+
const next = i + 1 < classes.length ? classes[i + 1] : "$";
|
|
786
|
+
return (br.after === undefined || br.after.includes(prev)) && (br.before === undefined || br.before.includes(next)) && !(br.not_before ?? "").includes(next);
|
|
787
|
+
}
|
|
731
788
|
function variants(word) {
|
|
732
789
|
const classes = read(word);
|
|
733
790
|
let vs = [classes];
|
|
@@ -745,12 +802,13 @@ function compile(rules) {
|
|
|
745
802
|
if (!inScript)
|
|
746
803
|
continue;
|
|
747
804
|
for (let i = 0;i < classes.length; i++) {
|
|
748
|
-
if (classes[i] === br.class && vs.length * 2 <= rules.max_keys) {
|
|
749
|
-
|
|
805
|
+
if (classes[i] === br.class && vs.length * 2 <= rules.max_keys && fits(classes, i, br)) {
|
|
806
|
+
const also = br.also || DELETED;
|
|
807
|
+
vs = vs.concat(vs.map((v) => v.slice(0, i) + also + v.slice(i + 1)));
|
|
750
808
|
}
|
|
751
809
|
}
|
|
752
810
|
}
|
|
753
|
-
return vs;
|
|
811
|
+
return vs.map((v) => v.replaceAll(DELETED, ""));
|
|
754
812
|
}
|
|
755
813
|
function number(word) {
|
|
756
814
|
let out = "";
|
|
@@ -788,6 +846,7 @@ function compile(rules) {
|
|
|
788
846
|
};
|
|
789
847
|
}
|
|
790
848
|
var engine = compile(rules_default);
|
|
849
|
+
var _internal = { compile: (r) => compile(r), normalize: (w) => normalize(w), engine };
|
|
791
850
|
var RULES_VERSION = rules_default.version;
|
|
792
851
|
var MAX_NAME_KEYS = 256;
|
|
793
852
|
function normalize(word) {
|
|
@@ -817,6 +876,13 @@ function nameKeys(name) {
|
|
|
817
876
|
}
|
|
818
877
|
return out[0] === "" ? [] : out;
|
|
819
878
|
}
|
|
879
|
+
var JOINED_MIN_CLASSES = rules_default.joined.min_classes;
|
|
880
|
+
function joinedKeys(name) {
|
|
881
|
+
const joined = words(name).map(normalize).join("");
|
|
882
|
+
if (!joined)
|
|
883
|
+
return [];
|
|
884
|
+
return engine(joined).filter((k) => [...k].length >= JOINED_MIN_CLASSES);
|
|
885
|
+
}
|
|
820
886
|
function match(a, b) {
|
|
821
887
|
const wa = words(a), wb = words(b);
|
|
822
888
|
if (!wa.length || wa.length !== wb.length)
|
|
@@ -831,6 +897,9 @@ export {
|
|
|
831
897
|
nameKeys,
|
|
832
898
|
match,
|
|
833
899
|
keys,
|
|
900
|
+
joinedKeys,
|
|
901
|
+
_internal,
|
|
834
902
|
RULES_VERSION,
|
|
835
|
-
MAX_NAME_KEYS
|
|
903
|
+
MAX_NAME_KEYS,
|
|
904
|
+
JOINED_MIN_CLASSES
|
|
836
905
|
};
|