--===========================================================================-- -- Serbian -- --===========================================================================-- if not translit.done_serbian then -------------------------------------------- -- Lowercase Serbian (Cyrillic -> Latin) -- -------------------------------------------- translit.sr_tolt_lower = translit.make_add_dict{ ["А"] = "A", ["Б"] = "B", ["В"] = "V", ["Г"] = "G", ["Д"] = "D", ["Ђ"] = "Đ", ["Е"] = "E", ["Ж"] = "Ž", ["З"] = "Z", ["И"] = "I", ["Ј"] = "J", ["К"] = "K", ["Л"] = "L", ["Љ"] = "Lj", ["М"] = "M", ["Н"] = "N", ["Њ"] = "Nj", ["О"] = "O", ["П"] = "P", ["Р"] = "R", ["С"] = "S", ["Т"] = "T", ["Ћ"] = "Ć", ["У"] = "U", ["Ф"] = "F", ["Х"] = "H", ["Ц"] = "C", ["Ч"] = "Č", ["Џ"] = "Dž", ["Ш"] = "Š", } translit.tables["Serbian Cyr->Lat Transliteration lowercase"] = translit.sr_tolt_lower -------------------------------------------- -- Uppercase Serbian (Cyrillic -> Latin) -- -------------------------------------------- translit.sr_tolt_upper = translit.make_add_dict{ ["а"] = "a", ["б"] = "b", ["в"] = "v", ["г"] = "g", ["д"] = "d", ["ђ"] = "đ", ["е"] = "e", ["ж"] = "ž", ["з"] = "z", ["и"] = "i", ["ј"] = "j", ["к"] = "k", ["л"] = "l", ["љ"] = "lj", ["м"] = "m", ["н"] = "n", ["њ"] = "nj", ["о"] = "o", ["п"] = "p", ["р"] = "r", ["с"] = "s", ["т"] = "t", ["ћ"] = "ć", ["у"] = "u", ["ф"] = "f", ["х"] = "h", ["ц"] = "c", ["ч"] = "č", ["џ"] = "dž", ["ш"] = "š", } translit.tables["Serbian Cyr->Lat Transliteration uppercase"] = translit.sr_tolt_upper local function __inverse_tab (t) local result = { } for k,v in next,t do result[v] = k end return result end translit.sr_tocy_lower = translit.make_add_dict(__inverse_tab(translit.sr_tolt_lower)) translit.sr_tocy_upper = translit.make_add_dict(__inverse_tab(translit.sr_tolt_upper)) translit.done_serbian = true end --===========================================================================-- -- End Of Tables -- --===========================================================================-- local t = translit local function sr (mode, text) local P, R, Cs = lpeg.P, lpeg.R, lpeg.Cs local utfchar = translit.utfchar local trl_sr = translit.make_add_dict{} trl_sr = t[mode.."_upper"] + t[mode.."_lower"] -- transliteration from latin script requires macro handling … local _p_macro = P[[\]] * R("az", "AZ")^1 local _p_sr = translit.addrules (trl_sr, _p_sr) local p_sr = Cs((_p_macro + (_p_sr / trl_sr) + utfchar)^0) return p_sr:match(text) end translit.methods ["sr_tolt"] = function (text) return sr( "sr_tolt", text ) end translit.methods ["sr_tocy"] = function (text) return sr( "sr_tocy", text ) end