Bước tới nội dung

Mô đun:tl-translit

Từ điển mở Wiktionary
local export = {}

local consonants = {
	['ᜃ']='k', ['ᜄ']='g', ['ᜅ']='ng',
    ['ᜆ']='t', ['ᜇ']='d', ['ᜈ']='n',
    ['ᜉ']='p', ['ᜊ']='b', ['ᜋ']='m',
    ['ᜌ']='y', ['ᜎ']='l', ['ᜏ']='w',
    ['ᜐ']='s', ['ᜑ']='h', ['ᜍ']='r',
}

local diacritics = {
	['ᜒ']='i', ['ᜓ']='u', ['᜔']='',
}

local tt = {
	-- vowels
	['ᜀ']='a', ['ᜁ']='i', ['ᜂ']='u',
	--punctuation
    ['᜶']='.', -- kulit and pamudpod
    ['᜵']=',' -- single kulit and pamudpod
}

function export.tr(text, lang, sc)
	if sc ~= "Tglg" then
		return nil
	end
	
	local separate_dr = false
	if string.find(text, 'ᜍ') then
		seperate_dr = true
	end

	text = mw.ustring.gsub(text,'([ᜃ᜔ᜄ᜔ᜅ᜔ᜆ᜔ᜈ᜔ᜉ᜔ᜊ᜔ᜋ᜔ᜌ᜔ᜎ᜔ᜏ᜔ᜐ᜔])'..'([ᜀᜁᜂ])','%1-%2')
	text = mw.ustring.gsub(
		text,
		'([ᜃ-ᜑ])'..
		'([ᜒᜓ᜔]?)'..
		'([ᜀ-ᜂ]?)',
		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)

	--convert intervocalic D to R
	if not seperate_dr then
		text = mw.ustring.gsub(text,"([aiu])d([aiu])","%1r%2")
	end
	
	--remove hyphen between vowels
	text = mw.ustring.gsub(text,"([aiu])-([aiu])","%1%2")
	
	text = mw.ustring.gsub(text,
		'([ᜒᜓ᜔])',
		function(c)
			mw.logObject(diacritics[c])
			return '-' .. diacritics[c]
		end)
	
	text = mw.ustring.gsub(text, "◌", "-a")

	return text
end

return export