မော်ဂျူး:Cakm-translit
Documentation for this module may be created at မော်ဂျူး:Cakm-translit/doc
local export = {}
local u = mw.ustring.char
-- Stage 1: IAST-style
local consonants = {
--consonants
-- 'ⓨ' is a convenience for language specific modifications.
['𑄃']='',
['𑄇']='k', ['𑄈']='kh', ['𑄉']='g', ['𑄊']='gh', ['𑄋']='ṅ',
['𑄌']='c', ['𑄍']='ch', ['𑄎']='j', ['𑄏']='jh', ['𑄐']='ñ',
['𑄑']='ṭ', ['𑄒']='ṭh', ['𑄓']='ḍ', ['𑄔']='ḍh', ['𑄕']='ṇ',
['𑄖']='t', ['𑄗']='th', ['𑄘']='d', ['𑄙']='dh', ['𑄚']='n',
['𑄛']='p', ['𑄜']='ph', ['𑄝']='b', ['𑄞']='bh', ['𑄟']='m',
['𑄠']='y', ['𑄡']='ⓨ', ['𑄢']='r', ['𑄣']='l', ['𑄤']='v', ['𑅇']='v',
-- ['𑀰']='ś', ['𑀱']='ṣ',
['𑄥']='s', ['𑄦']='h', ['𑅄']='ḷ',
}
local diacritics = {
--matras
['𑅅']='ā', ['𑄨']='i', ['𑄩']='ī', ['𑄪']='u', ['𑄫']='ū',
-- ['𑀾']='ṛ', ['𑀿']='ṝ', ['𑁀']='l̥', ['𑁁']='l̥̄',
['𑄬']='e', ['𑄭']='ai', ['𑄮']='o', ['𑄯']='au', ['𑄴']='', ['𑄳']='',
-- Oddities
['𑄧']='ă', [u(0x11130)]='oi', [u(0x11146)]='ei',
}
local tt = {
--vowels
['𑄃']='a', ['𑄄']='i', ['𑄅']='u', ['𑄆']='e',
-- chandrabindu
['𑄀']='m̐', --until a better method is found
-- anusvara
['𑄁']='ṃ', --until a better method is found
-- visarga
['𑄂']='ḥ',
--numerals
['𑄶']='0', ['𑄷']='1', ['𑄸']='2', ['𑄹']='3', ['𑄺']='4', ['𑄻']='5', ['𑄼']='6', ['𑄽']='7', ['𑄾']='8', ['𑄿']='9',
--punctuation
['𑅁']='.', --danda
['𑅂']='.', --double danda
['𑅃']='?', -- question mark
}
function export.tr(text, lang, sc)
if sc ~= "Cakm" then
return nil
end
text = mw.ustring.gsub(
text,
'([𑄃𑄇-𑄦𑅄𑅇])'.. -- consonant
'([𑄧-𑄴'..u(0x11145,0x11146)..']?)'.. -- vowel, joiner or no vowel
'([𑀅-𑀒]?)', -- independent vowel
function(c, d, e)
if d == "" and e ~= "" then
if tt[e] == "i" or tt[e] == "u" then return consonants[c] .. 'a' .. tt[e] .. '̈'
else return consonants[c] .. 'a' .. tt[e] end
elseif e ~= "" then
return consonants[c] .. diacritics[d] .. tt[e]
elseif d == "" then
return consonants[c] .. 'a'
else
return consonants[c] .. diacritics[d]
end
end)
text = mw.ustring.gsub(text, '.', tt)
if (lang == 'ccp') then
text = mw.ustring.gsub(text, '.',
{
['ă']='a', ['a']='ā', ['ā']='A',
-- ['ṃ']='ṅ',
['v']='w',
['y']='ẏ' ,['ⓨ']='y',
})
text = mw.ustring.gsub(text, 'ṃ$', 'ṅ')
elseif (lang == 'pi') then
text = mw.ustring.gsub(text, 'aḥ', 'ā')
end
if (lang == 'sa' or lang == 'pi') and mw.ustring.match(text, 'l̥') then
text = mw.ustring.gsub(text, 'l̥', 'ḷ')
text = mw.ustring.toNFC(text)
end
return text
end
return export