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
|
--===========================================================================--
-- Bulgarian --
--===========================================================================--
local translit = thirddata.translit
local pcache = translit.parser_cache
local lpegmatch = lpeg.match
if not translit.done_bg then
---------------------------------------------------------------------------
-- Uppercase Bulgarian -> „scientific“ transliteration --
---------------------------------------------------------------------------
translit.bg_upp = translit.make_add_dict{
["А"] = "A",
["Б"] = "B",
["В"] = "V",
["Г"] = "G",
["Д"] = "D",
["Е"] = "E",
["Ж"] = "Ž",
["З"] = "Z",
["И"] = "I",
["Й"] = "J",
["К"] = "K",
["Л"] = "L",
["М"] = "M",
["Н"] = "N",
["О"] = "O",
["П"] = "P",
["Р"] = "R",
["С"] = "S",
["Т"] = "T",
["У"] = "U",
["Ф"] = "F",
["Х"] = "Ch",
["Ц"] = "C",
["Ч"] = "Č",
["Ш"] = "Š",
["Щ"] = "Št",
["Ъ"] = "Ă",
["Ь"] = "′",
["Ю"] = "Ju",
["Я"] = "Ja",
}
translit.tables["Bulgarian \\quotation{scientific} transliteration uppercase"] = translit.bg_upp
---------------------------------------------------------------------------
-- Lowercase Bulgarian -> „scientific“ transliteration --
---------------------------------------------------------------------------
translit.bg_low = translit.make_add_dict{
["а"] = "a",
["б"] = "b",
["в"] = "v",
["г"] = "g",
["д"] = "d",
["е"] = "e",
["ж"] = "ž",
["з"] = "z",
["и"] = "i",
["й"] = "j",
["к"] = "k",
["л"] = "l",
["м"] = "m",
["н"] = "n",
["о"] = "o",
["п"] = "p",
["р"] = "r",
["с"] = "s",
["т"] = "t",
["у"] = "u",
["ф"] = "f",
["х"] = "ch",
["ц"] = "c",
["ч"] = "č",
["ш"] = "š",
["щ"] = "št",
["ъ"] = "ă",
["ь"] = "′",
["ю"] = "ju",
["я"] = "ja",
}
translit.tables["Bulgarian \\quotation{scientific} transliteration lowercase"] = translit.bg_low
translit.done_bg = true
end
local P, Cs = lpeg.P, lpeg.Cs
local addrules = translit.addrules
local utfchar = translit.utfchar
local function bulgarian (mode)
local bulgarian_parser
if mode == "de" then
local bg = translit.bg_upp + translit.bg_low
local p_bg = addrules(bg)
bulgarian_parser = Cs((p_bg / bg + utfchar)^0)
else
return nil
end
return bulgarian_parser
end
translit.methods["bg_de"] = function (text)
local p = pcache["bg_de"]
if not p then
p = bulgarian("de")
pcache["bg_de"] = p
end
return p and lpegmatch(p, text) or ""
end
-- vim:ft=lua:sw=4:ts=4
|