సభ్యుడు:Mpradeep/padma.js
వికీపీడియా నుండి
గమనిక: భద్రపరచిన తరువాత, మార్పులను చూడాలంటేమీ బ్రౌజరు కాషె ను తప్పించవలసి రావచ్చు. మొజిల్లా/ ఫైర్ఫాక్స్/ సఫారి: shift కీని నొక్కి పెట్టి Reload నొక్కండి, లేదా Ctrl-shift-R నొక్కండి (యాపుల్ మాక్ లో Cmd-shift-R); IE: Ctrl నొక్కి పెట్టి, Refresh నొక్కండి, లేదా Ctrl-F5 నొక్కండి; కాంకరర్:: Reload మీట నొక్కండి, లేదా F5 నొక్కండి; ఒపేరా ను వాడే వారు Tools→Preferences కు వెళ్ళి కాషె ను పూర్తిగా తీసివేయ వలసి ఉంటుంది.
/* ***** BEGIN LICENSE BLOCK ***** * Version: MPL 1.1/GPL 2.0/LGPL 2.1 * * The contents of this file are subject to the Mozilla Public License Version * 1.1 (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" basis, * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License * for the specific language governing rights and limitations under the * License. * * The Initial Developer of the Original Code is Nagarjuna Venna. * Portions created by the Initial Developer are Copyright (C) 2005 * by the Initial Developer. All Rights Reserved. * * Contributor(s): Nagarjuna Venna <vnagarjuna@yahoo.com> * * Alternatively, the contents of this file may be used under the terms of * either the GNU General Public License Version 2 or later (the "GPL"), or * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), * in which case the provisions of the GPL or the LGPL are applicable instead * of those above. If you wish to allow use of your version of this file only * under the terms of either the GPL or the LGPL, and not to allow others to * use your version of this file under the terms of the MPL, indicate your * decision by deleting the provisions above and replace them with the notice * and other provisions required by the GPL or the LGPL. If you do not delete * the provisions above, a recipient may use your version of this file under * the terms of any one of the MPL, the GPL or the LGPL. * * ***** END LICENSE BLOCK ***** */ //Unicode //Various Signs var Unicode_candrabindu = "\u0C01"; var Unicode_anusvara = "\u0C02"; //sunna var Unicode_visarga = "\u0C03"; //Independent Vowels var Unicode_letter_A = "\u0C05"; var Unicode_letter_AA = "\u0C06"; var Unicode_letter_I = "\u0C07"; var Unicode_letter_II = "\u0C08"; var Unicode_letter_U = "\u0C09"; var Unicode_letter_UU = "\u0C0A"; var Unicode_letter_R = "\u0C0B"; //vocalic R var Unicode_letter_RR = "\u0C60"; //vocalic R var Unicode_letter_L = "\u0C0C"; //vocalic L var Unicode_letter_LL = "\u0C61"; //vocalic L var Unicode_letter_E = "\u0C0E"; var Unicode_letter_EE = "\u0C0F"; var Unicode_letter_AI = "\u0C10"; var Unicode_letter_O = "\u0C12"; var Unicode_letter_OO = "\u0C13"; var Unicode_letter_AU = "\u0C14"; //Consonants var Unicode_letter_KA = "\u0C15"; var Unicode_letter_KHA = "\u0C16"; var Unicode_letter_GA = "\u0C17"; var Unicode_letter_GHA = "\u0C18"; var Unicode_letter_NGA = "\u0C19"; var Unicode_letter_CA = "\u0C1A"; var Unicode_letter_CHA = "\u0C1B"; var Unicode_letter_JA = "\u0C1C"; var Unicode_letter_JHA = "\u0C1D"; var Unicode_letter_NYA = "\u0C1E"; var Unicode_letter_TTA = "\u0C1F"; var Unicode_letter_TTHA = "\u0C20"; var Unicode_letter_DDA = "\u0C21"; var Unicode_letter_DDHA = "\u0C22"; var Unicode_letter_NNA = "\u0C23"; var Unicode_letter_TA = "\u0C24"; var Unicode_letter_THA = "\u0C25"; var Unicode_letter_DA = "\u0C26"; var Unicode_letter_DHA = "\u0C27"; var Unicode_letter_NA = "\u0C28"; var Unicode_letter_PA = "\u0C2A"; var Unicode_letter_PHA = "\u0C2B"; var Unicode_letter_BA = "\u0C2C"; var Unicode_letter_BHA = "\u0C2D"; var Unicode_letter_MA = "\u0C2E"; var Unicode_letter_YA = "\u0C2F"; var Unicode_letter_RA = "\u0C30"; var Unicode_letter_RRA = "\u0C31"; var Unicode_letter_LA = "\u0C32"; var Unicode_letter_LLA = "\u0C33"; var Unicode_letter_VA = "\u0C35"; var Unicode_letter_SHA = "\u0C36"; var Unicode_letter_SSA = "\u0C37"; var Unicode_letter_SA = "\u0C38"; var Unicode_letter_HA = "\u0C39"; //Dependent Vowel Signs var Unicode_vowelsn_AA = "\u0C3E"; var Unicode_vowelsn_I = "\u0C3F"; var Unicode_vowelsn_II = "\u0C40"; var Unicode_vowelsn_U = "\u0C41"; var Unicode_vowelsn_UU = "\u0C42"; var Unicode_vowelsn_R = "\u0C43"; var Unicode_vowelsn_RR = "\u0C44"; var Unicode_vowelsn_E = "\u0C46"; var Unicode_vowelsn_EE = "\u0C47"; var Unicode_vowelsn_AI = "\u0C48"; //this is the same as 0C46 followed by 0C56 var Unicode_vowelsn_O = "\u0C4A"; var Unicode_vowelsn_OO = "\u0C4B"; var Unicode_vowelsn_AU = "\u0C4C"; //Miscellaneous Signs var Unicode_misc_VIRAMA = "\u0C4D"; //halant var Unicode_misc_LENGTH = "\u0C55"; var Unicode_misc_AILEN = "\u0C56"; var Unicode_misc_AVAGRAHA = "\u093D"; var Unicode_misc_NUKTA = "\u093C"; //Ligatures var Unicode_ligature_KSH = "\u0C15\u0C37"; //nukt var Unicode_nukt_TCH = "\u0C1A\u093C\u0C4D"; var Unicode_nukt_TJ = "\u0C1C\u093C\u0C4d"; //Miscellaneous var Unicode_conjuct_JNY = "\u0C1C\u0C1E"; var Unicode_conjuct_DDDD = "\u0C21\u0C21"; var Unicode_conjuct_TTTT = "\u0C1F\u0C1F"; //Digits var Unicode_digit_ZERO = "\u0C66"; var Unicode_digit_ONE = "\u0C67"; var Unicode_digit_TWO = "\u0C68"; var Unicode_digit_THREE = "\u0C69"; var Unicode_digit_FOUR = "\u0C6A"; var Unicode_digit_FIVE = "\u0C6B"; var Unicode_digit_SIX = "\u0C6C"; var Unicode_digit_SEVEN = "\u0C6D"; var Unicode_digit_EIGHT = "\u0C6E"; var Unicode_digit_NINE = "\u0C6F"; //Zero-Width Joiner/Non Joiner for Virama var Unicode_misc_ZWNJ = "\u200C"; var Unicode_misc_ZWJ = "\u200D"; var Unicode_independentVowels = new Array(); var Unicode_vowelMap = new Array(); Unicode_independentVowels[Unicode_letter_A] = 1; Unicode_independentVowels[Unicode_letter_AA] = 1; Unicode_independentVowels[Unicode_letter_I] = 1; Unicode_independentVowels[Unicode_letter_II] = 1; Unicode_independentVowels[Unicode_letter_U] = 1; Unicode_independentVowels[Unicode_letter_UU] = 1; Unicode_independentVowels[Unicode_letter_R] = 1; Unicode_independentVowels[Unicode_letter_RR] = 1; Unicode_independentVowels[Unicode_letter_L] = 1; Unicode_independentVowels[Unicode_letter_LL] = 1; Unicode_independentVowels[Unicode_letter_E] = 1; Unicode_independentVowels[Unicode_letter_EE] = 1; Unicode_independentVowels[Unicode_letter_AI] = 1; Unicode_independentVowels[Unicode_letter_O] = 1; Unicode_independentVowels[Unicode_letter_OO] = 1; Unicode_independentVowels[Unicode_letter_AU] = 1; Unicode_vowelMap[Unicode_letter_AA] = Unicode_vowelsn_AA; Unicode_vowelMap[Unicode_letter_I] = Unicode_vowelsn_I; Unicode_vowelMap[Unicode_letter_II] = Unicode_vowelsn_II; Unicode_vowelMap[Unicode_letter_U] = Unicode_vowelsn_U; Unicode_vowelMap[Unicode_letter_UU] = Unicode_vowelsn_UU; Unicode_vowelMap[Unicode_letter_R] = Unicode_vowelsn_R; Unicode_vowelMap[Unicode_letter_RR] = Unicode_vowelsn_RR; Unicode_vowelMap[Unicode_letter_E] = Unicode_vowelsn_E; Unicode_vowelMap[Unicode_letter_EE] = Unicode_vowelsn_EE; Unicode_vowelMap[Unicode_letter_AI] = Unicode_vowelsn_AI; Unicode_vowelMap[Unicode_letter_O] = Unicode_vowelsn_O; Unicode_vowelMap[Unicode_letter_OO] = Unicode_vowelsn_OO; Unicode_vowelMap[Unicode_letter_AU] = Unicode_vowelsn_AU; function Unicode_isInherentVowel(str) { return str == Unicode_letter_A; } function Unicode_isVirama(str) { return str == Unicode_misc_VIRAMA; } function Unicode_getDependentVowel(str) { return Unicode_vowelMap[str]; } //RTS var RTS_maxLookupLen = 3; var RTS_candrabindu_1 = "@M"; //arasunna var RTS_candrabindu_2 = "@m"; var RTS_visarga_1 = "@h"; var RTS_visarga_2 = "@H"; var RTS_virama_1 = "^"; var RTS_virama_2 = "@n"; //nakarapollu what is this? var RTS_virama_3 = "@N"; var RTS_avagraha = "@2"; //all the sunnas var RTS_anusvara_1 = "M"; //sunna, non standard but supported by raMgavallika var RTS_anusvara_2 = "nk"; var RTS_anusvara_3 = "nK"; var RTS_anusvara_4 = "ng"; var RTS_anusvara_5 = "nG"; var RTS_anusvara_6 = "nc"; var RTS_anusvara_7 = "nC"; var RTS_anusvara_8 = "nj"; var RTS_anusvara_9 = "nJ"; var RTS_anusvara_10 = "nT"; var RTS_anusvara_11 = "nD"; var RTS_anusvara_12 = "nt"; var RTS_anusvara_13 = "nd"; //var RTS_anusvara_14 = "np"; //var RTS_anusvara_15 = "nP"; var RTS_anusvara_16 = "nb"; var RTS_anusvara_17 = "nB"; //var RTS_anusvara_18 = "nl"; //var RTS_anusvara_19 = "nL"; //var RTS_anusvara_20 = "ns"; //var RTS_anusvara_21 = "nS"; //var RTS_anusvara_22 = "nh"; //var RTS_anusvara_23 = "nH"; //var RTS_anusvara_24 = "nv"; var RTS_anusvara_25 = "mk"; var RTS_anusvara_26 = "mK"; var RTS_anusvara_27 = "mg"; var RTS_anusvara_28 = "mG"; var RTS_anusvara_29 = "mc"; var RTS_anusvara_30 = "mC"; var RTS_anusvara_31 = "mj"; var RTS_anusvara_32 = "mJ"; var RTS_anusvara_33 = "mT"; var RTS_anusvara_34 = "mD"; var RTS_anusvara_35 = "mt"; var RTS_anusvara_36 = "md"; var RTS_anusvara_37 = "mp"; var RTS_anusvara_38 = "mP"; var RTS_anusvara_39 = "mb"; var RTS_anusvara_40 = "mB"; var RTS_anusvara_41 = "ml"; var RTS_anusvara_42 = "mL"; var RTS_anusvara_43 = "ms"; var RTS_anusvara_44 = "mS"; var RTS_anusvara_45 = "mh"; var RTS_anusvara_46 = "mH"; var RTS_anusvara_47 = "mv"; var RTS_anusvara_48 = "mV"; var RTS_anusvara_49 = "mw"; var RTS_anusvara_50 = "mW"; //Vowels var RTS_vowel_A = "a"; var RTS_vowel_AA_1 = "aa"; var RTS_vowel_AA_2 = "A"; var RTS_vowel_AA_3 = "a'"; var RTS_vowel_AA_4 = "aaa"; var RTS_vowel_I = "i"; var RTS_vowel_II_1 = "ee"; var RTS_vowel_II_2 = "ii"; var RTS_vowel_II_3 = "I"; var RTS_vowel_II_4 = "i'"; var RTS_vowel_II_5 = "ia"; var RTS_vowel_U = "u"; var RTS_vowel_UU_1 = "uu"; var RTS_vowel_UU_2 = "oo"; var RTS_vowel_UU_3 = "U"; var RTS_vowel_UU_4 = "u'"; var RTS_vowel_UU_5 = "ua"; var RTS_vowel_R_1 = "R"; var RTS_vowel_R_2 = "r'"; var RTS_vowel_RR_1 = "RU"; var RTS_vowel_RR_2 = "r'u"; var RTS_vowel_L = "~l"; var RTS_vowel_LL = "~L"; var RTS_vowel_E = "e"; var RTS_vowel_EE_1 = "ae"; var RTS_vowel_EE_2 = "E"; var RTS_vowel_EE_3 = "e'"; var RTS_vowel_EE_4 = "ea"; var RTS_vowel_AI_1 = "ai"; var RTS_vowel_AI_2 = "ei"; var RTS_vowel_O = "o"; var RTS_vowel_OO_1 = "O"; var RTS_vowel_OO_2 = "oe"; var RTS_vowel_OO_3 = "oa"; var RTS_vowel_OO_4 = "o'"; var RTS_vowel_AU_1 = "au"; var RTS_vowel_AU_2 = "ou"; var RTS_vowel_AU_3 = "ow"; //Consonants var RTS_consnt_KA = "k"; var RTS_consnt_KHA_1 = "kh"; var RTS_consnt_KHA_2 = "kH"; var RTS_consnt_KHA_3 = "K"; var RTS_consnt_KHA_4 = "Kh"; var RTS_consnt_KHA_5 = "KH"; var RTS_consnt_GA = "g"; var RTS_consnt_GHA_1 = "gh"; var RTS_consnt_GHA_2 = "gH"; var RTS_consnt_GHA_3 = "G"; var RTS_consnt_GHA_4 = "Gh"; var RTS_consnt_GHA_5 = "GH"; var RTS_consnt_NGA = "~m"; var RTS_consnt_CA_1 = "c"; var RTS_consnt_CA_2 = "ch"; var RTS_consnt_CA_3 = "cH"; var RTS_consnt_CHA_1 = "C"; var RTS_consnt_CHA_2 = "Ch"; var RTS_consnt_CHA_3 = "c'"; var RTS_consnt_CHA_4 = "CH"; var RTS_consnt_JA_1 = "j"; var RTS_consnt_JA_2 = "z"; var RTS_consnt_JHA_1 = "jh"; var RTS_consnt_JHA_2 = "jH"; var RTS_consnt_JHA_3 = "J"; var RTS_consnt_JHA_4 = "Jh"; var RTS_consnt_JHA_5 = "JH"; var RTS_consnt_NYA = "~n"; var RTS_consnt_TTA_1 = "t'"; var RTS_consnt_TTA_2 = "T"; var RTS_consnt_TTHA_1 = "t'h"; var RTS_consnt_TTHA_2 = "t'H"; var RTS_consnt_TTHA_3 = "Th"; var RTS_consnt_TTHA_4 = "TH"; var RTS_consnt_TTHA_5 = "th'"; var RTS_consnt_TTHA_6 = "tH'"; var RTS_consnt_DDA_1 = "d'"; var RTS_consnt_DDA_2 = "D"; var RTS_consnt_DDHA_1 = "dh'"; var RTS_consnt_DDHA_2 = "Dh"; var RTS_consnt_DDHA_3 = "DH"; var RTS_consnt_DDHA_4 = "dH'"; var RTS_consnt_NNA_1 = "N"; var RTS_consnt_NNA_2 = "Nh"; var RTS_consnt_NNA_3 = "NH"; var RTS_consnt_NNA_4 = "n'"; var RTS_consnt_NNA_5 = "nh"; var RTS_consnt_NNA_6 = "nH"; var RTS_consnt_TA = "t"; var RTS_consnt_THA_1 = "th"; var RTS_consnt_THA_2 = "tH"; var RTS_consnt_DA = "d"; var RTS_consnt_DHA_1 = "dh"; var RTS_consnt_DHA_2 = "dH"; var RTS_consnt_NA_1 = "n"; var RTS_consnt_NA_2 = "n&"; var RTS_consnt_PA = "p"; var RTS_consnt_PHA_1 = "ph"; var RTS_consnt_PHA_2 = "pH"; var RTS_consnt_PHA_3 = "f"; var RTS_consnt_PHA_4 = "P"; var RTS_consnt_PHA_5 = "Ph"; var RTS_consnt_PHA_6 = "PH"; var RTS_consnt_BA = "b"; var RTS_consnt_BHA_1 = "bh"; var RTS_consnt_BHA_2 = "bH"; var RTS_consnt_BHA_3 = "B"; var RTS_consnt_BHA_4 = "Bh"; var RTS_consnt_BHA_5 = "BH"; var RTS_consnt_MA_1 = "m"; var RTS_consnt_MA_2 = "m&"; var RTS_consnt_YA = "y"; var RTS_consnt_RA = "r"; var RTS_consnt_LA = "l"; var RTS_consnt_VA_1 = "v"; var RTS_consnt_VA_2 = "w"; var RTS_consnt_VA_3 = "V"; var RTS_consnt_VA_4 = "W"; var RTS_consnt_SHA_1 = "S"; var RTS_consnt_SHA_2 = "s'"; var RTS_consnt_SSA_1 = "sh"; var RTS_consnt_SSA_2 = "sH"; var RTS_consnt_SSA_3 = "Sh"; var RTS_consnt_SSA_4 = "SH"; var RTS_consnt_SA = "s"; var RTS_consnt_HA_1 = "h"; var RTS_consnt_HA_2 = "H"; var RTS_consnt_LLA_1 = "L"; var RTS_consnt_LLA_2 = "l'"; var RTS_consnt_LLA_3 = "Lh"; var RTS_consnt_LLA_4 = "lh"; var RTS_consnt_LLA_5 = "lH"; var RTS_consnt_LLA_6 = "LH"; var RTS_consnt_RRA_1 = "~r"; var RTS_consnt_RRA_2 = "r''"; var RTS_consnt_KSH = "x"; //ksh is automatically handled //extinct consonants var RTS_consnt_TCH = "~c"; var RTS_consnt_TJ = "~j"; //equivalents var RTS_misc_JN = "jn"; var RTS_misc_DDD = "dd'"; var RTS_misc_TTT = "tt'"; //digits var RTS_digit_ZERO = "~0"; var RTS_digit_ONE = "~1"; var RTS_digit_TWO = "~2"; var RTS_digit_THREE = "~3"; var RTS_digit_FOUR = "~4"; var RTS_digit_FIVE = "~5"; var RTS_digit_SIX = "~6"; var RTS_digit_SEVEN = "~7"; var RTS_digit_EIGHT = "~8"; var RTS_digit_NINE = "~9"; var RTS_toUnicode = new Array(); var RTS_vowels = new Array(); var RTS_specials = new Array(); var RTS_anusvaras = new Array(); var RTS_digits = new Array(); RTS_toUnicode[RTS_candrabindu_1] = Unicode_candrabindu; RTS_toUnicode[RTS_candrabindu_2] = Unicode_candrabindu; RTS_toUnicode[RTS_visarga_1] = Unicode_visarga; RTS_toUnicode[RTS_visarga_2] = Unicode_visarga; RTS_toUnicode[RTS_virama_1] = Unicode_misc_VIRAMA; RTS_toUnicode[RTS_virama_2] = Unicode_misc_VIRAMA; RTS_toUnicode[RTS_virama_3] = Unicode_misc_VIRAMA; RTS_toUnicode[RTS_avagraha] = Unicode_misc_AVAGRAHA; RTS_toUnicode[RTS_anusvara_1] = Unicode_anusvara; RTS_toUnicode[RTS_anusvara_2] = Unicode_anusvara; RTS_toUnicode[RTS_anusvara_3] = Unicode_anusvara; RTS_toUnicode[RTS_anusvara_4] = Unicode_anusvara; RTS_toUnicode[RTS_anusvara_5] = Unicode_anusvara; RTS_toUnicode[RTS_anusvara_6] = Unicode_anusvara; RTS_toUnicode[RTS_anusvara_7] = Unicode_anusvara; RTS_toUnicode[RTS_anusvara_8] = Unicode_anusvara; RTS_toUnicode[RTS_anusvara_9] = Unicode_anusvara; RTS_toUnicode[RTS_anusvara_10] = Unicode_anusvara; RTS_toUnicode[RTS_anusvara_11] = Unicode_anusvara; RTS_toUnicode[RTS_anusvara_12] = Unicode_anusvara; RTS_toUnicode[RTS_anusvara_13] = Unicode_anusvara; //RTS_toUnicode[RTS_anusvara_14] = Unicode_anusvara; //RTS_toUnicode[RTS_anusvara_15] = Unicode_anusvara; RTS_toUnicode[RTS_anusvara_16] = Unicode_anusvara; RTS_toUnicode[RTS_anusvara_17] = Unicode_anusvara; //RTS_toUnicode[RTS_anusvara_18] = Unicode_anusvara; //RTS_toUnicode[RTS_anusvara_19] = Unicode_anusvara; //RTS_toUnicode[RTS_anusvara_20] = Unicode_anusvara; //RTS_toUnicode[RTS_anusvara_21] = Unicode_anusvara; //RTS_toUnicode[RTS_anusvara_22] = Unicode_anusvara; //RTS_toUnicode[RTS_anusvara_23] = Unicode_anusvara; //RTS_toUnicode[RTS_anusvara_24] = Unicode_anusvara; RTS_toUnicode[RTS_anusvara_25] = Unicode_anusvara; RTS_toUnicode[RTS_anusvara_26] = Unicode_anusvara; RTS_toUnicode[RTS_anusvara_27] = Unicode_anusvara; RTS_toUnicode[RTS_anusvara_28] = Unicode_anusvara; RTS_toUnicode[RTS_anusvara_29] = Unicode_anusvara; RTS_toUnicode[RTS_anusvara_30] = Unicode_anusvara; RTS_toUnicode[RTS_anusvara_31] = Unicode_anusvara; RTS_toUnicode[RTS_anusvara_32] = Unicode_anusvara; RTS_toUnicode[RTS_anusvara_33] = Unicode_anusvara; RTS_toUnicode[RTS_anusvara_34] = Unicode_anusvara; RTS_toUnicode[RTS_anusvara_35] = Unicode_anusvara; RTS_toUnicode[RTS_anusvara_36] = Unicode_anusvara; RTS_toUnicode[RTS_anusvara_37] = Unicode_anusvara; RTS_toUnicode[RTS_anusvara_38] = Unicode_anusvara; RTS_toUnicode[RTS_anusvara_39] = Unicode_anusvara; RTS_toUnicode[RTS_anusvara_40] = Unicode_anusvara; RTS_toUnicode[RTS_anusvara_41] = Unicode_anusvara; RTS_toUnicode[RTS_anusvara_42] = Unicode_anusvara; RTS_toUnicode[RTS_anusvara_43] = Unicode_anusvara; RTS_toUnicode[RTS_anusvara_44] = Unicode_anusvara; RTS_toUnicode[RTS_anusvara_45] = Unicode_anusvara; RTS_toUnicode[RTS_anusvara_46] = Unicode_anusvara; RTS_toUnicode[RTS_anusvara_47] = Unicode_anusvara; RTS_toUnicode[RTS_anusvara_48] = Unicode_anusvara; RTS_toUnicode[RTS_anusvara_49] = Unicode_anusvara; RTS_toUnicode[RTS_anusvara_50] = Unicode_anusvara; RTS_specials[RTS_candrabindu_1] = 1; RTS_specials[RTS_candrabindu_2] = 1; RTS_specials[RTS_visarga_1] = 1; RTS_specials[RTS_visarga_2] = 1; RTS_specials[RTS_virama_1] = 1; RTS_specials[RTS_virama_2] = 1; RTS_specials[RTS_virama_3] = 1; RTS_specials[RTS_avagraha] = 1; RTS_specials[RTS_anusvara_1] = 1; RTS_anusvaras[RTS_anusvara_2] = 1; RTS_anusvaras[RTS_anusvara_3] = 1; RTS_anusvaras[RTS_anusvara_4] = 1; RTS_anusvaras[RTS_anusvara_5] = 1; RTS_anusvaras[RTS_anusvara_6] = 1; RTS_anusvaras[RTS_anusvara_7] = 1; RTS_anusvaras[RTS_anusvara_8] = 1; RTS_anusvaras[RTS_anusvara_9] = 1; RTS_anusvaras[RTS_anusvara_10] = 1; RTS_anusvaras[RTS_anusvara_11] = 1; RTS_anusvaras[RTS_anusvara_12] = 1; RTS_anusvaras[RTS_anusvara_13] = 1; //RTS_anusvaras[RTS_anusvara_14] = 1; //RTS_anusvaras[RTS_anusvara_15] = 1; RTS_anusvaras[RTS_anusvara_16] = 1; RTS_anusvaras[RTS_anusvara_17] = 1; //RTS_anusvaras[RTS_anusvara_18] = 1; //RTS_anusvaras[RTS_anusvara_19] = 1; //RTS_anusvaras[RTS_anusvara_20] = 1; //RTS_anusvaras[RTS_anusvara_21] = 1; //RTS_anusvaras[RTS_anusvara_22] = 1; //RTS_anusvaras[RTS_anusvara_23] = 1; //RTS_anusvaras[RTS_anusvara_24] = 1; RTS_anusvaras[RTS_anusvara_25] = 1; RTS_anusvaras[RTS_anusvara_26] = 1; RTS_anusvaras[RTS_anusvara_27] = 1; RTS_anusvaras[RTS_anusvara_28] = 1; RTS_anusvaras[RTS_anusvara_29] = 1; RTS_anusvaras[RTS_anusvara_30] = 1; RTS_anusvaras[RTS_anusvara_31] = 1; RTS_anusvaras[RTS_anusvara_32] = 1; RTS_anusvaras[RTS_anusvara_33] = 1; RTS_anusvaras[RTS_anusvara_34] = 1; RTS_anusvaras[RTS_anusvara_35] = 1; RTS_anusvaras[RTS_anusvara_36] = 1; RTS_anusvaras[RTS_anusvara_37] = 1; RTS_anusvaras[RTS_anusvara_38] = 1; RTS_anusvaras[RTS_anusvara_39] = 1; RTS_anusvaras[RTS_anusvara_40] = 1; RTS_anusvaras[RTS_anusvara_41] = 1; RTS_anusvaras[RTS_anusvara_42] = 1; RTS_anusvaras[RTS_anusvara_43] = 1; RTS_anusvaras[RTS_anusvara_44] = 1; RTS_anusvaras[RTS_anusvara_45] = 1; RTS_anusvaras[RTS_anusvara_46] = 1; RTS_anusvaras[RTS_anusvara_47] = 1; RTS_anusvaras[RTS_anusvara_48] = 1; RTS_anusvaras[RTS_anusvara_49] = 1; RTS_anusvaras[RTS_anusvara_50] = 1; RTS_toUnicode[RTS_vowel_A] = Unicode_letter_A; RTS_toUnicode[RTS_vowel_AA_1] = Unicode_letter_AA; RTS_toUnicode[RTS_vowel_AA_2] = Unicode_letter_AA; RTS_toUnicode[RTS_vowel_AA_3] = Unicode_letter_AA; RTS_toUnicode[RTS_vowel_AA_4] = Unicode_letter_AA; RTS_toUnicode[RTS_vowel_I] = Unicode_letter_I; RTS_toUnicode[RTS_vowel_II_1] = Unicode_letter_II; RTS_toUnicode[RTS_vowel_II_2] = Unicode_letter_II; RTS_toUnicode[RTS_vowel_II_3] = Unicode_letter_II; RTS_toUnicode[RTS_vowel_II_4] = Unicode_letter_II; RTS_toUnicode[RTS_vowel_II_5] = Unicode_letter_II; RTS_toUnicode[RTS_vowel_U] = Unicode_letter_U; RTS_toUnicode[RTS_vowel_UU_1] = Unicode_letter_UU; RTS_toUnicode[RTS_vowel_UU_2] = Unicode_letter_UU; RTS_toUnicode[RTS_vowel_UU_3] = Unicode_letter_UU; RTS_toUnicode[RTS_vowel_UU_4] = Unicode_letter_UU; RTS_toUnicode[RTS_vowel_UU_5] = Unicode_letter_UU; RTS_toUnicode[RTS_vowel_R_1] = Unicode_letter_R; RTS_toUnicode[RTS_vowel_R_2] = Unicode_letter_R; RTS_toUnicode[RTS_vowel_RR_1] = Unicode_letter_RR; RTS_toUnicode[RTS_vowel_RR_2] = Unicode_letter_RR; RTS_toUnicode[RTS_vowel_L] = Unicode_letter_L; RTS_toUnicode[RTS_vowel_LL] = Unicode_letter_LL; RTS_toUnicode[RTS_vowel_E] = Unicode_letter_E; RTS_toUnicode[RTS_vowel_EE_1] = Unicode_letter_EE; RTS_toUnicode[RTS_vowel_EE_2] = Unicode_letter_EE; RTS_toUnicode[RTS_vowel_EE_3] = Unicode_letter_EE; RTS_toUnicode[RTS_vowel_EE_4] = Unicode_letter_EE; RTS_toUnicode[RTS_vowel_AI_1] = Unicode_letter_AI; RTS_toUnicode[RTS_vowel_AI_2] = Unicode_letter_AI; RTS_toUnicode[RTS_vowel_O] = Unicode_letter_O; RTS_toUnicode[RTS_vowel_OO_1] = Unicode_letter_OO; RTS_toUnicode[RTS_vowel_OO_2] = Unicode_letter_OO; RTS_toUnicode[RTS_vowel_OO_3] = Unicode_letter_OO; RTS_toUnicode[RTS_vowel_OO_4] = Unicode_letter_OO; RTS_toUnicode[RTS_vowel_AU_1] = Unicode_letter_AU; RTS_toUnicode[RTS_vowel_AU_2] = Unicode_letter_AU; RTS_toUnicode[RTS_vowel_AU_3] = Unicode_letter_AU; RTS_vowels[RTS_vowel_A] = 1; RTS_vowels[RTS_vowel_AA_1] = 1; RTS_vowels[RTS_vowel_AA_2] = 1; RTS_vowels[RTS_vowel_AA_3] = 1; RTS_vowels[RTS_vowel_AA_4] = 1; RTS_vowels[RTS_vowel_I] = 1; RTS_vowels[RTS_vowel_II_1] = 1; RTS_vowels[RTS_vowel_II_2] = 1; RTS_vowels[RTS_vowel_II_3] = 1; RTS_vowels[RTS_vowel_II_4] = 1; RTS_vowels[RTS_vowel_II_5] = 1; RTS_vowels[RTS_vowel_U] = 1; RTS_vowels[RTS_vowel_UU_1] = 1; RTS_vowels[RTS_vowel_UU_2] = 1; RTS_vowels[RTS_vowel_UU_3] = 1; RTS_vowels[RTS_vowel_UU_4] = 1; RTS_vowels[RTS_vowel_UU_5] = 1; RTS_vowels[RTS_vowel_R_1] = 1; RTS_vowels[RTS_vowel_R_2] = 1; RTS_vowels[RTS_vowel_RR_1] = 1; RTS_vowels[RTS_vowel_RR_2] = 1; RTS_vowels[RTS_vowel_L] = 1; RTS_vowels[RTS_vowel_LL] = 1; RTS_vowels[RTS_vowel_E] = 1; RTS_vowels[RTS_vowel_EE_1] = 1; RTS_vowels[RTS_vowel_EE_2] = 1; RTS_vowels[RTS_vowel_EE_3] = 1; RTS_vowels[RTS_vowel_EE_4] = 1; RTS_vowels[RTS_vowel_AI_1] = 1; RTS_vowels[RTS_vowel_AI_2] = 1; RTS_vowels[RTS_vowel_O] = 1; RTS_vowels[RTS_vowel_OO_1] = 1; RTS_vowels[RTS_vowel_OO_2] = 1; RTS_vowels[RTS_vowel_OO_3] = 1; RTS_vowels[RTS_vowel_OO_4] = 1; RTS_vowels[RTS_vowel_AU_1] = 1; RTS_vowels[RTS_vowel_AU_2] = 1; RTS_vowels[RTS_vowel_AU_3] = 1; RTS_toUnicode[RTS_consnt_KA] = Unicode_letter_KA; RTS_toUnicode[RTS_consnt_KHA_1] = Unicode_letter_KHA; RTS_toUnicode[RTS_consnt_KHA_2] = Unicode_letter_KHA; RTS_toUnicode[RTS_consnt_KHA_3] = Unicode_letter_KHA; RTS_toUnicode[RTS_consnt_KHA_4] = Unicode_letter_KHA; RTS_toUnicode[RTS_consnt_KHA_5] = Unicode_letter_KHA; RTS_toUnicode[RTS_consnt_GA] = Unicode_letter_GA; RTS_toUnicode[RTS_consnt_GHA_1] = Unicode_letter_GHA; RTS_toUnicode[RTS_consnt_GHA_2] = Unicode_letter_GHA; RTS_toUnicode[RTS_consnt_GHA_3] = Unicode_letter_GHA; RTS_toUnicode[RTS_consnt_GHA_4] = Unicode_letter_GHA; RTS_toUnicode[RTS_consnt_GHA_5] = Unicode_letter_GHA; RTS_toUnicode[RTS_consnt_NGA] = Unicode_letter_NGA; RTS_toUnicode[RTS_consnt_CA_1] = Unicode_letter_CA; RTS_toUnicode[RTS_consnt_CA_2] = Unicode_letter_CA; RTS_toUnicode[RTS_consnt_CA_3] = Unicode_letter_CA; RTS_toUnicode[RTS_consnt_CHA_1] = Unicode_letter_CHA; RTS_toUnicode[RTS_consnt_CHA_2] = Unicode_letter_CHA; RTS_toUnicode[RTS_consnt_CHA_3] = Unicode_letter_CHA; RTS_toUnicode[RTS_consnt_CHA_4] = Unicode_letter_CHA; RTS_toUnicode[RTS_consnt_JA_1] = Unicode_letter_JA; RTS_toUnicode[RTS_consnt_JA_2] = Unicode_letter_JA; RTS_toUnicode[RTS_consnt_JHA_1] = Unicode_letter_JHA; RTS_toUnicode[RTS_consnt_JHA_2] = Unicode_letter_JHA; RTS_toUnicode[RTS_consnt_JHA_3] = Unicode_letter_JHA; RTS_toUnicode[RTS_consnt_JHA_4] = Unicode_letter_JHA; RTS_toUnicode[RTS_consnt_JHA_5] = Unicode_letter_JHA; RTS_toUnicode[RTS_consnt_NYA] = Unicode_letter_NYA; RTS_toUnicode[RTS_consnt_TTA_1] = Unicode_letter_TTA; RTS_toUnicode[RTS_consnt_TTA_2] = Unicode_letter_TTA; RTS_toUnicode[RTS_consnt_TTHA_1] = Unicode_letter_TTHA; RTS_toUnicode[RTS_consnt_TTHA_2] = Unicode_letter_TTHA; RTS_toUnicode[RTS_consnt_TTHA_3] = Unicode_letter_TTHA; RTS_toUnicode[RTS_consnt_TTHA_4] = Unicode_letter_TTHA; RTS_toUnicode[RTS_consnt_TTHA_5] = Unicode_letter_TTHA; RTS_toUnicode[RTS_consnt_TTHA_6] = Unicode_letter_TTHA; RTS_toUnicode[RTS_consnt_DDA_1] = Unicode_letter_DDA; RTS_toUnicode[RTS_consnt_DDA_2] = Unicode_letter_DDA; RTS_toUnicode[RTS_consnt_DDHA_1] = Unicode_letter_DDHA; RTS_toUnicode[RTS_consnt_DDHA_2] = Unicode_letter_DDHA; RTS_toUnicode[RTS_consnt_DDHA_3] = Unicode_letter_DDHA; RTS_toUnicode[RTS_consnt_DDHA_4] = Unicode_letter_DDHA; RTS_toUnicode[RTS_consnt_NNA_1] = Unicode_letter_NNA; RTS_toUnicode[RTS_consnt_NNA_2] = Unicode_letter_NNA; RTS_toUnicode[RTS_consnt_NNA_3] = Unicode_letter_NNA; RTS_toUnicode[RTS_consnt_NNA_4] = Unicode_letter_NNA; RTS_toUnicode[RTS_consnt_NNA_5] = Unicode_letter_NNA; RTS_toUnicode[RTS_consnt_NNA_6] = Unicode_letter_NNA; RTS_toUnicode[RTS_consnt_TA] = Unicode_letter_TA; RTS_toUnicode[RTS_consnt_THA_1] = Unicode_letter_THA; RTS_toUnicode[RTS_consnt_THA_2] = Unicode_letter_THA; RTS_toUnicode[RTS_consnt_DA] = Unicode_letter_DA; RTS_toUnicode[RTS_consnt_DHA_1] = Unicode_letter_DHA; RTS_toUnicode[RTS_consnt_DHA_2] = Unicode_letter_DHA; RTS_toUnicode[RTS_consnt_NA_1] = Unicode_letter_NA; RTS_toUnicode[RTS_consnt_NA_2] = Unicode_letter_NA; RTS_toUnicode[RTS_consnt_PA] = Unicode_letter_PA; RTS_toUnicode[RTS_consnt_PHA_1] = Unicode_letter_PHA; RTS_toUnicode[RTS_consnt_PHA_2] = Unicode_letter_PHA; RTS_toUnicode[RTS_consnt_PHA_3] = Unicode_letter_PHA; RTS_toUnicode[RTS_consnt_PHA_4] = Unicode_letter_PHA; RTS_toUnicode[RTS_consnt_PHA_5] = Unicode_letter_PHA; RTS_toUnicode[RTS_consnt_PHA_6] = Unicode_letter_PHA; RTS_toUnicode[RTS_consnt_BA] = Unicode_letter_BA; RTS_toUnicode[RTS_consnt_BHA_1] = Unicode_letter_BHA; RTS_toUnicode[RTS_consnt_BHA_2] = Unicode_letter_BHA; RTS_toUnicode[RTS_consnt_BHA_3] = Unicode_letter_BHA; RTS_toUnicode[RTS_consnt_BHA_4] = Unicode_letter_BHA; RTS_toUnicode[RTS_consnt_BHA_5] = Unicode_letter_BHA; RTS_toUnicode[RTS_consnt_MA_1] = Unicode_letter_MA; RTS_toUnicode[RTS_consnt_MA_2] = Unicode_letter_MA; RTS_toUnicode[RTS_consnt_YA] = Unicode_letter_YA; RTS_toUnicode[RTS_consnt_RA] = Unicode_letter_RA; RTS_toUnicode[RTS_consnt_LA] = Unicode_letter_LA; RTS_toUnicode[RTS_consnt_VA_1] = Unicode_letter_VA; RTS_toUnicode[RTS_consnt_VA_2] = Unicode_letter_VA; RTS_toUnicode[RTS_consnt_VA_3] = Unicode_letter_VA; RTS_toUnicode[RTS_consnt_VA_4] = Unicode_letter_VA; RTS_toUnicode[RTS_consnt_SHA_1] = Unicode_letter_SHA; RTS_toUnicode[RTS_consnt_SHA_2] = Unicode_letter_SHA; RTS_toUnicode[RTS_consnt_SSA_1] = Unicode_letter_SSA; RTS_toUnicode[RTS_consnt_SSA_2] = Unicode_letter_SSA; RTS_toUnicode[RTS_consnt_SSA_3] = Unicode_letter_SSA; RTS_toUnicode[RTS_consnt_SSA_4] = Unicode_letter_SSA; RTS_toUnicode[RTS_consnt_SA] = Unicode_letter_SA; RTS_toUnicode[RTS_consnt_HA_1] = Unicode_letter_HA; RTS_toUnicode[RTS_consnt_HA_2] = Unicode_letter_HA; RTS_toUnicode[RTS_consnt_LLA_1] = Unicode_letter_LLA; RTS_toUnicode[RTS_consnt_LLA_2] = Unicode_letter_LLA; RTS_toUnicode[RTS_consnt_LLA_3] = Unicode_letter_LLA; RTS_toUnicode[RTS_consnt_LLA_4] = Unicode_letter_LLA; RTS_toUnicode[RTS_consnt_LLA_5] = Unicode_letter_LLA; RTS_toUnicode[RTS_consnt_LLA_6] = Unicode_letter_LLA; RTS_toUnicode[RTS_consnt_RRA_1] = Unicode_letter_RRA; RTS_toUnicode[RTS_consnt_RRA_2] = Unicode_letter_RRA; RTS_toUnicode[RTS_consnt_KSH] = Unicode_ligature_KSH; RTS_toUnicode[RTS_consnt_TCH] = Unicode_nukt_TCH; RTS_toUnicode[RTS_consnt_TJ] = Unicode_nukt_TJ; RTS_toUnicode[RTS_misc_JN] = Unicode_conjuct_JNY; RTS_toUnicode[RTS_misc_DDD] = Unicode_conjuct_DDDD; RTS_toUnicode[RTS_misc_TTT] = Unicode_conjuct_TTTT; RTS_toUnicode[RTS_digit_ZERO] = Unicode_digit_ZERO; RTS_toUnicode[RTS_digit_ONE] = Unicode_digit_ONE; RTS_toUnicode[RTS_digit_TWO] = Unicode_digit_TWO; RTS_toUnicode[RTS_digit_THREE] = Unicode_digit_THREE; RTS_toUnicode[RTS_digit_FOUR] = Unicode_digit_FOUR; RTS_toUnicode[RTS_digit_FIVE] = Unicode_digit_FIVE; RTS_toUnicode[RTS_digit_SIX] = Unicode_digit_SIX; RTS_toUnicode[RTS_digit_SEVEN] = Unicode_digit_SEVEN; RTS_toUnicode[RTS_digit_EIGHT] = Unicode_digit_EIGHT; RTS_toUnicode[RTS_digit_NINE] = Unicode_digit_NINE; RTS_digits[RTS_digit_ZERO] = 1; RTS_digits[RTS_digit_ONE] = 1; RTS_digits[RTS_digit_TWO] = 1; RTS_digits[RTS_digit_THREE] = 1; RTS_digits[RTS_digit_FOUR] = 1; RTS_digits[RTS_digit_FIVE] = 1; RTS_digits[RTS_digit_SIX] = 1; RTS_digits[RTS_digit_SEVEN] = 1; RTS_digits[RTS_digit_EIGHT] = 1; RTS_digits[RTS_digit_NINE] = 1; function RTS_lookup(str) { return RTS_toUnicode[str]; } function RTS_polluCharacter() { return Unicode_misc_VIRAMA; } function RTS_anusvaraCharacter() { return Unicode_anusvara; } function RTS_isVowel(str) { var b = RTS_vowels[str]; return b != null; } function RTS_isSpecial(str) { var b = RTS_specials[str]; return b == null ? RTS_isAnusvara(str) : true; } function RTS_isAnusvara(str) { var b = RTS_anusvaras[str]; return b != null; } function RTS_isSpecialHandlingForSunna(str) { return str == Unicode_letter_MA; } function RTS_isDigit(str) { return RTS_digits[str] != null; } //Parser var parser_index = 0; var parser_length = 0; var parser_text = ""; function init(input) { parser_text = input; parser_length = input.length; parser_index = 0; } function parser_hasMore() { return parser_index < parser_length; } function parser_next() { var response = ""; var key = null; var curLen = 0; var remaining = parser_length - parser_index; for(; remaining > 0; remaining = parser_length - parser_index) { var maxLookupLen = remaining > RTS_maxLookupLen ? RTS_maxLookupLen : remaining; var value; var bufLen = 0; for(var i = maxLookupLen; i > 0; i--) { key = parser_text.substring(parser_index, parser_index + i); value = RTS_lookup(key); if (value != null) { //found a match if (!RTS_isAnusvara(key)) { bufLen = i; break; } //the match is one of the special sunnas (n or m followed by some consonant). Treat this as sunna //only if this is the beginning of a syllable. Lame example: #arnku# - the nk here should not be sunna //This piece of code is probably not necessary, I doubt there is a word in telugu that would match this else if (curLen == 0) { //only the n/m is consumed - so buffer length is 1 less bufLen = i - 1; break; } } } if (value == null) { break; } var digit = RTS_isDigit(key); if (digit) { //we will parse the digit again the next time if (curLen != 0) break; } parser_index += bufLen; if (RTS_isVowel(key) || RTS_isSpecial(key) || digit) return response + value; response += value; curLen++; } if (curLen == 0) { //can happen in two cases, bad clients (of RTSParser) or if the character we read is not recognized in RTS //don't worry about bad clients - if next() is called even after hasNext() returns false, there is no harm in incrmenting index //Those not recognized in RTS are returned as is. parser_index++; return key; } //act as if there is a virama at the end unless it is m, then treat it as sunna if (curLen == 1 && RTS_isSpecialHandlingForSunna(response)) return RTS_anusvaraCharacter(); return response + RTS_polluCharacter(); } //Transformer function transformSyllable(syllable) { var length = syllable.length; switch (length) { case 0: return ""; case 1: //typically a vowel or a special character return syllable; default: break; } var response = ""; for(var i = 0; i < length - 2; i++) { response += syllable[i]; if (syllable[i + 1] != Unicode_misc_NUKTA && syllable[i + 1] != Unicode_misc_VIRAMA) response += Unicode_misc_VIRAMA; } response += syllable[length - 2]; var c = syllable[length - 1]; //TODO: This should be an vowel if (Unicode_isInherentVowel(c)) return response; var v = Unicode_getDependentVowel(c); if (v != null) { return response + v; } else { if (Unicode_isVirama(c)) return response + c + Unicode_misc_ZWNJ; //TODO: return response; } } function convert(input) { var output = ""; init(input); while (parser_hasMore()) { var syllable = parser_next(); output += transformSyllable(syllable); } return output; } //Mode 0 is English, 1 is RTS var mode = 0; //Transforms input based on mode function transformInput(input) { if (mode != 0 && mode != 1) { alert("Invalid mode " + mode); mode = 0; } var output = ""; var next = 0; do { var hash = input.indexOf('#', next); if (hash == next) { hash = input.indexOf('#', hash + 1); if (hash != -1) { //Mode remains unchanged because we process text between hashes here if (mode == 0) output += convert(input.substring(next + 1, hash)); else output += input.substring(next + 1, hash); } else { //Mode changes because there is no terminating hash if (mode == 0) { mode = 1; output += convert(input.substring(next + 1)); } else { mode = 0; output += input.substring(next + 1); } } next = hash + 1; } //don't change the mode yet because it will be done when it is matched the next time around else if (hash != -1) { if (mode == 0) output += input.substring(next, hash); else output += convert(input.substring(next, hash)); next = hash; } //Mode reamins the same because there are no more hashes else { if (mode == 0) output += input.substring(next); else output += convert(input.substring(next)); } } while (hash != -1 && hash < input.length); return output; }