Naraguna:Bennylin/trans.js: Béda antara owahan

Konten dihapus Konten ditambahkan
ka sasak
Tanpa ringkesan besutan
Larik 13:
* 1 Juni 2016 - v 1.3
* 2020 - v 1.4
* 2021 - v 1.5 more thorough Murda support (with cakra/pengkal/panjingan)
*
* Derived with permission from Hindi Transliteration by Markandey Singh @markandey
Baris 19 ⟶ 20:
 
var vowelPrev = false;
//var spacePrev = false;
 
/***************************
I. Function SuperTrim, findstr
trim string, menemukan karakter di dalam string
****************************/
Baris 36 ⟶ 38:
}
/***************************
II. Function isDigit, isPunct, isVowel
cek apakah digit, tanda baca, atau huruf vokal (a/å/ɔ, e/è/é, i, o, u, ě/ê/ə, ô, ā/ī/ū/ō)
****************************/
Baris 52 ⟶ 54:
}
function isConsonant( /*char*/ a) {
var str = "BCDfGHJKLMNPRSTVWYZbcdfghjklmnpqrstvwyzḌḍṆṇṢṣṬṭŊŋÑñɲBCDfGHJKLMNPQRSTVWYZbcdfghjklmnpqrstvwyzḌḍṆṇṢṣṬṭŊŋÑñɲś";//QXqxXqx are special chars, add engma & enye
return findstr(str,a);
}
/***************************
III. Function isSpecial, isHR, isLW
cek apakah karakter spesial (bikonsonan/cakra-pengkal/layar-cecak-wignyan/panjingan)
****************************/
function isSpecial( /*char*/ a) {
var str = "GgHhRrYyñGgHhRrYyñn"; //untuk bikonsonan th, dh, ng (nga dan cecak), ny, -r- (cakra), -y- (pengkal), jñ/jnya (ꦘ)
return findstr(str,a);
}
 
function isHR( /*char*/ a) {
var str = "HhRrŊŋ";//untuk layar dan wignyan //1.3 dan cecak ([[:en:w:Engma]])
return findstr(str,a);
}
}
 
function isLW( /*char*/ a) {
Baris 79 ⟶ 81:
}
/***************************
IV. Function GetMatra
apabila huruf vokal, return matra (sandhangan swara)
****************************/
Baris 96 ⟶ 98:
str = str.substring(i);
}
var matramap1 = { //mode ketik
var matramap1={ "ā":"ꦴ", "â":"ꦴ", "e":'ꦺ', "è":'ꦺ', "é":'ꦺ', "i":'ꦶ', "ī":"ꦷ", "o":'ꦺꦴ', "u":'ꦸ', "ū":"ꦹ", "x":"ꦼ", "ə":"ꦼ", "ě":"ꦼ", "ĕ":"ꦼ", "ê":"ꦼ", "ō":"ꦼꦴ", "ô":"",
"e":'ꦺ', "E":'ꦌ'
"A":'ꦄ', "E":'ꦌ', "È":'ꦌ', "É":'ꦌ', "I":'ꦆ', "U":'ꦈ', "O":'ꦎ', "X":"ꦄꦼ", "Ě":"ꦄꦼ", "Ê":"ꦄꦼ", "ṛ":"ꦽ",
}
"aa":'ꦴ', "ai":'ꦻ', "au":'ꦻꦴ', "ii":'ꦷ', "uu":'ꦹ'}
var matramap2 = { //mode kopas
var matramap2={ "ā":"ꦴ", "â":"ꦴ", "e":'ꦼ', "è":'ꦺ', "é":'ꦺ', "i":'ꦶ', "ī":"ꦷ", "u":'ꦸ', "ū":"ꦹ", "o":'ꦺꦴ', "x":"ꦼ", "ə":"ꦼ", "ě":"ꦼ", "ĕ":"ꦼ", "ê":"ꦼ", "ô":"", "ō":"ꦼꦴ",
"e":'ꦼ', "E":'ꦄꦼ'
"A":'ꦄ', "E":'ꦄꦼ', "È":'ꦌ', "É":'ꦌ', "I":'ꦆ', "U":'ꦈ', "O":'ꦎ', "X":"ꦄꦼ", "Ě":"ꦄꦼ", "Ê":"ꦄꦼ", "ṛ":"ꦽ",
}
"aa":'ꦴ', "ai":'ꦻ', "au":'ꦻꦴ', "ii":'ꦷ', "uu":'ꦹ'}
var matramap3 = { //both mode ketik and kopas
"ā":"ꦴ", "â":"ꦴ", "aa":'ꦴ',
"è":'ꦺ', "é":'ꦺ',
"i":'ꦶ', "ī":"ꦷ", "ii":'ꦷ',
"o":'ꦺꦴ', "ō":"ꦼꦴ",
"u":'ꦸ', "ū":"ꦹ", "uu":'ꦹ',
"x":"ꦼ", "ě":"ꦼ", "ĕ":"ꦼ", "ê":"ꦼ", "ə":"ꦼ",
"ô":"", "å":"", "ɔ":"",
"A":'ꦄ',
"È":'ꦌ', "É":'ꦌ',
"I":'ꦆ', "O":'ꦎ', "U":'ꦈ',
"X":"ꦄꦼ", "Ě":"ꦄꦼ", "Ĕ":"ꦄꦼ", "Ê":"ꦄꦼ",
"ṛ":"ꦽ", "Ṛ":"ꦽ",
"ai":'ꦻ', "au":'ꦻꦴ'
}
var matramap, mode;
var modeTranslit = document.getElementsByName("mode");
Baris 109 ⟶ 126:
}
if(mode == "kopas")
matramap = {...matramap2, ...matramap3};
else //if(mode == "ketik")
matramap = {...matramap1, ...matramap3};
 
if(matramap[str]!==undefined){
Baris 119 ⟶ 136:
}
/***************************
V. Function GetShift (the longest part of the code, almost half the total lines)
 
Quick TOC:
Basically all the exceptions to the Consonant-Vocal (CV) cluster. It means all the double Consonant-Consonant-Vocal (CCV) cluster,
1. ends with 'h' -- th: thr, thl, thw, thy; dh: dhr, dhl, dhw, dhy; hy,hh, rh, kh, gh, ch, jh, ṭh, th: thr, thl; dh: dhr, dhl; hy,hh, rh, kh, gh, ch, jh, ṭh, ḍh, ph, bh, sh, h
or triple CCCV cluster.
2. ends with 'g' -- ng: ngr, ngy, nggr, nggl, nggw, nggy, ngg, ngng, ngl, njr, ngw; rg, hg, gg, g
 
3. ends with 'y' -- ny: nyr, nyl; ry, dhy, thy, y
Quick TOC:
4. ends with 'r', panjingan 'l'/'w' -- hr, rr, nggr; ll, rl, hl; rw, hw, ww, ngw
V.1. 2nd letter is 'h' -- th, dh, murda (kh, gh, ch, jh, Th, Dh, ṭh, ḍh, ph, bh, sh), hh, rh, h
5. ends with 'c', and 'j' -- nc: ncr, ncl; rc; nj: njr, njl; rj;
TODO: maybe add qh for ka sasak, zh for sa mahaprana, and rh for ra agung, considering jh
6. ends with 'ñ' -- jñ: jny
V.2. 2nd letter is 'g' -- ng (ngg, ngng), hg, gg, rg, g
V.3. 2nd letter is 'y' -- ny, hy, ry, yy, qy, murda (Ky, Gy, Cy, Jy, Ty, Dy, Ṭy, Ḍy, Py, By, Sy, Qy, Ry, Zy), y
V.4. 2nd letter is 'r' -- hr, rr, qr, murda (Kr, Gr, Cr, Jr, Nr, Tr, Dr, Ṭr, Ḍr, Pr, Br, Sr, Qr, Rr, Zr), r
V.5. 2nd letter is panjingan 'l'/'w' -- ll, rl, hl; rw, hw, ww, ngw
V.6. 2nd letter is 'c', and 'j' -- nc: ncr, ncl; rc; nj: njr, njl; rj;
V.7. 2nd letter is 'ñ' or 'n' -- jñ, jny
apabila huruf bikonsonan, return karakter khusus
 
TODO: masih case sensitive, mis "RR" masih tidak betul
To add a new second letter exception, add in function isSpecial
 
Longest consonant cluster is 4 (nggr, nggl, nggw, nggy). Doesn't compute cluster longer than that
(e.g. sxlangnggronjal, 6 consonants). Need to separate them by a space
****************************/
function GetShift(strstr1) {
str = strstr1.toLowerCase(); //case insensitive
 
if (str.indexOf("th") == 0) { //suku kata diawali 'th'
var modeMurda = document.getElementsByName("murda");
if (str.indexOf("thr") == 0) { //cakra
for(var rad in modeMurda) {
if(modeMurda[rad].checked)
murda = modeMurda[rad].value;
}
if(murda == "pakai")
str2 = str1; //case sensitive (particularly the 8 characters of ꦛ ꦜ ꦝ ꦞ ꦠ ꦡ ꦢ ꦣ),
//for combination of murda and cakra/pengkal/panjingan
else //if(murda == "tidak")
str2 = str1.toLowerCase(); //case insensitive
//V.1. 2nd letter of the consonant cluster is 'h'
if (str2.indexOf("th") == 0) { //suku kata diawali 'th'
if (str2.indexOf("thl") == 0) { //thl-
return { "CoreSound": "ꦛ꧀ꦭ", "len": 3 };
} else if (str2.indexOf("thr") == 0) { //thr-
return { "CoreSound": "ꦛꦿ", "len": 3 };
} else if (strstr2.indexOf("thlthw") == 0) { //thlthw-
return { "CoreSound": "ꦛ꧀ꦭꦛ꧀ꦮ", "len": 3 };
} else if (strstr2.indexOf("thy") == 0) { //thy -- ...
return { "CoreSound": "" + GetCoreSound(str[0]).CoreSound + "ꦛꦾ", "len": 3 };
} else if (str.indexOf("thw") == 0) { //thw -- ...
return { "CoreSound": "" + GetCoreSound(str[0]).CoreSound + "ꦛ꧀ꦮ", "len": 3 2 };//tha
} else {
} else if (str2.indexOf("dh") == 0) { //suku kata diawali 'dh'
return { "CoreSound": "ꦛ", "len": 2 };
if (str2.indexOf("dhl") == 0) { //dhl-
}
return { "CoreSound": "ꦝ꧀ꦭ", "len": 3 };
} else if (str.indexOf("dh") == 0) { //suku kata diawali 'dh'
} else if (strstr2.indexOf("dhr") == 0) { //cakradhr-
return { "CoreSound": "ꦝꦿ", "len": 3 };
} else if (strstr2.indexOf("dhldhw") == 0) { //dhldhw-: dhwani
return { "CoreSound": "ꦝ꧀ꦭꦝ꧀ꦮ", "len": 3 };
} else if (strstr2.indexOf("dhy") == 0) { //dhy --: dhyaksa
return { "CoreSound": "" + GetCoreSound(str[0]).CoreSound + "ꦝꦾ", "len": 3 };
} else if (str.indexOf("dhw") == 0) { //dhw -- dhwani
return { "CoreSound": "" + GetCoreSound(str[0]).CoreSound + "ꦝ꧀ꦮ", "len": 3 2 };//dha
} else {
} else if (str2.indexOf("Th") == 0) { //suku kata diawali 'Th'
return { "CoreSound": "ꦝ", "len": 2 };
if (str2.indexOf("Thl") == 0) { //Thl-
}
return { "CoreSound": "ꦜ꧀ꦭ", "len": 3 };
} else if (str.indexOf("hy") == 0) { //hyang
} else if (str2.indexOf("Thr") == 0) { //Thr-
return { "CoreSound": "" + GetCoreSound(str[0]).CoreSound + "ꦲꦾ", "len": 2 };
} else if (str.indexOf( return { "hhCoreSound"): =="ꦜꦿ", 0)"len": {3 //hh};
} else if (str2.indexOf("Thw") == 0) { //Thw-
return { "CoreSound": "" + GetCoreSound(str[0]).CoreSound + "ꦃꦲ", "len": 2 };
return { "CoreSound": "ꦜ꧀ꦮ", "len": 3 };
} else if (str.indexOf("rh") == 0) { //rh (kata berakhiran r diikuti kata berawalan h
} else if (str2.indexOf("Thy") == 0) { //Thy-
return { "CoreSound": "" + GetCoreSound(str[0]).CoreSound + "ꦂꦲ", "len": 2 };
return { "CoreSound": "ꦜꦾ", "len": 3 };
} else if (str.indexOf("kh") == 0) { //kh (aksara murda)
} else {
return { "CoreSound": "ꦜ", "len": 2 };//Tha Mahaprana
}
} else if (str2.indexOf("Dh") == 0) { //suku kata diawali 'Dh'
if (str2.indexOf("Dhl") == 0) { //Dhl-
return { "CoreSound": "ꦞ꧀ꦭ", "len": 3 };
} else if (str2.indexOf("Dhr") == 0) { //Dhr-
return { "CoreSound": "ꦞꦿ", "len": 3 };
} else if (str2.indexOf("Dhw") == 0) { //Dhw-: Dhwani
return { "CoreSound": "ꦞ꧀ꦮ", "len": 3 };
} else if (str2.indexOf("Dhy") == 0) { //Dhy-: Dhyaksa
return { "CoreSound": "ꦞꦾ", "len": 3 };
} else {
return { "CoreSound": "ꦞ", "len": 2 };//Dha Mahaprana
}
/* murda block start */
} else if (str.indexOf("ṭh") == 0) { //ṭh (aksara murda: tha mahaprana)
if (str.indexOf("ṭhy") == 0) {
return { "CoreSound": "ꦜꦾ", "len": 2 };
} else if (str.indexOf("ṭhr") == 0) {
return { "CoreSound": "ꦜꦿ", "len": 2 };
} else
return { "CoreSound": "ꦜ", "len": 2 };
} else if (str.indexOf("ḍh") == 0) { //ḍh (aksara murda: dha mahaprana)
if (str.indexOf("ḍhy") == 0) {
return { "CoreSound": "ꦞꦾ", "len": 2 };
} else if (str.indexOf("ḍhr") == 0) {
return { "CoreSound": "ꦞꦿ", "len": 2 };
} else
return { "CoreSound": "ꦞ", "len": 2 };
} else if (str.indexOf("kh") == 0) { //kh (aksara murda: ka murda)
if (str.indexOf("khl") == 0) { //ka murda + panjingan la
return { "CoreSound": "ꦑ꧀ꦭ", "len": 3 };
} else if (str.indexOf("khr") == 0) { //ka murda + cakra
return { "CoreSound": "ꦑꦿ", "len": 3 };
} else if (str.indexOf("khw") == 0) { //ka murda + panjingan wa
return { "CoreSound": "ꦑ꧀ꦮ", "len": 3 };
} else if (str.indexOf("khy") == 0) { //ka murda + wignyan
return { "CoreSound": "ꦑꦾ", "len": 3 };
} else {
return { "CoreSound": "ꦑ", "len": 2 };
}
} else if (str.indexOf("gh") == 0) { //gh (aksara murda)
} else if (str.indexOf("gh") == 0) { //gh (aksara murda: ga murda)
if (str.indexOf("ghl") == 0) { //ga murda + panjingan la
return { "CoreSound": "ꦓ꧀ꦭ", "len": 3 };
return { "CoreSound": "ꦓꦿ", "len": 3 };
} else if (str.indexOf("ghw") == 0) { //ga murda + panjingan wa
} else if (str.indexOf("ghr") == 0) { //ga murda + cakra
return { "CoreSound": "ꦓ꧀ꦮ", "len": 3 };
} else if (str.indexOf("ghy") == 0) { //ga murda + wignyan
return { "CoreSound": "ꦓꦾ", "len": 3 };
} else {
return { "CoreSound": "ꦓ", "len": 2 };
}
} else if (str.indexOf("ch") == 0) { //ch (aksara murda)
} else if (str.indexOf("ch") == 0) { //ch (aksara murda: ca murda)
if (str.indexOf("chl") == 0) { //ca murda + panjingan la
return { "CoreSound": "ꦖ꧀ꦭ", "len": 3 };
} else if (str.indexOf("chr") == 0) { //ca murda + cakra
return { "CoreSound": "ꦖꦿ", "len": 3 };
} else if (str.indexOf("chw") == 0) { //ca murda + panjingan wa
return { "CoreSound": "ꦖ꧀ꦮ", "len": 3 };
} else if (str.indexOf("chy") == 0) { //ca murda + wignyan
return { "CoreSound": "ꦖꦾ", "len": 3 };
} else {
return { "CoreSound": "ꦖ", "len": 2 };
}
} else if (str.indexOf("jh") == 0) { //jh (aksara murda)
} else if (str.indexOf("jh") == 0) { //jh (aksara murda: ja mahaprana)
if (str.indexOf("jhl") == 0) { //ja mahaprana + panjingan la
return { "CoreSound": "ꦙ꧀ꦭ", "len": 3 };
} else if (str.indexOf("jhr") == 0) { //ja mahaprana + cakra
return { "CoreSound": "ꦙꦿ", "len": 3 };
} else if (str.indexOf("jhw") == 0) { //ja mahaprana + panjingan wa
return { "CoreSound": "ꦙ꧀ꦮ", "len": 3 };
} else if (str.indexOf("jhy") == 0) { //ja mahaprana + wignyan
return { "CoreSound": "ꦙꦾ", "len": 3 };
} else {
return { "CoreSound": "ꦙ", "len": 2 };
}
} else if (str.indexOf("ṭh") == 0) { //ṭh (aksara murda)
} else if (str.indexOf("ph") == 0) { //ph (aksara murda: pa murda)
return { "CoreSound": "ꦜ", "len": 2 };
} else if (str.indexOf("ḍhphl") == 0) { //ḍh (aksarapa murda) + panjingan la
return { "CoreSound": "ꦦ꧀ꦭ", "len": 2 3 };
} else if (str.indexOf("phphr") == 0) { //ph (aksarapa murda) + cakra
return { "CoreSound": "ꦦꦿ", "len": 3 };
} else if (str.indexOf("phw") == 0) { //pa murda + panjingan wa
return { "CoreSound": "ꦦ꧀ꦮ", "len": 3 };
} else if (str.indexOf("phy") == 0) { //pa murda + wignyan
return { "CoreSound": "ꦦꦾ", "len": 3 };
} else {
return { "CoreSound": "ꦦ", "len": 2 };
}
} else if (str.indexOf("bh") == 0) { //bh (aksara murda)
} else if (str.indexOf("bh") == 0) { //bh (aksara murda: ba murda)
if (str.indexOf("bhl") == 0) { //ba murda + panjingan la
return { "CoreSound": "ꦨ꧀ꦭ", "len": 3 };
} else if (str.indexOf("bhr") == 0) { //ba murda + cakra
return { "CoreSound": "ꦨꦿ", "len": 3 };
} else if (str.indexOf("bhw") == 0) { //ba murda + panjingan wa
return { "CoreSound": "ꦨ꧀ꦮ", "len": 3 };
} else if (str.indexOf("bhy") == 0) { //ba murda + wignyan
return { "CoreSound": "ꦨꦾ", "len": 3 };
} else {
return { "CoreSound": "ꦨ", "len": 2 };
}
} else if (str.indexOf("sh") == 0) { //sh (aksara murda)
} else if (str.indexOf("sh") == 0) { //sh (aksara murda: sa murda)
if (str.indexOf("shl") == 0) { //sa murda + panjingan la
return { "CoreSound": "ꦯ꧀ꦭ", "len": 3 };
} else if (str.indexOf("shr") == 0) { //sa murda + cakra
return { "CoreSound": "ꦯꦿ", "len": 3 };
} else if (str.indexOf("shw") == 0) { //sa murda + panjingan wa
return { "CoreSound": "ꦯ꧀ꦮ", "len": 3 };
} else if (str.indexOf("shy") == 0) { //sa murda + wignyan
return { "CoreSound": "ꦯꦾ", "len": 3 };
} else {
return { "CoreSound": "ꦯ", "len": 2 };
}
} else if (str.indexOf("h") == 1) { //h
/* murda block end */
return { "CoreSound": "" + GetCoreSound(str[0]).CoreSound + "꧀ꦲ", "len": 2 };
} else if (str.indexOf("hhh") >== 10) { //sukuwignyan kata+ memilikiha, konsonane.g. root word ends with 'h' yang tidak diwith awalsuffix suku-i
return { var"CoreSound": sound ="ꦃꦲ", "len": 2 };
} else if var len(str.indexOf("rh") == 0;) { //layar + ha
return { var"CoreSound": index"ꦂꦲ", ="len": 02 };
} else if (str.indexOf("h") == 1) { //h (h di posisi karakter kedua)
for (index = 0; index < str.length; index++) {
return { "CoreSound": "" + GetCoreSound(str2[0]).CoreSound + "꧀ꦲ", "len": 2 };
var c = str[index];
if (!isVowel(c)) {
sound = sound + ResolveCharacterSound(c);
len++;
}
else {
break;
}
}
return { "CoreSound": sound, "len": len };
}
 
//ngaV.2. 2nd letter is 'g'
if (str.indexOf("ng") == 0) { //suku kata diawali 'ng'
if (str.indexOf("ngr") == 0) { //cakra (for cecak + ra, separate by a space)
return { "CoreSound": "" + "ꦔꦿ", "len": 3 };
} else if (str.indexOf("ngy") == 0) { //pengkal (for cecak + ya, separate by a space)
return { "CoreSound": "" + "ꦔꦾ", "len": 3 };
} else if (str.indexOf("nggrngg") == 0) { //nggronjalcecak + ga
if (str.indexOf("nggr") == 0) { //nggronjal
return { "CoreSound": "" + GetCoreSound(str[0]).CoreSound + "ꦔ꧀ꦒꦿ", "len": 4 };
return { "CoreSound": "ꦔ꧀ꦒꦿ", "len": 4 };
} else if (str.indexOf("nggl") == 0) { //nggl-
} else if (str.indexOf("nggl") == 0) { //nggl-
return { "CoreSound": "" + GetCoreSound(str[0]).CoreSound + "ꦔ꧀ꦒ꧀ꦭ", "len": 4 };
return { "CoreSound": "ꦔ꧀ꦒ꧀ꦭ", "len": 4 };
} else if (str.indexOf("nggw") == 0) { //nggw-, munggwing
} else if (str.indexOf("nggw") == 0) { //nggw-, munggwing
return { "CoreSound": "" + GetCoreSound(str[0]).CoreSound + "ꦔ꧀ꦒ꧀ꦮ", "len": 4 };
return { "CoreSound": "ꦔ꧀ꦒ꧀ꦮ", "len": 4 };
} else if (str.indexOf("nggy") == 0) { //nggy-, anggyat
} else if (str.indexOf("nggy") == 0) { //nggy-, anggyat
return { "CoreSound": "" + GetCoreSound(str[0]).CoreSound + "ꦔ꧀ꦒꦾ", "len": 4 };
return { "CoreSound": "ꦔ꧀ꦒꦾ", "len": 4 };
} else if (str.indexOf("ngg") == 0) { //ngg
} else {
return { "CoreSound": "" + GetCoreSound(str[0]).CoreSound + "ꦔ꧀ꦒ", "len": 3 };/*
}return else{ if"CoreSound": (str.indexOf("ngngꦔ꧀ꦒ"), =="len": 0)3 { //ngng};
}
return { "CoreSound": "" + GetCoreSound(str[0]).CoreSound + "ꦔ꧀ꦔ", "len": 4 };*/
} else if (str.indexOf("nglngn") == 0) { //ngl,cecak e.g.+ ngluwarina
if (str.indexOf("ngng") == 0) { //ngng
return { "CoreSound": "" + GetCoreSound(str[0]).CoreSound + "ꦔ꧀ꦭ", "len": 3 };
return { "CoreSound": "ꦁꦔ", "len": 4 };
} else if (str.indexOf("ngw") == 0) { //ngw, e.g. ngwiru
} else {
return { "CoreSound": "" + GetCoreSound(str[0]).CoreSound + "ꦔ꧀ꦮ", "len": 3 };
return { "CoreSound": "ꦁꦤ", "len": 3 };
} else {
}
} else if (str.indexOf("ngh") == 0) { //cecak + ha
return { "CoreSound": "ꦁꦲ", "len": 3 };
} else if (str.indexOf("ngc") == 0) { //cecak + ca
return { "CoreSound": "ꦁꦕ", "len": 3 };
} else if (str.indexOf("ngj") == 0) { //cecak + ja
return { "CoreSound": "ꦁꦗ", "len": 3 };
} else if (str.indexOf("ngl") == 0) { //ngl, e.g. ngluwari
return { "CoreSound": "ꦔ꧀ꦭ", "len": 3 };
} else if (str.indexOf("ngw") == 0) { //ngw, e.g. ngwiru
return { "CoreSound": "ꦔ꧀ꦮ", "len": 3 };
} else {
return { "CoreSound": "ꦁ", "len": 2 };
}
} else if (str.indexOf("rggg") == 0) { //'rggg', e.g. amargaroot word ends with 'g' with suffix -i
return { "CoreSound": "ꦂꦒꦒ꧀ꦒ", "len": 2 };
} else if (str.indexOf("hg") == 0) { //'hg'wignyan + ga, e.g. dahgene
return { "CoreSound": "ꦃꦒ", "len": 2 };
} else if (str.indexOf("ggrg") == 0) { //'gg'layar + ga, e.g. root word ends with 'g' with suffix starts with vocalamarga
return { "CoreSound": "ꦒ꧀ꦒꦂꦒ", "len": 2 };
} else if (str.indexOf("g") == 1) { //g (g di posisi karakter kedua)
return { "CoreSound": "" + GetCoreSound(strstr2[0]).CoreSound + "꧀ꦒ", "len": 2 };
} else if (str.indexOf("g") > 1) { //suku kata memiliki konsonan 'g' yang tidak di awal suku
var sound = "";
var len = 0;
var index = 0;
for (index = 0; index < str.length; index++) {
var c = str[index];
if (!isVowel(c)) {
sound = sound + ResolveCharacterSound(c);
len++;
}
else {
break;
}
}
return { "CoreSound": sound, "len": len };
}
 
//V.3. 2nd letter is 'y'
if (str.indexOf("jñ") == 0) { //suku kata diawali 'jñ'
return { "CoreSound": "ꦘ", "len": 2 };
}
if (str.indexOf("jny") == 0) { //suku kata diawali 'jñ'
return { "CoreSound": "ꦘ", "len": 3 };// still not working, 22 Jan 19
}
//nya
if (str.indexOf("ny") == 0) { //suku kata diawali 'ny'
if (str.indexOf("nyr") == 0) { //cakra
return { "CoreSound": "ꦚꦿ", "len": 3 };/*
} else if (str.indexOf("nylnyy") == 0) { //nylnyy, e.g.I don't think it's nylonongpossible
return { "CoreSound": "ꦚꦾ", "len": 3 };*/
} else if (str.indexOf("nyl") == 0) { //nyl, e.g. nylonong
return { "CoreSound": "ꦚ꧀ꦭ", "len": 3 };
} else if (str.indexOf("nyw") == 0) { //nyw
return { "CoreSound": "ꦚ꧀ꦮ", "len": 3 };/*
} else if (str2.indexOf("Ny") == 0) { //Na murda + pengkal, unlikely combination?
return { "CoreSound": "ꦟꦾ", "len": 2 };*/
} else {
return { "CoreSound": "ꦚ", "len": 2 };
}
} else if (str.indexOf("ryhy") == 0) { //'ry',wignyan e.g.+ Suryati,ya Wiryadi/ ha + pengkal -- hyang
return { if"CoreSound": (str.indexOf("ryyꦲꦾ"), =="len": 0)2 {};
} else if (str2.indexOf("ry") == 0) { //layar + ya, e.g. Suryati, Wiryadi
return { "CoreSound": "ꦂꦪꦾ", "len": 3 };
if (str.indexOf("ryy") }== else0) {
return { "CoreSound": "ꦂꦪꦂꦪꦾ", "len": 23 }; //'ryy', e.g. Duryyodhana (Jawa Kuno)
} else }{
return { "CoreSound": "ꦂꦪ", "len": 2 };
} else if (str.indexOf("yy") == 0) { //'yy', e.g. Duryyodhana (Jawa Kuno)
}/*
return { "CoreSound": "ꦪꦾ", "len": 2 };
} else if (str.indexOf("qyyy") == 0) { //qy'yy', --I onlydon't pengkalthink it's possible
return { "CoreSound": "ꦪꦾ", "len": 1 2 };*/
} else if (strstr2.indexOf("yqy") == 10) { //qy -- only pengkal
return { "CoreSound": "" + GetCoreSound(str[0]).CoreSound + "ꦾ", "len": 21 };
} else if (str.indexOf("y") >== 1) { //sukupengkal kata memiliki konsonan '(y' yangdi tidakposisi dikarakter awal sukukedua)
return { "CoreSound": "" + GetCoreSound(str2[0]).CoreSound + "ꦾ", "len": 2 };
var sound = "";
var len = 0;
var index = 0;
for (index = 0; index < str.length; index++) {
var c = str[index];
if (!isVowel(c)) {
sound += ResolveCharacterSound(c);
len++;
}
else {
break;
}
}
return { "CoreSound": sound, "len": len };
}
 
//V.4. 2nd letter is 'r'
if (str.indexOf("hr") == 0) { //hr-
if (str.indexOf("hr") == 0) { //wignyan + ra / ha + cakra
return { "CoreSound": "" + GetCoreSound(str[0]).CoreSound + "ꦃꦿ", "len": 2 };
return { "CoreSound": "ꦲꦿ", "len": 2 };
} else if (str.indexOf("rr") == 0) { //rr -- no cakra
return { "CoreSound": "" + GetCoreSound(str[0]).CoreSound + "ꦂꦫ", "len": 2 };
} else if (str.indexOf("wr") == 0) { //wr -- panjingan + cakra
return { "CoreSound": "" + "ꦮꦿ", "len": 2 };
} else if (str.indexOf("qrrr") == 0) { //qrlayar --+ onlyra (no cakra)
return { "CoreSound": "ꦿꦂꦫ", "len": 12 };
} else if (strstr2.indexOf("rqr") == 10) { //cakraqr -- only pasangan ra
return { "CoreSound": "" + GetCoreSound(str[0]).CoreSound + "ꦿ꧀ꦫ", "len": 21 };
} else if (strstr2.indexOf("rqR") >== 10) { //sukuqR kata-- memilikionly konsonan 'r' yang tidak di awal sukucakra
return { var"CoreSound": sound ="ꦿ", "len": 1 };
} else if (str.indexOf("r") == 1) { //cakra (r di posisi karakter kedua)
var len = 0;
return { "CoreSound": "" + GetCoreSound(str2[0]).CoreSound + "ꦿ", "len": 2 };
var index = 0;
for (index = 0; index < str.length; index++) {
var c = str[index];
if (!isVowel(c)) {
sound += ResolveCharacterSound(c);
len++;
}
else {
break;
}
}
return { "CoreSound": sound, "len": len };
}
 
//V.5. 2nd letter is 'l' or 'w'
//panjingan -l
//panjingan -l
if (str.indexOf("ll") == 0) { //ll
if (str.indexOf("hl") == 0) { //wignyan + la
return { "CoreSound": "" + GetCoreSound(str[0]).CoreSound + "ꦭ꧀ꦭ", "len": 2 };
return { "CoreSound": "ꦃꦭ", "len": 2 };
} else if (str.indexOf("rl") == 0) { //rl (kata berakhiran r diikuti kata berawalan l
} else if (str.indexOf("rl") == 0) { //layar + la
return { "CoreSound": "" + GetCoreSound(str[0]).CoreSound + "ꦂꦭ", "len": 2 };
return { "CoreSound": "ꦂꦭ", "len": 2 };
} else if (str.indexOf("hl") == 0) { //hl
} else if (str.indexOf("ll") == 0) { //ll
return { "CoreSound": "" + GetCoreSound(str[0]).CoreSound + "ꦃꦭ", "len": 2 };
return { "CoreSound": "ꦭ꧀ꦭ", "len": 2 };
} else if (str.indexOf("ql") == 0) { //only panjingan
return { "CoreSound": "꧀ꦭ", "len": 2 };
} else if (str.indexOf("l") == 1) { // (l di posisi karakter kedua)
return { "CoreSound": "" + GetCoreSound(strstr2[0]).CoreSound + "꧀ꦭ", "len": 2 };
} else if (str.indexOf("l") > 1) { //suku kata memiliki konsonan 'l' yang tidak di awal suku//panjingan
var sound = "";
var len = 0;
var index = 0;
for (index = 0; index < str.length; index++) {
var c = str[index];
if (!isVowel(c)) {
sound = sound + ResolveCharacterSound(c);
len++;
}
else {
break;
}
}
return { "CoreSound": sound, "len": len };
}
 
//panjingan -w
if (str.indexOf("rwhw") == 0) { //rwwignyan + ha
return { "CoreSound": "" + GetCoreSound(str[0]).CoreSound + "ꦂꦮꦃꦮ", "len": 2 }; //error untuk 'rwi', 'rwab'ꦲ꧀ꦮ
} else if (str.indexOf("hwrw") == 0) { //hwlayar + ha
return { "CoreSound": "" + GetCoreSound(str[0]).CoreSound + "ꦃꦮꦂꦮ", "len": 2 }; //ꦲ꧀ꦮerror untuk 'rwi', 'rwab'
} else if (str.indexOf("ww") == 0) { //ww (wwang, pûrwwa) - terima kasih Mas Revo
return { "CoreSound": "ꦮ꧀ꦮ", "len": 2 };
} else if (str.indexOf("qw") == 0) { //only panjingan
return { "CoreSound": "꧀ꦮ", "len": 2 };
} else if (str.indexOf("w") == 1) { // (w di posisi karakter kedua)
return { "CoreSound": "" + GetCoreSound(strstr2[0]).CoreSound + "꧀ꦮ", "len": 2 };
} else if (str.indexOf("w") > 1) { //suku kata memiliki konsonan 'w' yang tidak di awal suku//panjingan
var sound = "";
var len = 0;
var index = 0;
for (index = 0; index < str.length; index++) {
var c = str[index];
if (!isVowel(c)) {
sound = sound + ResolveCharacterSound(c);
len++;
}
else {
break;
}
}
return { "CoreSound": sound, "len": len };
}
 
//V.6. 2nd letter is 'c' or 'j'
if (str.indexOf("nc") == 0) { //nc
if (str.indexOf("nc") == 0) { //nc
if (str.indexOf("ncr") == 0) { //ncr -- kencrung
return { "CoreSound": "" + GetCoreSound(str[0]).CoreSound + "ꦚ꧀ꦕꦿ", "len": 3 };
} else if (str.indexOf("ncl") == 0) { //ncl -- kinclong
return { "CoreSound": "" + GetCoreSound(str[0]).CoreSound + "ꦚ꧀ꦕ꧀ꦭ", "len": 3 };
} else {
return { "CoreSound": "" + GetCoreSound(str[0]).CoreSound + "ꦚ꧀ꦕ", "len": 2 };
}
} else if (str.indexOf("rchc") == 0) { //rcwignyan --+ arcaca
return { "CoreSound": "" + GetCoreSound(str[0]).CoreSound + "ꦂꦕꦃꦕ", "len": 2 };
} else if (str.indexOf("rc") == 0) { //layar + ca -- arca
return { "CoreSound": "ꦂꦕ", "len": 2 };
} else if (str.indexOf("cc") == 0) { //cc -- impossible combination in real text
return { "CoreSound": "ꦕ꧀ꦕ", "len": 2 };
} else if (str2.indexOf("qc") == 0) { //only pasangan ca
return { "CoreSound": "꧀ꦕ", "len": 2 };
} else if (str.indexOf("c") == 1) { //c
return { "CoreSound": "" + GetCoreSound(strstr2[0]).CoreSound + "꧀ꦕ", "len": 2 };
} else if (str.indexOf("c") > 1) {
var sound = "";
var len = 0;
var index = 0;
for (index = 0; index < str.length; index++) {
var c = str[index];
if (!isVowel(c)) {
sound = sound + ResolveCharacterSound(c);
len++;
}
else {
break;
}
}
return { "CoreSound": sound, "len": len };
}
 
if (str.indexOf("nj") == 0) { //nj
if (str.indexOf("njr") == 0) { //njr -- anjrahanjrit
return { "CoreSound": "" + GetCoreSound(str[0]).CoreSound + "ꦚ꧀ꦗꦿ", "len": 3 };
} else if (str.indexOf("njl") == 0) { //njl -- anjlog
return { "CoreSound": "" + GetCoreSound(str[0]).CoreSound + "ꦚ꧀ꦗ꧀ꦭ", "len": 3 };
} else {
return { "CoreSound": "" + GetCoreSound(str[0]).CoreSound + "ꦚ꧀ꦗ", "len": 2 };
}
} else if (str.indexOf("rjhj") == 0) { //'rj'wignyan + ja
return { "CoreSound": "ꦂꦗꦃꦗ", "len": 2 };
} else if (str.indexOf("rj") == 0) { //layar + ja
return { "CoreSound": "ꦂꦗ", "len": 2 };
} else if (str.indexOf("jj") == 0) { //jj -- impossible combination in real text
return { "CoreSound": "ꦗ꧀ꦗ", "len": 2 };
} else if (str2.indexOf("qj") == 0) { //only pasangan ja
return { "CoreSound": "꧀ꦗ", "len": 2 };
} else if (str.indexOf("j") == 1) { //j
return { "CoreSound": "" + GetCoreSound(strstr2[0]).CoreSound + "꧀ꦗ", "len": 2 };
}
} else if (str.indexOf("j") > 1) {
 
//V.7. 2nd letter is 'ñ' or 'n'
if (str.indexOf("jñ") == 0) { //suku kata diawali 'jñ'
if (str.indexOf("jñl") == 0) { //suku kata diawali 'jñ' - nya murda
return { "CoreSound": "ꦘ꧀ꦭ", "len": 3 };
} else if (str.indexOf("jñr") == 0) { //nya murda + cakra
return { "CoreSound": "ꦘꦿ", "len": 3 };
} else if (str.indexOf("jñw") == 0) { //nya murda + panjingan wa
return { "CoreSound": "ꦘ꧀ꦮ", "len": 3 };
} else if (str.indexOf("jñy") == 0) { //nya murda + wignyan
return { "CoreSound": "ꦘꦾ", "len": 3 };
} else {
return { "CoreSound": "ꦘ", "len": 2 };
}
} else if (str.indexOf("jn") == 0) { //suku kata diawali 'jn'
if (str.indexOf("jny") == 0) { //suku kata diawali 'jny' - nya murda
if (str.indexOf("jnyl") == 0) { //suku kata diawali 'jny' - nya murda
return { "CoreSound": "ꦘ꧀ꦭ", "len": 4 };
} else if (str.indexOf("jnyr") == 0) { //nya murda + cakra
return { "CoreSound": "ꦘꦿ", "len": 4 };
} else if (str.indexOf("jnyw") == 0) { //nya murda + panjingan wa
return { "CoreSound": "ꦘ꧀ꦮ", "len": 4 };
} else if (str.indexOf("jnyy") == 0) { //nya murda + wignyan
return { "CoreSound": "ꦘꦾ", "len": 4 };
} else {
return { "CoreSound": "ꦘ", "len": 3 };
}
} else {
return { "CoreSound": "ꦗ꧀ꦤ", "len": 2 };
}
} else if (str.indexOf("hn") == 0) { //wignyan + na
return { "CoreSound": "ꦃꦤ", "len": 2 };
} else if (str.indexOf("rn") == 0) { //layar + na
return { "CoreSound": "ꦂꦤ", "len": 2 };
} else if (str.indexOf("nn") == 0) { //nn, e.g. root word ends with 'n' with suffix -i
if (str.indexOf("nng") == 0) { //
return { "CoreSound": "ꦤ꧀ꦁ", "len": 3 };
} else if (str.indexOf("nng") == 0) { //
return { "CoreSound": "ꦤ꧀ꦚ꧀", "len": 3 };
} else {
return { "CoreSound": "ꦤ꧀ꦤ", "len": 2 };
}
} else if (str2.indexOf("qn") == 0) { //only pasangan na
return { "CoreSound": "꧀ꦤ", "len": 2 };
} else if (str.indexOf("ñ") == 1) { //huruf asing sih sebenarnya, kemungkinan kecil muncul
return { "CoreSound": "" + GetCoreSound(str2[0]).CoreSound + "꧀ꦚ", "len": 2 };
} else if (str.indexOf("n") == 1) { //
return { "CoreSound": "" + GetCoreSound(str2[0]).CoreSound + "꧀ꦤ", "len": 2 };
}
 
//suku kata memiliki konsonan tersebut yang tidak di posisi kedua
if (str.indexOf("h") > 1 || str.indexOf("g") > 1 || str.indexOf("y") > 1 ||
str.indexOf("r") > 1 || str.indexOf("l") > 1 || str.indexOf("w") > 1 ||
str.indexOf("c") > 1 || str.indexOf("j") > 1 || str.indexOf("n") > 1 || str.indexOf("ñ") > 1) {
var sound = "";
var len = 0;
Baris 424 ⟶ 547:
var c = str[index];
if (!isVowel(c)) {
sound = sound += ResolveCharacterSound(c);
len++;
}
Baris 441 ⟶ 564:
****************************/
function GetCoreSound(str) {
var soundMap1 = { //26 uppercase for non-Murda, largely mirror lowercase, except AEIOU, and HR
var consonantMap1 = {
"A":"ꦄ", //A
"B":"ꦧ", //Bba
"C":"ꦕ", //Cca
"D":"ꦢ", //Dda
"E":"ꦌ", //E
"F":"ꦥ꦳", //Ffa rekan
"G":"ꦒ", //Gga
"H":"ꦲ", //Hha
"I":"ꦆ", //I
"J":"ꦗ", //Jja
"K":"ꦏ", //Kka
"L":"ꦭ", //Lla
"M":"ꦩ", //Mma
"N":"ꦤ", //Nna
"O":"ꦎ", //O
"P":"ꦥ", //Ppa
"Q":"", //Ka Sasakpangkon
"R":"", //Rra
"S":"ꦱ", //Ssa
"T":"ꦠ", //Tta
"U":"ꦈ", //U
"V":"ꦮ꦳", //Vva rekan
"W":"ꦮ", //Wwa
"X":"ꦼ", //Xpepet
"Y":"ꦪ", //Yya
"Z":"ꦗ꦳", //Zza rekan
//test: ABaCaDaEFaGaHaJaKaLaMaNaOPaRaSaTaUVaWaXYaZa
"a":"ꦲ", //a
"b":"ꦧ", //b
"c":"ꦕ", //c
"d":"ꦢ", //d
"e":"ꦲꦺ", //e
"f":"ꦥ꦳", //f
"g":"ꦒ", //g
"h":"ꦃ", //h
"i":"ꦲꦶ", //i
"j":"ꦗ", //j
"k":"ꦏ", //k
"l":"ꦭ", //l
"m":"ꦩ", //m
"n":"ꦤ", //n
"o":"ꦲꦺꦴ", //o
"p":"ꦥ", //p
"q":"꧀", //q
"r":"ꦂ", //r
"s":"ꦱ", //s
"ś":"ꦯ", //ś
"t":"ꦠ", //t
"u":"ꦲꦸ", //u
"v":"ꦮ꦳", //v
"w":"ꦮ", //w
"x":"ꦲꦼ", //x
"y":"ꦪ", //y
"z":"ꦗ꦳", //z
"È":"ꦌ", //È
"É":"ꦌ", //É
"Ê":"ꦄꦼ", //Ê
"Ě":"ꦄꦼ", //Ě
"è":"ꦲꦺ", //è
"é":"ꦲꦺ", //é
"ê":"ꦲꦼ", //ê
"ě":"ꦲꦼ", //ě
"ə":"ꦲꦼ", //schwa
"ɔ":"ꦲ", //Open O
"å":"ꦲ", //Angstrom
"ô":"ꦲ", //ô
"ñ":"ꦚ", //enye
"ṇ":"ꦟ",
"ḍ":"ꦝ",
"ṭ":"ꦛ",
"ṣ":"ꦰ",
"ṛ":"ꦽ"
}
var soundMap2 = { //26 uppercase for Murda (notice for J, Q, R, and Z)
var consonantMap2 = {
"A":"ꦄ", //A
"B":"ꦨ", //BBa murda
"C":"ꦖ", //CCa murda
"D":"ꦣ", //DDa murda
"E":"ꦌ", //E
"F":"ꦦ꦳", //FPa murda rekan
"G":"ꦓ", //GGa murda
"H":"ꦲ꦳", //H
"I":"ꦆ", //I
"J":"ꦙ", //JJa mahaprana
"K":"ꦑ", //KKa murda
"L":"ꦭ", //L
"M":"ꦩ", //M
"N":"ꦟ", //NNa murda
"O":"ꦎ", //O
"P":"ꦦ", //PPa murda
"Q":"", //QKa Sasak
"R":"ꦬ", //RRa Agung
"śS":"ꦯ", //śSa murda
"ST":"", //STa murda
"T":"ꦡ", //T
"U":"ꦈ", //U
"V":"ꦮ꦳", //VWa rekan
"W":"ꦮ", //W
"X":"ꦼ", //X
"Y":"ꦪ", //Y
"Z":"ꦗ꦳", //ZSa mahaprana
//test: ABaCaDaEFaGaHaJaKaLaMaNaOPaQaRaSaTaUVaWaXaYaZa
"a":"ꦄ", //a
}
"b":"ꦧ", //b
var soundMap3 = { //26 lowercase + 35 special, same for both Murda or non-Murda
"c":"ꦕ", //c
"da":"", //dha
"eb":"", //eba
"fc":"ꦥ꦳", //fca
"gd":"", //gda
"he":"ꦲꦺ", //hhe
"if":"ꦥ꦳", //ifa rekan
"jg":"", //jga
"kh":"", //kwignyan
"li":"ꦲꦶ", //lhi
"mj":"", //mja
"nk":"", //nka
"ol":"", //ola
"pm":"", //pma
"qn":"", //qna
"ro":"ꦲꦺꦴ", //rho
"sp":"", //spa
"śq":"", //śpangkon
"tr":"", //tlayar
"us":"", //usa
"vt":"ꦮ꦳", //vta
"wu":"ꦲꦸ", //whu
"xv":"ꦮ꦳", //xva rekan
"ĕw":"", //ĕwa
"ěx":"ꦲꦼ", //ě
"êy":"", //êya
"əz":"ꦗ꦳", //schwaza rekan
 
"ɔ":"ꦲ", //Open O
"å":"ꦲ", //Angstrom
"ū":"ꦹ", //ū
"y":"ꦪ", //y
"z":"ꦗ꦳", //z
"È":"ꦌ", //È
"É":"ꦌ", //É
"Ê":"ꦄꦼ", //Ê
"Ě":"ꦄꦼ", //Ě
"èĔ":"ꦄꦼ", //èĔ
"éè":"ꦲꦺ", //é
"é":"ꦲꦺ", //hé
"ê":"ꦲꦼ", //hê
"ě":"ꦲꦼ", //hě
"ĕ":"ꦲꦼ", //hĕ
"ə":"ꦲꦼ", //hə
"ɔ":"ꦲ", //hɔ
"å":"ꦲ", //hɔ
"ô":"ꦲ", //hô
"â":"ꦲꦴ", //hâ
"ā":"ꦲꦴ", //hā
"ī":"ꦲꦷ", //hī
"ū":"ꦲꦹ", //hū
"ō":"ꦲꦼꦴ", //hō
"Ñ":"ꦚ", //nya
"ñ":"ꦚ", //nya
"ɲ":"ꦚ", //nya
"Ŋ":"ꦔ", //nga
"ŋ":"ꦔ", //nga
"Ṇ":"ꦟ", //Na Murda
"ṇ":"ꦟ", //Na Murda
"Ḍ":"ꦝ", //dha / ḍa (Indic)
"ḍ":"ꦝ", //dha / ḍa (Indic)
"Ṭ":"ꦛ", //tha / ṭa (Indic)
"ṭ":"ꦛ", //tha / ṭa (Indic)
"ś":"ꦯ", //Sa Murda
"Ṣ":"ꦰ", //Sa Mahaprana
"ṣ":"ꦰ", //Sa Mahaprana
"Ṛ":"ꦽ", //Cakra keret, somehow was categorized as vocal
"ṛ":"ꦽ" //idem
//test: Èè.Éé.Êê.Ěě.Ĕĕ.Ṛṛ.ôâāīūōåɔə
//test: ḌaḍaṆaṇaṢaṣaṬaṭaŊaŋaÑañaɲaśa
}
var consonantMapsoundMap, murda;
var modeMurda = document.getElementsByName("murda");
for(var rad in modeMurda) {
Baris 595 ⟶ 695:
}
if(murda == "pakai")
soundMap = {...soundMap2, ...soundMap3};
consonantMap = consonantMap2;
else //if(murda == "tidak")
soundMap = {...soundMap1, ...soundMap3};
consonantMap = consonantMap1;
 
var h_shift = GetShift(str);
Baris 604 ⟶ 704:
if (h_shift["CoreSound"] == null) {
 
if (consonantMapsoundMap[str.charAt(0)]) core = consonantMapsoundMap[str.charAt(0)];
return {
"CoreSound": core,
Baris 614 ⟶ 714:
}
function GetSpecialSound(str) {
specialsoundMap = { "f":"ꦥ꦳꧀", "v":"ꦮ꦳꧀", "z":"ꦗ꦳꧀", "ś":"ꦯ꧀", "Q":"꧀", "q":"꧀"/*pangkon*/ }
if(specialsoundMap[str]!==undefined){
return specialsoundMap[str];
Baris 647 ⟶ 747:
var len = 0;
str = SuperTrim(str);
str2 = str.toLowerCase();
if (str == null || str == "") {
return "";
}
var SpecialSound = GetSpecialSound(str);
 
if (SpecialSound != null && str.length == 1) {
return SpecialSound;
}
if (str.length == 1) {
return ResolveCharacterSound(str[0]);
Baris 672 ⟶ 773:
matra = ""; } //a/å/ɔ
 
/* rules for some cluster like ngg- that have different behaviour depending if it's the start of a word or not.
if (str.indexOf("nggr") == 0) { //nggr-
TODO: find more elegant solution */
if (str2.indexOf("nggr") == 0) { //nggr-
if (vowelPrev) konsonan = "ꦁꦒꦿ";//<vowel>nggr-, e.g. panggrahita
//else if (matra = "")
else konsonan = "ꦔ꧀ꦒꦿ";//<nonvowel>nggr-, i.e. nggronjal
} else if (strstr2.indexOf("nggl") == 0) { //nggl-, e.g. ngglantung
konsonan = "ꦔ꧀ꦒ꧀ꦭ";
} else if (strstr2.indexOf("nggw") == 0) { //nggw-, e.g. munggwing
konsonan = "ꦔ꧀ꦒ꧀ꦮ";
} else if (strstr2.indexOf("nggy") == 0) { //nggy-, e.g. anggyat
konsonan = "ꦔ꧀ꦒꦾ";
} else if (strstr2.indexOf("ngg") == 0) { //ngg-
if (vowelPrev) konsonan = "ꦁꦒ";//<vowel>ngg-, e.g. tunggal
//else if (spacePrev) konsonan = "​ꦔ꧀";//<space>ngg-, e.g. ditinggal nggambar (it has a zws)
else konsonan = "ꦔ꧀ꦒ";//<nonvowel>ngg-, i.e. nggambar
//for cluster longer than 4 consonants, such as "ditinggalnggambar",
} else if (str.indexOf("ngl") == 0) { //ngl-
//need to separate it by a space, "ditinggal nggambar" to be correct
konsonan = "ꦔ꧀ꦭ";
 
} else if (str.indexOf("ngw") == 0) { //ngw-
} else if konsonan(str2.indexOf("rlx") == "ꦔ꧀ꦮ";0) { //r lx, e.g. pasarlxgi
} else if (str.indexOf("ncl") =konsonan = 0)"ꦂꦊ"; {matra //ncl-= "";
} else if konsonan(str2.indexOf("rrx") == "ꦚ꧀ꦕ꧀ꦭ";0) { //r rx
} else if (str.indexOf("ncr") =konsonan = 0)"ꦂꦉ"; {matra //ncr-= "";
} else if konsonan(str2.indexOf("hlx") == "ꦚ꧀ꦕꦿ";0) { //h lx
} else if (str.indexOf("njl"vowelPrev) ={ konsonan = 0)"ꦃꦊ"; {matra //njl-= ""; }
else konsonan = "ꦚ꧀ꦗ꧀ꦭꦲ꧀ꦭꦼ"; matra = "";
} else if (strstr2.indexOf("njrhrx") == 0) { //njr-h rx
if (vowelPrev) { konsonan = "ꦚ꧀ꦗꦿꦃꦉ"; matra = ""; }
} else ifkonsonan = (str.indexOf("nggꦲꦽ"); matra == 0) { //ngg-"";
} else if (vowelPrevstr2.indexOf("qlx") konsonan == "ꦁꦒ";0) { //<vowel>ngg-,just e.g.pasangan la + tunggalpepet
else konsonan = "ꦔ꧀ꦒ꧀ꦭꦼ";//<nonvowel>ngg-, i.e.matra nggambar= "";
} else if (core_soundstr2.CoreSoundindexOf("qrx") == "ꦤꦚ꧀ꦕ꧀ꦭ"0) { //just cakra -ncl-keret
konsonan = "ꦚ꧀ꦕ꧀ꦭꦽ"; matra = "";//-ncl-
 
} else if (core_sound.CoreSound == "ꦤꦚ꧀ꦕꦿ") { // -ncr-
} else if konsonan(core_sound.CoreSound == "ꦚ꧀ꦕꦿꦂꦂꦮ";) { // -ncrrw-*/
} else if (core_sound.CoreSoundvowelPrev) konsonan == "ꦤꦚ꧀ꦕꦂꦮ") { ;//-rw- -nc- arwana
else konsonan = "ꦚ꧀ꦕꦫ꧀ꦮ";//rw-nyc -- rwa/rwi/*rwab
} else if (core_sound.CoreSound == "ꦤꦚ꧀ꦗ꧀ꦭꦃꦃꦭ") { // -njlhl-
if (vowelPrev) konsonan = "ꦚ꧀ꦗ꧀ꦭꦃꦭ";//-njlhl-
} else ifkonsonan (core_sound.CoreSound == "ꦤꦚ꧀ꦗꦿꦲ꧀ꦭ") { ;// -njr-hlam
} else if konsonan(core_sound.CoreSound == "ꦚ꧀ꦗꦿꦃꦃꦮ";) { // -njrhw-*/
} else if (core_sound.CoreSoundvowelPrev) konsonan == "ꦤꦚ꧀ꦗꦃꦮ") { ;// -njhw-
else konsonan = "ꦚ꧀ꦗꦲ꧀ꦮ";//-nyj-hwab,hwan
} else if (core_sound.CoreSound == "ꦢꦝ꧀ꦮꦃꦲꦾ") { // -dhwhy-
if (vowelPrev) konsonan = "ꦝ꧀ꦮꦃꦪ";//-dhw-sembahyang
} else ifkonsonan (core_sound.CoreSound == "ꦢꦝꦾꦲꦾ") { ;// -dhy-hyang
/* rules for somoe characters that change depends on the matra/vowel (e.g. lx and rx, and -rx) */
konsonan = "ꦝꦾ";//-dhy-
 
} else if (core_sound.CoreSound == "ꦠꦛ꧀ꦮ") { // -thw-
konsonan = "ꦛ꧀ꦮ";//-dhw-
} else if (core_sound.CoreSound == "ꦠꦛꦾ") { // -thy-
konsonan = "ꦛꦾ";//-dhy-
} else if (findstr(core_sound.CoreSound,'ꦾ') && matra == "꧀") { // pengkal
konsonan = core_sound.CoreSound; matra = "";//-y-
Baris 728 ⟶ 830:
} else if (str[0] == "n" && str[1] == "g") {
if (str[2] == "g") konsonan = "ꦔ꧀ꦒꦽ"; else konsonan = "ꦔꦽ"; matra = "";//nggrê-/ngrê-
} else { konsonan = GetCoreSound(str[0]).CoreSound + "ꦽ"; matra = "";//-rê-
}
} else if (findstr(core_sound.CoreSound, 'ꦭ') && matra == "ꦼ") { // nga lelet
Baris 736 ⟶ 838:
if (str[2] == "g") konsonan = "ꦔ꧀ꦒ꧀ꦭꦼ"; else konsonan = "ꦔ꧀ꦭꦼ"; matra = "";//ngglê-/nglê-
} else if (str[0] == "l") {
konsonan = "ꦊ"; matra = "";//-lê-
} else { konsonan = GetCoreSound(str[0]).CoreSound + "꧀ꦭꦼ"; matra = "";//-lê-
}
 
} else if (core_sound.CoreSound == 'ꦛꦿ' || core_sound.CoreSound == 'ꦝꦿ' || core_sound.CoreSound == 'ꦔꦿ' || core_sound.CoreSound == 'ꦚꦿ') { // i.e. nyruput
konsonan = core_sound.CoreSound;
if (matra == "꧀") matra = "";
} else if (core_sound.CoreSound == "ꦭꦭ꧀ꦭ") { // -ll-
konsonan = "ꦭ꧀ꦭ";//double -l-
} else if (core_sound.CoreSound == "ꦂꦂꦫ") { // -rr-
konsonan = "ꦂꦫ";//double -r-
} else if (core_sound.CoreSound == "ꦂꦂꦲ") { // -rh-
konsonan = "ꦂꦲ";//-rh-
} else if (core_sound.CoreSound == "ꦂꦂꦭ") { // -rl-
konsonan = "ꦂꦭ";//-rl-
} else if (core_sound.CoreSound == "ꦂꦂꦮ") { // -rw-
if (vowelPrev) konsonan = "ꦂꦮ";//-rw- -- arwana
else konsonan = "ꦫ꧀ꦮ";//rw- -- rwa/rwi/rwab
} else if (core_sound.CoreSound == "ꦂꦂꦕ") { // -rc-
konsonan = "ꦂꦕ";//-rc-
} else if (core_sound.CoreSound == "ꦃꦃꦲ") { // -hh-
konsonan = "ꦃꦲ";//double -h-
} else if (core_sound.CoreSound == "ꦃꦃꦭ") { // -hl-
if (vowelPrev) konsonan = "ꦃꦭ";//-hl-
else konsonan = "ꦲ꧀ꦭ";//hlam
} else if (core_sound.CoreSound == "ꦃꦃꦮ") { // -hw-
if (vowelPrev) konsonan = "ꦃꦮ";//-hw-
else konsonan = "ꦲ꧀ꦮ";//hwab,hwan
} else if (core_sound.CoreSound == "ꦃꦲꦾ") { // -hy-
if (vowelPrev) konsonan = "ꦃꦪ";//sembahyang
else konsonan = "ꦲꦾ";//hyang/*
} else if (core_sound.CoreSound == "ꦃꦃꦽ") { // hrx-
konsonan = "ꦲꦿ";//hrx-
} else if (core_sound.CoreSound == "ꦃꦃꦿ") { // hr-
if (matra == "ꦼ") konsonan = "ꦲꦽ";//hr-
else konsonan = "ꦲꦿ";//hr-
} else if (core_sound.CoreSound == "ꦃꦲꦿ") { // hr-
if (matra == "ꦼ") konsonan = "ꦲꦽ";//hr-
else konsonan = "ꦲꦿ";//hr-
} else if (core_sound.CoreSound == 'ꦃ' && matra == "꧀") { // wignyan - 12 April
konsonan = "ꦲ"; //ha
Baris 780 ⟶ 848:
} else if (core_sound.CoreSound == 'ꦂ' && matra == "ꦼ") { // pa cerek
konsonan = "ꦉ"; matra = "";//rê
} else if (core_sound.CoreSound == 'ꦂ' && matra == "꧀") { // layar
konsonan = "ꦫ"; //ra
} else if (core_sound.CoreSound == 'ꦂ' && matra != "꧀") { // layar
konsonan = "ꦫ"; //ra
} else if (core_sound.CoreSound == 'ꦁ' && matra != "꧀") { // cecak
konsonan = "ꦔ"; //nga
} else if (core_sound.CoreSound == 'ꦁ' && matra == "꧀") { // cecak
konsonan = "ꦁ"; matra = "";//cecak
} else if (core_sound.CoreSound == 'ꦁ' && matra != "꧀") { // cecak
konsonan = "ꦔ"; //nga
} else {
konsonan = core_sound.CoreSound;
}
return "" + konsonan + matra;
Baris 800 ⟶ 870:
var ret = "";
var pi = 0; //?offset
var vowelFlag = false, angkaFlag = false, cecakFlag=false;
var angka = {"0":'꧐',"1":'꧑',"2":'꧒',"3":'꧓',"4":'꧔',"5":'꧕',"6":'꧖',"7":'꧗',"8":'꧘',"9":'꧙'}
str = SuperTrim(str);
Baris 816 ⟶ 886:
}
if(diftong == "pakai")
{ //do nothing, look in matramap table
}
else //if(diftong == "tidak")
Baris 843 ⟶ 913:
if (pi < i) {
if (cecakFlag && GetSound(str.substring(pi, i)) == "ꦁ") {
cecakFlag = false;
ret += "ꦔ꧀ꦔ";
} else if (!cecakFlag && GetSound(str.substring(pi, i)) == "ꦁ") {
cecakFlag = true;
ret += "ꦁ";
} else {
cecakFlag = false;
ret += GetSound(str.substring(pi, i));
}
}
if (str[i] == ' ') {
var spasi, modeSpasi;
var pakaiSpasi = document.getElementsByName("spasi");
Baris 863 ⟶ 933:
spasi = ''; }
else { //if(mode == "with")
spasi = '​'; // zero-width space
//spasi = ' '; }//hair space http://en.wikipedia.org/wiki/Space_(punctuation)#Spaces_in_Unicode
}
Baris 870 ⟶ 940:
if (str[i] == '.') {
ret += "꧉​"; //titik+zero-width space
pi = i + 1;
} else if (str[i] == ',') {
ret += "꧈​"; //koma+zero-width space
pi = i + 1;
} else if (str[i] == ':') {
ret += "꧇​"; //titik dua+zero-width space
pi = i + 1;
} else if (str[i] == '|') {
ret += "꧋"; pi = i + 1;
Baris 904 ⟶ 974:
angkaFlag = false;
}
vowelFlag = true;
}
if (pi > 0 && isVowel(str[pi-1])) {//<vowel>ngg
Baris 910 ⟶ 980:
}
else vowelPrev = false;
/* not working
if (pi > 0 && findstr(" ",str[pi-1])) {//<vowel>ngg
spacePrev = true;
}
else spacePrev = false;*/
i++;
} //endwhile