1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
|
--===========================================================================--
-- 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
|