A modult a Modul:Linb-translit/doc lapon tudod dokumentálni

local export = {}

local chars = {
	["𐀀"] = "a",
	["𐀁"] = "e",
	["𐀂"] = "i",
	["𐀃"] = "o",
	["𐀄"] = "u",
	
	["𐀅"] = "da",
	["𐀆"] = "de",
	["𐀇"] = "di",
	["𐀈"] = "do",
	["𐀉"] = "du",
	
	["𐀊"] = "ja",
	["𐀋"] = "je",
	-- ji not in Unicode
	["𐀍"] = "jo",
	["𐀎"] = "ju",
	
	["𐀏"] = "ka",
	["𐀐"] = "ke",
	["𐀑"] = "ki",
	["𐀒"] = "ko",
	["𐀓"] = "ku",
	
	["𐀔"] = "ma",
	["𐀕"] = "me",
	["𐀖"] = "mi",
	["𐀗"] = "mo",
	["𐀘"] = "mu",
	
	["𐀙"] = "na",
	["𐀚"] = "ne",
	["𐀛"] = "ni",
	["𐀜"] = "no",
	["𐀝"] = "nu",
	
	["𐀞"] = "pa",
	["𐀟"] = "pe",
	["𐀠"] = "pi",
	["𐀡"] = "po",
	["𐀢"] = "pu",
	
	["𐀣"] = "qa",
	["𐀤"] = "qe",
	["𐀥"] = "qi",
	["𐀦"] = "qo",
	-- qu not in Unicode
	
	["𐀨"] = "ra",
	["𐀩"] = "re",
	["𐀪"] = "ri",
	["𐀫"] = "ro",
	["𐀬"] = "ru",
	
	["𐀭"] = "sa",
	["𐀮"] = "se",
	["𐀯"] = "si",
	["𐀰"] = "so",
	["𐀱"] = "su",
	
	["𐀲"] = "ta",
	["𐀳"] = "te",
	["𐀴"] = "ti",
	["𐀵"] = "to",
	["𐀶"] = "tu",
	
	["𐀷"] = "wa",
	["𐀸"] = "we",
	["𐀹"] = "wi",
	["𐀺"] = "wo",
	-- wu not in Unicode
	
	["𐀼"] = "za",
	["𐀽"] = "ze",
	-- zi not in Unicode
	["𐀿"] = "zo",
	-- zu not in Unicode
	
	["𐁀"] = "ha",
	["𐁁"] = "ai",
	["𐁂"] = "au",
	["𐁃"] = "dwe",
	["𐁄"] = "dwo",
	["𐁅"] = "nwo",
	["𐁆"] = "phu",
	["𐁇"] = "pte",
	["𐁈"] = "rya",
	["𐁉"] = "rai",
	["𐁊"] = "ryo",
	["𐁋"] = "tya",
	["𐁌"] = "twe",
	["𐁍"] = "two",
	
	["𐁐"] = "*18",
	["𐁑"] = "*19",
	["𐁒"] = "*22",
	["𐁓"] = "*34",
	["𐁔"] = "*47",
	["𐁕"] = "*49",
	["𐁖"] = "*56",
	["𐁗"] = "*63",
	["𐁘"] = "*64",
	["𐁙"] = "*79",
	["𐁚"] = "*82",
	["𐁛"] = "*83",
	["𐁜"] = "*86",
	["𐁝"] = "*89",
	
	-- explicit morpheme boundary
	["-"] = "`",
}

function export.tr(text, lang, sc)
	local ret = {}
	local i = 1
	
	for c in string.gmatch(text, "[%z\1-\127\194-\244][\128-\191]*") do -- UTF-8 character pattern
		ret[i] = chars[c] or c
		i = i + 1
	end
	
	text = string.gsub(table.concat(ret, "-"), "%- %-", " ")
	text = string.gsub(text, "%-?`%-?", "-")
	
	return text
end

return export