From 16e4920a632a4a7981381955bb4f35ae46565c96 Mon Sep 17 00:00:00 2001 From: Philipp Gesang Date: Sat, 17 Apr 2010 17:16:05 +0200 Subject: =?UTF-8?q?using=20metatables=20for=20table=20generation,=20allowi?= =?UTF-8?q?ng=20=E2=80=9Caddition=E2=80=9D=20of=20dictionaries?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../third/transliterator/trans_tables_scntfc.lua | 42 +++++++++++----------- 1 file changed, 20 insertions(+), 22 deletions(-) (limited to 'tex/context/third/transliterator/trans_tables_scntfc.lua') diff --git a/tex/context/third/transliterator/trans_tables_scntfc.lua b/tex/context/third/transliterator/trans_tables_scntfc.lua index 9a4866b..7132fc8 100644 --- a/tex/context/third/transliterator/trans_tables_scntfc.lua +++ b/tex/context/third/transliterator/trans_tables_scntfc.lua @@ -1,3 +1,4 @@ +translit.tables = translit.tables or {} --===========================================================================-- -- Other transliterations -- @@ -17,7 +18,7 @@ -- Lowercase and uppercase letter Uk -- “scientific transliteration” -- ----------------------------------------------------------------------- -translit.ocs_uk = { +translit.ocs_uk = translit.make_add_dict{ ["oу"] = "u", ["оу"] = "u", ["Оу"] = "U", @@ -26,7 +27,7 @@ translit.ocs_uk = { -- Lowercase pre-Peter cyrillic characters -- “scientific transliteration” -- ----------------------------------------------------------------------------- -translit.ocs_low = { +translit.ocs_low = translit.make_add_dict{ ["а"] = "a", ["б"] = "b", ["в"] = "v", @@ -88,7 +89,7 @@ translit.tables["OCS \\quotation{scientific} transliteration lowercase"] = trans -- Uppercase pre-Peter cyrillic characters -- “scientific transliteration” -- ----------------------------------------------------------------------------- -translit.ocs_upp = { +translit.ocs_upp = translit.make_add_dict{ ["А"] = "A", ["Б"] = "B", ["В"] = "V", @@ -154,7 +155,7 @@ translit.tables["OCS \\quotation{scientific} transliteration uppercase"] = trans -- Lowercase additional pre-Peter cyrillic characters -- “scientific transliteration” -- ---------------------------------------------------------------------------------------- -translit.ocs_add_low = { +translit.ocs_add_low = translit.make_add_dict{ ["ѕ"] = "dz", -- Mapped to ẑ in ISO 9 (Macedonian …) ["ѯ"] = "ks", ["ѱ"] = "ps", @@ -176,7 +177,7 @@ translit.tables["OCS \\quotation{scientific} transliteration additional lowercas -- Uppercase additional pre-Peter cyrillic characters -- “scientific transliteration” -- ---------------------------------------------------------------------------------------- -translit.ocs_add_upp = { +translit.ocs_add_upp = translit.make_add_dict{ ["Ѕ"] = "Dz", ["Ѯ"] = "Ks", ["Ѱ"] = "Ps", @@ -208,27 +209,23 @@ function translit.scientific (mode, text) R("\224\240") * R("\128\191") * R("\128\191") + R("\241\244") * R("\128\191") * R("\128\191") * R("\128\191") - local cyr = {} + local cyr = translit.make_add_dict{} local cyruk, p_cyruk, p_cyr local scientific_parser if mode == "iso9_ocs" or mode == "iso9_ocs_hack" then - environment.loadluafile("trans_tables_iso9.lua") - translit.add_table( cyr, - translit.ru_upp, - translit.ru_low, - translit.ru_old_upp, - translit.ru_old_low, - translit.non_ru_upp, - translit.non_ru_low, - translit.ocs_add_low, - translit.ocs_add_upp - ) + environment.loadluafile("trans_tables_iso9") + cyr = translit.ru_upp + + translit.ru_low + + translit.ru_old_upp + + translit.ru_old_low + + translit.non_ru_upp + + translit.non_ru_low + + translit.ocs_add_low + + translit.ocs_add_upp if mode == "iso9_ocs_hack" then - translit.add_table( cyr, - translit.ru_jer_hack - ) + cyr = cyr + translit.ru_jer_hack end p_cyr = Cs(utfchar) / cyr @@ -241,7 +238,8 @@ function translit.scientific (mode, text) else cyruk = cyruk + P(i) end end - translit.add_table( cyr, translit.ocs_low, translit.ocs_upp ) + + cyr = translit.ocs_low + translit.ocs_upp p_cyruk = Cs(P(cyruk)) / translit.ocs_uk p_cyr = Cs(utfchar) / cyr @@ -250,7 +248,7 @@ function translit.scientific (mode, text) elseif mode == ("ocs_gla") then environment.loadluafile( "trans_tables_glag") - translit.add_table( cyr, translit.ocs_gla_low, translit.ocs_gla_upp ) + cyr = translit.ocs_gla_low + translit.ocs_gla_upp p_cyr = Cs(utfchar) / cyr scientific_parser = Cs((p_cyr + utfchar)^0) end -- cgit v1.2.3