summaryrefslogtreecommitdiff
path: root/tex/context/third/transliterator/transliterator.lua
diff options
context:
space:
mode:
Diffstat (limited to 'tex/context/third/transliterator/transliterator.lua')
-rw-r--r--tex/context/third/transliterator/transliterator.lua56
1 files changed, 26 insertions, 30 deletions
diff --git a/tex/context/third/transliterator/transliterator.lua b/tex/context/third/transliterator/transliterator.lua
index 36eb804..ddda144 100644
--- a/tex/context/third/transliterator/transliterator.lua
+++ b/tex/context/third/transliterator/transliterator.lua
@@ -10,7 +10,8 @@
--
translit = translit or {}
-translit.tables = translit.tables or {}
+translit.tables = translit.tables or {}
+translit.methods = translit.methods or {}
--------------------------------------------------------------------------------
-- Predefining vowel lists
@@ -225,35 +226,30 @@ end
-- It loads the transliteration tables according to \type{method} and calls the
-- corresponding function.
+-- Those supposedly are the most frequently used so it won’t hurt to preload
+-- them.
+environment.loadluafile ("trans_tables_iso9")
+
function translit.transliterate (method, text)
- if method == "ru" or
- method == "ru_old" or
- method == "ru_old_jer_hack" or
- method == "all"
- then
- environment.loadluafile ("trans_tables_iso9")
- text = translit.iso9 (method, text)
- elseif method == "ru_transcript_de" or
- method == "ru_transcript_de_exp" or -- experimental lpeg
- method == "ru_transcript_en" or
- method == "ru_transcript_en_exp" or
- method == "ru_cz" or
- method == "ocs_cz"
- then
- environment.loadluafile ("trans_tables_trsc")
- text = translit.transcript (method, text)
- elseif method == "iso9_ocs" or
- method == "iso9_ocs_hack" or
- method == "ocs" or
- method == "ocs_gla"
- then
- environment.loadluafile ("trans_tables_scntfc")
- text = translit.scientific (method, text)
- elseif method == "gr" or
- method == "gr_n"
- then
- environment.loadluafile ("trans_tables_gr")
- text = translit.dogreek (method, text)
+ local methods = translit.methods
+ if not methods[method] then -- register tables and method
+ if method == "ru_transcript_de" or
+ method == "ru_transcript_de_exp" or -- experimental lpeg
+ method == "ru_transcript_en" or
+ method == "ru_transcript_en_exp" or
+ method == "ru_cz" or
+ method == "ocs_cz" then
+ environment.loadluafile ("trans_tables_trsc")
+ elseif method == "iso9_ocs" or
+ method == "iso9_ocs_hack" or
+ method == "ocs" or
+ method == "ocs_gla" then
+ environment.loadluafile ("trans_tables_scntfc")
+ elseif method == "gr" or
+ method == "gr_n" then
+ environment.loadluafile ("trans_tables_gr")
+ end
end
- context (text)
+
+ context ( methods[method](text) )
end