summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPhilipp Gesang <pgesang@ix.urz.uni-heidelberg.de>2010-04-17 17:16:05 +0200
committerPhilipp Gesang <pgesang@ix.urz.uni-heidelberg.de>2010-04-17 17:16:05 +0200
commit16e4920a632a4a7981381955bb4f35ae46565c96 (patch)
tree8cfb2a69eaeafd87acbe13350c0babf0b3f93eac
parentd69d1ec6541c7956fae49c6354ee391044dd415e (diff)
downloadtransliterator-16e4920a632a4a7981381955bb4f35ae46565c96.tar.gz
using metatables for table generation, allowing “addition” of dictionaries
-rw-r--r--tex/context/third/transliterator/t-transliterator.mkiv53
-rw-r--r--tex/context/third/transliterator/trans_tables_glag.lua4
-rw-r--r--tex/context/third/transliterator/trans_tables_gr.lua32
-rw-r--r--tex/context/third/transliterator/trans_tables_iso9.lua53
-rw-r--r--tex/context/third/transliterator/trans_tables_scntfc.lua42
-rw-r--r--tex/context/third/transliterator/trans_tables_trsc.lua56
6 files changed, 135 insertions, 105 deletions
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)