From 2adaa27b0259a19d6fae19e27ec6f81a3db14738 Mon Sep 17 00:00:00 2001 From: Philipp Gesang Date: Tue, 10 May 2011 14:20:45 +0200 Subject: Serbian exception handling --- tex/context/third/transliterator/trans_tables_sr.lua | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/tex/context/third/transliterator/trans_tables_sr.lua b/tex/context/third/transliterator/trans_tables_sr.lua index 84319b0..0a601e3 100644 --- a/tex/context/third/transliterator/trans_tables_sr.lua +++ b/tex/context/third/transliterator/trans_tables_sr.lua @@ -91,6 +91,16 @@ if not translit.done_serbian then 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.serbian_exceptions = { + ["nadživeti"] = "надживети", + ["Nadživeti"] = "Надживети", + } + + local P = lpeg.P + for lat, _ in next, translit.serbian_exceptions do + translit.p_serbian_exceptions = translit.p_serbian_exceptions and translit.p_serbian_exceptions + P(lat) or P(lat) + end + translit.done_serbian = true end @@ -98,10 +108,12 @@ 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 _p_sre = translit.p_serbian_exceptions / translit.serbian_exceptions local trl_sr = translit.make_add_dict{} trl_sr = t[mode.."_upper"] + t[mode.."_lower"] @@ -109,7 +121,7 @@ local function sr (mode, text) -- 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) + local p_sr = Cs((_p_macro + _p_sre + (_p_sr / trl_sr) + utfchar)^0) return p_sr:match(text) end -- cgit v1.2.3