local export = {}
local gsub = mw.ustring.gsub
local u = mw.ustring.char
local tt1 = {
-- consonants
['ꤊ'] = 'ก', ['ꤋ'] = 'ค', ['ꤌ'] = 'ฆ', ['ꤍ'] = 'ง',
['ꤎ'] = 'ส', ['ꤏ'] = 'ศ', ['ꤐ'] = 'ซ', ['ꤑ'] = 'ญ',
['ꤒ'] = 'ต', ['ꤓ'] = 'ท', ['ꤔ'] = 'น',
['ꤕ'] = 'ป', ['ꤖ'] = 'พ', ['ꤗ'] = 'ม',
['ꤘ'] = 'ด', ['ꤙ'] = 'บ',
['ꤚ'] = 'ร', ['ꤛ'] = 'ย', ['ꤜ'] = 'ล', ['ꤝ'] = 'ว',
['ꤞ'] = 'ษ', ['ꤟ'] = 'ฮ', ['ꤠ'] = 'ฝ', ['ꤡ'] = 'จ',
-- vowels
['ꤢ'] = '@า', ['ꤣ'] = '@เอ̂', ['ꤤ'] = '@ี', ['ꤥ'] = '@โ',
-- tones
['꤫'] = '⁵', ['꤬'] = '¹', ['꤭'] = '³',
-- marks
['꤮'] = '-', ['꤯'] = 'ฯ',
-- numerals
['꤀'] = '0', ['꤁'] = '1', ['꤂'] = '2', ['꤃'] = '3', ['꤄'] = '4',
['꤅'] = '5', ['꤆'] = '6', ['꤇'] = '7', ['꤈'] = '8', ['꤉'] = '9',
-- zero-width space (display it if it hides in a word)
[u(0x200B)] = '‼',
}
local tt2 = {
-- vowels
['ꤢꤦ'] = '@ือ̂', ['ꤢꤧ'] = '@แ', ['ꤢꤨ'] = '@ู',
['ꤢꤩ'] = '@เ', ['ꤢꤪ'] = '@อ̂',
['ꤣꤦ'] = '@เอ̂͜อือ̂', ['ꤣꤧ'] = '@ือ̂͜แอ', ['ꤣꤨ'] = '@เอ̂ว',
['ꤣꤩ'] = '@เอ̂͜เอ', ['ꤣꤪ'] = '@เอ̂͜ออ̂',
}
function export.tr(text, lang, sc, debug_mode)
if type(text) == 'table' then -- called directly from a template
text = text.args[1]
end
text = gsub(text, '([ꤢ-ꤥ][ꤦ-꤭]*)([ꤢ-ꤥ])', '%1อ%2')
text = gsub(text, '([ꤊ-ꤡ])ꤟ([ꤢ-ꤥ][ꤦ-ꤪ]?)', '%1̤%2')
text = gsub(text, 'ꤟꤌꤣ', '@เ̤ือ̂')
text = gsub(text, 'ꤛꤣ', '@เือ̂')
text = gsub(text, '[ꤢꤣ][ꤦ-ꤪ]', tt2)
text = gsub(text, '.', tt1)
text = gsub(text, '^@', 'อ')
text = gsub(text, '([%s%p])@', '%1อ')
text = gsub(text, '@', '')
text = gsub(text, '([ก-ฮ]̤?)([เแโ])', '%2%1')
return text
end
return export