Hopp til innhald

Modul:Cans-translit

Frå Wiktionary - den frie ordboka

Dokumentasjon for modulen kan opprettast på Modul:Cans-translit/dok

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
			"ᐁᐃᐅᐊᐯᐱᐳᐸᑌᑎᑐᑕᑫᑭᑯᑲᒉᒋᒍᒐᒣᒥᒧᒪᓀᓂᓄᓇᓭᓯᓱᓴᔦᔨᔪᔭᖊᖋᖌᖍᕃᕆᕈᕍᕂᕄᕊᕋᔐᔑᔓᔕᕓᕕᕗᕙᕞᕠᕤᕦᘚᘛᘕᘔᓓᓕᓗᓚᙯᕿᖁᖃᙰᖏᖑᖓ ᙱᙳᙵᕴᕵᕷᕹ",
			"1ptkcmnsyrrršfðzlq23h",
			{"","ng","nng"},
			"eioa",
			function(a,b) return a..b end
		},
		{ --w
			"ᐌᐍᐎᐏᐒᐓᐗᐘᐺᐻᐼᐽᑀᑁᑄᑅᑗᑘᑙᑚᑝᑞᑡᑢᑴᑵᑶᑷᑺᑻᑾᑿᒒᒓᒔᒕᒘᒙᒜᒝᒬᒭᒮᒯᒲᒳᒶᒷ"
				.. "ᓉᓊ  ᓋᓌ  ᓶᓷᓸᓹᓼᓽᔀᔁᔯᔰᔱᔲᔵᔶᔹᔺᔗᔘᔙᔚᔝᔞᔡᔢᓜᓝᓞᓟᓢᓣᓦᓧ",
			"1ptkcmnsyrz",
			{""},
			"eeiiooaa",
			function(a,b) return a..'w'..b end
		},
		{ --long-vowel
			"ᐄᐆᐋᐲᐴᐹᑏᑑᑖᑮᑰᑳᒌᒎᒑᒦᒨᒫᓃᓅᓈᓰᓲᓵᔩᔫᔮᕇᕉᕌᔒᔔᔖᕖᕘᕚᕢᕥᕧᓖᓘᓛᐐᐔᐙᖀᖂᖄᕶᕸᕺ",
			"1ptkcmnsyršfðlwqh",
			{""},
			"īōā",
			function(a,b) return a..b end
		},
		{ --w-long
			"ᐐᐑᐔᐕᐖᐙᐚᐛᐾᐿᑂᑃ ᑆᑇᑈᑛᑜᑟᑠ ᑣᑤᑥᑸᑹᑼᑽ ᒀᒁᒂᒖᒗᒚᒛ ᒞᒟᒠᒰᒱᒴᒵ ᒸᒹᒺ     ᓍᓎᓏ"
				.. "ᓠᓡᓤᓥ ᓨᓩ ᓺᓻᓾᓿ ᔂᔃᔄᔛᔜᔟᔠ ᔣᔤ ᔳᔴᔷᔸ ᔻᔼᔽ     ᕎᕏ      ᕛᕜ      ᕨᕩ ",
			"1ptkcmnlsšyrfð",
			{""},
			"īīōōōāāā",
			function(a,b) return a..'w'..b end
		},
		{ --individual
			"ᑊᐟᐠᐨᒼᐣᐢᐧᐤᐦᕁᕽᓫᕑᑉᑦᒡᒃᒻᓐᔅᔥᔾᓪᕐᕪ‡ᒄᔉᖅᖕᖖᕝᖦᕀᕻᕼ",
			"ptkcmnsywh11lrptckmnsšylrðð23q45vlyhh",
			{"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 = mw.ustring.sub(data[i][2],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 = mw.ustring.sub(data[i][2],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