coptic-transliterator 0.0.1

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.
@@ -0,0 +1,8 @@
1
+ export declare enum VowelType {
2
+ ALL = "all",
3
+ A = "a",
4
+ E = "e",
5
+ O = "o"
6
+ }
7
+ export declare function tranliterate(input: string): string;
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAQA,oBAAY,SAAS;IACnB,GAAG,QAAQ;IACX,CAAC,MAAM;IACP,CAAC,MAAM;IACP,CAAC,MAAM;CACR;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAqBlD"}
package/dist/index.js ADDED
@@ -0,0 +1,159 @@
1
+ export var VowelType;
2
+ (function (VowelType) {
3
+ VowelType["ALL"] = "all";
4
+ VowelType["A"] = "a";
5
+ VowelType["E"] = "e";
6
+ VowelType["O"] = "o";
7
+ })(VowelType || (VowelType = {}));
8
+ export function tranliterate(input) {
9
+ const output = input
10
+ .match(/[\u2c80-\u2cb1]|[\u03e2-\u03ef]|[ \.\:\n\t\r\u0300]/g)
11
+ ?.map((char, index, array) => {
12
+ const ctx = {
13
+ prev: index > 0 ? array[index - 1] : "",
14
+ next: index < array.length - 1 ? array[index + 1] : "",
15
+ index,
16
+ text: input,
17
+ };
18
+ const rule = arabicMapping[char];
19
+ if (typeof rule === "string") {
20
+ return rule;
21
+ }
22
+ else if (typeof rule === "function") {
23
+ return rule(ctx);
24
+ }
25
+ return char;
26
+ })
27
+ .join("") || input;
28
+ return output;
29
+ }
30
+ const arabicMapping = {
31
+ "\u2c80": "ا",
32
+ "\u2c81": "ا",
33
+ "\u2c82": (ctx) => (isVowel(ctx.next) ? "ڤ" : "ب"),
34
+ "\u2c83": (ctx) => (isVowel(ctx.next) ? "ڤ" : "ب"),
35
+ "\u2c84": (ctx) => isVowel(ctx.next, VowelType.E) ? "ج" : isGuttural(ctx.next) ? "ن" : "غ",
36
+ "\u2c85": (ctx) => isVowel(ctx.next, VowelType.E) ? "ج" : isGuttural(ctx.next) ? "ن" : "غ",
37
+ "\u2c86": "ذ",
38
+ "\u2c87": "ذ",
39
+ "\u2c88": (ctx) => isFirstLetterInWord(ctx) ? "إ" : isLastLetterInWord(ctx) ? "يه" : "ي",
40
+ "\u2c89": (ctx) => isFirstLetterInWord(ctx) ? "إ" : isLastLetterInWord(ctx) ? "يه" : "ي",
41
+ "\u2c8a": "6",
42
+ "\u2c8b": "6",
43
+ "\u2c8c": "ز",
44
+ "\u2c8d": "ز",
45
+ "\u2c8e": "ي",
46
+ "\u2c8f": "ي",
47
+ "\u2c90": (ctx) => (isCimaOrShai(ctx.next) ? "ت" : "ث"),
48
+ "\u2c91": (ctx) => (isCimaOrShai(ctx.next) ? "ت" : "ث"),
49
+ "\u2c92": "ي",
50
+ "\u2c93": "ي",
51
+ "\u2c94": "ك",
52
+ "\u2c95": "ك",
53
+ "\u2c96": "ل",
54
+ "\u2c97": "ل",
55
+ "\u2c98": "م",
56
+ "\u2c99": "م",
57
+ "\u2c9a": "ن",
58
+ "\u2c9b": "ن",
59
+ "\u2c9c": "كس",
60
+ "\u2c9d": "كس",
61
+ "\u2c9e": (ctx) => (isFirstLetterInWord(ctx) ? "أو" : "و"),
62
+ "\u2c9f": (ctx) => (isFirstLetterInWord(ctx) ? "أو" : "و"),
63
+ "\u2ca0": "ب",
64
+ "\u2ca1": "ب",
65
+ "\u2ca2": "ر",
66
+ "\u2ca3": "ر",
67
+ "\u2ca4": "س",
68
+ "\u2ca5": "س",
69
+ "\u2ca6": "ت",
70
+ "\u2ca7": "ت",
71
+ "\u2ca8": (ctx) => isAlphaOrEi(ctx.prev) ? "ڤ" : isOmicron(ctx.prev) ? "و" : "ي",
72
+ "\u2ca9": (ctx) => isAlphaOrEi(ctx.prev) ? "ڤ" : isOmicron(ctx.prev) ? "و" : "ي",
73
+ "\u2caa": "ف",
74
+ "\u2cab": "ف",
75
+ "\u2cac": "ك",
76
+ "\u2cad": "ك",
77
+ "\u2cae": "بس",
78
+ "\u2caf": "بس",
79
+ "\u2cb0": "و",
80
+ "\u2cb1": "و",
81
+ "\u03e2": "ش", //Old Coptic Letters
82
+ "\u03e3": "ش",
83
+ "\u03e4": "ف",
84
+ "\u03e5": "ف",
85
+ "\u03e6": "خ",
86
+ "\u03e7": "خ",
87
+ "\u03e8": "ه",
88
+ "\u03e9": "ه",
89
+ "\u03ea": (ctx) => (isVowel(ctx.next, VowelType.E) ? "چ" : "ج"),
90
+ "\u03eb": (ctx) => (isVowel(ctx.next, VowelType.E) ? "چ" : "ج"),
91
+ "\u03ec": "تش",
92
+ "\u03ed": "تش",
93
+ "\u03ee": "تي",
94
+ "\u03ef": "تي",
95
+ "\u0300": "إ",
96
+ };
97
+ const isVowel = (char, type = VowelType.ALL) => {
98
+ const aVowels = [
99
+ "\u2c80",
100
+ "\u2c81", //Alpha
101
+ ];
102
+ const eVowels = [
103
+ "\u2c88",
104
+ "\u2c89", //Ei
105
+ "\u2c8e",
106
+ "\u2c8f", //Eita
107
+ "\u2c92",
108
+ "\u2c93", //Iota
109
+ "\u2ca8",
110
+ "\u2ca9", //Upsilon
111
+ ];
112
+ const oVowels = [
113
+ "\u2c9e",
114
+ "\u2c9f", //Omicron
115
+ "\u2cb0",
116
+ "\u2cb1", //Omega
117
+ ];
118
+ if (type === VowelType.A)
119
+ return aVowels.includes(char);
120
+ if (type === VowelType.E)
121
+ return eVowels.includes(char);
122
+ if (type === VowelType.O)
123
+ return oVowels.includes(char);
124
+ return (aVowels.includes(char) || eVowels.includes(char) || oVowels.includes(char));
125
+ };
126
+ const isGuttural = (char) => {
127
+ const gutturals = [
128
+ "\u2c84",
129
+ "\u2c85", //Gamma
130
+ "\u2c94",
131
+ "\u2c95", //Kabba
132
+ "\u2c9c",
133
+ "\u2c9d", //Exi
134
+ "\u2cac",
135
+ "\u2cad", //Chi
136
+ ];
137
+ return gutturals.includes(char);
138
+ };
139
+ const isFirstLetterInWord = (ctx) => {
140
+ return ctx.index === 0 || ctx.prev === " " || ctx.prev === "\n";
141
+ };
142
+ const isLastLetterInWord = (ctx) => {
143
+ return (ctx.index === ctx.text.length - 1 || ctx.next === " " || ctx.next === "\n");
144
+ };
145
+ const isCimaOrShai = (char) => {
146
+ const cima = ["\u2ca4", "\u2ca5"];
147
+ const shai = ["\u03e2", "\u03e3"];
148
+ return cima.includes(char) || shai.includes(char);
149
+ };
150
+ const isAlphaOrEi = (char) => {
151
+ const alpha = ["\u2c80", "\u2c81"];
152
+ const ei = ["\u2c88", "\u2c89"];
153
+ return alpha.includes(char) || ei.includes(char);
154
+ };
155
+ const isOmicron = (char) => {
156
+ const omicron = ["\u2c9e", "\u2c9f"];
157
+ return omicron.includes(char);
158
+ };
159
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAQA,MAAM,CAAN,IAAY,SAKX;AALD,WAAY,SAAS;IACnB,wBAAW,CAAA;IACX,oBAAO,CAAA;IACP,oBAAO,CAAA;IACP,oBAAO,CAAA;AACT,CAAC,EALW,SAAS,KAAT,SAAS,QAKpB;AAED,MAAM,UAAU,YAAY,CAAC,KAAa;IACxC,MAAM,MAAM,GACV,KAAK;SACF,KAAK,CAAC,sDAAsD,CAAC;QAC9D,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;QAC3B,MAAM,GAAG,GAAY;YACnB,IAAI,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;YACvC,IAAI,EAAE,KAAK,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;YACtD,KAAK;YACL,IAAI,EAAE,KAAK;SACZ,CAAC;QACF,MAAM,IAAI,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;QACjC,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC7B,OAAO,IAAI,CAAC;QACd,CAAC;aAAM,IAAI,OAAO,IAAI,KAAK,UAAU,EAAE,CAAC;YACtC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC;QACnB,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC,CAAC;SACD,IAAI,CAAC,EAAE,CAAC,IAAI,KAAK,CAAC;IACvB,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,aAAa,GAAyB;IAC1C,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;IAClD,QAAQ,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;IAClD,QAAQ,EAAE,CAAC,GAAG,EAAE,EAAE,CAChB,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG;IACzE,QAAQ,EAAE,CAAC,GAAG,EAAE,EAAE,CAChB,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG;IACzE,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,CAAC,GAAG,EAAE,EAAE,CAChB,mBAAmB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG;IACvE,QAAQ,EAAE,CAAC,GAAG,EAAE,EAAE,CAChB,mBAAmB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG;IACvE,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;IACvD,QAAQ,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;IACvD,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,IAAI;IACd,QAAQ,EAAE,IAAI;IACd,QAAQ,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC;IAC1D,QAAQ,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC;IAC1D,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,CAAC,GAAG,EAAE,EAAE,CAChB,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG;IAC/D,QAAQ,EAAE,CAAC,GAAG,EAAE,EAAE,CAChB,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG;IAC/D,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,IAAI;IACd,QAAQ,EAAE,IAAI;IACd,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG,EAAE,oBAAoB;IACnC,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;IAC/D,QAAQ,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;IAC/D,QAAQ,EAAE,IAAI;IACd,QAAQ,EAAE,IAAI;IACd,QAAQ,EAAE,IAAI;IACd,QAAQ,EAAE,IAAI;IACd,QAAQ,EAAE,GAAG;CACd,CAAC;AACF,MAAM,OAAO,GAAG,CAAC,IAAY,EAAE,OAAkB,SAAS,CAAC,GAAG,EAAW,EAAE;IACzE,MAAM,OAAO,GAAG;QACd,QAAQ;QACR,QAAQ,EAAE,OAAO;KAClB,CAAC;IACF,MAAM,OAAO,GAAG;QACd,QAAQ;QACR,QAAQ,EAAE,IAAI;QACd,QAAQ;QACR,QAAQ,EAAE,MAAM;QAChB,QAAQ;QACR,QAAQ,EAAE,MAAM;QAChB,QAAQ;QACR,QAAQ,EAAE,SAAS;KACpB,CAAC;IACF,MAAM,OAAO,GAAG;QACd,QAAQ;QACR,QAAQ,EAAE,SAAS;QACnB,QAAQ;QACR,QAAQ,EAAE,OAAO;KAClB,CAAC;IAEF,IAAI,IAAI,KAAK,SAAS,CAAC,CAAC;QAAE,OAAO,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAExD,IAAI,IAAI,KAAK,SAAS,CAAC,CAAC;QAAE,OAAO,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAExD,IAAI,IAAI,KAAK,SAAS,CAAC,CAAC;QAAE,OAAO,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAExD,OAAO,CACL,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAC3E,CAAC;AACJ,CAAC,CAAC;AACF,MAAM,UAAU,GAAG,CAAC,IAAY,EAAW,EAAE;IAC3C,MAAM,SAAS,GAAG;QAChB,QAAQ;QACR,QAAQ,EAAE,OAAO;QACjB,QAAQ;QACR,QAAQ,EAAE,OAAO;QACjB,QAAQ;QACR,QAAQ,EAAE,KAAK;QACf,QAAQ;QACR,QAAQ,EAAE,KAAK;KAChB,CAAC;IACF,OAAO,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AAClC,CAAC,CAAC;AACF,MAAM,mBAAmB,GAAG,CAAC,GAAY,EAAW,EAAE;IACpD,OAAO,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,GAAG,CAAC,IAAI,KAAK,GAAG,IAAI,GAAG,CAAC,IAAI,KAAK,IAAI,CAAC;AAClE,CAAC,CAAC;AACF,MAAM,kBAAkB,GAAG,CAAC,GAAY,EAAW,EAAE;IACnD,OAAO,CACL,GAAG,CAAC,KAAK,KAAK,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,KAAK,GAAG,IAAI,GAAG,CAAC,IAAI,KAAK,IAAI,CAC3E,CAAC;AACJ,CAAC,CAAC;AACF,MAAM,YAAY,GAAG,CAAC,IAAY,EAAW,EAAE;IAC7C,MAAM,IAAI,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAClC,MAAM,IAAI,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAClC,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AACpD,CAAC,CAAC;AACF,MAAM,WAAW,GAAG,CAAC,IAAY,EAAW,EAAE;IAC5C,MAAM,KAAK,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IACnC,MAAM,EAAE,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAChC,OAAO,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AACnD,CAAC,CAAC;AACF,MAAM,SAAS,GAAG,CAAC,IAAY,EAAW,EAAE;IAC1C,MAAM,OAAO,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IACrC,OAAO,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AAChC,CAAC,CAAC"}
package/package.json ADDED
@@ -0,0 +1,28 @@
1
+ {
2
+ "name": "coptic-transliterator",
3
+ "author": "ADHG",
4
+ "version": "0.0.1",
5
+ "main": "dist/index.js",
6
+ "types": "dist/index.d.ts",
7
+ "type": "module",
8
+ "license": "MIT",
9
+ "description": "npm package to transliterate Coptic text to different languages.",
10
+ "keywords": [
11
+ "Coptic",
12
+ "Transliterate"
13
+ ],
14
+ "repository": {
15
+ "type": "git",
16
+ "url": "https://github.com/archdeacon-habibgerges/coptic-transliterator.git"
17
+ },
18
+ "files": [
19
+ "dist",
20
+ "README.md"
21
+ ],
22
+ "scripts": {
23
+ "build": "tsc"
24
+ },
25
+ "devDependencies": {
26
+ "typescript": "^5.9.3"
27
+ }
28
+ }