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/t-transliterator.mkiv | 53 ++++++++++++++++---- .../third/transliterator/trans_tables_glag.lua | 4 +- .../third/transliterator/trans_tables_gr.lua | 32 ++++++------- .../third/transliterator/trans_tables_iso9.lua | 53 ++++++++++---------- .../third/transliterator/trans_tables_scntfc.lua | 42 ++++++++-------- .../third/transliterator/trans_tables_trsc.lua | 56 +++++++++++----------- 6 files changed, 135 insertions(+), 105 deletions(-) (limited to 'tex') diff --git a/tex/context/third/transliterator/t-transliterator.mkiv b/tex/context/third/transliterator/t-transliterator.mkiv index ef8c15e..b4a3c86 100644 --- a/tex/context/third/transliterator/t-transliterator.mkiv +++ b/tex/context/third/transliterator/t-transliterator.mkiv @@ -54,7 +54,7 @@ translit.debug_count = 0 %D We want to keep track of all the tables we'll create so we put them into %D a separate dictionary accompanied by a description string. \startluacode -translit.tables = {} +translit.tables = translit.tables or {} \stopluacode @@ -96,6 +96,35 @@ translit.ru_consonants = {"б", "в", "г", "д", "ж", "з", "к", "л", "м", %D and %D trans_tables_trsc.lua.} +%D Metatables allow for easy concatenation. +\startluacode + +do + -- This returns the Union of both key sets for the “+” operator. + -- The values of the first table will be updated (read: overridden) by those given in the second. + local Dict_add = { + __add = function (dict_a, dict_b) + assert (type(dict_a) == "table" and type(dict_b) == "table") + local dict_result = setmetatable({}, Dict_add) + + for key, val in pairs(dict_a) do + dict_result[key] = val + end + + for key, val in pairs(dict_b) do + dict_result[key] = val + end + return dict_result + end + } + + function translit.make_add_dict(dict) + return setmetatable(dict, Dict_add) + end +end + +\stopluacode + %D The function \type{translit.subst(s, t)} is used to replace any key of %D \type{t} that occurs in \type{s} with the according value of \type{t}. @@ -116,14 +145,20 @@ end \startluacode -function translit.add_table (t, ...) - for _,tab in ipairs(arg) do - for key, value in pairs (tab) do - t[key] = value - end - end - return t -end +--function translit.add_table (...) + --print ("---------------HERE---------------") + --print (type(arg) .. ", Länge: " .. #arg) + --local t = translit.make_add_dict{} + --local cnt = 0 + --for _, tab in pairs(arg) do + --cnt=cnt+1 + --print(cnt .. " - " .. type(tab)) + --t = t + tab + --end + --print(cnt) + --for i,j in pairs(t) do print (i,j) end + --return t +--end \stopluacode %D We might want to have all the table data nicely formatted by \CONTEXT\ diff --git a/tex/context/third/transliterator/trans_tables_glag.lua b/tex/context/third/transliterator/trans_tables_glag.lua index 1b1ff18..e6aea13 100644 --- a/tex/context/third/transliterator/trans_tables_glag.lua +++ b/tex/context/third/transliterator/trans_tables_glag.lua @@ -7,7 +7,7 @@ -- Lowercase Glagolitic Transliteration -- ------------------------------------------- -translit.ocs_gla_low = { +translit.ocs_gla_low = translit.make_add_dict{ ["ⰰ"] = "a", -- GLAGOLITIC SMALL LETTER AZU ["ⰱ"] = "b", -- GLAGOLITIC SMALL LETTER BUKY ["ⰲ"] = "v", -- GLAGOLITIC SMALL LETTER VEDE @@ -63,7 +63,7 @@ translit.tables["Glagolica transliteration for OCS lowercase"] = translit.ocs_gl -- Uppercase (?!) Glagolitic Transliteration -- ------------------------------------------------ -translit.ocs_gla_upp = { +translit.ocs_gla_upp = translit.make_add_dict{ ["Ⰰ"] = "A", -- GLAGOLITIC CAPITAL LETTER AZU ["Ⰱ"] = "B", -- GLAGOLITIC CAPITAL LETTER BUKY ["Ⰲ"] = "V", -- GLAGOLITIC CAPITAL LETTER VEDE diff --git a/tex/context/third/transliterator/trans_tables_gr.lua b/tex/context/third/transliterator/trans_tables_gr.lua index 7ce6855..bed775a 100644 --- a/tex/context/third/transliterator/trans_tables_gr.lua +++ b/tex/context/third/transliterator/trans_tables_gr.lua @@ -16,7 +16,7 @@ -- Lowercase Greek Initial Position Diphthongs -- ------------------------------------------------- -translit.gr_di_in_low = { +translit.gr_di_in_low = translit.make_add_dict{ [" αὑ"] = " hau", [" αὕ"] = " hau", [" αὓ"] = " hau", @@ -45,7 +45,7 @@ translit.tables["Greek transliteration initial breathing diphthongs lowercase"] -- Uppercase Greek Initial Position Diphthongs -- ------------------------------------------------- -translit.gr_di_in_upp = { +translit.gr_di_in_upp = translit.make_add_dict{ [" Αὑ"] = " Hau", [" Αὕ"] = " Hau", [" Αὓ"] = " Hau", @@ -74,7 +74,7 @@ translit.tables["Greek transliteration initial breathing diphthongs uppercase"] -- Lowercase Greek Initial Position -- --------------------------------------- -translit.gr_in_low = { +translit.gr_in_low = translit.make_add_dict{ [" ἁ"] = " ha", [" ἅ"] = " ha", [" ἃ"] = " ha", @@ -121,7 +121,7 @@ translit.tables["Greek transliteration initial breathing lowercase"] = translit. -- Uppercase Greek Initial Position -- --------------------------------------- -translit.gr_in_upp = { +translit.gr_in_upp = translit.make_add_dict{ [" Ἁ"] = " Ha", [" Ἅ"] = " Ha", [" Ἃ"] = " Ha", @@ -168,7 +168,7 @@ translit.tables["Greek transliteration initial breathing uppercase"] = translit. -- Lowercase Greek Diphthongs -- --------------------------------- -translit.gr_di_low = { +translit.gr_di_low = translit.make_add_dict{ ["αυ"] = "au", ["αύ"] = "au", ["αὺ"] = "au", @@ -240,7 +240,7 @@ translit.tables["Greek transliteration diphthongs lowercase"] = translit.gr_in_l -- Uppercase Greek Diphthongs -- --------------------------------- -translit.gr_di_upp = { +translit.gr_di_upp = translit.make_add_dict{ ["Αυ"] = "Au", ["Αύ"] = "Au", ["Αὺ"] = "Au", @@ -309,7 +309,7 @@ translit.tables["Greek transliteration diphthongs uppercase"] = translit.gr_in_u -- The following will be used in an option that ensures transcription of -- nasalization, e.g. Ἁγχίσης -> “Anchises” (instead of “Agchises”) -translit.gr_nrule = { +translit.gr_nrule = translit.make_add_dict{ ["γγ"] = "ng", ["γκ"] = "nk", ["γξ"] = "nx", @@ -323,7 +323,7 @@ translit.tables["Greek transliteration optional nasalization"] = translit.gr_nru -- Lowercase Greek Transliteration -- -------------------------------------- -translit.gr_low = { +translit.gr_low = translit.make_add_dict{ ["α"] = "a", ["ά"] = "a", ["ὰ"] = "a", @@ -475,7 +475,7 @@ translit.tables["Greek transliteration lowercase"] = translit.gr_low -- Uppercase Greek Transliteration -- -------------------------------------- -translit.gr_upp = { +translit.gr_upp = translit.make_add_dict{ ["Α"] = "A", ["Ά"] = "A", ["Ὰ"] = "A", @@ -627,7 +627,7 @@ translit.tables["Greek transliteration uppercase"] = translit.gr_upp -- Varia -- ------------ -translit.gr_other = { +translit.gr_other = translit.make_add_dict{ ["ϝ"] = "w", ["Ϝ"] = "W", ["ϙ"] = "q", @@ -664,13 +664,13 @@ function translit.dogreek (mode, text) if mode == "gr" or mode == "gr_n" then - local gr_di_in, gr_in, gr_di, gr = {}, {}, {}, {} - gr_di_in = translit.add_table( gr_di_in, translit.gr_di_in_low, translit.gr_di_in_upp ) - gr_in = translit.add_table( gr_in, translit.gr_in_low, translit.gr_in_upp ) - gr_di = translit.add_table( gr_di, translit.gr_di_low, translit.gr_di_upp ) - gr = translit.add_table( gr, translit.gr_low, translit.gr_upp , translit.gr_other) + local gr_di_in, gr_in, gr_di, gr = translit.make_add_dict{}, translit.make_add_dict{}, translit.make_add_dict{}, translit.make_add_dict{} + gr_di_in = gr_di_in + translit.gr_di_in_low + translit.gr_di_in_upp + gr_in = gr_in + translit.gr_in_low + translit.gr_in_upp + gr_di = gr_di + translit.gr_di_low + translit.gr_di_upp + gr = gr + translit.gr_low + translit.gr_upp + translit.gr_other - if mode == "gr_n" then gr_di = translit.add_table( gr_di, translit.gr_nrule ) end + if mode == "gr_n" then gr_di = gr_di + translit.gr_nrule end local p_di_in, p_in, p_di, p diff --git a/tex/context/third/transliterator/trans_tables_iso9.lua b/tex/context/third/transliterator/trans_tables_iso9.lua index 4518466..e5fa980 100644 --- a/tex/context/third/transliterator/trans_tables_iso9.lua +++ b/tex/context/third/transliterator/trans_tables_iso9.lua @@ -1,3 +1,4 @@ +translit.tables = translit.tables or {} --===========================================================================-- -- ISO 9.1995(E) standardized transliteration for cyrillic -- @@ -6,7 +7,7 @@ ----------------------------------------- -- Lowercase russian cyrillic alphabet -- ----------------------------------------- -translit.ru_low = { +translit.ru_low = translit.make_add_dict({ ["а"] = "a", -- U+0430 -> U+0061 ["б"] = "b", -- U+0431 -> U+0062 ["в"] = "v", -- U+0432 -> U+0076 @@ -40,7 +41,7 @@ translit.ru_low = { ["э"] = "è", -- U+044d -> U+00e8 ["ю"] = "û", -- U+044e -> U+00fb ["я"] = "â" -- U+044f -> U+00e2 -} +}) translit.tables["russian lowercase ISO~9"] = translit.ru_low @@ -48,7 +49,7 @@ translit.tables["russian lowercase ISO~9"] = translit.ru_low -- Uppercase russian cyrillic alphabet -- ----------------------------------------- -translit.ru_upp = { +translit.ru_upp = translit.make_add_dict({ ["А"] = "A", -- U+0410 -> U+0041 ["Б"] = "B", -- U+0411 -> U+0042 ["В"] = "V", -- U+0412 -> U+0056 @@ -82,7 +83,7 @@ translit.ru_upp = { ["Э"] = "È", -- U+042d -> U+00c8 ["Ю"] = "Û", -- U+042e -> U+00db ["Я"] = "Â" -- U+042f -> U+00c2 -} +}) translit.tables["russian uppercase ISO~9"] = translit.ru_upp @@ -91,7 +92,7 @@ translit.tables["russian uppercase ISO~9"] = translit.ru_upp ---------------------------------------------------------- -- cf. http://www.russportal.ru/index.php?id=oldorth.decret1917 -translit.ru_old_low = { +translit.ru_old_low = translit.make_add_dict{ ["ѣ"] = "ě", -- U+048d -> U+011b -- 2-byte ["і"] = "ì", -- U+0456 -> U+00ec -- 2-byte ["ѳ"] = "f", -- U+0473 -> U+0066 -- 2-byte @@ -100,14 +101,14 @@ translit.ru_old_low = { translit.tables["russian pre-1918 lowercase ISO~9 2 byte"] = translit.ru_old_low -translit.ru_old_upp = { +translit.ru_old_upp = translit.make_add_dict{ ["Ѣ"] = "Ě", -- U+048c -> U+011a -- 2-byte ["І"] = "Ì", -- U+0406 -> U+00cc -- 2-byte ["Ѳ"] = "F", -- U+0424 -> U+0046 -- 2-byte ["Ѵ"] = "Ỳ", -- U+0474 -> U+1ef2 -- 3-byte } -translit.ru_jer_hack = { +translit.ru_jer_hack = translit.make_add_dict{ ["ь"] = "'", ["Ь"] = "'", ["ъ"] = "''", @@ -122,7 +123,7 @@ translit.tables["russian pre-1918 uppercase ISO~9 2 byte"] = translit.ru_old_upp -- Lowercase characters from other cyrillic alphabets -- --------------------------------------------------------- -translit.non_ru_low = { +translit.non_ru_low = translit.make_add_dict{ ["ӑ"] = "ă", -- U+04d1 -> U+0103 ["ӓ"] = "ä", -- U+04d3 -> U+00e4 ["ә"] = "a̋", -- u+04d9 -> U+0061+030b @@ -184,7 +185,7 @@ translit.tables["cyrillic other lowercase ISO~9"] = translit.non_ru_low -- Uppercase characters from other cyrillic alphabets -- --------------------------------------------------------- -translit.non_ru_upp = { +translit.non_ru_upp = translit.make_add_dict{ ["Ӑ"] = "Ă", -- U+04d0 -> U+0102 ["Ӓ"] = "Ä", -- U+04d2 -> U+00c4 ["Ә"] = "A̋", -- U+04d8 -> U+0041+030b @@ -241,11 +242,12 @@ translit.non_ru_upp = { ["Ӏ"] = "‡" -- U+04c0 -> U+2021 } +translit.tables["cyrillic other uppercase ISO~9"] = translit.non_ru_upp + --===========================================================================-- -- End Of Tables -- --===========================================================================-- -translit.tables["cyrillic other uppercase ISO~9"] = translit.non_ru_upp function translit.iso9 (mode, text) local P, R, S, V, Cs = lpeg.P, lpeg.R, lpeg.S, lpeg.V, lpeg.Cs @@ -267,30 +269,25 @@ function translit.iso9 (mode, text) return rules end - local iso9 = {} - iso9 = translit.add_table( iso9, - translit.ru_upp, - translit.ru_low - ) + local iso9 = translit.make_add_dict{} + iso9 = translit.ru_upp + translit.ru_low + if mode == "ru_old" or mode == "all" then - iso9 = translit.add_table(iso9, - translit.ru_old_upp, - translit.ru_old_low - ) + + iso9 = iso9 + translit.ru_old_upp + translit.ru_old_low + if mode == "all" then - iso9 = translit.add_table(iso9, - translit.non_ru_upp, - translit.non_ru_low - ) + iso9 = iso9 + + translit.non_ru_upp + + translit.non_ru_low end end if mode == "ru_old_jer_hack" then - iso9 = translit.add_table(iso9, - translit.ru_old_upp, - translit.ru_old_low, - translit.ru_jer_hack - ) + iso9 = iso9 + + translit.ru_old_upp + + translit.ru_old_low + + translit.ru_jer_hack end local p_iso9 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 diff --git a/tex/context/third/transliterator/trans_tables_trsc.lua b/tex/context/third/transliterator/trans_tables_trsc.lua index b3061c0..cad3567 100644 --- a/tex/context/third/transliterator/trans_tables_trsc.lua +++ b/tex/context/third/transliterator/trans_tables_trsc.lua @@ -11,7 +11,7 @@ -- Lowercase German simple transcription---first pass -- -------------------------------------------------------- -translit.ru_trsc_low_first = { +translit.ru_trsc_low_first = translit.make_add_dict{ [" е"] = " je", ["ъе"] = "je", ["ье"] = "je", @@ -36,7 +36,7 @@ translit.tables["German transcription first pass lowercase"] = translit.ru_trsc_ -- Uppercase German simple transcription---first pass -- -------------------------------------------------------- -translit.ru_trsc_upp_first = { +translit.ru_trsc_upp_first = translit.make_add_dict{ [" Е"] = " Je", ["Ъe"] = "Je", -- Pedantic, isn't it? ["Ье"] = "Je", @@ -56,7 +56,7 @@ translit.tables["German transcription first pass uppercase"] = translit.ru_trsc_ -- Lowercase German simple transcription -- ------------------------------------------- -translit.ru_trsc_low = { +translit.ru_trsc_low = translit.make_add_dict{ ["а"] = "a", ["б"] = "b", ["в"] = "w", @@ -98,7 +98,7 @@ translit.tables["German transcription second pass lowercase"] = translit.ru_trsc -- Uppercase German simple transcription -- ------------------------------------------- -translit.ru_trsc_upp = { +translit.ru_trsc_upp = translit.make_add_dict{ ["А"] = "A", ["Б"] = "B", ["В"] = "W", @@ -147,7 +147,7 @@ function translit.gen_rules_de() -- Russian vowels as well consonants that were defined earlier. -- The й-rule, VйC -> ViC - translit.ru_trsc_irule = {} + translit.ru_trsc_irule = translit.make_add_dict{} for _, vow in ipairs(translit.ru_vowels) do for _, cons in ipairs(translit.ru_consonants) do local new_ante = vow .. "й" .. cons @@ -177,7 +177,7 @@ function translit.gen_rules_de() translit.tables["German transcription j-rule"] = translit.ru_trsc_jrule -- The с-rule, VсV -> VssV - translit.ru_trsc_srule = {} + translit.ru_trsc_srule = translit.make_add_dict{} for i, vow_1 in ipairs(translit.ru_vowels) do for j, vow_2 in ipairs(translit.ru_vowels) do local new_ante = vow_1 .. "с" .. vow_2 @@ -189,7 +189,7 @@ function translit.gen_rules_de() translit.tables["German transcription s-rule"] = translit.ru_trsc_srule -- The sharp-s-rule, Vсх -> Vßх - translit.ru_trsc_sharpsrule = {} + translit.ru_trsc_sharpsrule = translit.make_add_dict{} for i, vow in ipairs(translit.ru_vowels) do local new_ante = vow .. "сх" local new_post = vow .. "ßх" @@ -199,7 +199,7 @@ function translit.gen_rules_de() translit.tables["German transcription sharp-s-rule"] = translit.ru_trsc_sharpsrule -- The е-rule, Vе -> Vje - translit.ru_trsc_jerule = {} + translit.ru_trsc_jerule = translit.make_add_dict{} for i, vow in ipairs(translit.ru_vowels) do local new_ante = vow .. "е" local new_post = vow .. "je" @@ -211,7 +211,7 @@ function translit.gen_rules_de() -- The ё-rule, Vё -> Vjo -- This should be redundant as [жцчшщ]ё -> o, else ё -> jo . -- Somebody should teach those DUDEN-guys parsimony. - translit.ru_trsc_jorule = {} + translit.ru_trsc_jorule = translit.make_add_dict{} for i, vow in ipairs(translit.ru_vowels) do local new_ante = vow .. "ё" local new_post = vow .. "jo" @@ -226,7 +226,7 @@ end -- Lowercase English simple transcription---first pass -- --------------------------------------------------------- -translit.ru_trsc_en_low_first = { +translit.ru_trsc_en_low_first = translit.make_add_dict{ [" е"] = " ye", ["ъе"] = "ye", ["ье"] = "ye", @@ -240,7 +240,7 @@ translit.tables["English transcription lowercase first pass"] = translit.ru_trsc -- Uppercase English simple transcription---first pass -- --------------------------------------------------------- -translit.ru_trsc_en_upp_first = { +translit.ru_trsc_en_upp_first = translit.make_add_dict{ [" Е"] = " Ye", ["Ъe"] = "Ye", ["Ье"] = "Ye", @@ -252,7 +252,7 @@ translit.tables["English transcription uppercase first pass"] = translit.ru_trsc -- Lowercase English simple transcription -- -------------------------------------------- -translit.ru_trsc_en_low = { +translit.ru_trsc_en_low = translit.make_add_dict{ ["а"] = "a", ["б"] = "b", ["в"] = "v", @@ -294,7 +294,7 @@ translit.tables["English transcription lowercase second pass"] = translit.ru_trs -- Uppercase English simple transcription -- -------------------------------------------- -translit.ru_trsc_en_upp = { +translit.ru_trsc_en_upp = translit.make_add_dict{ ["А"] = "A", ["Б"] = "B", ["В"] = "V", @@ -335,7 +335,7 @@ translit.tables["English transcription uppercase second pass"] = translit.ru_trs function translit.gen_rules_en () -- The english е-rule, Vе -> Vye - translit.ru_trsc_en_jerule = {} + translit.ru_trsc_en_jerule = translit.make_add_dict{} for i, vow in ipairs(translit.ru_vowels) do local new_ante = vow .. "е" local new_post = vow .. "ye" @@ -350,7 +350,7 @@ end -- Lowercase Czech transcription -- ----------------------------------- -translit.ru_trsc_cz_low = { +translit.ru_trsc_cz_low = translit.make_add_dict{ ["а"] = "a", ["б"] = "b", ["в"] = "v", @@ -392,7 +392,7 @@ translit.tables["Czech transcription lowercase"] = translit.ru_trsc_cz_low -- Uppercase Czech transcription -- ----------------------------------- -translit.ru_trsc_cz_upp = { +translit.ru_trsc_cz_upp = translit.make_add_dict{ ["А"] = "A", ["Б"] = "B", ["В"] = "V", @@ -434,7 +434,7 @@ translit.tables["Czech transcription uppercase"] = translit.ru_trsc_cz_upp -- Lowercase Additional Czech Transcription -- ---------------------------------------------- -translit.ru_trsc_cz_add_low = { +translit.ru_trsc_cz_add_low = translit.make_add_dict{ ["ѕ"] = "dz", ["з"] = "z", ["ꙁ"] = "z", @@ -460,7 +460,7 @@ translit.tables["Czech transcription for OCS and pre-1918 lowercase"] = translit -- Uppercase Additional Czech Transcription -- ---------------------------------------------- -translit.ru_trsc_cz_add_upp = { +translit.ru_trsc_cz_add_upp = translit.make_add_dict{ ["Ѕ"] = "Dz", ["З"] = "Z", ["Ꙁ"] = "Z", @@ -500,9 +500,9 @@ function translit.transcript (mode, text) local p_de function tab_subst (s, ...) - local p_tmp, tmp = nil, {} + local p_tmp, tmp = nil, translit.make_add_dict{} for _,tab in ipairs(arg) do - translit.add_table( tmp, tab) + tmp = tmp + tab end p_tmp = addrules(tmp, p_tmp) local fp = Cs((Cs(P(p_tmp) / tmp) + utfchar)^0) @@ -541,16 +541,16 @@ function translit.transcript (mode, text) if mode == "ru_transcript_de_exp" then - local de_low_upp = {} - de_low_upp = translit.add_table( de_low_upp, translit.ru_trsc_upp, translit.ru_trsc_low ) + local de_low_upp = translit.make_add_dict{} + de_low_upp = translit.ru_trsc_upp + translit.ru_trsc_low local twochar - local tworepl = {} + local tworepl = translit.make_add_dict{} twochar = addrules( translit.ru_trsc_low_first, twochar ) twochar = addrules( translit.ru_trsc_upp_first, twochar ) - tworepl = translit.add_table( tworepl, translit.ru_trsc_low_first, translit.ru_trsc_upp_first ) + tworepl = translit.ru_trsc_low_first + translit.ru_trsc_upp_first -- The й-rule, VйC -> ViC local function V_i_C (s) @@ -653,16 +653,16 @@ function translit.transcript (mode, text) elseif mode == "ru_transcript_en_exp" then - local en_low_upp = {} - en_low_upp = translit.add_table(en_low_upp, translit.ru_trsc_en_low, translit.ru_trsc_en_upp) + local en_low_upp = translit.make_add_dict{} + en_low_upp = translit.ru_trsc_en_low + translit.ru_trsc_en_upp local twochar - local tworepl = {} + local tworepl = translit.make_add_dict{} twochar = addrules( translit.ru_trsc_en_low_first, twochar) twochar = addrules( translit.ru_trsc_en_upp_first, twochar) - tworepl = translit.add_table(tworepl, translit.ru_trsc_en_low_first, translit.ru_trsc_en_upp_first) + tworepl = translit.ru_trsc_en_low_first + translit.ru_trsc_en_upp_first -- The е-rule, Vе -> Vye local function V_je (s) -- cgit v1.2.3