Module:cr-east-translit

From Wiktionary, the free dictionary
Jump to navigation Jump to search
This module needs documentation.
Please document this module by describing its purpose and usage on the documentation page.

local export = {}

function export.tr(text, lang, sc)
	text = require("Module:Cans-translit").tr(text, lang, sc)
	text = mw.ustring.gsub(text,"o","u")
	text = mw.ustring.gsub(text,"ī","ii")
	text = mw.ustring.gsub(text,"ō","uu")
	text = mw.ustring.gsub(text,"ā","aa")
	text = mw.ustring.gsub(text,"š","sh")
	text = mw.ustring.gsub(text,"ð","th")
	text = mw.ustring.gsub(text,"c","ch")
	return text
end

function export.transcribe(text)
	local replace = {"ch", "sh", "th", "kw"}
	local s = "ᐁᐃᐅᐊᐯᐱᐳᐸᑌᑎᑐᑕᑫᑭᑯᑲᒉᒋᒍᒐᒣᒥᒧᒪᓀᓂᓄᓇᓓᓕᓗᓚᓭᓯᓱᓴᔐᔑᔓᔕᔦᔨᔪᔭᕃᕆᕊᕍᕓᕕᕗᕙᕞᕠᕤᕦ"
	local s_tr1 = "0ptk1mnls2yrv3"
	local s_tr2 = "eiua"
	local w = "ᐍᐏᐓᐘᐻ  ᑅᑘ  ᑢᑵ  ᑿᒓ  ᒝᒭ  ᒷᓊ  ᓌᓝ  ᓧᓷ  ᔁᔘ  ᔢᔰ  ᔺᣎ  ᕎᐧᕓ  ᕛᐧᕞ  ᕨ"
	local w_tr1 = "0ptk1mnls2yrv3"
	local w_tr2 = "eiua"
	local l = "ᐄᐆᐋᐲᐴᐹᑏᑑᑖᑮᑰᑳᒌᒎᒑᒦᒨᒫᓃᓅᓈᓖᓘᓛᓰᓲᓵᔒᔔᔖᔩᔫᔮᕇᕋᕎᕖᕘᕚᕢᕥᕧᐐᐔᐙ"
	local l_tr1 = "0ptk1mnls2yr1v3w"
	local l_tr2 = "īūā"
	local f = "ᐤᐦᑉᑦᒃᒄᒡᒻᓐᓪᔅᔥᔾᕐᕝᕪ"
	local f_tr = "uhptk41mnls2yrv3"
	text = mw.ustring.gsub(text,"ê","e")
	text = mw.ustring.gsub(text,"u","u")
	text = mw.ustring.gsub(text,"ii","ī")
	text = mw.ustring.gsub(text,"uu","ū")
	text = mw.ustring.gsub(text,"aa","ā")
	text = mw.ustring.gsub(text,"([aeiuīūā])(w?[aeiuīūā])","%1 0%2")
	text = mw.ustring.gsub(text,"^(w?[aeiuīūā])"," 0%1")
	text = mw.ustring.gsub(text," 0","0")
	mw.log(text)
	text = mw.ustring.gsub(
		text,
		"(["..w_tr1.."])w(["..w_tr2.."])",
		function(a, b)
			a = w_tr1:find(a)
			b = w_tr2:find(b)
			local i = a * 4 + b - 4
			return mw.ustring.sub(w, i, i)
		end
	)
	for i = 1, 3 do
		text = mw.ustring.gsub(text, replace[i], tostring(i))
	end
	mw.log(text)
	text = mw.ustring.gsub(
		text,
		"(["..s_tr1.."])(["..s_tr2.."])",
		function(a, b)
			a = s_tr1:find(a)
			b = s_tr2:find(b)
			local i = a * 4 + b - 4
			return mw.ustring.sub(s, i, i)
		end
	)
	text = mw.ustring.gsub(
		text,
		"(["..l_tr1.."])(["..l_tr2.."])",
		function(a, b)
			a = l_tr1:find(a)
			b = l_tr2:find(b)
			local i = a * 3 + b - 3
			return mw.ustring.sub(l, i, i)
		end
	)
	for i=4, 5 do
		text = mw.ustring.gsub(text, replace[i], tostring(i))
	end
	mw.log(text)
	text = mw.ustring.gsub(
		text,
		"(["..f_tr.."])",
		function(a)
			a = f_tr:find(a)
			return mw.ustring.sub(f, a, a)
		end
	)
	return text
end

return export