diff --git a/README.md b/README.md index c2b74c5..619fbf0 100644 --- a/README.md +++ b/README.md @@ -20,19 +20,21 @@ preeti('sf7df08"'); #### Other fonts -You also can use converters for PCS Nepali and Kantipur by providing a second parameter. +You also can use converters for other fonts by providing a second parameter. Here is the list of all supported fonts. ```javascript -preeti('sf7df08"', 'PCS Nepali'); +preeti('sf&df)*"', 'PCS Nepali'); preeti('sf7df08"', 'Kantipur'); +preeti('sf&df)*"', 'Fontasy Himali TT'); +preeti('sf7df08"', 'Sagarmatha'); ``` ### Original Shell and JS code -This project is based on code and regular expressions from the FOSS Nepal community +This project is based on code and regular expressions from the [FOSS Nepal](https://github.com/foss-np) community -- 2utf8 a Bash command -- nep-ttf2utf a JS and Python3 port by sapradhan +- [2utf8](https://github.com/foss-np/2utf8) a Bash command +- [nep-ttf2utf](https://github.com/sapradhan/nep-ttf2utf) a JS and Python3 port by sapradhan ### License diff --git a/package.json b/package.json index 9483656..1194856 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "preeti", - "version": "1.0.3", - "description": "Convert Nepali Preeti ASCII font to Unicode", + "version": "1.1.0", + "description": "Convert text in Nepali ASCII fonts to Unicode", "main": "preeti.js", "scripts": { "test": "mocha" @@ -22,7 +22,7 @@ "url": "https://github.com/mapmeld/preeti/issues" }, "devDependencies": { - "mocha": "^2.2.5" + "mocha": "^11.0.1" }, "homepage": "https://github.com/mapmeld/preeti#readme", "publicKey": "public_key.asc" diff --git a/preeti.js b/preeti.js index 144a5ee..fb603ff 100644 --- a/preeti.js +++ b/preeti.js @@ -1,25 +1,4 @@ -var all_rules = { - "preeti": { - "name": "Preeti", - "post-rules": [["्ा", ""], ["(त्र|त्त)([^उभप]+?)m", "$1m$2"], ["त्रm", "क्र"], ["त्तm", "क्त"], ["([^उभप]+?)m", "m$1"], ["उm", "ऊ"], ["भm", "झ"], ["पm", "फ"], ["इ{", "ई"], ["ि((.्)*[^्])", "$1ि"], ["(.[ािीुूृेैोौंःँ]*?){", "{$1"], ["((.्)*){", "{$1"], ["{", "र्"], ["([ाीुूृेैोौंःँ]+?)(्(.्)*[^्])", "$2$1"], ["्([ाीुूृेैोौंःँ]+?)((.्)*[^्])", "्$2$1"], ["([ंँ])([ािीुूृेैोौः]*)", "$2$1"], ["ँँ", "ँ"], ["ंं", "ं"], ["ेे", "े"], ["ैै", "ै"], ["ुु", "ु"], ["ूू", "ू"], ["^ः", ":"], ["टृ", "ट्ट"], ["ेा", "ाे"], ["ैा", "ाै"], ["अाे", "ओ"], ["अाै", "औ"], ["अा", "आ"], ["एे", "ऐ"], ["ाे", "ो"], ["ाै", "ौ"]], - "v": "1.0.1", - "char-map": { - "÷": "/", "v": "ख", "r": "च", "\"": "ू", "~": "ञ्", "z": "श", "ç": "ॐ", "f": "ा", "b": "द", "n": "ल", "j": "व", "×": "×", "V": "ख्", "R": "च्", "ß": "द्म", "^": "६", "Û": "!", "Z": "श्", "F": "ँ", "B": "द्य", "N": "ल्", "Ë": "ङ्ग", "J": "व्", "6": "ट", "2": "द्द", "¿": "रू", ">": "श्र", ":": "स्", "§": "ट्ट", "&": "७", "£": "घ्", "•": "ड्ड", ".": "।", "«": "्र", "*": "८", "„": "ध्र", "w": "ध", "s": "क", "g": "न", "æ": "“", "c": "अ", "o": "य", "k": "प", "W": "ध्", "Ö": "=", "S": "क्", "Ò": "¨", "_": ")", "[": "ृ", "Ú": "’", "G": "न्", "ˆ": "फ्", "C": "ऋ", "O": "इ", "Î": "ङ्ख", "K": "प्", "7": "ठ", "¶": "ठ्ठ", "3": "घ", "9": "ढ", "?": "रु", ";": "स", "'": "ु", "#": "३", "¢": "द्घ", "/": "र", "+": "ं", "ª": "ङ", "t": "त", "p": "उ", "|": "्र", "x": "ह", "å": "द्व", "d": "म", "`": "ञ", "l": "ि", "h": "ज", "T": "त्", "P": "ए", "Ý": "ट्ठ", "\\": "्", "Ù": ";", "X": "ह्", "Å": "हृ", "D": "म्", "@": "२", "Í": "ङ्क", "L": "ी", "H": "ज्", "4": "द्ध", "±": "+", "0": "ण्", "<": "?", "8": "ड", "¥": "र्‍", "$": "४", "¡": "ज्ञ्", ",": ",", "©": "र", "(": "९", "‘": "ॅ", "u": "ग", "q": "त्र", "}": "ै", "y": "थ", "e": "भ", "a": "ब", "i": "ष्", "‰": "झ्", "U": "ग्", "Q": "त्त", "]": "े", "˜": "ऽ", "Y": "थ्", "Ø": "्य", "E": "भ्", "A": "ब्", "M": "ः", "Ì": "न्न", "I": "क्ष्", "5": "छ", "´": "झ", "1": "ज्ञ", "°": "ङ्ढ", "=": ".", "Æ": "”", "‹": "ङ्घ", "%": "५", "¤": "झ्", "!": "१", "-": "(", "›": "द्र", ")": "०", "…": "‘", "Ü": "%" - } - }, - "pcs nepali": { - "name": "PCS Nepali", - "post-rules": [["्ा", ""], ["(त्र|त्त)([^उभप]+?)m", "$1m$2"], ["त्रm", "क्र"], ["त्तm", "क्त"], ["([^उभप]+?)m", "m$1"], ["उm", "ऊ"], ["भm", "झ"], ["पm", "फ"], ["इ{", "ई"], ["ि((.्)*[^्])", "$1ि"], ["(.[ािीुूृेैोौंःँ]*?){", "{$1"], ["((.्)*){", "{$1"], ["{", "र्"], ["([ाीुूृेैोौंःँ]+?)(्(.्)*[^्])", "$2$1"], ["्([ाीुूृेैोौंःँ]+?)((.्)*[^्])", "्$2$1"], ["([ंँ])([ािीुूृेैोौः]*)", "$2$1"], ["ँँ", "ँ"], ["ंं", "ं"], ["ेे", "े"], ["ैै", "ै"], ["ुु", "ु"], ["ूू", "ू"], ["^ः", ":"], ["टृ", "ट्ट"], ["ेा", "ाे"], ["ैा", "ाै"], ["अाे", "ओ"], ["अाै", "औ"], ["अा", "आ"], ["एे", "ऐ"], ["ाे", "ो"], ["ाै", "ौ"]], - "v": "1.0.0", - "char-map": {"t": "त", "÷": "/", "v": "ख", "ñ": "ङ", "p": "उ", "r": "च", "|": "्र", "~": "ङ", "x": "ह", "z": "श", "å": "द्व", "d": "म", "ç": "ॐ", "f": "ा", "`": "ञ्", "b": "द", "í": "ष", "l": "ि", "n": "ल", "é": "ङ्ग", "h": "ज", "j": "व", "T": "त्", "V": "ख्", "P": "ए", "R": "च्", "\\": "्", "ß": "द्म", "^": "ट", "Ù": "ह", "X": "ह्", "Z": "श्", "D": "म्", "F": "ा", "@": "द्द", "B": "द्य", "L": "ी", "N": "ल्", "H": "ज्", "J": "व्", "4": "४", "·": "ट्ठ", "6": "६", "0": "०", "2": "२", "<": "्र", "¿": "रु", ">": "श्र", "8": "८", ":": "स्", "¥": "ऋ", "$": "द्ध", "§": "ट्ट", "&": "ठ", "¡": "ज्ञ्", "£": "घ्", "\"": "ू", ",": ",", ".": "।", "©": "?", "(": "ढ", "*": "ड", "u": "ग", "w": "ध", "q": "त्र", "s": "क", "}": "ै", "y": "थ", "ø": "य्", "ú": "ू", "e": "भ", "g": "न", "æ": "“", "a": "ब", "c": "अ", "o": "य", "i": "ष्", "k": "प", "U": "ग्", "Ô": "क्ष", "W": "ध्", "Q": "त्त", "S": "क्", "Ò": "ू", "]": "े", "_": ")", "Y": "थ्", "Ø": "्य", "[": "ृ", "E": "भ्", "G": "न्", "Æ": "”", "A": "ब्", "C": "र्‍", "M": "ः", "O": "इ", "I": "क्ष्", "K": "प्", "5": "५", "´": "झ", "7": "७", "1": "१", "°": "ङ्क", "3": "३", "=": ".", "?": "रू", "9": "९", ";": "स", "%": "छ", "¤": "ँ", "'": "ु", "!": "ज्ञ", "#": "घ", "¢": "द्घ", "-": "(", "/": "र", "®": "+", ")": "ण्", "+": "ं", "ª": "ञ"} - }, - "kantipur": { - "name": "Kantipur", - "post-rules": [["्ा", ""], ["(त्र|त्त)([^उभप]+?)m", "$1m$2"], ["त्रm", "क्र"], ["त्तm", "क्त"], ["([^उभप]+?)m", "m$1"], ["उm", "ऊ"], ["भm", "झ"], ["पm", "फ"], ["इ{", "ई"], ["ि((.्)*[^्])", "$1ि"], ["(.[ािीुूृेैोौंःँ]*?){", "{$1"], ["((.्)*){", "{$1"], ["{", "र्"], ["([ाीुूृेैोौंःँ]+?)(्(.्)*[^्])", "$2$1"], ["्([ाीुूृेैोौंःँ]+?)((.्)*[^्])", "्$2$1"], ["([ंँ])([ािीुूृेैोौः]*)", "$2$1"], ["ँँ", "ँ"], ["ंं", "ं"], ["ेे", "े"], ["ैै", "ै"], ["ुु", "ु"], ["ूू", "ू"], ["^ः", ":"], ["टृ", "ट्ट"], ["ेा", "ाे"], ["ैा", "ाै"], ["अाे", "ओ"], ["अाै", "औ"], ["अा", "आ"], ["एे", "ऐ"], ["ाे", "ो"], ["ाै", "ौ"]], - "v": "1.0.1", - "char-map": {"÷": "/", "v": "ख", "r": "च", "\"": "ू", "~": "ञ्", "z": "श", "ç": "ॐ", "f": "ा", "b": "द", "n": "ल", "j": "व", "V": "ख्", "R": "च्", "ß": "द्म", "^": "६", "Z": "श्", "F": "ा", "B": "द्य", "Ï": "फ्", "N": "ल्", "Ë": "ङ्ग", "J": "व्", "6": "ट", "2": "द्द", "¿": "रू", ">": "श्र", ":": "स्", "§": "ट्ट", "&": "७", "£": "घ्", "•": "ड्ड", "¯": "¯", ".": "।", "«": "्र", "*": "८", "„": "ध्र", "w": "ध", "s": "क", "g": "न", "æ": "“", "c": "अ", "o": "य", "k": "प", "W": "ध्", "S": "क्", "Ò": "¨", "_": ")", "[": "ृ", "Ú": "’", "G": "न्", "Æ": "”", "C": "ऋ", "Â": "र", "O": "इ", "Î": "फ्", "K": "प्", "7": "ठ", "¶": "ठ्ठ", "3": "घ", "9": "ढ", "?": "रु", ";": "स", "º": "फ्", "'": "ु", "#": "३", "¢": "द्घ", "/": "र", "®": "र", "+": "ं", "ª": "ङ", "t": "त", "p": "उ", "|": "्र", "x": "ह", "å": "द्व", "d": "म", "`": "ञ", "l": "ि", "h": "ज", "T": "त्", "P": "ए", "Œ": "त्त्", "\\": "्", "X": "हृ", "D": "म्", "@": "२", "Í": "ङ्क", "L": "ी", "H": "ज्", "µ": "र", "4": "द्ध", "±": "+", "0": "ण्", "<": "?", "8": "ड", "¥": "र्‍", "$": "४", "¡": "ज्ञ्", "†": "!", "™": "र", "­": "(", ",": ",", "©": "र", "(": "९", "“": "ँ", "‘": "ॅ", "u": "ग", "q": "त्र", "}": "ै", "y": "थ", "ø": "य्", "e": "भ", "a": "ब", "i": "ष्", "‰": "झ्", "U": "ग्", "Ô": "क्ष", "Q": "त्त", "œ": "त्र्", "]": "े", "˜": "ऽ", "Y": "थ्", "Ø": "्य", "E": "भ्", "A": "ब्", "M": "ः", "Ì": "न्न", "I": "क्ष्", "È": "ष", "5": "छ", "´": "झ", "1": "ज्ञ", "°": "ङ्ढ", "=": ".", "‹": "ङ्ग", "%": "५", "¤": "झ्", "!": "१", "-": "(", "¬": "…", "›": "ऽ", ")": "०", "¨": "ङ्ग", "…": "‘"} - } -}; +const all_rules = {"pcs nepali": {"name": "PCS Nepali", "v": "1.1.0", "char-map": {"~": "ङ", "!": "ज्ञ", "@": "द्द", "#": "घ", "$": "द्ध", "%": "छ", "^": "ट", "&": "ठ", "*": "ड", "(": "ढ", ")": "ण्", "_": ")", "+": "ं", "`": "ञ्", "1": "१", "2": "२", "3": "३", "4": "४", "5": "५", "6": "६", "7": "७", "8": "८", "9": "९", "0": "०", "-": "(", "=": ".", "Q": "त्त", "W": "ध्", "E": "भ्", "R": "च्", "T": "त्", "Y": "थ्", "U": "ग्", "I": "क्ष्", "O": "इ", "P": "ए", "}": "ै", "|": "्र", "q": "त्र", "w": "ध", "e": "भ", "r": "च", "t": "त", "y": "थ", "u": "ग", "i": "ष्", "o": "य", "p": "उ", "[": "ृ", "]": "े", "\\": "्", "A": "ब्", "S": "क्", "D": "म्", "F": "ा", "G": "न्", "H": "ज्", "J": "व्", "K": "प्", "L": "ी", ":": "स्", "\"": "ू", "a": "ब", "s": "क", "d": "म", "f": "ा", "g": "न", "h": "ज", "j": "व", "k": "प", "l": "ि", ";": "स", "'": "ु", "Z": "श्", "X": "ह्", "C": "ऱ्", "V": "ख्", "B": "द्य", "N": "ल्", "M": "ः", "<": "्र", ">": "श्र", "?": "रू", "z": "श", "x": "ह", "c": "अ", "v": "ख", "b": "द", "n": "ल", ",": ",", ".": "।", "/": "र", "¡": "ज्ञ्", "¢": "द्घ", "£": "घ्", "¤": "ँ", "¥": "ऋ", "§": "ट्ट", "©": "?", "ª": "ञ", "®": "+", "°": "ङ्क", "´": "झ", "·": "ट्ठ", "¿": "रु", "Æ": "”", "Ò": "ू", "Ô": "क्ष", "Ø": "्य", "Ù": "ह", "ß": "द्म", "å": "द्व", "æ": "“", "ç": "ॐ", "é": "ङ्ग", "í": "ष", "ñ": "ङ", "÷": "/", "ø": "य्", "ú": "ू"}, "post-rules": [["्ा", ""], ["(त्र|त्त)([^उभप]+?)m", "$1m$2"], ["त्रm", "क्र"], ["त्तm", "क्त"], ["([^उभप]+?)m", "m$1"], ["उm", "ऊ"], ["भm", "झ"], ["पm", "फ"], ["इ{", "ई"], ["ि((.्)*[^्])", "$1ि"], ["(.[ािीुूृेैोौंःँ]*?){", "{$1"], ["((.्)*){", "{$1"], ["{", "र्"], ["([ाीुूृेैोौंःँ]+?)(्(.्)*[^्])", "$2$1"], ["्([ाीुूृेैोौंःँ]+?)((.्)*[^्])", "्$2$1"], ["([ंँ])([ािीुूृेैोौः]*)", "$2$1"], ["ँँ", "ँ"], ["ंं", "ं"], ["ेे", "े"], ["ैै", "ै"], ["ुु", "ु"], ["ूू", "ू"], ["^ः", ":"], ["टृ", "ट्ट"], ["ेा", "ाे"], ["ैा", "ाै"], ["अाे", "ओ"], ["अाै", "औ"], ["अा", "आ"], ["एे", "ऐ"], ["ाे", "ो"], ["ाै", "ौ"]], "pre-rules": []}, "fontasy himali tt": {"name": "FONTASY HIMALI TT", "v": "1.1.0", "char-map": {"~": "ञ", "!": "ज्ञ", "@": "द्द", "#": "घ", "$": "द्ध", "%": "छ", "^": "ट", "&": "ठ", "*": "ड", "(": "ढ", ")": "ण्", "_": ")", "+": "ं", "`": "ञ्", "1": "१", "2": "२", "3": "३", "4": "४", "5": "५", "6": "६", "7": "७", "8": "८", "9": "९", "0": "०", "-": "(", "=": ".", "Q": "त्त", "W": "ध्", "E": "भ्", "R": "च्", "T": "त्", "Y": "थ्", "U": "ग्", "I": "क्ष्", "O": "इ", "P": "ए", "}": "ै", "|": "्र", "q": "त्र", "w": "ध", "e": "भ", "r": "च", "t": "त", "y": "थ", "u": "ग", "i": "ष्", "o": "य", "p": "उ", "[": "ृ", "]": "े", "\\": "्", "A": "ब्", "S": "क्", "D": "म्", "F": "ा", "G": "न्", "H": "ज्", "J": "व्", "K": "प्", "L": "ी", ":": "स्", "\"": "ू", "a": "ब", "s": "क", "d": "म", "f": "ा", "g": "न", "h": "ज", "j": "व", "k": "प", "l": "ि", ";": "स", "'": "ु", "Z": "श्", "X": "हृ", "C": "ऋ", "V": "ख्", "B": "द्य", "N": "ल्", "M": "ः", "<": "?", ">": "श्र", "?": "रु", "z": "श", "x": "ह", "c": "अ", "v": "ख", "b": "द", "n": "ल", ",": ",", ".": "।", "/": "र", "¡": "ज्ञ्", "¢": "द्घ", "£": "घ्", "¤": "ँ", "¥": "ऱ्", "§": "ट्ट", "ª": "ङ", "«": "्र", "­": "(", "®": "+", "°": "ङ्क", "´": "झ", "¶": "ठ्ठ", "»": "", "¿": "रू", "Æ": "”", "Ñ": "ङ", "Ò": "ू", "Ô": "क्ष", "×": "×", "Ø": "्य", "Ù": "ह", "Ú": "ु", "ß": "द्म", "å": "द्व", "æ": "“", "ç": "ॐ", "é": "ङ्ग", "í": "ष", "÷": "/", "ø": "य्", "ú": "ू"}, "post-rules": [["्ा", ""], ["(त्र|त्त)([^उभप]+?)m", "$1m$2"], ["त्रm", "क्र"], ["त्तm", "क्त"], ["([^उभप]+?)m", "m$1"], ["उm", "ऊ"], ["भm", "झ"], ["पm", "फ"], ["इ{", "ई"], ["ि((.्)*[^्])", "$1ि"], ["(.[ािीुूृेैोौंःँ]*?){", "{$1"], ["((.्)*){", "{$1"], ["{", "र्"], ["([ाीुूृेैोौंःँ]+?)(्(.्)*[^्])", "$2$1"], ["्([ाीुूृेैोौंःँ]+?)((.्)*[^्])", "्$2$1"], ["([ंँ])([ािीुूृेैोौः]*)", "$2$1"], ["ँँ", "ँ"], ["ंं", "ं"], ["ेे", "े"], ["ैै", "ै"], ["ुु", "ु"], ["ूू", "ू"], ["^ः", ":"], ["टृ", "ट्ट"], ["ेा", "ाे"], ["ैा", "ाै"], ["अाे", "ओ"], ["अाै", "औ"], ["अा", "आ"], ["एे", "ऐ"], ["ाे", "ो"], ["ाै", "ौ"]], "pre-rules": []}, "kantipur": {"name": "Kantipur", "v": "1.1.0", "char-map": {"~": "ञ्", "!": "१", "@": "२", "#": "३", "$": "४", "%": "५", "^": "६", "&": "७", "*": "८", "(": "९", ")": "०", "_": ")", "+": "ं", "`": "ञ", "1": "ज्ञ", "2": "द्द", "3": "घ", "4": "द्ध", "5": "छ", "6": "ट", "7": "ठ", "8": "ड", "9": "ढ", "0": "ण्", "-": "(", "=": ".", "Q": "त्त", "W": "ध्", "E": "भ्", "R": "च्", "T": "त्", "Y": "थ्", "U": "ग्", "I": "क्ष्", "O": "इ", "P": "ए", "}": "ै", "|": "्र", "q": "त्र", "w": "ध", "e": "भ", "r": "च", "t": "त", "y": "थ", "u": "ग", "i": "ष्", "o": "य", "p": "उ", "[": "ृ", "]": "े", "\\": "्", "A": "ब्", "S": "क्", "D": "म्", "F": "ा", "G": "न्", "H": "ज्", "J": "व्", "K": "प्", "L": "ी", ":": "स्", "\"": "ू", "a": "ब", "s": "क", "d": "म", "f": "ा", "g": "न", "h": "ज", "j": "व", "k": "प", "l": "ि", ";": "स", "'": "ु", "Z": "श्", "X": "हृ", "C": "ऋ", "V": "ख्", "B": "द्य", "N": "ल्", "M": "ः", "<": "?", ">": "श्र", "?": "रु", "z": "श", "x": "ह", "c": "अ", "v": "ख", "b": "द", "n": "ल", ",": ",", ".": "।", "/": "र", "„": "ध्र", "…": "‘", "†": "!", "‰": "झ्", "‹": "ङ्ग", "Œ": "त्त्", "‘": "ॅ", "“": "ँ", "•": "ड्ड", "˜": "ऽ", "™": "र", "›": "ऽ", "œ": "त्र्", "¡": "ज्ञ्", "¢": "द्घ", "£": "घ्", "¤": "झ्", "¥": "ऱ्", "§": "ट्ट", "¨": "ङ्ग", "©": "र", "ª": "ङ", "«": "्र", "¬": "…", "­": "(", "®": "र", "¯": "¯", "°": "ङ्ढ", "±": "+", "´": "झ", "µ": "र", "¶": "ठ्ठ", "º": "फ्", "¿": "रू", "Â": "र", "Æ": "”", "È": "ष", "Ë": "ङ्ग", "Ì": "न्न", "Í": "ङ्क", "Î": "फ्", "Ï": "फ्", "Ò": "¨", "Ô": "क्ष", "Ø": "्य", "Ú": "’", "ß": "द्म", "å": "द्व", "æ": "“", "ç": "ॐ", "÷": "/", "ø": "य्"}, "post-rules": [["्ा", ""], ["(त्र|त्त)([^उभप]+?)m", "$1m$2"], ["त्रm", "क्र"], ["त्तm", "क्त"], ["([^उभप]+?)m", "m$1"], ["उm", "ऊ"], ["भm", "झ"], ["पm", "फ"], ["इ{", "ई"], ["ि((.्)*[^्])", "$1ि"], ["(.[ािीुूृेैोौंःँ]*?){", "{$1"], ["((.्)*){", "{$1"], ["{", "र्"], ["([ाीुूृेैोौंःँ]+?)(्(.्)*[^्])", "$2$1"], ["्([ाीुूृेैोौंःँ]+?)((.्)*[^्])", "्$2$1"], ["([ंँ])([ािीुूृेैोौः]*)", "$2$1"], ["ँँ", "ँ"], ["ंं", "ं"], ["ेे", "े"], ["ैै", "ै"], ["ुु", "ु"], ["ूू", "ू"], ["^ः", ":"], ["टृ", "ट्ट"], ["ेा", "ाे"], ["ैा", "ाै"], ["अाे", "ओ"], ["अाै", "औ"], ["अा", "आ"], ["एे", "ऐ"], ["ाे", "ो"], ["ाै", "ौ"]], "pre-rules": []}, "sagarmatha": {"name": "Sagarmatha", "v": "1.1.0", "char-map": {"~": "ञ्", "!": "१", "@": "२", "#": "३", "$": "४", "%": "५", "^": "६", "&": "७", "*": "८", "(": "९", ")": "०", "_": ")", "+": "ं", "`": "ञ", "1": "ज्ञ", "2": "द्द", "3": "घ", "4": "द्ध", "5": "छ", "6": "ट", "7": "ठ", "8": "ड", "9": "ढ", "0": "ण्", "-": "(", "=": ".", "Q": "त्त", "W": "ध्", "E": "भ्", "R": "च्", "T": "त्", "Y": "थ्", "U": "ग्", "I": "क्ष्", "O": "इ", "P": "ए", "}": "ै", "|": "्र", "q": "त्र", "w": "ध", "e": "भ", "r": "च", "t": "त", "y": "थ", "u": "ग", "i": "ष्", "o": "य", "p": "उ", "[": "ृ", "]": "े", "\\": "्", "A": "ब्", "S": "क्", "D": "म्", "F": "ँ", "G": "न्", "H": "ज्", "J": "व्", "K": "प्", "L": "ी", ":": "स्", "\"": "ू", "a": "ब", "s": "क", "d": "म", "f": "ा", "g": "न", "h": "ज", "j": "व", "k": "प", "l": "ि", ";": "स", "'": "ु", "Z": "श्", "X": "ह्", "C": "ऋ", "V": "ख्", "B": "द्य", "N": "ल्", "M": "ः", "<": "?", ">": "श्र", "?": "रु", "z": "श", "x": "ह", "c": "अ", "v": "ख", "b": "द", "n": "ल", ",": ",", ".": "।", "/": "र", "‚": ")", "ƒ": "द्र", "„": "्", "†": ";", "‡": "े", "ˆ": "ृ", "‰": "झ्", "Š": "र्", "‹": "ै", "Œ": "त्त्", "‘": "‘", "’": "’", "“": "ँ", "”": "”", "œ": "त्र्", "¡": "ज्ञ्", "¢": "द्घ", "£": "घ्", "¤": "!", "¥": "ऱ्", "§": "ट्ट", "ª": "ङ", "«": "्र", "¬": "ु", "­": "(", "®": "र", "°": "ङ्क", "±": "+", "´": "झ", "µ": "झ", "¶": "ठ्ठ", "·": "ङ्ग", "¸": "ड्ड", "¿": "रू", "Å": "फ", "Æ": "”", "Ç": "फ्", "È": "ष", "É": "स", "Ò": "ू", "Ô": "क्ष", "Ø": "्य", "Ù": "ह", "Ü": "%", "Þ": "ह्", "ß": "द्म", "å": "द्व", "æ": "“", "ç": "ॐ", "è": "द्भ", "÷": "/", "ø": "य्"}, "post-rules": [["्ा", ""], ["(त्र|त्त)([^उभप]+?)m", "$1m$2"], ["त्रm", "क्र"], ["त्तm", "क्त"], ["([^उभप]+?)m", "m$1"], ["उm", "ऊ"], ["भm", "झ"], ["पm", "फ"], ["इ{", "ई"], ["ि((.्)*[^्])", "$1ि"], ["(.[ािीुूृेैोौंःँ]*?){", "{$1"], ["((.्)*){", "{$1"], ["{", "र्"], ["([ाीुूृेैोौंःँ]+?)(्(.्)*[^्])", "$2$1"], ["्([ाीुूृेैोौंःँ]+?)((.्)*[^्])", "्$2$1"], ["([ंँ])([ािीुूृेैोौः]*)", "$2$1"], ["ँँ", "ँ"], ["ंं", "ं"], ["ेे", "े"], ["ैै", "ै"], ["ुु", "ु"], ["ूू", "ू"], ["^ः", ":"], ["टृ", "ट्ट"], ["ेा", "ाे"], ["ैा", "ाै"], ["अाे", "ओ"], ["अाै", "औ"], ["अा", "आ"], ["एे", "ऐ"], ["ाे", "ो"], ["ाै", "ौ"]], "pre-rules": []}, "preeti": {"name": "Preeti", "v": "1.1.0", "char-map": {"~": "ञ्", "!": "१", "@": "२", "#": "३", "$": "४", "%": "५", "^": "६", "&": "७", "*": "८", "(": "९", ")": "०", "_": ")", "+": "ं", "`": "ञ", "1": "ज्ञ", "2": "द्द", "3": "घ", "4": "द्ध", "5": "छ", "6": "ट", "7": "ठ", "8": "ड", "9": "ढ", "0": "ण्", "-": "(", "=": ".", "Q": "त्त", "W": "ध्", "E": "भ्", "R": "च्", "T": "त्", "Y": "थ्", "U": "ग्", "I": "क्ष्", "O": "इ", "P": "ए", "}": "ै", "|": "्र", "q": "त्र", "w": "ध", "e": "भ", "r": "च", "t": "त", "y": "थ", "u": "ग", "i": "ष्", "o": "य", "p": "उ", "[": "ृ", "]": "े", "\\": "्", "A": "ब्", "S": "क्", "D": "म्", "F": "ँ", "G": "न्", "H": "ज्", "J": "व्", "K": "प्", "L": "ी", ":": "स्", "\"": "ू", "a": "ब", "s": "क", "d": "म", "f": "ा", "g": "न", "h": "ज", "j": "व", "k": "प", "l": "ि", ";": "स", "'": "ु", "Z": "श्", "X": "ह्", "C": "ऋ", "V": "ख्", "B": "द्य", "N": "ल्", "M": "ः", "<": "?", ">": "श्र", "?": "रु", "z": "श", "x": "ह", "c": "अ", "v": "ख", "b": "द", "n": "ल", ",": ",", ".": "।", "/": "र", "„": "ध्र", "…": "‘", "ˆ": "फ्", "‰": "झ्", "‹": "ङ्घ", "‘": "ॅ", "•": "ड्ड", "˜": "ऽ", "›": "द्र", "¡": "ज्ञ्", "¢": "द्घ", "£": "घ्", "¤": "झ्", "¥": "ऱ्", "§": "ट्ट", "©": "र", "ª": "ङ", "«": "्र", "°": "ङ्ढ", "±": "+", "´": "झ", "¶": "ठ्ठ", "¿": "रू", "Å": "हृ", "Æ": "”", "Ë": "ङ्ग", "Ì": "न्न", "Í": "ङ्क", "Î": "ङ्ख", "Ò": "¨", "Ö": "=", "×": "×", "Ø": "्य", "Ù": ";", "Ú": "’", "Û": "!", "Ü": "%", "Ý": "ट्ठ", "ß": "द्म", "å": "द्व", "æ": "“", "ç": "ॐ", "÷": "/"}, "post-rules": [["्ा", ""], ["(त्र|त्त)([^उभप]+?)m", "$1m$2"], ["त्रm", "क्र"], ["त्तm", "क्त"], ["([^उभप]+?)m", "m$1"], ["उm", "ऊ"], ["भm", "झ"], ["पm", "फ"], ["इ{", "ई"], ["ि((.्)*[^्])", "$1ि"], ["(.[ािीुूृेैोौंःँ]*?){", "{$1"], ["((.्)*){", "{$1"], ["{", "र्"], ["([ाीुूृेैोौंःँ]+?)(्(.्)*[^्])", "$2$1"], ["्([ाीुूृेैोौंःँ]+?)((.्)*[^्])", "्$2$1"], ["([ंँ])([ािीुूृेैोौः]*)", "$2$1"], ["ँँ", "ँ"], ["ंं", "ं"], ["ेे", "े"], ["ैै", "ै"], ["ुु", "ु"], ["ूू", "ू"], ["^ः", ":"], ["टृ", "ट्ट"], ["ेा", "ाे"], ["ैा", "ाै"], ["अाे", "ओ"], ["अाै", "औ"], ["अा", "आ"], ["एे", "ऐ"], ["ाे", "ो"], ["ाै", "ौ"]], "pre-rules": []}} function preeti(text, font) { // get font rules - default to Preeti @@ -27,7 +6,7 @@ function preeti(text, font) { font = 'Preeti'; } font = font.toLowerCase(); - var myFont = all_rules[font]; + const myFont = all_rules[font]; if (!myFont) { throw 'font not included in module'; } @@ -37,8 +16,9 @@ function preeti(text, font) { var letter = text[w]; output += myFont['char-map'][letter] || letter; } - for (var r = 0; r < myFont['post-rules'].length; r++) { - output = output.replace(new RegExp(myFont['post-rules'][r][0], 'g'), myFont['post-rules'][r][1]); + + for (let r of myFont['post-rules']) { + output = output.replace(new RegExp(r[0], 'g'), r[1]); } return output; } diff --git a/test/fontasy_himali_tt.json b/test/fontasy_himali_tt.json new file mode 100644 index 0000000..9baec75 --- /dev/null +++ b/test/fontasy_himali_tt.json @@ -0,0 +1,43 @@ +[["g]kfn", "नेपाल"], + ["g]kfnL", "नेपाली"], + ["rGb", "चन्द"], + ["lxdfn", "हिमाल"], + ["/fli^«o", "राष्ट्रिय"], + ["ljz]if)f", "विशेषण"], + ["u)f]z", "गणेश"], + ["kfl)f", "पाणि"], + ["ug{", "गर्न"], + ["ug{]", "गर्ने"], + ["ug]{", "गर्ने"], + ["lgdfrf]{s", "निमार्चोक"], + ["rGb|f]bo", "चन्द्रोदय"], + ["O{Zj/", "ईश्वर"], + ["k|mfO{", "फ्राई"], + [":ofk|m'a]zL", "स्याफ्रुबेशी"], + ["cfkm\\gf]", "आफ्नो"], + ["cfk\\mgf}", "आफ्नौ"], + ["eQm", "भक्त"], + ["em/gf", "झरना"], + ["s|'/", "क्रुर"], + ["qm'/", "क्रुर"], + ["q'm/", "क्रुर"], + ["k|ltlqmof", "प्रतिक्रिया"], + ["hfpm", "जाऊ"], + ["hfp¤m", "जाऊँ"], + ["e]mNg'", "झेल्नु"], + ["em]Ng'", "झेल्नु"], + ["emfs|L", "झाक्री"], + ["kf}jf", "पौवा"], + ["If]qkf^L", "क्षेत्रपाटी"], + ["cf]vtL", "ओखती"], + ["P]gf", "ऐना"], + ["hfcf}+", "जाऔं"], + ["hfcf+}", "जाऔं"], + ["#/d+}", "घरमैं"], + ["-s_", "(क)"], + ["1234567890", "१२३४५६७८९०"], + ["k¥of]", "पऱ्यो"], + ["x]Yof{]", "हेर्थ्यो"], + ["x]Yof]{", "हेर्थ्यो"], + ["d@t", "मद्दत"], + ["Clif", "ऋषि"]] \ No newline at end of file diff --git a/test/index.js b/test/index.js index d7e7279..7133d35 100644 --- a/test/index.js +++ b/test/index.js @@ -1,9 +1,11 @@ var assert = require('assert'); var preeti = require('../preeti.js'); -var pv = require('./preeti.vector.json'); -var kv = require('./kantipur.vector.json'); -var nv = require('./pcs_nepali.vector.json'); +const preeti_vectors = require('./preeti.json'); +const kantipur_vectors = require('./kantipur.json'); +const pcs_nepali_vectors = require('./pcs_nepali.json'); +const fontasy_himali_vectors = require('./fontasy_himali_tt.json'); +const sagarmata_vectors = require('./sagarmatha.json'); describe("Converting Preeti", function() { it('should return काठमाण्डू when the value is sf7df08"', function() { @@ -12,24 +14,40 @@ describe("Converting Preeti", function() { }); it('should process the nep-tt2utf preeti.vector list', function() { - for (var a = 0; a < pv.length; a+=2) { - assert.equal(preeti(pv[a]), pv[a+1]); + for (let v of preeti_vectors) { + assert.equal(preeti(v[0]), v[1]); } }); }); describe("Converting Kantipur", function() { it('should process the nep-tt2utf kantipur.vector list', function() { - for (var a = 0; a < kv.length; a+=2) { - assert.equal(preeti(kv[a], 'Kantipur'), kv[a+1]); + for (let v of kantipur_vectors) { + assert.equal(preeti(v[0], 'Kantipur'), v[1]); } }); }); describe("Converting PCS Nepali", function() { it('should process the nep-tt2utf pcs_nepali.vector list', function() { - for (var a = 0; a < nv.length; a+=2) { - assert.equal(preeti(nv[a], 'PCS Nepali'), nv[a+1]); + for (let v of pcs_nepali_vectors) { + assert.equal(preeti(v[0], 'PCS Nepali'), v[1]); + } + }); +}); + +describe("Converting Fontasy himali TT", function() { + it('should process the nep-tt2utf fontasy_himali.vector list', function() { + for (let v of fontasy_himali_vectors) { + assert.equal(preeti(v[0], 'Fontasy Himali TT'), v[1]); + } + }); +}); + +describe("Converting Sagarmatha", function() { + it('should process the nep-tt2utf sagarmatha.vector list', function() { + for (let v of sagarmata_vectors) { + assert.equal(preeti(v[0], 'sagarmatha'), v[1]); } }); }); diff --git a/test/kantipur.json b/test/kantipur.json new file mode 100644 index 0000000..edcd148 --- /dev/null +++ b/test/kantipur.json @@ -0,0 +1,45 @@ +[["g]kfn", "नेपाल"], + ["g]kfnL", "नेपाली"], + ["rGb", "चन्द"], + ["lxdfn", "हिमाल"], + ["/fli6«o", "राष्ट्रिय"], + ["ljz]if0f", "विशेषण"], + ["u0f]z", "गणेश"], + ["kfl0f", "पाणि"], + ["ug{", "गर्न"], + ["ug{]", "गर्ने"], + ["ug]{", "गर्ने"], + ["lgdfrf]{s", "निमार्चोक"], + ["rGb|f]bo", "चन्द्रोदय"], + ["O{Zj/", "ईश्वर"], + ["k|mfO{", "फ्राई"], + [":ofk|m'a]zL", "स्याफ्रुबेशी"], + ["cfkm\\gf]", "आफ्नो"], + ["cfk\\mgf}", "आफ्नौ"], + ["eQm", "भक्त"], + ["em/gf", "झरना"], + ["s|'/", "क्रुर"], + ["qm'/", "क्रुर"], + ["q'm/", "क्रुर"], + ["k|ltlqmof", "प्रतिक्रिया"], + ["hfpm", "जाऊ"], + ["hfp“m", "जाऊँ"], + ["e]mNg'", "झेल्नु"], + ["em]Ng'", "झेल्नु"], + ["emfs|L", "झाक्री"], + ["kf}jf", "पौवा"], + ["If]qkf6L", "क्षेत्रपाटी"], + ["iff]8zL", "षोडशी"], + ["cf]vtL", "ओखती"], + ["P]gf", "ऐना"], + ["hfcf}+", "जाऔं"], + ["hfcf+}", "जाऔं"], + ["3/d+}", "घरमैं"], + ["-s_", "(क)"], + ["!@#$%^&*()", "१२३४५६७८९०"], + ["k¥of]", "पऱ्यो"], + ["x]Yof{]", "हेर्थ्यो"], + ["x]Yof]{", "हेर्थ्यो"], + ["sFd", "काम"], + ["d2t", "मद्दत"], + ["Clif", "ऋषि"]] \ No newline at end of file diff --git a/test/kantipur.vector.json b/test/kantipur.vector.json deleted file mode 100644 index 3f3caf4..0000000 --- a/test/kantipur.vector.json +++ /dev/null @@ -1,45 +0,0 @@ -["g]kfn","नेपाल", -"g]kfnL","नेपाली", -"rGb","चन्द", -"lxdfn","हिमाल", -"/fli6«o","राष्ट्रिय", -"ljz]if0f","विशेषण", -"u0f]z","गणेश", -"kfl0f","पाणि", -"ug{","गर्न", -"ug{]","गर्ने", -"ug]{","गर्ने", -"lgdfrf]{s","निमार्चोक", -"rGb|f]bo","चन्द्रोदय", -"O{Zj/","ईश्वर", -"k|mfO{","फ्राई", -":ofk|m'a]zL","स्याफ्रुबेशी", -"cfkm\\gf]","आफ्नो", -"cfk\\mgf}","आफ्नौ", -"eQm","भक्त", -"em/gf","झरना", -"s|'/","क्रुर", -"qm'/","क्रुर", -"q'm/","क्रुर", -"k|ltlqmof","प्रतिक्रिया", -"hfpm","जाऊ", -"hfp“m","जाऊँ", -"e]mNg'","झेल्नु", -"em]Ng'","झेल्नु", -"emfs|L","झाक्री", -"kf}jf","पौवा", -"If]qkf6L","क्षेत्रपाटी", -"iff]8zL","षोडशी", -"cf]vtL","ओखती", -"P]gf","ऐना", -"hfcf}+","जाऔं", -"hfcf+}","जाऔं", -"3/d+}","घरमैं", -"-s_","(क)", -"!@#$%^&*()","१२३४५६७८९०", -"k¥of]","पर्‍यो", -"x]Yof{]","हेर्थ्यो", -"x]Yof]{","हेर्थ्यो", -"sFd","काम", -"d2t","मद्दत", -"Clif","ऋषि"] diff --git a/test/pcs_nepali.json b/test/pcs_nepali.json new file mode 100644 index 0000000..dab78dc --- /dev/null +++ b/test/pcs_nepali.json @@ -0,0 +1,43 @@ +[["g]kfn", "नेपाल"], + ["g]kfnL", "नेपाली"], + ["rGb", "चन्द"], + ["lxdfn", "हिमाल"], + ["/fli^