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;