MediaWiki:Common.js: Difference between revisions
No edit summary |
Tag: Undo |
||
| (6 intermediate revisions by the same user not shown) | |||
| Line 1: | Line 1: | ||
/* MediaWiki:Common.js | /* MediaWiki:Common.js */ | ||
(function () { | (function () { | ||
| Line 5: | Line 5: | ||
var LS_SCRIPT_KEY = 'grantha_reader_script'; | var LS_SCRIPT_KEY = 'grantha_reader_script'; | ||
var currentScript = 'deva'; | var currentScript = 'deva'; | ||
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 74: | ||
}; | }; | ||
var HALANTA = '्'; | var HALANTA = '्'; | ||
var chars = Array.from(text) | var chars = Array.from(text), result = '', i = 0; | ||
while (i < chars.length) { | while (i < chars.length) { | ||
var ch = chars[i] | var ch = chars[i], next = chars[i + 1]; | ||
if (CONSONANTS[ch]) { | if (CONSONANTS[ch]) { | ||
var base = CONSONANTS[ch]; | var base = CONSONANTS[ch]; | ||
| Line 42: | Line 83: | ||
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 94: | ||
var SCRIPT_MAP = { | var SCRIPT_MAP = { | ||
kn: { | kn: { | ||
'अ': 'ಅ', 'आ': 'ಆ', 'इ': 'ಇ', 'ई': 'ಈ', 'उ': 'ಉ', 'ऊ': 'ಊ', 'ऋ': 'ಋ', | 'अ': 'ಅ', 'आ': 'ಆ', 'इ': 'ಇ', 'ई': 'ಈ', 'उ': 'ಉ', 'ऊ': 'ಊ', 'ऋ': 'ಋ', 'ॠ': 'ೠ', | ||
'ए': 'ಏ', 'ऐ': 'ಐ', 'ओ': 'ಓ', 'औ': 'ಔ', 'ऽ': 'ಽ', | 'ए': 'ಏ', 'ऐ': 'ಐ', 'ओ': 'ಓ', 'औ': 'ಔ', 'ऽ': 'ಽ', | ||
'क': 'ಕ', 'ख': 'ಖ', 'ग': 'ಗ', 'घ': 'ಘ', 'ङ': 'ಙ', | 'क': 'ಕ', 'ख': 'ಖ', 'ग': 'ಗ', 'घ': 'ಘ', 'ङ': 'ಙ', | ||
| Line 59: | Line 101: | ||
'त': 'ತ', 'थ': 'ಥ', 'द': 'ದ', 'ध': 'ಧ', 'न': 'ನ', | 'त': 'ತ', 'थ': 'ಥ', 'द': 'ದ', 'ध': 'ಧ', 'न': 'ನ', | ||
'प': 'ಪ', 'फ': 'ಫ', 'ब': 'ಬ', 'भ': 'ಭ', 'म': 'ಮ', | 'प': 'ಪ', 'फ': 'ಫ', 'ब': 'ಬ', 'भ': 'ಭ', 'म': 'ಮ', | ||
'य': 'ಯ', 'र': 'ರ', 'ल': 'ಲ', 'व': 'ವ', | 'य': 'ಯ', 'र': 'ರ', 'ल': 'ಲ', 'ळ': 'ಳ', 'व': 'ವ', | ||
'श': 'ಶ', 'ष': 'ಷ', 'स': 'ಸ', 'ह': 'ಹ', | 'श': 'ಶ', 'ष': 'ಷ', 'स': 'ಸ', 'ह': 'ಹ', | ||
'ा': 'ಾ', 'ि': 'ಿ', 'ी': 'ೀ', 'ु': 'ು', 'ू': 'ೂ', | 'ा': 'ಾ', 'ि': 'ಿ', 'ी': 'ೀ', 'ु': 'ು', 'ू': 'ೂ', | ||
'ृ': 'ೃ', 'े': 'ೇ', 'ै': 'ೈ', 'ो': 'ೋ', 'ौ': 'ೌ', | 'ृ': 'ೃ', 'ॄ': 'ೄ', 'े': 'ೇ', 'ै': 'ೈ', 'ो': 'ೋ', 'ौ': 'ೌ', | ||
'ं': 'ಂ', 'ः': 'ಃ', '्': '್', | 'ं': 'ಂ', 'ः': 'ಃ', '्': '್', 'ँ': 'ಁ', | ||
'०': '೦', '१': '೧', '२': '೨', '३': '೩', '४': '೪', | '०': '೦', '१': '೧', '२': '೨', '३': '೩', '४': '೪', | ||
'५': '೫', '६': '೬', '७': '೭', '८': '೮', '९': '೯' | '५': '೫', '६': '೬', '७': '೭', '८': '೮', '९': '೯' | ||
}, | }, | ||
te: { | |||
'अ': ' | 'अ': 'అ', 'आ': 'ఆ', 'इ': 'ఇ', 'ई': 'ఈ', 'उ': 'ఉ', 'ऊ': 'ఊ', 'ऋ': 'ఋ', 'ॠ': 'ౠ', | ||
'ए': 'ఏ', 'ऐ': 'ఐ', 'ओ': 'ఓ', 'औ': 'ఔ', 'ऽ': 'ఽ', | |||
'ए': ' | 'क': 'క', 'ख': 'ఖ', 'ग': 'గ', 'घ': 'ఘ', 'ङ': 'ఙ', | ||
'क': ' | 'च': 'చ', 'छ': 'ఛ', 'ज': 'జ', 'झ': 'ఝ', 'ञ': 'ఞ', | ||
'च': ' | 'ट': 'ట', 'ठ': 'ఠ', 'ड': 'డ', 'ढ': 'ఢ', 'ण': 'ణ', | ||
' | 'त': 'త', 'थ': 'థ', 'द': 'ద', 'ध': 'ధ', 'न': 'న', | ||
'त': ' | 'प': 'ప', 'फ': 'ఫ', 'ब': 'బ', 'भ': 'భ', 'म': 'మ', | ||
'प': ' | 'य': 'య', 'र': 'ర', 'ल': 'ల', 'ळ': 'ళ', 'व': 'వ', | ||
'य': ' | 'श': 'శ', 'ष': 'ష', 'स': 'స', 'ह': 'హ', | ||
'श': ' | 'ा': 'ా', 'ि': 'ి', 'ी': 'ీ', 'ु': 'ు', 'ू': 'ూ', | ||
'ा': ' | 'ृ': 'ృ', 'ॄ': 'ౄ', 'े': 'ే', 'ै': 'ై', 'ो': 'ో', 'ौ': 'ౌ', | ||
'ृ': ' | 'ं': 'ం', 'ः': 'ః', '्': '్', 'ँ': 'ఁ', | ||
'०': '౦', '१': '౧', '२': '౨', '३': '౩', '४': '౪', | |||
'ं': ' | '५': '౫', '६': '౬', '७': '౭', '८': '౮', '९': '౯' | ||
'०': ' | |||
'५': ' | |||
} | } | ||
}; | }; | ||
| Line 95: | Line 135: | ||
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; | ||
| Line 598: | Line 639: | ||
try { localStorage.setItem('gr_home_view', v); } catch (e) { } | try { localStorage.setItem('gr_home_view', v); } catch (e) { } | ||
} | } | ||
}()); | }()); | ||
| Line 947: | Line 976: | ||
(function () { | (function () { | ||
if (!document.body.classList.contains('skin-minerva')) return; | if (!document.body.classList.contains('skin-minerva')) return; | ||
function injectMenuLinks() { | function injectMenuLinks() { | ||
if (document.getElementById('gr-mob-menu-items')) return; | if (document.getElementById('gr-mob-menu-items')) return; | ||
| Line 1,020: | Line 996: | ||
if (pageLeft) { while (pageLeft.firstChild) pageLeft.removeChild(pageLeft.firstChild); pageLeft.style.removeProperty('display'); pageLeft.appendChild(wrap); } | if (pageLeft) { while (pageLeft.firstChild) pageLeft.removeChild(pageLeft.firstChild); pageLeft.style.removeProperty('display'); pageLeft.appendChild(wrap); } | ||
else navDrawer.appendChild(wrap); | else navDrawer.appendChild(wrap); | ||
} | } | ||
function injectMoolaUllekhaLinks() { | function injectMoolaUllekhaLinks() { | ||
| Line 1,064: | Line 1,019: | ||
else { var ct = document.getElementById('mw-content-text'); if (ct) ct.insertBefore(nav, ct.firstChild); } | else { var ct = document.getElementById('mw-content-text'); if (ct) ct.insertBefore(nav, ct.firstChild); } | ||
} | } | ||
function boot() { injectMenuLinks(); injectMoolaUllekhaLinks();} | |||
function boot() { | |||
if (document.readyState === 'loading') document.addEventListener('DOMContentLoaded', boot); | if (document.readyState === 'loading') document.addEventListener('DOMContentLoaded', boot); | ||
else boot(); | else boot(); | ||
if (window.mw) mw.hook('wikipage.content' | if (window.mw) mw.hook('wikipage.content'); | ||
}()); | }()); | ||
(function () { | (function () { | ||
| Line 1,106: | Line 1,059: | ||
var ap = (window.mw && mw.config && mw.config.get('wgArticlePath')) || '/wiki/$1'; | var ap = (window.mw && mw.config && mw.config.get('wgArticlePath')) || '/wiki/$1'; | ||
return ap.replace('$1', title); | return ap.replace('$1', title); | ||
} | } | ||
}()); | }()); | ||