Module:Cans-translit
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