MediaWiki:Common.js: Difference between revisions

No edit summary
No edit summary
Line 5: Line 5:
     var LS_SCRIPT_KEY = 'grantha_reader_script';
     var LS_SCRIPT_KEY = 'grantha_reader_script';
     var currentScript = 'deva';
     var currentScript = 'deva';
    // Corrected transliteration core. Telugu added. Keys are ALL Devanagari.
    function devanagariToTamil(text) {
        var CONSONANTS = {
            'क': 'க', 'ख': 'க', 'ग': 'க', 'घ': 'க', 'ङ': 'ங',
            'च': 'ச', 'छ': 'ச', 'ज': 'ஜ', 'झ': 'ஜ', 'ञ': 'ஞ',
            'ट': 'ட', 'ठ': 'ட', 'ड': 'ட', 'ढ': 'ட', 'ण': 'ண',
            'त': 'த', 'थ': 'த', 'द': 'த', 'ध': 'த', 'न': 'ந',
            'प': 'ப', 'फ': 'ப', 'ब': 'ப', 'भ': 'ப', 'म': 'ம',
            'य': 'ய', 'र': 'ர', 'ल': 'ல', 'ळ': 'ள', 'व': 'வ',
            'श': 'ஶ', 'ष': 'ஷ', 'स': 'ஸ', 'ह': 'ஹ'
        };
        var DIACRITICS = {
            'ा': 'ா', 'ि': 'ி', 'ी': 'ீ', 'ु': 'ு', 'ू': 'ூ',
            'े': 'ே', 'ै': 'ை', 'ो': 'ோ', 'ौ': 'ௌ'
        };
        var VOWELS = {
            'अ': 'அ', 'आ': 'ஆ', 'इ': 'இ', 'ई': 'ஈ', 'उ': 'உ', 'ऊ': 'ஊ',
            'ए': 'ஏ', 'ऐ': 'ஐ', 'ओ': 'ஓ', 'औ': 'ஔ', 'ऽ': 'ऽ'
        };
        var MISC = {
            'ं': 'ம்', 'ः': 'ஃ', 'ँ': 'ம்', 'ॐ': 'ௐ',
            '०': '0', '१': '1', '२': '2', '३': '3', '४': '4',
            '५': '5', '६': '6', '७': '7', '८': '8', '९': '9'
        };
        var HALANTA = '्';
        var chars = Array.from(text), result = '', i = 0;
        while (i < chars.length) {
            var ch = chars[i], next = chars[i + 1];
            if (CONSONANTS[ch]) {
                var base = CONSONANTS[ch];
                if (next === HALANTA) { result += base + '்'; i += 2; }
                else if (next === 'ृ') { result += base + '்ரி'; i += 2; }
                else if (next === 'ॄ') { result += base + '்ரீ'; i += 2; }
                else if (DIACRITICS[next]) { result += base + DIACRITICS[next]; i += 2; }
                else { result += base; i++; }  // inherent 'a'
            }
            else if (ch === 'ऋ') { result += 'ரி'; i++; }
            else if (ch === 'ॠ') { result += 'ரீ'; i++; }
            else if (VOWELS[ch]) { result += VOWELS[ch]; i++; }
            else if (MISC[ch]) { result += MISC[ch]; i++; }
            else { result += ch; i++; }
        }
        return result;
    }


     function devanagariToIAST(text) {
     function devanagariToIAST(text) {
Line 30: Line 76:
         };
         };
         var HALANTA = '्';
         var HALANTA = '्';
         var chars = Array.from(text);
         var chars = Array.from(text), result = '', i = 0;
        var result = '';
        var i = 0;
         while (i < chars.length) {
         while (i < chars.length) {
             var ch = chars[i];
             var ch = chars[i], next = chars[i + 1];
            var next = chars[i + 1];
             if (CONSONANTS[ch]) {
             if (CONSONANTS[ch]) {
                 var base = CONSONANTS[ch];
                 var base = CONSONANTS[ch];
Line 42: Line 85:
                 else if (next === 'ं' || next === 'ः') { result += base + 'a' + MISC[next]; i += 2; }
                 else if (next === 'ं' || next === 'ः') { result += base + 'a' + MISC[next]; i += 2; }
                 else { result += base + 'a'; i++; }
                 else { result += base + 'a'; i++; }
             } else if (VOWELS[ch]) { result += VOWELS[ch]; i++; }
             }
            else if (VOWELS[ch]) { result += VOWELS[ch]; i++; }
             else if (DIACRITICS[ch]) { result += DIACRITICS[ch]; i++; }
             else if (DIACRITICS[ch]) { result += DIACRITICS[ch]; i++; }
             else if (MISC[ch]) { result += MISC[ch]; i++; }
             else if (MISC[ch]) { result += MISC[ch]; i++; }
Line 52: Line 96:
     var SCRIPT_MAP = {
     var SCRIPT_MAP = {
         kn: {
         kn: {
             'अ': 'ಅ', 'आ': 'ಆ', 'इ': 'ಇ', 'ई': 'ಈ', 'उ': 'ಉ', 'ऊ': 'ಊ', 'ऋ': 'ಋ',
             'अ': 'ಅ', 'आ': 'ಆ', 'इ': 'ಇ', 'ई': 'ಈ', 'उ': 'ಉ', 'ऊ': 'ಊ', 'ऋ': 'ಋ', 'ॠ': 'ೠ',
             'ए': 'ಏ', 'ऐ': 'ಐ', 'ओ': 'ಓ', 'औ': 'ಔ', 'ऽ': 'ಽ',
             'ए': 'ಏ', 'ऐ': 'ಐ', 'ओ': 'ಓ', 'औ': 'ಔ', 'ऽ': 'ಽ',
             'क': 'ಕ', 'ख': 'ಖ', 'ग': 'ಗ', 'घ': 'ಘ', 'ङ': 'ಙ',
             'क': 'ಕ', 'ख': 'ಖ', 'ग': 'ಗ', 'घ': 'ಘ', 'ङ': 'ಙ',
Line 59: Line 103:
             'त': 'ತ', 'थ': 'ಥ', 'द': 'ದ', 'ध': 'ಧ', 'न': 'ನ',
             'त': 'ತ', 'थ': 'ಥ', 'द': 'ದ', 'ध': 'ಧ', 'न': 'ನ',
             'प': 'ಪ', 'फ': 'ಫ', 'ब': 'ಬ', 'भ': 'ಭ', 'म': 'ಮ',
             'प': 'ಪ', 'फ': 'ಫ', 'ब': 'ಬ', 'भ': 'ಭ', 'म': 'ಮ',
             'य': 'ಯ', 'र': 'ರ', 'ल': 'ಲ', 'व': 'ವ',
             'य': 'ಯ', 'र': 'ರ', 'ल': 'ಲ', 'ळ': 'ಳ', 'व': 'ವ',
             'श': 'ಶ', 'ष': 'ಷ', 'स': 'ಸ', 'ह': 'ಹ',
             'श': 'ಶ', 'ष': 'ಷ', 'स': 'ಸ', 'ह': 'ಹ',
             'ा': 'ಾ', 'ि': 'ಿ', 'ी': 'ೀ', 'ु': 'ು', 'ू': 'ೂ',
             'ा': 'ಾ', 'ि': 'ಿ', 'ी': 'ೀ', 'ु': 'ು', 'ू': 'ೂ',
             'ृ': 'ೃ', 'े': 'ೇ', 'ै': 'ೈ', 'ो': 'ೋ', 'ौ': 'ೌ',
             'ृ': 'ೃ', 'ॄ': 'ೄ', 'े': 'ೇ', 'ै': 'ೈ', 'ो': 'ೋ', 'ौ': 'ೌ',
             'ं': 'ಂ', 'ः': 'ಃ', '्': '್',
             'ं': 'ಂ', 'ः': 'ಃ', '्': '್', 'ँ': 'ಁ',
             '०': '೦', '१': '೧', '२': '೨', '३': '೩', '४': '೪',
             '०': '೦', '१': '೧', '२': '೨', '३': '೩', '४': '೪',
             '५': '೫', '६': '೬', '७': '೭', '८': '೮', '९': '೯'
             '५': '೫', '६': '೬', '७': '೭', '८': '೮', '९': '೯'
         },
         },
         ta: {
         te: {
             'अ': 'அ', 'आ': 'ஆ', 'इ': 'இ', 'ई': 'ஈ', 'उ': 'உ', 'ऊ': 'ஊ',
             'अ': 'అ', 'आ': 'ఆ', 'इ': 'ఇ', 'ई': 'ఈ', 'उ': 'ఉ', 'ऊ': 'ఊ', 'ऋ': 'ఋ', 'ॠ': 'ౠ',
            'ऋ': 'ரு', 'ॠ': 'ரூ',
             'ए': 'ఏ', 'ऐ': 'ఐ', 'ओ': 'ఓ', 'औ': 'ఔ', 'ऽ': 'ఽ',
             'ए': 'ஏ', 'ऐ': 'ஐ', 'ओ': 'ஓ', 'औ': 'ஔ',
             'क': 'క', 'ख': 'ఖ', 'ग': 'గ', 'घ': 'ఘ', 'ङ': 'ఙ',
             'क': 'க', 'ख': 'க', 'ग': 'க', 'घ': 'க', 'ङ': 'ங',
             'च': 'చ', 'छ': 'ఛ', 'ज': 'జ', 'झ': 'ఝ', 'ञ': 'ఞ',
             'च': 'ச', 'छ': 'ச', 'ज': 'ஜ', 'झ': 'ஜ', 'ञ': 'ஞ',
             'ट': 'ట', 'ठ': 'ఠ', 'ड': 'డ', 'ढ': 'ఢ', 'ण': 'ణ',
             'ட': 'ட', 'ठ': 'ட', 'ड': 'ட', 'ढ': 'ட', 'ண': 'ண',
             'त': 'త', 'थ': 'థ', 'द': 'ద', 'ध': 'ధ', 'न': 'న',
             'त': 'த', 'थ': 'த', 'द': 'த', 'ध': 'த', 'न': 'ந',
             'प': 'ప', 'फ': 'ఫ', 'ब': 'బ', 'भ': 'భ', 'म': 'మ',
             'प': 'ப', 'फ': 'ப', 'ब': 'ப', 'भ': 'ப', 'म': 'ம',
             'य': 'య', 'र': 'ర', 'ल': 'ల', 'ळ': 'ళ', 'व': 'వ',
             'य': 'ய', 'र': 'ர', 'ल': 'ல', 'ळ': 'ழ', 'व': 'வ',
             'श': 'శ', 'ष': 'ష', 'स': 'స', 'ह': 'హ',
             'श': 'ஶ', 'ष': 'ஷ', 'स': 'ஸ', 'ह': 'ஹ',
             'ा': 'ా', 'ि': 'ి', 'ी': 'ీ', 'ु': 'ు', 'ू': 'ూ',
             'ा': 'ா', 'ि': 'ி', 'ी': 'ீ', 'ु': 'ு', 'ू': 'ூ',
             'ृ': 'ృ', 'ॄ': 'ౄ', 'े': 'ే', 'ै': 'ై', 'ो': 'ో', 'ौ': 'ౌ',
             'ृ': 'ு', 'ॄ': 'ூ',
             'ं': 'ం', 'ः': 'ః', '्': '్', 'ँ': 'ఁ',
            'े': 'ே', 'ை': 'ை', 'ो': 'ோ', 'ौ': 'ௌ',
             '०': '౦', '१': '౧', '२': '౨', '३': '౩', '४': '౪',
             'ं': 'ம்', 'ः': ':', 'ँ': 'ம்', '्': '்', 'ॐ': 'ௐ', 'ऽ': 'ௗ',
             '५': '౫', '६': '౬', '७': '౭', '८': '౮', '९': '౯'
             '०': '0', '१': '1', '२': '2', '३': '3', '४': '4',
             '५': '5', '६': '6', '७': '7', '८': '8', '९': '9'
         }
         }
     };
     };
Line 95: Line 137:
     function transliterateText(text, script) {
     function transliterateText(text, script) {
         if (script === 'en') return devanagariToIAST(text);
         if (script === 'en') return devanagariToIAST(text);
        if (script === 'ta') return devanagariToTamil(text);
         var map = SCRIPT_MAP[script];
         var map = SCRIPT_MAP[script];
         if (!map) return text;
         if (!map) return text;