Module:Cans-translit

ពីWiktionary

Documentation for this module may be created at Module:Cans-translit/doc

local export = {}

-- to be discussed: not to create this module, but create individual modules instead?
function export.tr(text, lang, sc)
	local data = {
		{ --short-vowel
			"ᐁᐃᐅᐊᐯᐱᐳᐸᑌᑎᑐᑕᑫᑭᑯᑲᒉᒋᒍᒐᒣᒥᒧᒪᓀᓂᓄᓇᓭᓯᓱᓴᔦᔨᔪᔭᖊᖋᖌᖍᕃᕆᕈᕍᕂᕄᕊᕋᔐᔑᔓᔕᕓᕕᕗᕙᕞᕠᕤᕦᘚᘛᘕᘔᓓᓕᓗᓚᙯᕿᖁᖃᙰᖏᖑᖓ ᙱᙳᙵ",
			"1ptkcmnsyrrr2f3zlq45",
			{"","š","ð","ng","nng"},
			"eioa",
			function(a,b) return a..b end
		},
		{ --w
			"ᐌᐍᐎᐏᐒᐓᐗᐘᐺᐻᐼᐽᑀᑁᑄᑅᑗᑘᑙᑚᑝᑞᑡᑢᑴᑵᑶᑷᑺᑻᑾᑿᒒᒓᒔᒕᒘᒙᒜᒝᒬᒭᒮᒯᒲᒳᒶᒷ"
				.. "ᓉᓊ  ᓋᓌ  ᓶᓷᓸᓹᓼᓽᔀᔁᔯᔰᔱᔲᔵᔶᔹᔺᔗᔘᔙᔚᔝᔞᔡᔢᓜᓝᓞᓟᓢᓣᓦᓧ",
			"1ptkcmnsyrz",
			{""},
			"eeiiooaa",
			function(a,b) return a..'w'..b end
		},
		{ --long-vowel
			"ᐄᐆᐋᐲᐴᐹᑏᑑᑖᑮᑰᑳᒌᒎᒑᒦᒨᒫᓃᓅᓈᓰᓲᓵᔩᔫᔮᕇᕉᕌᔒᔔᔖᕖᕘᕚᕢᕥᕧᓖᓘᓛᐐᐔᐙᖀᖂᖄ",
			"1ptkcmnsyr2f3lwq",
			{"","š","ð"},
			"īōā",
			function(a,b) return a..b end
		},
		{ --individual
			"ᑊᐟᐠᐨᒼᐣᐢᐧᐤᐦᕁᕽᓫᕑᑉᑦᒡᒃᒻᓐᔅᔥᔾᓪᕐᕪ‡ᒄᔉᖅᖕᖖᕝᖦᕀᕼ",
			"ptkcmnsywh11lrptckmns2ylr3345q67vlyh",
			{"hk","š","ð","kw","sk","ng","nng"},
		},
	}
	for i=1,#data do
		if data[i][4] then
			local length = mw.ustring.len(data[i][4])
			for c=1,mw.ustring.len(data[i][1]) do
				local s = mw.ustring.sub(data[i][1],c,c)
				local a = data[i][2]:sub(math.ceil(c/length),math.ceil(c/length)); if tonumber(a) then a = data[i][3][tonumber(a)] end
				local b = mw.ustring.sub(data[i][4],(c-1)%length+1,(c-1)%length+1)
				if s ~= " " then text = mw.ustring.gsub(text,s,data[i][5](a,b)) end
			end
		else
			for c=1,mw.ustring.len(data[i][1]) do
				local s = mw.ustring.sub(data[i][1],c,c)
				local a = data[i][2]:sub(c,c); if tonumber(a) then a = data[i][3][tonumber(a)] end
				text = mw.ustring.gsub(text,s,a)
			end
		end
	end
	return text
end

return export