မော်ဂျူး: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