diff options
Diffstat (limited to 'tex/context')
| -rw-r--r-- | tex/context/interface/third/t-transliterator.xml | 63 | ||||
| -rw-r--r-- | tex/context/third/transliterator/t-transliterator.mkii | 3 | ||||
| -rw-r--r-- | tex/context/third/transliterator/t-transliterator.mkiv | 188 | ||||
| -rw-r--r-- | tex/context/third/transliterator/t-transliterator.tex | 1 | ||||
| -rw-r--r-- | tex/context/third/transliterator/trans_tables_bg.lua | 114 | ||||
| -rw-r--r-- | tex/context/third/transliterator/trans_tables_glag.lua | 128 | ||||
| -rw-r--r-- | tex/context/third/transliterator/trans_tables_gr.lua | 709 | ||||
| -rw-r--r-- | tex/context/third/transliterator/trans_tables_iso9.lua | 310 | ||||
| -rw-r--r-- | tex/context/third/transliterator/trans_tables_scntfc.lua | 287 | ||||
| -rw-r--r-- | tex/context/third/transliterator/trans_tables_sr.lua | 241 | ||||
| -rw-r--r-- | tex/context/third/transliterator/trans_tables_trsc.lua | 867 | ||||
| -rw-r--r-- | tex/context/third/transliterator/transliterator.lua | 283 | 
12 files changed, 0 insertions, 3194 deletions
diff --git a/tex/context/interface/third/t-transliterator.xml b/tex/context/interface/third/t-transliterator.xml deleted file mode 100644 index d45f9cf..0000000 --- a/tex/context/interface/third/t-transliterator.xml +++ /dev/null @@ -1,63 +0,0 @@ -<?xml version="1.0" standalone="yes"?> - -<cd:interface xmlns:cd="http://www.pragma-ade.com/commands"  -  name="context" language="en"  -  version="2010.3.10"> - -  <cd:command name="setuptransliterator" file="t-transliterator.mkiv"> -    <cd:sequence> -      <cd:string value="setuptransliterator"/> -    </cd:sequence> -    <cd:arguments> -      <cd:assignments list="yes" optional="no"> -        <cd:parameter name="mode"> -          <cd:constant type="ru_old" default="yes"/> -          <cd:constant type="ru"/> -          <cd:constant type="ru_transcript_de"/> -          <cd:constant type="ru_transcript_de_exp"/> -          <cd:constant type="ru_transcript_en"/> -          <cd:constant type="all"/> -          <cd:constant type="sr_tolt"/> -          <cd:constant type="sr_tocy"/> -          <cd:constant type="bg_de"/> -          <cd:constant type="iso9_ocs"/> -          <cd:constant type="ocs"/> -          <cd:constant type="ocs_gla"/> -          <cd:constant type="ru_cz"/> -          <cd:constant type="ocs_cz"/> -          <cd:constant type="gr"/> -          <cd:constant type="gr_n"/> -        </cd:parameter> -        <cd:parameter name="hyphenate"> -          <cd:constant type="cs" default="yes"/> -          <cd:constant type="sk"/> -          <cd:constant type="hr"/> -        </cd:parameter> -        <cd:parameter name="deficient_font"> -          <cd:constant type="yes"/> -          <cd:constant type="no" default="yes"/> -        </cd:parameter> -        <cd:parameter name="hinting"> -          <cd:constant type="yes" default="yes"/> -          <cd:constant type="no"/> -        </cd:parameter> -        <cd:parameter name="sr_exceptions"> -          <cd:constant type="yes" default="yes"/> -          <cd:constant type="no"/> -        </cd:parameter> -      </cd:assignments> -    </cd:arguments> -  </cd:command> - -  <cd:command name="transliterate" file="t-transliterator.mkiv"> -    <cd:sequence> -      <cd:string value="transliterate"/> -    </cd:sequence> -    <cd:arguments> -      <cd:assignments list="yes" optional="yes"> -        <cd:inherit name="setuptransliterator"/> -      </cd:assignments> -    </cd:arguments> -  </cd:command> - -</cd:interface> diff --git a/tex/context/third/transliterator/t-transliterator.mkii b/tex/context/third/transliterator/t-transliterator.mkii deleted file mode 100644 index 2fcfb0b..0000000 --- a/tex/context/third/transliterator/t-transliterator.mkii +++ /dev/null @@ -1,3 +0,0 @@ -% Suggested by Taco -\message{Module is unsupported under mkii} -\endinput diff --git a/tex/context/third/transliterator/t-transliterator.mkiv b/tex/context/third/transliterator/t-transliterator.mkiv deleted file mode 100644 index ae08278..0000000 --- a/tex/context/third/transliterator/t-transliterator.mkiv +++ /dev/null @@ -1,188 +0,0 @@ -%D \module -%D   [      file=t-transliterator, -%D        version=2021-11-21 18:19:24+0100, -%D          title=\CONTEXT\ User Module, -%D       subtitle=The Transliterator, -%D         author=Philipp Gesang, -%D           date=\currentdate, -%D      copyright=Philipp Gesang, -%D        license=2-clause BSD, -%D          email={pgesang at ix dot urz dot uni-heidelberg dot de}] -%D This module is licensed under the conditions of the BSD license with  -%D two clauses, there is a copy it in a file named "COPYING" in the -%D transliterator source tree. - -\writestatus{loading}{Transliteration from non-Latin scripts} - -\unprotect - -\definenamespace [TRL] [ -  name=transliterate, -  type=module, -  setup=list, -  parent=TRL, -  style=no, -  version=2021, -  comment=Transliteration from non-Latin scripts., -] - -\ctxlua{environment.loadluafile ("transliterator")} - -%D Use the Transliterator by adding \type{\usemodule[transliterator]} somewhere -%D before \type{\starttext}.  Adjust the Transliterator through the -%D \type{\setuptransliterate} command.  As a first argument it accepts a set of -%D key-value options; at present you may configure \type{mode} and -%D \type{hyphenate}. - -\def\set_serbian_exceptions{% -  \doifelse{\transliterateparameter{sr_exceptions}}\v!yes -           {\ctxlua{thirddata.translit.sr_except = true}} -           {\ctxlua{thirddata.translit.sr_except = false}}% -} - -\def\set_hinting{% -  \doifelse{\transliterateparameter{hinting}}\v!yes -           {\ctxlua{thirddata.translit.hinting = true}} -           {\ctxlua{thirddata.translit.hinting = false}}% -} - -\appendtoks \set_serbian_exceptions \to \everysetuptransliterate -\appendtoks \set_hinting            \to \everysetuptransliterate - -%D At first we'll set some defaults: - -\setuptransliterate[% -  debug=\v!false, -  hinting=\v!yes, -  hyphenate=cz, -  mode=ru_old, -  sr_exceptions=\v!yes, -  deficient_font=\v!no, -] - -%D Possible values for \type{mode} are by the time of this writing: -%D \type{ru}, \type{ru_transcript_de}, \type{ru_transcript_en}, \type{ru_old}, -%D \type{all}, \type{iso9_ocs}, \type{ocs}, \type{ocs_gla}, \type{ru_cz}, -%D \type{ocs_cz}, \type{gr} and \type{gr_n}. -%D As not all fonts, even the expensive ones, support some of the most frequent -%D unicode signs used in ISO~9, there are fallbacks for the transliterations of -%D the weak and hard sign. -%D They work with the modes \type{iso9_ocs}, \type{all} and -%D \type{ru_old} only and can be triggered by setting the -%D variable \type{deficient_font} to the value {\em yes}. -%D This will transliterate {\em ь} and {\em ъ} (both upper and -%D lower case) to the more common, but non-ISO characters {\em ’} and {\em ”} -%D respectively. -%D Possible values for \type{hyphenate} are all valid \CONTEXT\ language code, for an -%D overview see \type{http://wiki.contextgarden.net/Language_Codes}. -%D In praxi you may want to choose either Czech (the default) or Slovak -%D (\type{sk}) for most transliterations from cyrillic scripts.  I've not yet -%D made up my mind concerning Greek transliteration, any suggestions are -%D welcome. - -%D The following will help debugging and reviewing tables.  Make sure your -%D typescript can handle the characters, in general it's no use with Latin -%D Modern which unfortunately provides only a restricted set of the unicode -%D range. -%D -%D The user-level command to output a single substitution table is -%D \type{\showOneTranslitTab{#1}}. - -\define[1]\showOneTranslitTab{% -  \startluacode -    environment.loadluafile ("trans_tables_iso9") -    environment.loadluafile ("trans_tables_trsc") -    environment.loadluafile ("trans_tables_scntfc") -    environment.loadluafile ("trans_tables_trsc") -    environment.loadluafile ("trans_tables_glag") -    environment.loadluafile ("trans_tables_gr") -    thirddata.translit.gen_rules_en() -    thirddata.translit.gen_rules_de() -    thirddata.translit.show_tab(translit["\luaescapestring{#1}"]) -  \stopluacode -} - -%D The user-level command to output all defined tables is -%D \type{\showTranslitTabs}. - -\define\showTranslitTabs{% -  \ctxlua{thirddata.translit.show_all_tabs()}% -} - -\def\translitDebug#1{% -  \doif{\transliterateparameter{debug}}{yes}{% -    {\ss\inmargin{\ctxlua{thirddata.translit.debug_next()}} #1}% -  }% -} - - -%D The user-level command \type{\transliterate[#1]{#2}} does the job of -%D switching to a given language (for hyphenation) and adjusting the -%D substitution method locally.  It takes an optional list \type{[#1]} of -%D key-value arguments to allow ad-hoc specification of either two that deviate -%D from the defaults set initially by means of \type{\setuptransliterate}. -%D  -%D Internally, \type{\dotransliterate} is called according to the \CONTEXT\  -%D coding style and in case the user provides \type{hyphenate=} or -%D \type{mode=} those will be used instead of the globals.  Note that this -%D leaves the latter unchanged.  Thus, in order to permanently switch to -%D another transliteration style the user would have to set it by calling -%D \type{\setuptransliterate} again. -%D -% All credits for rewriting the TeX code go to Wolfgang as well. -% http://www.ntg.nl/pipermail/ntg-context/2010/047816.html - -\def\dotransliterate[#1]#2{% -  \bgroup\iffirstargument -    \setuptransliterate[#1]% -  \fi -    \language[\transliterateparameter{hyphenate}]% -    \ctxlua{ -      thirddata.translit.deficient_font = "\transliterateparameter{deficient_font}" -      thirddata.translit.transliterate("\transliterateparameter{mode}","\luaescapestring{#2}") -    }% -  \egroup% -} - -\unexpanded\def\transliterate{\dosingleempty\dotransliterate} - -\def\expandabletransliterate#1{% -  %\bgroup -    %\setuptransliterate[#1]% -    %\language[\transliterateparameter{hyphenate}]% -    \ctxlua{ -      thirddata.translit.deficient_font = "\transliterateparameter{deficient_font}" -      thirddata.translit.transliterate("\transliterateparameter{mode}","#1") -    }% -  %\egroup% -} - -\unexpanded\def\starttransliterate{% -  \bgroup% -  \dosingleempty\dostarttransliterate% -} - -\let\stoptransliterate\relax - -\def\dostarttransliterate[#1]#2\stoptransliterate{% -  \iffirstargument -    \setuptransliterate[#1]% -  \fi -  \language[\transliterateparameter{hyphenate}]% -  \ctxlua{thirddata.translit.transliterate("\transliterateparameter{mode}","\luaescapestring{#2}")}% -  \egroup% -} - -\newconditional\transliterate_useexpanded \setfalse\transliterate_useexpanded - -\def\transliterate_conditional[#1]#2{% -  \ifconditional\transliterate_useexpanded -    \transliterate[#1]{#2}% -  \else -    \expandabletransliterate{#2}% -  \fi% -} - -\protect \endinput - -%   vim:ft=context diff --git a/tex/context/third/transliterator/t-transliterator.tex b/tex/context/third/transliterator/t-transliterator.tex deleted file mode 100644 index 9d4e9f0..0000000 --- a/tex/context/third/transliterator/t-transliterator.tex +++ /dev/null @@ -1 +0,0 @@ -\loadmarkfile{t-transliterator} diff --git a/tex/context/third/transliterator/trans_tables_bg.lua b/tex/context/third/transliterator/trans_tables_bg.lua deleted file mode 100644 index b319666..0000000 --- a/tex/context/third/transliterator/trans_tables_bg.lua +++ /dev/null @@ -1,114 +0,0 @@ ---===========================================================================-- ---                            Bulgarian                                      -- ---===========================================================================-- - -local translit  = thirddata.translit -local pcache    = translit.parser_cache -local lpegmatch = lpeg.match - -if not translit.done_bg then -    --------------------------------------------------------------------------- -    -- Uppercase Bulgarian -> „scientific“ transliteration                   -- -    --------------------------------------------------------------------------- - -    translit.bg_upp = translit.make_add_dict{ -        ["А"] = "A", -        ["Б"] = "B", -        ["В"] = "V", -        ["Г"] = "G", -        ["Д"] = "D", -        ["Е"] = "E", -        ["Ж"] = "Ž", -        ["З"] = "Z", -        ["И"] = "I", -        ["Й"] = "J", -        ["К"] = "K", -        ["Л"] = "L", -        ["М"] = "M", -        ["Н"] = "N", -        ["О"] = "O", -        ["П"] = "P", -        ["Р"] = "R", -        ["С"] = "S", -        ["Т"] = "T", -        ["У"] = "U", -        ["Ф"] = "F", -        ["Х"] = "Ch", -        ["Ц"] = "C", -        ["Ч"] = "Č", -        ["Ш"] = "Š", -        ["Щ"] = "Št", -        ["Ъ"] = "Ă", -        ["Ь"] = "′", -        ["Ю"] = "Ju", -        ["Я"] = "Ja", -    } -    translit.tables["Bulgarian \\quotation{scientific} transliteration uppercase"] = translit.bg_upp - -    --------------------------------------------------------------------------- -    -- Lowercase Bulgarian -> „scientific“ transliteration                   -- -    --------------------------------------------------------------------------- -    translit.bg_low = translit.make_add_dict{ -        ["а"] = "a", -        ["б"] = "b", -        ["в"] = "v", -        ["г"] = "g", -        ["д"] = "d", -        ["е"] = "e", -        ["ж"] = "ž", -        ["з"] = "z", -        ["и"] = "i", -        ["й"] = "j", -        ["к"] = "k", -        ["л"] = "l", -        ["м"] = "m", -        ["н"] = "n", -        ["о"] = "o", -        ["п"] = "p", -        ["р"] = "r", -        ["с"] = "s", -        ["т"] = "t", -        ["у"] = "u", -        ["ф"] = "f", -        ["х"] = "ch", -        ["ц"] = "c", -        ["ч"] = "č", -        ["ш"] = "š", -        ["щ"] = "št", -        ["ъ"] = "ă", -        ["ь"] = "′", -        ["ю"] = "ju", -        ["я"] = "ja", -    } - -    translit.tables["Bulgarian \\quotation{scientific} transliteration lowercase"] = translit.bg_low - -    translit.done_bg = true -end - -local P, Cs    = lpeg.P, lpeg.Cs -local addrules = translit.addrules -local utfchar  = translit.utfchar - -local function bulgarian (mode) -    local bulgarian_parser -    if mode == "de" then -        local bg = translit.bg_upp + translit.bg_low -        local p_bg = addrules(bg) -        bulgarian_parser = Cs((p_bg / bg + utfchar)^0) -    else -        return nil -    end -    return bulgarian_parser -end - -translit.methods["bg_de"] = function (text) -    local p = pcache["bg_de"] -    if not p then -        p = bulgarian("de") -        pcache["bg_de"] = p -    end -    return p and lpegmatch(p, text) or "" -end - --- vim:ft=lua:sw=4:ts=4 diff --git a/tex/context/third/transliterator/trans_tables_glag.lua b/tex/context/third/transliterator/trans_tables_glag.lua deleted file mode 100644 index 41974fd..0000000 --- a/tex/context/third/transliterator/trans_tables_glag.lua +++ /dev/null @@ -1,128 +0,0 @@ - ---===========================================================================-- ---                              Glagolica                                    -- ---===========================================================================-- - -local translit = thirddata.translit - -------------------------------------------- --- Lowercase Glagolitic Transliteration  -- -------------------------------------------- - -if not translit.done_glagolica then -    translit.ocs_gla_low = translit.make_add_dict{ -    ["ⰰ"] = "a",  -- GLAGOLITIC SMALL LETTER AZU -    ["ⰱ"] = "b",  -- GLAGOLITIC SMALL LETTER BUKY -    ["ⰲ"] = "v",  -- GLAGOLITIC SMALL LETTER VEDE -    ["ⰳ"] = "g",  -- GLAGOLITIC SMALL LETTER GLAGOLI -    ["ⰴ"] = "d",  -- GLAGOLITIC SMALL LETTER DOBRO -    ["ⰵ"] = "e",  -- GLAGOLITIC SMALL LETTER YESTU -    ["ⰶ"] = "ž",  -- GLAGOLITIC SMALL LETTER ZHIVETE -    ["ⰷ"] = "ʒ",  -- GLAGOLITIC SMALL LETTER DZELO -    ["ⰸ"] = "z",  -- GLAGOLITIC SMALL LETTER ZEMLJA -    ["ⰹ"] = "i",  -- GLAGOLITIC SMALL LETTER IZHE -    ["ⰺ"] = "i",  -- GLAGOLITIC SMALL LETTER INITIAL IZHE -    ["ⰻ"] = "i",  -- GLAGOLITIC SMALL LETTER I -    ["ⰼ"] = "g’", -- GLAGOLITIC SMALL LETTER DJERVI -    ["ⰽ"] = "k",  -- GLAGOLITIC SMALL LETTER KAKO -    ["ⰾ"] = "l",  -- GLAGOLITIC SMALL LETTER LJUDIJE -    ["ⰿ"] = "m",  -- GLAGOLITIC SMALL LETTER MYSLITE -    ["ⱀ"] = "n",  -- GLAGOLITIC SMALL LETTER NASHI -    ["ⱁ"] = "o",  -- GLAGOLITIC SMALL LETTER ONU -    ["ⱂ"] = "p",  -- GLAGOLITIC SMALL LETTER POKOJI -    ["ⱃ"] = "r",  -- GLAGOLITIC SMALL LETTER RITSI -    ["ⱄ"] = "s",  -- GLAGOLITIC SMALL LETTER SLOVO -    ["ⱅ"] = "t",  -- GLAGOLITIC SMALL LETTER TVRIDO -    ["ⱆ"] = "u",  -- GLAGOLITIC SMALL LETTER UKU -    ["ⱇ"] = "f",  -- GLAGOLITIC SMALL LETTER FRITU -    ["ⱈ"] = "x",  -- GLAGOLITIC SMALL LETTER HERU -    ["ⱉ"] = "o",  -- GLAGOLITIC SMALL LETTER OTU -    ["ⱊ"] = "?",  -- GLAGOLITIC SMALL LETTER PE -    ["ⱋ"] = "št", -- GLAGOLITIC SMALL LETTER SHTA -    ["ⱌ"] = "c",  -- GLAGOLITIC SMALL LETTER TSI -    ["ⱍ"] = "č",  -- GLAGOLITIC SMALL LETTER CHRIVI -    ["ⱎ"] = "š",  -- GLAGOLITIC SMALL LETTER SHA -    ["ⱏ"] = "ъ",  -- GLAGOLITIC SMALL LETTER YERU -    ["ⱐ"] = "ь",  -- GLAGOLITIC SMALL LETTER YERI -    ["ⱑ"] = "ě",  -- GLAGOLITIC SMALL LETTER YATI -    ["ⱒ"] = "x",  -- GLAGOLITIC SMALL LETTER SPIDERY HA -    ["ⱓ"] = "ju", -- GLAGOLITIC SMALL LETTER YU -    ["ⱔ"] = "ę",  -- GLAGOLITIC SMALL LETTER SMALL YUS -    ["ⱕ"] = "y̨",  -- GLAGOLITIC SMALL LETTER SMALL YUS WITH TAIL  -    ["ⱖ"] = "??", -- GLAGOLITIC SMALL LETTER YO -    ["ⱗ"] = "ję", -- GLAGOLITIC SMALL LETTER IOTATED SMALL YU -    ["ⱘ"] = "ǫ",  -- GLAGOLITIC SMALL LETTER BIG YUS -    ["ⱙ"] = "jǫ", -- GLAGOLITIC SMALL LETTER IOTATED BIG YUS -    ["ⱚ"] = "th", -- GLAGOLITIC SMALL LETTER FITA -    ["ⱛ"] = "ü",  -- GLAGOLITIC SMALL LETTER IZHITSA -    ["ⱜ"] = "??", -- GLAGOLITIC SMALL LETTER SHTAPIC -    ["ⱝ"] = "??", -- GLAGOLITIC SMALL LETTER TROKUTASTI A -    ["ⱞ"] = "m",  -- GLAGOLITIC SMALL LETTER LATINATE MYSLITE -    } - -    translit.tables["Glagolica transliteration for OCS lowercase"] = translit.ocs_gla_low - -    ------------------------------------------------ -    -- Uppercase (?!) Glagolitic Transliteration  -- -    ------------------------------------------------ - -    translit.ocs_gla_upp = translit.make_add_dict{ -    ["Ⰰ"] = "A",  -- GLAGOLITIC CAPITAL LETTER AZU -    ["Ⰱ"] = "B",  -- GLAGOLITIC CAPITAL LETTER BUKY -    ["Ⰲ"] = "V",  -- GLAGOLITIC CAPITAL LETTER VEDE -    ["Ⰳ"] = "G",  -- GLAGOLITIC CAPITAL LETTER GLAGOLI -    ["Ⰴ"] = "D",  -- GLAGOLITIC CAPITAL LETTER DOBRO -    ["Ⰵ"] = "E",  -- GLAGOLITIC CAPITAL LETTER YESTU -    ["Ⰶ"] = "Ž",  -- GLAGOLITIC CAPITAL LETTER ZHIVETE -    ["Ⰷ"] = "Ʒ",  -- GLAGOLITIC CAPITAL LETTER DZELO -    ["Ⰸ"] = "Z",  -- GLAGOLITIC CAPITAL LETTER ZEMLJA -    ["Ⰹ"] = "I",  -- GLAGOLITIC CAPITAL LETTER IZHE -    ["Ⰺ"] = "I",  -- GLAGOLITIC CAPITAL LETTER INITIAL IZHE -    ["Ⰻ"] = "I",  -- GLAGOLITIC CAPITAL LETTER I -    ["Ⰼ"] = "G’", -- GLAGOLITIC CAPITAL LETTER DJERVI -    ["Ⰽ"] = "K",  -- GLAGOLITIC CAPITAL LETTER KAKO -    ["Ⰾ"] = "L",  -- GLAGOLITIC CAPITAL LETTER LJUDIJE -    ["Ⰿ"] = "M",  -- GLAGOLITIC CAPITAL LETTER MYSLITE -    ["Ⱀ"] = "N",  -- GLAGOLITIC CAPITAL LETTER NASHI -    ["Ⱁ"] = "O",  -- GLAGOLITIC CAPITAL LETTER ONU -    ["Ⱂ"] = "P",  -- GLAGOLITIC CAPITAL LETTER POKOJI -    ["Ⱃ"] = "R",  -- GLAGOLITIC CAPITAL LETTER RITSI -    ["Ⱄ"] = "S",  -- GLAGOLITIC CAPITAL LETTER SLOVO -    ["Ⱅ"] = "T",  -- GLAGOLITIC CAPITAL LETTER TVRIDO -    ["Ⱆ"] = "U",  -- GLAGOLITIC CAPITAL LETTER UKU -    ["Ⱇ"] = "F",  -- GLAGOLITIC CAPITAL LETTER FRITU -    ["Ⱈ"] = "X",  -- GLAGOLITIC CAPITAL LETTER HERU -    ["Ⱉ"] = "O",  -- GLAGOLITIC CAPITAL LETTER OTU -    ["Ⱊ"] = "?",  -- GLAGOLITIC CAPITAL LETTER PE -    ["Ⱋ"] = "Št", -- GLAGOLITIC CAPITAL LETTER SHTA -    ["Ⱌ"] = "C",  -- GLAGOLITIC CAPITAL LETTER TSI -    ["Ⱍ"] = "Č",  -- GLAGOLITIC CAPITAL LETTER CHRIVI -    ["Ⱎ"] = "Š",  -- GLAGOLITIC CAPITAL LETTER SHA -    ["Ⱏ"] = "Ъ",  -- GLAGOLITIC CAPITAL LETTER YERU -    ["Ⱐ"] = "Ь",  -- GLAGOLITIC CAPITAL LETTER YERI -    ["Ⱑ"] = "Ě",  -- GLAGOLITIC CAPITAL LETTER YATI -    ["Ⱒ"] = "X",  -- GLAGOLITIC CAPITAL LETTER SPIDERY HA -    ["Ⱓ"] = "Ju", -- GLAGOLITIC CAPITAL LETTER YU -    ["Ⱔ"] = "Ę",  -- GLAGOLITIC CAPITAL LETTER SMALL YUS -    ["Ⱕ"] = "Y̨",  -- GLAGOLITIC CAPITAL LETTER SMALL YUS WITH TAIL -    ["Ⱖ"] = "??", -- GLAGOLITIC CAPITAL LETTER YO -    ["Ⱗ"] = "Ję", -- GLAGOLITIC CAPITAL LETTER IOTATED SMALL YUS -    ["Ⱘ"] = "Ǫ",  -- GLAGOLITIC CAPITAL LETTER BIG YUS -    ["Ⱙ"] = "Jǫ", -- GLAGOLITIC CAPITAL LETTER IOTATED BIG YUS -    ["Ⱚ"] = "Th", -- GLAGOLITIC CAPITAL LETTER FITA -    ["Ⱛ"] = "Ü",  -- GLAGOLITIC CAPITAL LETTER IZHITSA -    ["Ⱜ"] = "??", -- GLAGOLITIC CAPITAL LETTER SHTAPIC -    ["Ⱝ"] = "??", -- GLAGOLITIC CAPITAL LETTER TROKUTASTI A -    ["Ⱞ"] = "M",  -- GLAGOLITIC CAPITAL LETTER LATINATE MYSLIT -    } - -    translit.tables["Glagolica transliteration for OCS uppercase"] = translit.ocs_gla_upp - -    translit.done_glagolica = true -end - ---===========================================================================-- ---                              End Of Tables                                -- ---===========================================================================-- - - diff --git a/tex/context/third/transliterator/trans_tables_gr.lua b/tex/context/third/transliterator/trans_tables_gr.lua deleted file mode 100644 index b4c77e7..0000000 --- a/tex/context/third/transliterator/trans_tables_gr.lua +++ /dev/null @@ -1,709 +0,0 @@ ---===========================================================================-- ---                              Greek                                        -- ---===========================================================================-- - -local translit  = thirddata.translit -local pcache    = translit.parser_cache -local lpegmatch = lpeg.match - --- Note that the Greek transliteration mapping isn't bijective so transliterated --- texts won't be reversible.  (Shouldn't be impossible to make one up using --- diacritics on latin characters to represent all possible combinations of --- Greek breathings + accents.)  - --- Good reading on composed / precombined unicode: ---  http://www.tlg.uci.edu/~opoudjis/unicode/unicode_gaps.html#precomposed - -------------------------------------------------- --- Lowercase Greek Initial Position Diphthongs -- -------------------------------------------------- - -if not translit.done_greek then -    translit.gr_di_in_low = translit.make_add_dict{ -    [" αὑ"] = " hau", -    [" αὕ"] = " hau", -    [" αὓ"] = " hau", -    [" αὗ"] = " hau", -    [" εὑ"] = " heu", -    [" εὕ"] = " heu", -    [" εὓ"] = " heu", -    [" εὗ"] = " heu", -    [" ηὑ"] = " hēu", -    [" ηὕ"] = " hēu", -    [" ηὓ"] = " hēu", -    [" ηὗ"] = " hēu", -    [" οὑ"] = " hu", -    [" οὕ"] = " hu", -    [" οὓ"] = " hu", -    [" οὗ"] = " hu", -    [" ωὑ"] = " hōu", -    [" ωὕ"] = " hōu", -    [" ωὓ"] = " hōu", -    [" ωὗ"] = " hōu" -    } - -    translit.tables["Greek transliteration initial breathing diphthongs lowercase"] = translit.gr_di_in_low - -    ------------------------------------------------- -    -- Uppercase Greek Initial Position Diphthongs -- -    ------------------------------------------------- - -    translit.gr_di_in_upp = translit.make_add_dict{ -    [" Αὑ"] = " Hau", -    [" Αὕ"] = " Hau", -    [" Αὓ"] = " Hau", -    [" Αὗ"] = " Hau", -    [" Εὑ"] = " Heu", -    [" Εὕ"] = " Heu", -    [" Εὓ"] = " Heu", -    [" Εὗ"] = " Heu", -    [" Ηὑ"] = " Hēu", -    [" Ηὕ"] = " Hēu", -    [" Ηὓ"] = " Hēu", -    [" Ηὗ"] = " Hēu", -    [" Οὑ"] = " Hu", -    [" Οὕ"] = " Hu", -    [" Οὓ"] = " Hu", -    [" Οὗ"] = " Hu", -    [" Ωὑ"] = " Hōu", -    [" Ωὕ"] = " Hōu", -    [" Ωὓ"] = " Hōu", -    [" Ωὗ"] = " Hōu" -    } - -    translit.tables["Greek transliteration initial breathing diphthongs uppercase"] = translit.gr_di_in_upp - -    --------------------------------------- -    -- Lowercase Greek Initial Position  -- -    --------------------------------------- - -    translit.gr_in_low = translit.make_add_dict{ -    [" ἁ"] = " ha", -    [" ἅ"] = " ha", -    [" ἃ"] = " ha", -    [" ἇ"] = " ha", -    [" ᾁ"] = " ha", -    [" ᾅ"] = " ha", -    [" ᾃ"] = " ha", -    [" ᾇ"] = " ha", -    [" ἑ"] = " he", -    [" ἕ"] = " he", -    [" ἓ"] = " he", -    [" ἡ"] = " hē", -    [" ἥ"] = " hē", -    [" ἣ"] = " hē", -    [" ἧ"] = " hē", -    [" ᾑ"] = " hē", -    [" ᾕ"] = " hē", -    [" ᾓ"] = " hē", -    [" ᾗ"] = " hē", -    [" ἱ"] = " hi", -    [" ἵ"] = " hi", -    [" ἳ"] = " hi", -    [" ἷ"] = " hi", -    [" ὁ"] = " ho", -    [" ὅ"] = " ho", -    [" ὃ"] = " ho", -    [" ὑ"] = " hy", -    [" ὕ"] = " hy", -    [" ὓ"] = " hy", -    [" ὗ"] = " hy", -    [" ὡ"] = " hō", -    [" ὥ"] = " hō", -    [" ὣ"] = " hō", -    [" ὧ"] = " hō", -    [" ᾡ"] = " hō", -    [" ᾥ"] = " hō", -    [" ᾣ"] = " hō", -    [" ᾧ"] = " hō", -    } - -    translit.tables["Greek transliteration initial breathing lowercase"] = translit.gr_in_low - -    --------------------------------------- -    -- Uppercase Greek Initial Position  -- -    --------------------------------------- - -    translit.gr_in_upp = translit.make_add_dict{ -    [" Ἁ"] = " Ha", -    [" Ἅ"] = " Ha", -    [" Ἃ"] = " Ha", -    [" Ἇ"] = " Ha", -    [" ᾉ"] = " Ha", -    [" ᾍ"] = " Ha", -    [" ᾋ"] = " Ha", -    [" ᾏ"] = " Ha", -    [" Ἑ"] = " He", -    [" Ἕ"] = " He", -    [" Ἓ"] = " He", -    [" Ἡ"] = " Hē", -    [" Ἥ"] = " Hē", -    [" Ἣ"] = " Hē", -    [" Ἧ"] = " Hē", -    [" ᾙ"] = " Hē", -    [" ᾝ"] = " Hē", -    [" ᾛ"] = " Hē", -    [" ᾟ"] = " Hē", -    [" Ἱ"] = " Hi", -    [" Ἵ"] = " Hi", -    [" Ἳ"] = " Hi", -    [" Ἷ"] = " Hi", -    [" Ὁ"] = " Ho", -    [" Ὅ"] = " Ho", -    [" Ὃ"] = " Ho", -    [" Ὑ"] = " Hy", -    [" Ὕ"] = " Hy", -    [" Ὓ"] = " Hy", -    [" Ὗ"] = " Hy", -    [" Ὡ"] = " Hō", -    [" Ὥ"] = " Hō", -    [" Ὣ"] = " Hō", -    [" Ὧ"] = " Hō", -    [" ᾩ"] = " Hō", -    [" ᾭ"] = " Hō", -    [" ᾫ"] = " Hō", -    [" ᾯ"] = " Hō", -    } - -    translit.tables["Greek transliteration initial breathing uppercase"] = translit.gr_in_upp - -    --------------------------------- -    -- Lowercase Greek Diphthongs  -- -    --------------------------------- - -    translit.gr_di_low = translit.make_add_dict{ -    ["αυ"] = "au", -    ["αύ"] = "au", -    ["αὺ"] = "au", -    ["αῦ"] = "au", -    ["αὐ"] = "au", -    ["αὔ"] = "au", -    ["αὒ"] = "au", -    ["αὖ"] = "au", -    ["αὑ"] = "au", -    ["αὕ"] = "au", -    ["αὓ"] = "au", -    ["αὗ"] = "au", -    ["ευ"] = "eu", -    ["εύ"] = "eu", -    ["εὺ"] = "eu", -    ["εῦ"] = "eu", -    ["εὐ"] = "eu", -    ["εὔ"] = "eu", -    ["εὒ"] = "eu", -    ["εὖ"] = "eu", -    ["εὑ"] = "eu", -    ["εὕ"] = "eu", -    ["εὓ"] = "eu", -    ["εὗ"] = "eu", -    ["ηυ"] = "ēu", -    ["ηύ"] = "ēu", -    ["ηὺ"] = "ēu", -    ["ηῦ"] = "ēu", -    ["ηὐ"] = "ēu", -    ["ηὔ"] = "ēu", -    ["ηὒ"] = "ēu", -    ["ηὖ"] = "ēu", -    ["ηὑ"] = "ēu", -    ["ηὕ"] = "ēu", -    ["ηὓ"] = "ēu", -    ["ηὗ"] = "ēu", -    ["ου"] = "u", -    ["ου"] = "u", -    ["ου"] = "u", -    ["ού"] = "u", -    ["οὺ"] = "u", -    ["οῦ"] = "u", -    ["οὐ"] = "u", -    ["οὔ"] = "u", -    ["οὒ"] = "u", -    ["οὖ"] = "u", -    ["οὑ"] = "u", -    ["οὕ"] = "u", -    ["οὓ"] = "u", -    ["οὗ"] = "u", -    ["ωυ"] = "ōu", -    ["ωύ"] = "ōu", -    ["ωὺ"] = "ōu", -    ["ωῦ"] = "ōu", -    ["ωὐ"] = "ōu", -    ["ωὔ"] = "ōu", -    ["ωὒ"] = "ōu", -    ["ωὖ"] = "ōu", -    ["ωὑ"] = "ōu", -    ["ωὕ"] = "ōu", -    ["ωὓ"] = "ōu", -    ["ωὗ"] = "ōu", -    ["ῤῥ"] = "rrh", -    } - -    translit.tables["Greek transliteration diphthongs lowercase"] = translit.gr_in_low - -    --------------------------------- -    -- Uppercase Greek Diphthongs  -- -    --------------------------------- - -    translit.gr_di_upp = translit.make_add_dict{ -    ["Αυ"] = "Au", -    ["Αύ"] = "Au", -    ["Αὺ"] = "Au", -    ["Αῦ"] = "Au", -    ["Αὐ"] = "Au", -    ["Αὔ"] = "Au", -    ["Αὒ"] = "Au", -    ["Αὖ"] = "Au", -    ["Αὑ"] = "Au", -    ["Αὕ"] = "Au", -    ["Αὓ"] = "Au", -    ["Αὗ"] = "Au", -    ["Ευ"] = "Eu", -    ["Εύ"] = "Eu", -    ["Εὺ"] = "Eu", -    ["Εῦ"] = "Eu", -    ["Εὐ"] = "Eu", -    ["Εὔ"] = "Eu", -    ["Εὒ"] = "Eu", -    ["Εὖ"] = "Eu", -    ["Εὑ"] = "Eu", -    ["Εὕ"] = "Eu", -    ["Εὓ"] = "Eu", -    ["Εὗ"] = "Eu", -    ["Ηυ"] = "Ēu", -    ["Ηύ"] = "Ēu", -    ["Ηὺ"] = "Ēu", -    ["Ηῦ"] = "Ēu", -    ["Ηὐ"] = "Ēu", -    ["Ηὔ"] = "Ēu", -    ["Ηὒ"] = "Ēu", -    ["Ηὖ"] = "Ēu", -    ["Ηὑ"] = "Ēu", -    ["Ηὕ"] = "Ēu", -    ["Ηὓ"] = "Ēu", -    ["Ηὗ"] = "Ēu", -    ["Ου"] = "U", -    ["Ου"] = "U", -    ["Ου"] = "U", -    ["Ού"] = "U", -    ["Οὺ"] = "U", -    ["Οῦ"] = "U", -    ["Οὐ"] = "U", -    ["Οὔ"] = "U", -    ["Οὒ"] = "U", -    ["Οὖ"] = "U", -    ["Οὑ"] = "U", -    ["Οὕ"] = "U", -    ["Οὓ"] = "U", -    ["Οὗ"] = "U", -    ["Ωυ"] = "Ōu", -    ["Ωύ"] = "Ōu", -    ["Ωὺ"] = "Ōu", -    ["Ωῦ"] = "Ōu", -    ["Ωὐ"] = "Ōu", -    ["Ωὔ"] = "Ōu", -    ["Ωὒ"] = "Ōu", -    ["Ωὖ"] = "Ōu", -    ["Ωὑ"] = "Ōu", -    ["Ωὕ"] = "Ōu", -    ["Ωὓ"] = "Ōu", -    ["Ωὗ"] = "Ōu", -    } - -    translit.tables["Greek transliteration diphthongs uppercase"] = translit.gr_in_upp - -    -- The following will be used in an option that ensures transcription of -    -- nasalization, e.g. Ἁγχίσης -> “Anchises” (instead of “Agchises”) -    translit.gr_nrule = translit.make_add_dict{ -    ["γγ"] = "ng", -    ["γκ"] = "nk", -    ["γξ"] = "nx", -    ["γχ"] = "nch", -    } - -    translit.tables["Greek transliteration optional nasalization"] = translit.gr_nrule - - -    -------------------------------------- -    -- Lowercase Greek Transliteration  -- -    -------------------------------------- - -    translit.gr_low = translit.make_add_dict{ -    ["α"] = "a", -    ["ά"] = "a", -    ["ὰ"] = "a", -    ["ᾶ"] = "a", -    ["ᾳ"] = "a", -    ["ἀ"] = "a", -    ["ἁ"] = "a", -    ["ἄ"] = "a", -    ["ἂ"] = "a", -    ["ἆ"] = "a", -    ["ἁ"] = "a", -    ["ἅ"] = "a", -    ["ἃ"] = "a", -    ["ἇ"] = "a", -    ["ᾁ"] = "a", -    ["ᾴ"] = "a", -    ["ᾲ"] = "a", -    ["ᾷ"] = "a", -    ["ᾄ"] = "a", -    ["ᾂ"] = "a", -    ["ᾅ"] = "a", -    ["ᾃ"] = "a", -    ["ᾆ"] = "a", -    ["ᾇ"] = "a", -    ["β"] = "b", -    ["γ"] = "g", -    ["δ"] = "d", -    ["ε"] = "e", -    ["έ"] = "e", -    ["ὲ"] = "e", -    ["ἐ"] = "e", -    ["ἔ"] = "e", -    ["ἒ"] = "e", -    ["ἑ"] = "e", -    ["ἕ"] = "e", -    ["ἓ"] = "e", -    ["ζ"] = "z", -    ["η"] = "ē", -    ["η"] = "ē", -    ["ή"] = "ē", -    ["ὴ"] = "ē", -    ["ῆ"] = "ē", -    ["ῃ"] = "ē", -    ["ἠ"] = "ē", -    ["ἤ"] = "ē", -    ["ἢ"] = "ē", -    ["ἦ"] = "ē", -    ["ᾐ"] = "ē", -    ["ἡ"] = "ē", -    ["ἥ"] = "ē", -    ["ἣ"] = "ē", -    ["ἧ"] = "ē", -    ["ᾑ"] = "ē", -    ["ῄ"] = "ē", -    ["ῂ"] = "ē", -    ["ῇ"] = "ē", -    ["ᾔ"] = "ē", -    ["ᾒ"] = "ē", -    ["ᾕ"] = "ē", -    ["ᾓ"] = "ē", -    ["ᾖ"] = "ē", -    ["ᾗ"] = "ē", -    ["θ"] = "th", -    ["ι"] = "i", -    ["ί"] = "i", -    ["ὶ"] = "i", -    ["ῖ"] = "i", -    ["ἰ"] = "i", -    ["ἴ"] = "i", -    ["ἲ"] = "i", -    ["ἶ"] = "i", -    ["ἱ"] = "i", -    ["ἵ"] = "i", -    ["ἳ"] = "i", -    ["ἷ"] = "i", -    ["ϊ"] = "i", -    ["ΐ"] = "i", -    ["ῒ"] = "i", -    ["ῗ"] = "i", -    ["κ"] = "k", -    ["λ"] = "l", -    ["μ"] = "m", -    ["ν"] = "n", -    ["ξ"] = "x", -    ["ο"] = "o", -    ["ό"] = "o", -    ["ὸ"] = "o", -    ["ὀ"] = "o", -    ["ὄ"] = "o", -    ["ὂ"] = "o", -    ["ὁ"] = "o", -    ["ὅ"] = "o", -    ["ὃ"] = "o", -    ["π"] = "p", -    ["ρ"] = "r", -    ["ῤ"] = "r", -    ["ῥ"] = "rh", -    ["σ"] = "s", -    ["ς"] = "s", -    ["τ"] = "t", -    ["υ"] = "y", -    ["ύ"] = "y", -    ["ὺ"] = "y", -    ["ῦ"] = "y", -    ["ὐ"] = "y", -    ["ὔ"] = "y", -    ["ὒ"] = "y", -    ["ὖ"] = "y", -    ["ὑ"] = "y", -    ["ὕ"] = "y", -    ["ὓ"] = "y", -    ["ὗ"] = "y", -    ["ϋ"] = "y", -    ["ΰ"] = "y", -    ["ῢ"] = "y", -    ["ῧ"] = "y", -    ["φ"] = "ph", -    ["χ"] = "ch", -    ["ψ"] = "ps", -    ["ω"] = "ō", -    ["ώ"] = "ō", -    ["ὼ"] = "ō", -    ["ῶ"] = "ō", -    ["ῳ"] = "ō", -    ["ὠ"] = "ō", -    ["ὤ"] = "ō", -    ["ὢ"] = "ō", -    ["ὦ"] = "ō", -    ["ᾠ"] = "ō", -    ["ὡ"] = "ō", -    ["ὥ"] = "ō", -    ["ὣ"] = "ō", -    ["ὧ"] = "ō", -    ["ᾡ"] = "ō", -    ["ῴ"] = "ō", -    ["ῲ"] = "ō", -    ["ῷ"] = "ō", -    ["ᾤ"] = "ō", -    ["ᾢ"] = "ō", -    ["ᾥ"] = "ō", -    ["ᾣ"] = "ō", -    ["ᾦ"] = "ō", -    ["ᾧ"] = "ō", -    } - -    translit.tables["Greek transliteration lowercase"] = translit.gr_low - -    -------------------------------------- -    -- Uppercase Greek Transliteration  -- -    -------------------------------------- - -    translit.gr_upp = translit.make_add_dict{ -    ["Α"] = "A", -    ["Ά"] = "A", -    ["Ὰ"] = "A", -    --["ᾶ"] = "A", -    ["ᾼ"] = "A", -    ["Ἀ"] = "A", -    ["Ἁ"] = "A", -    ["Ἄ"] = "A", -    ["Ἂ"] = "A", -    ["Ἆ"] = "A", -    ["Ἁ"] = "A", -    ["Ἅ"] = "A", -    ["Ἃ"] = "A", -    ["Ἇ"] = "A", -    ["ᾉ"] = "A", -    --["ᾴ"] = "A", -- I’d be very happy if anybody could explain to me -    --["ᾲ"] = "A", -- why there's Ά, ᾌ and ᾼ but no “A + iota subscript -    --["ᾷ"] = "A", -- + acute” …, same for Η, Υ and Ω + diacritica. -    ["ᾌ"] = "A", -    ["ᾊ"] = "A", -    ["ᾍ"] = "A", -    ["ᾋ"] = "A", -    ["ᾎ"] = "A", -    ["ᾏ"] = "A", -    ["Β"] = "B", -    ["Γ"] = "G", -    ["Δ"] = "D", -    ["Ε"] = "E", -    ["Έ"] = "E", -    ["Ὲ"] = "E", -    ["Ἐ"] = "E", -    ["Ἔ"] = "E", -    ["Ἒ"] = "E", -    ["Ἑ"] = "E", -    ["Ἕ"] = "E", -    ["Ἓ"] = "E", -    ["Ζ"] = "Z", -    ["Η"] = "Ē", -    ["Η"] = "Ē", -    ["Ή"] = "Ē", -    ["Ὴ"] = "Ē", -    --["ῆ"] = "Ē", -    ["ῌ"] = "Ē", -    ["Ἠ"] = "Ē", -    ["Ἤ"] = "Ē", -    ["Ἢ"] = "Ē", -    ["Ἦ"] = "Ē", -    ["ᾘ"] = "Ē", -    ["Ἡ"] = "Ē", -    ["Ἥ"] = "Ē", -    ["Ἣ"] = "Ē", -    ["Ἧ"] = "Ē", -    ["ᾙ"] = "Ē", -    --["ῄ"] = "Ē", -    --["ῂ"] = "Ē", -    --["ῇ"] = "Ē", -    ["ᾜ"] = "Ē", -    ["ᾚ"] = "Ē", -    ["ᾝ"] = "Ē", -    ["ᾛ"] = "Ē", -    ["ᾞ"] = "Ē", -    ["ᾟ"] = "Ē", -    ["Θ"] = "Th", -    ["Ι"] = "I", -    ["Ί"] = "I", -    ["Ὶ"] = "I", -    --["ῖ"] = "I", -    ["Ἰ"] = "I", -    ["Ἴ"] = "I", -    ["Ἲ"] = "I", -    ["Ἶ"] = "I", -    ["Ἱ"] = "I", -    ["Ἵ"] = "I", -    ["Ἳ"] = "I", -    ["Ἷ"] = "I", -    ["Ϊ"] = "I", -    --["ΐ"] = "I", -    --["ῒ"] = "I", -    --["ῗ"] = "I", -    ["Κ"] = "K", -    ["Λ"] = "L", -    ["Μ"] = "M", -    ["Ν"] = "N", -    ["Ξ"] = "X", -    ["Ο"] = "O", -    ["Ό"] = "O", -    ["Ὸ"] = "O", -    ["Ὀ"] = "O", -    ["Ὄ"] = "O", -    ["Ὂ"] = "O", -    ["Ὁ"] = "O", -    ["Ὅ"] = "O", -    ["Ὃ"] = "O", -    ["Π"] = "P", -    ["Ρ"] = "R", -    --["ῤ"] = "R", -    ["Ῥ"] = "Rh", -    ["Σ"] = "S", -    ["Σ"] = "S", -    ["Τ"] = "T", -    ["Υ"] = "Y", -    ["Ύ"] = "Y", -    ["Ὺ"] = "Y", -    --["ῦ"] = "Y", -    --["ὐ"] = "Y", -    --["ὔ"] = "Y", -    --["ὒ"] = "Y", -    --["ὖ"] = "Y", -    ["Ὑ"] = "Y", -    ["Ὕ"] = "Y", -    ["Ὓ"] = "Y", -    ["Ὗ"] = "Y", -    ["Ϋ"] = "Y", -    --["ΰ"] = "Y", -    --["ῢ"] = "Y", -    --["ῧ"] = "Y", -    ["Φ"] = "Ph", -    ["Χ"] = "Ch", -    ["Ψ"] = "Ps", -    ["Ω"] = "Ō", -    ["Ώ"] = "Ō", -    ["Ὼ"] = "Ō", -    --["ῶ"] = "Ō", -    ["ῼ"] = "Ō", -    ["Ὠ"] = "Ō", -    ["Ὤ"] = "Ō", -    ["Ὢ"] = "Ō", -    ["Ὦ"] = "Ō", -    ["ᾨ"] = "Ō", -    ["Ὡ"] = "Ō", -    ["Ὥ"] = "Ō", -    ["Ὣ"] = "Ō", -    ["Ὧ"] = "Ō", -    ["ᾩ"] = "Ō", -    --["ῴ"] = "Ō", -    --["ῲ"] = "Ō", -    --["ῷ"] = "Ō", -    ["ᾬ"] = "Ō", -    ["ᾪ"] = "Ō", -    ["ᾭ"] = "Ō", -    ["ᾫ"] = "Ō", -    ["ᾮ"] = "Ō", -    ["ᾯ"] = "Ō", -    } - -    translit.tables["Greek transliteration uppercase"] = translit.gr_upp - -    ------------ -    -- Varia  -- -    ------------ - -    translit.gr_other = translit.make_add_dict{ -    ["ϝ"] = "w", -    ["Ϝ"] = "W", -    ["ϙ"] = "q", -    ["Ϙ"] = "Q", -    ["ϡ"] = "ss", -    ["Ϡ"] = "Ss", -    } - -    translit.tables["Greek transliteration archaic characters"] = translit.gr_other - -    translit.done_greek = true -end - ---===========================================================================-- ---                              End Of Tables                                -- ---===========================================================================-- - -local function greek (mode, text) -    local P, V, Cs = lpeg.P, lpeg.V, lpeg.Cs -    local addrules = translit.addrules -    local utfchar = translit.utfchar - -    if mode == "gr" or mode == "gr_n" then - -        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 = gr_di + translit.gr_nrule end - -        local p_di_in, p_in, p_di, p - -        p_di_in = addrules( gr_di_in, p_di_in ) -        p_in    = addrules( gr_in,    p_in    ) -        p_di    = addrules( gr_di,    p_di    ) -        p       = addrules( gr,       p       ) - -        local g = P{ -- 2959 rules -            Cs((V"init_diph" -              + V"init" -              + V"diph" -              + V"other" -              + utfchar -            )^0), - -            init_diph = Cs(p_di_in / gr_di_in  ), -            init      = Cs(p_in    / gr_in     ), -            diph      = Cs(p_di    / gr_di     ), -            other     = Cs(p       / gr        ), -        } - -        return g -    end -end - -translit.methods["gr"] = function (text) -    p = pcache["gr"] -    if not p then -        p = greek("gr") -        pcache["gr"] = p -    end -    return lpegmatch(p, text) -end - -translit.methods["gr_n"] = function (text) -    p = pcache["gr_n"] -    if not p then -        p = greek("gr_n") -        pcache["gr_n"] = p -    end -    return lpegmatch(p, text) -end - --- vim:ft=lua:sw=4:ts=4 diff --git a/tex/context/third/transliterator/trans_tables_iso9.lua b/tex/context/third/transliterator/trans_tables_iso9.lua deleted file mode 100644 index 256d994..0000000 --- a/tex/context/third/transliterator/trans_tables_iso9.lua +++ /dev/null @@ -1,310 +0,0 @@ ---===========================================================================-- ---           ISO 9.1995(E) standardized transliteration for cyrillic         -- ---===========================================================================-- - -local translit  = thirddata.translit -local pcache    = translit.parser_cache -local lpegmatch = lpeg.match - -if not translit.done_iso9 then -    ----------------------------------------- -    -- Lowercase russian cyrillic alphabet -- -    ----------------------------------------- -    translit.ru_low = translit.make_add_dict({ -    ["а"] = "a", -- U+0430 -> U+0061 -    ["б"] = "b", -- U+0431 -> U+0062 -    ["в"] = "v", -- U+0432 -> U+0076 -    ["г"] = "g", -- U+0433 -> U+0067 -    ["д"] = "d", -- U+0434 -> U+0064 -    ["е"] = "e", -- U+0435 -> U+0065 -    ["ё"] = "ë", -- U+0451 -> U+00eb -    ["ж"] = "ž", -- U+0436 -> U+017e -    ["з"] = "z", -- U+0437 -> U+007a -    ["и"] = "i", -- U+0438 -> U+0069 -    ["й"] = "j", -- U+0439 -> U+006a -    ["к"] = "k", -- U+043a -> U+006b -    ["л"] = "l", -- U+043b -> U+006c -    ["м"] = "m", -- U+043c -> U+006d -    ["н"] = "n", -- U+043d -> U+006e -    ["о"] = "o", -- U+043e -> U+006f -    ["п"] = "p", -- U+043f -> U+0070 -    ["р"] = "r", -- U+0440 -> U+0072 -    ["с"] = "s", -- U+0441 -> U+0073 -    ["т"] = "t", -- U+0442 -> U+0074 -    ["у"] = "u", -- U+0443 -> U+0075 -    ["ф"] = "f", -- U+0444 -> U+0066 -    ["х"] = "h", -- U+0445 -> U+0068 -    ["ц"] = "c", -- U+0446 -> U+0063 -    ["ч"] = "č", -- U+0447 -> U+010d -    ["ш"] = "š", -- U+0448 -> U+0161 -    ["щ"] = "ŝ", -- U+0449 -> U+015d -    ["ъ"] = "ʺ", -- U+044a -> U+02ba <- That's somewhat ambiguous as 0x2ba is -    ["ы"] = "y", -- U+044b -> U+0079    used for uppercase, too. -    ["ь"] = "ʹ", -- U+044c -> U+02b9 <- Same here with 0x2b9. -    ["э"] = "è", -- U+044d -> U+00e8 -    ["ю"] = "û", -- U+044e -> U+00fb -    ["я"] = "â"  -- U+044f -> U+00e2 -    }) - -    translit.tables["russian lowercase ISO~9"] = translit.ru_low - -    ----------------------------------------- -    -- Uppercase russian cyrillic alphabet -- -    ----------------------------------------- - -    translit.ru_upp = translit.make_add_dict({ -    ["А"] = "A", -- U+0410 -> U+0041 -    ["Б"] = "B", -- U+0411 -> U+0042 -    ["В"] = "V", -- U+0412 -> U+0056 -    ["Г"] = "G", -- U+0413 -> U+0047 -    ["Д"] = "D", -- U+0414 -> U+0044 -    ["Е"] = "E", -- U+0415 -> U+0045 -    ["Ё"] = "Ë", -- U+0401 -> U+00cb -    ["Ж"] = "Ž", -- U+0416 -> U+017d -    ["З"] = "Z", -- U+0417 -> U+005a -    ["И"] = "I", -- U+0418 -> U+0049 -    ["Й"] = "J", -- U+0419 -> U+004a -    ["К"] = "K", -- U+041a -> U+004b -    ["Л"] = "L", -- U+041b -> U+004c -    ["М"] = "M", -- U+041c -> U+004d -    ["Н"] = "N", -- U+041d -> U+004e -    ["О"] = "O", -- U+041e -> U+004f -    ["П"] = "P", -- U+041f -> U+0050 -    ["Р"] = "R", -- U+0420 -> U+0052 -    ["С"] = "S", -- U+0421 -> U+0053 -    ["Т"] = "T", -- U+0422 -> U+0054 -    ["У"] = "U", -- U+0423 -> U+0055 -    ["Ф"] = "F", -- U+0424 -> U+0046 -    ["Х"] = "H", -- U+0425 -> U+0048 -    ["Ц"] = "C", -- U+0426 -> U+0043 -    ["Ч"] = "Č", -- U+0427 -> U+010c -    ["Ш"] = "Š", -- U+0428 -> U+0160 -    ["Щ"] = "Ŝ", -- U+0429 -> U+015c -    ["Ъ"] = "ʺ", -- U+042a -> U+02ba -    ["Ы"] = "Y", -- U+042b -> U+0059 -    ["Ь"] = "ʹ", -- U+042c -> U+02b9 -    ["Э"] = "È", -- U+042d -> U+00c8 -    ["Ю"] = "Û", -- U+042e -> U+00db -    ["Я"] = "Â"  -- U+042f -> U+00c2 -    }) - -    translit.tables["russian uppercase ISO~9"] = translit.ru_upp - -    ---------------------------------------------------------- -    -- Lowercase pre-1918 russian cyrillic additional chars -- -    ---------------------------------------------------------- -    -- cf. http://www.russportal.ru/index.php?id=oldorth.decret1917 - -    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 -    ["ѵ"] = "ỳ", -- U+0475 -> U+1ef3 -- 3-byte -    } - -    translit.tables["russian pre-1918 lowercase ISO~9 2 byte"] = translit.ru_old_low - -    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.make_add_dict{ -    ["ь"] = "’", -    ["Ь"] = "’", -    ["ъ"] = "”", -    ["Ъ"] = "”", -    } - -    translit.tables["russian magkij / tverdyj znak hack"] = translit.ru_jer_hack - -    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.make_add_dict{ -    ["ӑ"] = "ă", -- U+04d1 -> U+0103 -    ["ӓ"] = "ä", -- U+04d3 -> U+00e4 -    ["ә"] = "a̋", -- u+04d9 -> U+0061+030b -    ["ґ"] = "g̀", -- u+0491 -> U+0067+0300 -    ["ҕ"] = "ğ", -- U+0495 -> U+011f -    ["ғ"] = "ġ", -- U+0493 -> U+0121 -    ["ђ"] = "đ", -- U+0452 -> U+0111 -    ["ѓ"] = "ǵ", -- U+0453 -> U+01f5 -    ["ӗ"] = "ĕ", -- U+04d7 -> U+0115 -    ["є"] = "ê", -- U+0454 -> U+00ea -    ["ҽ"] = "c̆", -- U+04bd -> U+0063+0306 -    ["ҿ"] = "ç̆", -- U+04bf -> U+00e7+0306 -    ["ӂ"] = "z̆", -- U+04c2 -> U+007a+0306 -    ["ӝ"] = "z̄", -- U+04dd -> U+007a+0304 -    ["җ"] = "ž̧", -- U+0497 -> U+017e+0327 -    ["ӟ"] = "z̈", -- U+04df -> U+007a+0308 -    ["ѕ"] = "ẑ", -- U+0455 -> U+1e91          -- Mapped to dz in old cyrillic non-ISO. -    ["ӡ"] = "ź", -- U+04e1 -> U+017a -    ["ӥ"] = "î", -- U+04e5 -> U+00ee -    ["і"] = "ì", -- U+0456 -> U+00ec -    ["ї"] = "ï", -- U+0457 -> U+00ef -    ["ј"] = "ǰ", -- U+0458 -> U+01f0 -    ["қ"] = "ķ", -- U+049b -> U+0137 -    ["ҟ"] = "k̄", -- U+049f -> U+006b+0304 -    ["љ"] = "l̂", -- U+0459 -> U+006c+0302 -    ["њ"] = "n̂", -- U+045a -> U+006e+0302 -    ["ҥ"] = "ṅ", -- U+04a5 -> U+1e45 -    ["ң"] = "ṇ", -- U+04a3 -> U+1e47 -    ["ӧ"] = "ö", -- U+04e7 -> U+00f6 -    ["ө"] = "ô", -- U+04e9 -> U+00f4 -    ["ҧ"] = "ṕ", -- U+04a7 -> U+1e55 -    ["ҫ"] = "ç", -- U+04ab -> U+00e7 -    ["ҭ"] = "ţ", -- U+04ad -> U+0163 -    ["ћ"] = "ć", -- U+045b -> U+0107 -    ["ќ"] = "ḱ", -- U+045c -> U+1e31 -    ["у́"] = "ú", -- U+0443+ -> U+00fA -    ["ў"] = "ŭ", -- U+045e -> U+016d -    ["ӱ"] = "ü", -- U+04f1 -> U+00fc -    ["ӳ"] = "ű", -- U+04f3 -> U+0171 -    ["ү"] = "ù", -- U+04af -> U+00f9 -    ["ҳ"] = "ḩ", -- U+04b3 -> U+1e29 -    ["һ"] = "ḥ", -- U+04bb -> U+1e25 -    ["ҵ"] = "c̄", -- U+04b5 -> U+0063+0304 -    ["ӵ"] = "c̈", -- U+04f5 -> U+0063+0308 -    ["ҷ"] = "ç", -- U+04cc -> U+00e7 -    ["џ"] = "d̂", -- U+045f -> U+0064+0302 -    ["ӹ"] = "ÿ", -- U+04f9 -> U+00ff -    ["ѣ"] = "ě", -- U+048d -> U+011b -    ["ѫ"] = "ǎ", -- U+046b -> U+01ce      -- Mapped to ǫ in non-ISO old cyrillic. -    ["ѳ"] = "f̀", -- U+0473 -> U+0066+0300 -- This is mapped to ‘f’ in ru_old. -    ["ѵ"] = "ỳ", -- U+0475 -> U+1ef3 -    ["ҩ"] = "ò", -- U+04a9 -> U+00f2 -    ["Ӏ"] = "‡"  -- U+04cf -> U+2021 -    } - -    translit.tables["cyrillic other lowercase ISO~9"] = translit.non_ru_low - -    --------------------------------------------------------- -    -- Uppercase characters from other cyrillic alphabets  -- -    --------------------------------------------------------- - -    translit.non_ru_upp = translit.make_add_dict{ -    ["Ӑ"] = "Ă", -- U+04d0 -> U+0102 -    ["Ӓ"] = "Ä", -- U+04d2 -> U+00c4 -    ["Ә"] = "A̋", -- U+04d8 -> U+0041+030b -    ["Ґ"] = "G̀", -- U+0490 -> U+0047+0300 -    ["Ҕ"] = "Ğ", -- U+0494 -> U+011e -    ["Ғ"] = "Ġ", -- U+0492 -> U+0120 -    ["Ђ"] = "Đ", -- U+0402 -> U+0110 -    ["Ѓ"] = "Ǵ", -- U+0403 -> U+01f4 -    ["Ӗ"] = "Ĕ", -- U+04d6 -> U+0114 -    ["Є"] = "Ê", -- U+0404 -> U+00ca -    ["Ҽ"] = "C̆", -- U+04bc -> U+0043+0306 -    ["Ҿ"] = "Ç̆", -- U+04be -> U+00c7+0306 -    ["Ӂ"] = "Z̆", -- U+04c1 -> U+005a+0306 -    ["Ӝ"] = "Z̄", -- U+04dc -> U+005a+0304 -    ["Җ"] = "Ž̦", -- U+0496 -> U+017d+0326 -    ["Ӟ"] = "Z̈", -- U+04de -> U+005a+0308 -    ["Ѕ"] = "Ẑ", -- U+0405 -> U+1e90 -    ["Ӡ"] = "Ź", -- U+04e0 -> U+0179 -    ["Ӥ"] = "Î", -- U+04e4 -> U+00ce -    ["І"] = "Ì", -- U+0406 -> U+00cc -    ["Ї"] = "Ï", -- U+0407 -> U+00cf -    ["Ј"] = "J̌", -- U+0408 -> U+004a+030c -    ["Қ"] = "Ķ", -- U+049a -> U+0136 -    ["Ҟ"] = "K̄", -- U+049e -> U+004b+0304 -    ["Љ"] = "L̂", -- U+0409 -> U+004c+0302 -    ["Њ"] = "N̂", -- U+040a -> U+004e+0302 -    ["Ҥ"] = "Ṅ", -- U+04a4 -> U+1e44 -    ["Ң"] = "Ṇ", -- U+04a2 -> U+1e46 -    ["Ӧ"] = "Ö", -- U+04e6 -> U+00d6 -    ["Ө"] = "Ô", -- U+04e8 -> U+00d4 -    ["Ҧ"] = "Ṕ", -- U+04a6 -> U+1e54 -    ["Ҫ"] = "Ç", -- U+04aa -> U+00c7 -    ["Ҭ"] = "Ţ", -- U+04ac -> U+0162 -    ["Ћ"] = "Ć", -- U+040b -> U+0106 -    ["Ќ"] = "Ḱ", -- U+040c -> U+1e30 -    ["У́"] = "Ú", -- U+0423 -> U+00da -    ["Ў"] = "Ŭ", -- U+040e -> U+016c -    ["Ӱ"] = "Ü", -- U+04f0 -> U+00dc -    ["Ӳ"] = "Ű", -- U+04f2 -> U+0170 -    ["Ү"] = "Ù", -- U+04ae -> U+00d9 -    ["Ҳ"] = "Ḩ", -- U+04b2 -> U+1e28 -    ["Һ"] = "Ḥ", -- U+04ba -> U+1e24 -    ["Ҵ"] = "C̄", -- U+04b4 -> U+0043+0304 -    ["Ӵ"] = "C̈", -- U+04f4 -> U+0043+0308 -    ["Ҷ"] = "Ç", -- U+04cb -> U+00c7 -    ["Џ"] = "D̂", -- U+040f -> U+0044+0302 -    ["Ӹ"] = "Ÿ", -- U+04f8 -> U+0178 -    ["Ѣ"] = "Ě", -- U+048c -> U+011a -    ["Ѫ"] = "Ǎ", -- U+046a -> U+01cd -    ["Ѳ"] = "F̀", -- U+0472 -> U+0046+0300 -    ["Ѵ"] = "Ỳ", -- U+0474 -> U+1ef2 -    ["Ҩ"] = "Ò", -- U+04a8 -> U+00d2 -    ["’"] = "‵", -- U+2035 -> U+2019 -    ["Ӏ"] = "‡"  -- U+04c0 -> U+2021 -    } - -    translit.tables["cyrillic other uppercase ISO~9"] = translit.non_ru_upp - -    translit.done_iso9 = true -end - ---===========================================================================-- ---                              End Of Tables                                -- ---===========================================================================-- - -local function iso9 (mode) -    local P, R, S, V, Cs = lpeg.P, lpeg.R, lpeg.S, lpeg.V, lpeg.Cs -    local addrules = translit.addrules -    local utfchar = translit.utfchar - -    local iso9 = translit.make_add_dict{} -    iso9 = translit.ru_upp + translit.ru_low - -    if mode == "ru_old" or mode == "all" then - -        iso9 = iso9 + translit.ru_old_upp + translit.ru_old_low - -        if mode == "all" then -            iso9 = iso9 -                 + translit.non_ru_upp -                 + translit.non_ru_low -        end -        if translit.deficient_font == "yes" then -            iso9 = iso9 -                + translit.ru_old_upp -                + translit.ru_old_low -                + translit.ru_jer_hack -        end -    end - -    local p_iso9 = addrules (iso9, p_iso9) -    local iso9_parser = Cs((p_iso9 / iso9 + utfchar)^0) - -    return iso9_parser -end - -translit.methods["all"] = function (text) -    local pname = "all" .. translit.deficient_font -    local p = pcache[pname] -    if not p then -        p = iso9("all") -        pcache[pname] = p -    end -    return lpegmatch(p, text) -end - -translit.methods["ru"] = translit.methods["all"] - -translit.methods["ru_old"] = function (text) -    local pname = "ru_old" .. translit.deficient_font -    local p = pcache[pname] -    if not p then -        p = iso9("all") -        pcache[pname] = p -    end -    return lpegmatch(p, text) -end - --- vim:ft=lua:sw=4:ts=4 diff --git a/tex/context/third/transliterator/trans_tables_scntfc.lua b/tex/context/third/transliterator/trans_tables_scntfc.lua deleted file mode 100644 index 96002c4..0000000 --- a/tex/context/third/transliterator/trans_tables_scntfc.lua +++ /dev/null @@ -1,287 +0,0 @@ ---===========================================================================-- ---                      Other transliterations                               -- ---===========================================================================-- - -local translit  = thirddata.translit -local pcache    = translit.parser_cache -local lpegmatch = lpeg.match - --- The following are needed because ISO 9 does not cover old Slavonic --- characters that became obsolete before the advent of гражданский шрифт. - --- Please note that these mappings are not bijective so don't expect the result  --- to be easily revertible (by machines). - --- Source p. 77 of --- http://www.schaeken.nl/lu/research/online/publications/akslstud/as2_03_kapitel_c.pdf - -if not translit.done_ocs then -    ----------------------------------------------------------------------- -    -- Lowercase and uppercase letter Uk -- “scientific transliteration” -- -    ----------------------------------------------------------------------- - -    translit.ocs_uk = translit.make_add_dict{ -    ["oу"] = "u", -    ["оу"] = "u", -    ["Оу"] = "U", -    } -    ----------------------------------------------------------------------------- -    -- Lowercase pre-Peter cyrillic characters -- “scientific transliteration” -- -    ----------------------------------------------------------------------------- - -    translit.ocs_low = translit.make_add_dict{ -    ["а"] = "a", -    ["б"] = "b", -    ["в"] = "v", -    ["г"] = "g", -    ["д"] = "d", -    ["є"] = "e", -    ["ж"] = "ž", -    ["ꙃ"] = "ʒ",  -- U+0292, alternative: dz U+01f3 -    ["ѕ"] = "ʒ", -    ["ꙁ"] = "z", -    ["з"] = "z", -    ["и"] = "i", -    ["і"] = "i", -    ["ї"] = "i", -    ["ћ"] = "g’", -    ["к"] = "k", -    ["л"] = "l", -    ["м"] = "m", -    ["н"] = "n", -    ["о"] = "o", -    ["п"] = "p", -    ["р"] = "r", -    ["с"] = "s", -    ["т"] = "t", -    ["у"] = "u", -    ["ѹ"] = "u", -    ["ꙋ"] = "u", -    ["ф"] = "f", -    ["х"] = "x", -    ["ѡ"] = "o",  --"ō", -    ["ѿ"] = "ot", -- U+047f -    ["ѽ"] = "o!", -- U+047d -    ["ꙍ"] = "o!", -- U+064D -    ["ц"] = "c", -    ["ч"] = "č", -    ["ш"] = "š", -    ["щ"] = "št", -    ["ъ"] = "ъ", -    ["ы"] = "y", -    ["ꙑ"] = "y",  -- Old jery (U+a651) as used e.g. by the OCS Wikipedia. -    ["ь"] = "ь", -    ["ѣ"] = "ě", -    ["ю"] = "ju", -    ["ꙗ"] = "ja", -    ["ѥ"] = "je", -    ["ѧ"] = "ę", -    ["ѩ"] = "ję", -    ["ѫ"] = "ǫ", -    ["ѭ"] = "jǫ", -    ["ѯ"] = "ks", -    ["ѱ"] = "ps", -    ["ѳ"] = "th", -    ["ѵ"] = "ü", -    } - -    translit.tables["OCS \\quotation{scientific} transliteration lowercase"] = translit.ocs_low - -    ----------------------------------------------------------------------------- -    -- Uppercase pre-Peter cyrillic characters -- “scientific transliteration” -- -    ----------------------------------------------------------------------------- - -    translit.ocs_upp = translit.make_add_dict{ -    ["А"] = "A", -    ["Б"] = "B", -    ["В"] = "V", -    ["Г"] = "G", -    ["Д"] = "D", -    ["Є"] = "E", -    ["Ж"] = "Ž", -    ["Ꙃ"] = "Ʒ",  -- U+01b7, alternative: Dz U+01f2 -    ["Ѕ"] = "Ʒ", -    ["Ꙁ"] = "Z", -    ["З"] = "Z", -    ["И"] = "I", -    ["І"] = "I", -    ["Ї"] = "I", -    ["Ћ"] = "G’", -    ["К"] = "K", -    ["Л"] = "L", -    ["М"] = "M", -    ["Н"] = "N", -    ["О"] = "O", -    ["П"] = "P", -    ["Р"] = "R", -    ["С"] = "S", -    ["Т"] = "T", -    ["У"] = "u", -    ["Ѹ"] = "U", -    --["ꙋ"] = "U", -    ["Ф"] = "F", -    ["Х"] = "X", -    ["Ѡ"] = "Ō", -    ["Ѿ"] = "Ot", -- U+047c -    ["Ѽ"] = "O!", -- U+047e -    ["Ꙍ"] = "O!", -- U+064C -    ["Ц"] = "C", -    ["Ч"] = "Č", -    ["Ш"] = "Š", -    ["Щ"] = "Št", -    ["Ъ"] = "Ŭ", -    ["Ы"] = "Y", -    ["Ꙑ"] = "Y",  -- U+a650 -    ["Ь"] = "Ĭ", -    ["Ѣ"] = "Ě", -    ["Ю"] = "Ju", -    ["Ꙗ"] = "Ja", -    ["Ѥ"] = "Je", -    ["Ѧ"] = "Ę", -    ["Ѩ"] = "Ję", -    ["Ѫ"] = "Ǫ", -    ["Ѭ"] = "Jǫ", -    ["Ѯ"] = "Ks", -    ["Ѱ"] = "Ps", -    ["Ѳ"] = "Th", -    ["Ѵ"] = "Ü", -    } - -    translit.tables["OCS \\quotation{scientific} transliteration uppercase"] = translit.ocs_upp - -    -- Note on the additional tables: these cover characters that are not defined -    -- in ISO 9 but have a “scientific” transliteration.  You may use them as -    -- complementary mapping to ISO 9, trading off homogenity for completeness. - -    ---------------------------------------------------------------------------------------- -    -- Lowercase additional pre-Peter cyrillic characters -- “scientific transliteration” -- -    ---------------------------------------------------------------------------------------- - -    translit.ocs_add_low = translit.make_add_dict{ -    ["ѕ"] = "dz", -- Mapped to ẑ in ISO 9 (Macedonian …) -    ["ѯ"] = "ks", -    ["ѱ"] = "ps", -    ["ѡ"] = "ô", -    ["ѿ"] = "ot", -- U+047f -    ["ѫ"] = "ǫ",  -- Mapped to ǎ in ISO 9. -    ["ѧ"] = "ę", -    ["ѭ"] = "jǫ", -    ["ѩ"] = "ję", -    ["ѥ"] = "je", -    ["ѹ"] = "u",  -- Digraph uk. -    ["ꙋ"] = "u",  -- Monograph uk, U+a64b.  (No glyph yet in the "fixed" font in February 2010 …) -    ["ꙑ"] = "y",  -- U+a651 -    } - -    translit.tables["OCS \\quotation{scientific} transliteration additional lowercase"] = translit.ocs_add_low - -    ---------------------------------------------------------------------------------------- -    -- Uppercase additional pre-Peter cyrillic characters -- “scientific transliteration” -- -    ---------------------------------------------------------------------------------------- - -    translit.ocs_add_upp = translit.make_add_dict{ -    ["Ѕ"] = "Dz", -    ["Ѯ"] = "Ks", -    ["Ѱ"] = "Ps", -    ["Ѡ"] = "Ô", -    ["Ѿ"] = "ot", -    ["Ѫ"] = "Ǫ", -    ["Ѧ"] = "Ę", -    ["Ѭ"] = "Jǫ", -    ["Ѩ"] = "Ję", -    ["Ѥ"] = "Je", -    ["Ѹ"] = "U",  -- Digraph uk. -    --["Ꙋ"] = "U",  -- Monograph Uk, U+a64a. -    ["Ꙑ"] = "Y",  -- U+a650 -    } - -    translit.tables["OCS \\quotation{scientific} transliteration additional uppercase"] = translit.ocs_add_upp -    translit.done_ocs = true -end - ---===========================================================================-- ---                              End Of Tables                                -- ---===========================================================================-- - -local function scientific (mode) -    local P, Cs = lpeg.P, lpeg.Cs -    local utfchar = translit.utfchar -    local addrules = translit.addrules - -    local cyr = translit.make_add_dict{} -    local cyruk, p_cyruk, p_cyr, scientific_parser - -    if mode == "iso9_ocs" or mode == "iso9_ocs_hack" then - -        environment.loadluafile("trans_tables_iso9") -        cyr = translit.ocs_add_low -            + translit.ocs_add_upp -            + translit.ocs_low -            + translit.ru_upp -            + translit.ru_low -            + translit.ru_old_upp -            + translit.ru_old_low -            + translit.non_ru_upp -            + translit.non_ru_low -            + translit.ocs_upp - -        if translit.deficient_font == "yes" then -            cyr = cyr + translit.ru_jer_hack -        end - -        p_cyr = addrules(cyr, p_cyr) - -        scientific_parser = Cs((p_cyr / cyr + utfchar)^0) - -    elseif mode == ("ocs") then - -        cyr = translit.ocs_low + translit.ocs_upp - -        p_cyruk = addrules(translit.ocs_uk, cyruk) -        p_cyr   = addrules(cyr,             p_cyr) - -        scientific_parser = Cs((p_cyruk / translit.ocs_uk -                              + p_cyr   / cyr -                              + utfchar)^0) - -    elseif mode == ("ocs_gla") then -        environment.loadluafile( "trans_tables_glag") -        cyr = translit.ocs_gla_low + translit.ocs_gla_upp - -        p_cyr = addrules(cyr, p_cyr) -        scientific_parser = Cs((p_cyr / cyr + utfchar)^0) -    end - -    return scientific_parser -end - - -translit.methods["iso9_ocs"] = function (text) -    local pname = "iso9_ocs" .. translit.deficient_font -    local p     = pcache[pname] -    if not p then -        p = scientific("iso9_ocs") -        pcache[pname] = p -    end -    return lpegmatch(p, text) -end - -translit.methods["ocs"] = function (text) -    local p = pcache["ocs"] -    if not p then -        p = scientific("ocs") -        pcache["ocs"] = p -    end -    return lpegmatch(p, text) -end - -translit.methods["ocs_gla"] = function (text) -    local p = pcache["ocs_gla"] -    if not p then -        p = scientific("ocs_gla") -        pcache["ocs_gla"] = p -    end -    return lpegmatch(p, text) -end - --- vim:ft=lua:ts=4:sw=4 diff --git a/tex/context/third/transliterator/trans_tables_sr.lua b/tex/context/third/transliterator/trans_tables_sr.lua deleted file mode 100644 index 4f549c5..0000000 --- a/tex/context/third/transliterator/trans_tables_sr.lua +++ /dev/null @@ -1,241 +0,0 @@ - ---===========================================================================-- ---                               Serbian                                     -- ---===========================================================================-- - -local translit  = thirddata.translit -local pcache    = translit.parser_cache -local lpegmatch = lpeg.match - - --- Special thanks to Mojca Miklavec and Arthur Reutenauer for their --- assistance in creating these transliteration routines. - -if not translit.done_serbian then -    -------------------------------------------- -    -- Lowercase Serbian (Cyrillic -> Latin)  -- -    -------------------------------------------- -    translit.sr_tolt_lower = translit.make_add_dict{ -        ["а"] = "a", -        ["б"] = "b", -        ["в"] = "v", -        ["г"] = "g", -        ["д"] = "d", -        ["ђ"] = "đ", -        ["е"] = "e", -        ["ж"] = "ž", -        ["з"] = "z", -        ["и"] = "i", -        ["ј"] = "j", -        ["к"] = "k", -        ["л"] = "l", -        ["љ"] = "lj", -        ["м"] = "m", -        ["н"] = "n", -        ["њ"] = "nj", -        ["о"] = "o", -        ["п"] = "p", -        ["р"] = "r", -        ["с"] = "s", -        ["т"] = "t", -        ["ћ"] = "ć", -        ["у"] = "u", -        ["ф"] = "f", -        ["х"] = "h", -        ["ц"] = "c", -        ["ч"] = "č", -        ["џ"] = "dž", -        ["ш"] = "š", -    } - -    translit.tables["Serbian Cyr->Lat Transliteration lowercase"] = translit.sr_tolt_lower - -    -------------------------------------------- -    -- Uppercase Serbian (Cyrillic -> Latin)  -- -    -------------------------------------------- - -    translit.sr_tolt_upper = translit.make_add_dict{ -        ["А"] = "A", -        ["Б"] = "B", -        ["В"] = "V", -        ["Г"] = "G", -        ["Д"] = "D", -        ["Ђ"] = "Đ", -        ["Е"] = "E", -        ["Ж"] = "Ž", -        ["З"] = "Z", -        ["И"] = "I", -        ["Ј"] = "J", -        ["К"] = "K", -        ["Л"] = "L", -        ["Љ"] = "Lj", -        ["М"] = "M", -        ["Н"] = "N", -        ["Њ"] = "Nj", -        ["О"] = "O", -        ["П"] = "P", -        ["Р"] = "R", -        ["С"] = "S", -        ["Т"] = "T", -        ["Ћ"] = "Ć", -        ["У"] = "U", -        ["Ф"] = "F", -        ["Х"] = "H", -        ["Ц"] = "C", -        ["Ч"] = "Č", -        ["Џ"] = "Dž", -        ["Ш"] = "Š", -    } - -    translit.tables["Serbian Cyr->Lat Transliteration uppercase"] = translit.sr_tolt_upper - -    local function __inverse_tab (t) -        local result = { } -        for k,v in next,t do result[v] = k end -        return result -    end - -    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)) - - -    --- Good reading up front: -    --- <http://en.wikipedia.org/wiki/User:Aleksandar_Šušnjar/Serbian_Wikipedia's_Challenges#Real-time_transliteration_for_display> -    --- <http://www.vokabular.org/forum/index.php?topic=3817.15> - -    local except = { -        ["konjug"]      = "конјуг", -        ["konjunk"]     = "конјунк", -        ["injekc"]      = "инјекц", -        ["injunkt"]     = "инјункт", -        ["panjelin"]    = "панјелин", -        ["tanjug"]      = "танјуг", -        ["vanjezič"]    = "ванјезич", -        ["vanjadransk"] = "ванјадранск", - -        ["nadžanj"]  = "наджањ", -        ["nadždrel"] = "надждрел", -        ["nadžet"]   = "наджет", -        ["nadživ"]   = "наджив", -        ["nadžnj"]   = "наджњ", -        ["nadžup"]   = "наджуп", -        ["odžal"]    = "оджал", -        ["odžar"]    = "оджар", -        ["odživ"]    = "оджив", -        ["odžubor"]  = "оджубор", -        ["odžur"]    = "оджур", -        ["odžvak"]   = "оджвак", -        ["podžanr"]  = "поджанр", -        ["podže"]    = "подже", -- “поджећи” -    } - -    local P = lpeg.P -    local sub, upper = unicode.utf8.sub, unicode.utf8.upper - -    local p_tocy, p_i_tocy, p_tolt, p_i_tolt - -    for left, right in next, except do -- generating exception patterns for both sides -        local Left  = upper(sub(left,  1, 1)) .. sub(left,  2) -        local Right = upper(sub(right, 1, 1)) .. sub(right, 2) -        local LEFT, RIGHT = upper(left), upper(right) - -        local p_i_left    = P(left)  / right  + P(Left)  / Right + P(LEFT)  / RIGHT -        local p_i_right   = P(right) / left   + P(Right) / Left  + P(RIGHT) / LEFT - -        local p_left  = P" " * p_i_left -        local p_right = P" " * p_i_right - -        if not p_tocy then -            p_tocy   = p_left -            p_i_tocy = p_i_left -            p_tolt   = p_right -            p_i_tolt = p_i_right -        else -            p_tocy   = p_tocy   + p_left -            p_i_tocy = p_i_tocy + p_i_left -            p_tolt   = p_tolt   + p_right -            p_i_tolt = p_i_tolt + p_i_right -        end -    end - -    local _p_hintchar = P"*" / "" -    local hintme      = "dln" -    local _p_tocy_hint, _p_tolt_hint - -    for left in hintme:utfcharacters() do -        local right = translit.sr_tocy_lower[left] -        local LEFT, RIGHT = upper(left), upper(right) -        if not _p_tocy_hint then -            _p_tocy_hint = P(left)  / right + P(LEFT)  / RIGHT -            _p_tolt_hint = P(right) / left  + P(RIGHT) / LEFT -        else -            _p_tocy_hint = _p_tocy_hint + P(left)  / right + P(LEFT)  / RIGHT -            _p_tolt_hint = _p_tolt_hint + P(right) / left  + P(RIGHT) / LEFT -        end -    end - -    translit.serbian_exceptions             = { } -    translit.serbian_exceptions.p_tocy      = p_tocy -    translit.serbian_exceptions.p_tolt      = p_tolt -    translit.serbian_exceptions.p_tocy_init = p_i_tocy -    translit.serbian_exceptions.p_tolt_init = p_i_tolt -    translit.serbian_exceptions.p_tocy_hint = _p_tocy_hint * _p_hintchar -    translit.serbian_exceptions.p_tolt_hint = _p_tolt_hint * _p_hintchar - -    translit.done_serbian = true -end - ---===========================================================================-- ---                              End Of Tables                                -- ---===========================================================================-- - - -local t = translit -local function sr (mode) -    local P, R, Cs = lpeg.P, lpeg.R, lpeg.Cs -    local utfchar  = translit.utfchar -    local modestr  = "p_" .. mode:match("to..$") -    local _p_sre   = t.serbian_exceptions[modestr] -    local _p_sre_i = t.serbian_exceptions[modestr .. "_init"] - -    local trl_sr   = translit.make_add_dict{} -    trl_sr         = t[mode.."_upper"] + t[mode.."_lower"] - -    -- transliteration from latin script requires macro handling …  -    local _p_macro = P[[\]] * R("az", "AZ")^1 -- assuming standard catcodes -    local _p_sr    = translit.addrules (trl_sr, _p_sr) / trl_sr -    if translit.hinting then -        _p_sr = t.serbian_exceptions[modestr .. "_hint"] + _p_sr -    end - -    local p_sr -    if translit.sr_except then -        p_sr = Cs(_p_sre_i^-1 * (_p_macro + _p_sre + _p_sr + utfchar)^0) -    else -        p_sr = Cs((_p_macro + _p_sr + utfchar)^0) -    end - -    return p_sr -end - -translit.methods["sr_tolt"] = function (text) -    local pname = "sr_tolt" .. tostring(translit.hinting) .. tostring(translit.sr_except) -    local p = pcache[pname] -    if not p then -        p = sr("sr_tolt") -        pcache[pname] = p -    end -    return lpegmatch(p, text) -end - -translit.methods["sr_tocy"] = function (text) -    local pname = "sr_tocy" .. tostring(translit.hinting) .. tostring(translit.sr_except) -    local p = pcache[pname] -    if not p then -        p = sr("sr_tocy") -        pcache[pname] = p -    end -    return lpegmatch(p, text) -end - --- vim:ft=lua:sw=4:ts=4 diff --git a/tex/context/third/transliterator/trans_tables_trsc.lua b/tex/context/third/transliterator/trans_tables_trsc.lua deleted file mode 100644 index fbc35d1..0000000 --- a/tex/context/third/transliterator/trans_tables_trsc.lua +++ /dev/null @@ -1,867 +0,0 @@ ---===================================================================-- ---                 Legacy national transliterations                  -- ---===================================================================-- - -local translit = thirddata.translit -local addrules = translit.addrules -local utfchar  = translit.utfchar - -local lpegmatch = lpeg.match -local tablepack = table.pack -- lua 5.2 precaution - ---------------------------------- --- German simple transcription -- ---------------------------------- --- Reference:   „DUDEN. Rechtschreibung der deutschen Sprache“; ---              20. Aufl., ---              Mannheim et. al. 1991. - -if lpeg.version() == "0.9" and not translit.done_ru_trsc_de then - -    -------------------------------------------------------- -    -- Lowercase German simple transcription---first pass -- -    -------------------------------------------------------- - -    translit.ru_trsc_low_first = translit.make_add_dict{ -      [" е"] = " je", -      ["ъе"] = "je", -      ["ье"] = "je", -      [" ё"] = " jo", -      ["ъё"] = "jo", -      ["ьё"] = "jo", -      ["жё"] = "scho", -      ["чё"] = "tscho", -      ["шё"] = "scho", -      ["щё"] = "schtscho", -      ["ье"] = "je", -      ["ьи"] = "ji", -      ["ьо"] = "jo", -      ["ий"] = "i", -      ["ый"] = "y", -      ["кс"] = "x" -    } - -    translit.tables["German transcription first pass lowercase"] -      = translit.ru_trsc_low_first - -    -------------------------------------------------------- -    -- Uppercase German simple transcription---first pass -- -    -------------------------------------------------------- - -    translit.ru_trsc_upp_first = translit.make_add_dict{ -      [" Е"] = " Je", -      ["Ъe"] = "Je",  -- Pedantic, isn't it? -      ["Ье"] = "Je", -      [" Ё"]  = "Jo", -      ["Ъё"] = "Jo", -      ["Ьё"] = "Jo", -      ["Жё"] = "Scho", -      ["Чё"] = "Tscho", -      ["Шё"] = "Scho", -      ["Щё"] = "Schtscho", -      ["Кс"] = "ks" -    } - -    translit.tables["German transcription first pass uppercase"] -      = translit.ru_trsc_upp_first - -    ------------------------------------------- -    -- Lowercase German simple transcription -- -    ------------------------------------------- - -    translit.ru_trsc_low = translit.make_add_dict{ -      ["а"] = "a", -      ["б"] = "b", -      ["в"] = "w", -      ["г"] = "g", -      ["д"] = "d", -      ["е"] = "e", -      ["ё"] = "jo", -      ["ж"] = "sch", -      ["з"] = "s", -      ["и"] = "i", -      ["й"] = "i", -      ["к"] = "k", -      ["л"] = "l", -      ["м"] = "m", -      ["н"] = "n", -      ["о"] = "o", -      ["п"] = "p", -      ["р"] = "r", -      ["с"] = "s", -      ["т"] = "t", -      ["у"] = "u", -      ["ф"] = "f", -      ["х"] = "ch", -      ["ц"] = "z", -      ["ч"] = "tsch", -      ["ш"] = "sch", -      ["щ"] = "schtsch", -      ["ъ"] = "", -      ["ы"] = "y", -      ["ь"] = "", -      ["э"] = "e", -      ["ю"] = "ju", -      ["я"] = "ja"  -    } - -    translit.tables["German transcription second pass lowercase"] -      = translit.ru_trsc_low - -    ------------------------------------------- -    -- Uppercase German simple transcription -- -    ------------------------------------------- - -    translit.ru_trsc_upp = translit.make_add_dict{ -      ["А"] = "A", -      ["Б"] = "B", -      ["В"] = "W", -      ["Г"] = "G", -      ["Д"] = "D", -      ["Е"] = "E", -      ["Ё"] = "Jo", -      ["Ж"] = "Sch", -      ["З"] = "S", -      ["И"] = "I", -      ["Й"] = "J", -      ["К"] = "K", -      ["Л"] = "L", -      ["М"] = "M", -      ["Н"] = "N", -      ["О"] = "O", -      ["П"] = "P", -      ["Р"] = "R", -      ["С"] = "S", -      ["Т"] = "T", -      ["У"] = "U", -      ["Ф"] = "F", -      ["Х"] = "Ch", -      ["Ц"] = "Z", -      ["Ч"] = "Tsch", -      ["Ш"] = "Sch", -      ["Щ"] = "Schtsch", -      ["Ъ"] = "", -      ["Ы"] = "Y", -      ["Ь"] = "", -      ["Э"] = "E", -      ["Ю"] = "Ju", -      ["Я"] = "Ja"  -    } - -    translit.tables["German transcription second pass uppercase"] -      = translit.ru_trsc_upp - -    translit.ru_trsc_iy = {"и", "ы", "И", "Ы"} - -    function translit.gen_rules_de() -        -- The following are more interesting than the previous tables -        -- because they implement various rules.  For instance the -        -- table \type{translit.ru_trsc_irule} holds a substitution -        -- dictionary for all possible combinations (including nonsense -        -- galore) of a vowel preceding an “й” (Russian short i) -        -- preceding a consonant; here we access the sets of Russian -        -- vowels as well consonants that were defined earlier. - -        -- The й-rule, VйC -> ViC -        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 -            local new_post = vow .. "i" .. cons -            translit.ru_trsc_irule[new_ante] = new_post -        end -        end - -        translit.tables["German transcription i-rule"] -          = translit.ru_trsc_irule - -        -- The second й-rule, йV -> jV && [иы]йC -> [иы]jC -        translit.ru_trsc_jrule = {} -        for _, vow in ipairs(translit.ru_vowels) do -        local new_ante = "й" .. vow -        local new_post = "j" .. vow -        translit.ru_trsc_jrule[new_ante] = new_post -        end - -        for _, cons in ipairs(translit.ru_consonants) do -        for _, iy in ipairs(translit.ru_trsc_iy) do -            local new_ante = iy .. "й" .. cons -            local new_post = iy .. "j" .. cons -            translit.ru_trsc_jrule[new_ante] = new_post -        end -        end - -        translit.tables["German transcription j-rule"] -          = translit.ru_trsc_jrule - -        -- The с-rule, VсV -> VssV -        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 -        local new_post = vow_1 .. "ss" .. vow_2 -            translit.ru_trsc_srule[new_ante] = new_post -        end -        end - -        translit.tables["German transcription s-rule"] -          = translit.ru_trsc_srule - -        -- The sharp-s-rule, Vсх -> Vßх -        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 .. "ßх" -        translit.ru_trsc_sharpsrule[new_ante] = new_post -        end - -        translit.tables["German transcription sharp-s-rule"] -          = translit.ru_trsc_sharpsrule - -        -- The е-rule, Vе -> Vje -        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" -        translit.ru_trsc_jerule[new_ante] = new_post -        end - -        translit.tables["German transcription je-rule"] -          = translit.ru_trsc_jerule - -        -- The ё-rule, Vё -> Vjo -        -- This should be redundant as [жцчшщ]ё -> o, else ё -> jo . -        -- Somebody should teach those DUDEN-guys parsimony. -        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" -        translit.ru_trsc_jorule[new_ante] = new_post -        end - -        translit.tables["German transcription (redundant) jo-rule"] -          = translit.ru_trsc_jorule - -    end - -    translit.gen_rules_de() -    translit.done_ru_trsc_de = true -end - -if lpeg.version() == "0.10" and not translit.done_ru_trsc_de then - -    -- This is about *eight* times as fast as the old pattern. Just -    -- waiting for v0.10 to make it into luatex. - -    local de_tables = { } - -    -------------------------------------------------------- -    -- Lowercase German simple transcription---first pass -- -    -------------------------------------------------------- - -    de_tables[1] = { -- lowercase initial -        [" е"] = " je",  ["ъе"] = "je",       ["ье"] = "je", -        [" ё"] = " jo",  ["ъё"] = "jo",       ["ьё"] = "jo", -        ["жё"] = "scho", ["цё"] = "scho",     ["чё"] = "zo", -        ["шё"] = "scho", ["щё"] = "schtscho", ["ье"] = "je", -        ["ьи"] = "ji",   ["ьо"] = "jo",       ["ий"] = "i", -        ["ый"] = "y",    ["кс"] = "x" -- Extraordinarily stupid one. -    } -    translit.tables["German transcription first pass lowercase"] -      = de_tables[1] - -    -------------------------------------------------------- -    -- Uppercase German simple transcription---first pass -- -    -------------------------------------------------------- - -    de_tables[2] = { -- uppercase initial -        [" Е"] = " Je",      ["Ъe"] = "Je",    ["Ье"] = "Je", -        [" Ё"]  = "Jo",      ["Ъё"] = "Jo",    ["Ьё"] = "Jo", -        ["Жё"] = "Scho",     ["Чё"] = "Tscho", ["Шё"] = "Scho", -        ["Щё"] = "Schtscho", ["Кс"] = "ks" -    } -    translit.tables["German transcription first pass uppercase"] -      = de_tables[2] - -    ------------------------------------------- -    -- Lowercase German simple transcription -- -    ------------------------------------------- - -    de_tables[3] = { -- lowercase -        ["а"] = "a",    ["б"] = "b",   ["в"] = "w",  ["г"] = "g", -        ["д"] = "d",    ["е"] = "e",   ["ё"] = "jo", ["ж"] = "sch", -        ["з"] = "s",    ["и"] = "i",   ["й"] = "i",  ["к"] = "k", -        ["л"] = "l",    ["м"] = "m",   ["н"] = "n",  ["о"] = "o", -        ["п"] = "p",    ["р"] = "r",   ["с"] = "s",  ["т"] = "t", -        ["у"] = "u",    ["ф"] = "f",   ["х"] = "ch", ["ц"] = "z", -        ["ч"] = "tsch", ["ш"] = "sch", ["щ"] = "schtsch", -        ["ъ"] = "",     ["ы"] = "y",   ["ь"] = "",   ["э"] = "e", -        ["ю"] = "ju",   ["я"] = "ja"  -    } -    translit.tables["German transcription second pass lowercase"] -      = de_tables[3] - -    ------------------------------------------- -    -- Uppercase German simple transcription -- -    ------------------------------------------- - -    de_tables[4] = { -- uppercase -        ["А"] = "A",    ["Б"] = "B",   ["В"] = "W",      ["Г"] = "G", -        ["Д"] = "D",    ["Е"] = "E",   ["Ё"] = "Jo",     ["Ж"] = "Sch", -        ["З"] = "S",    ["И"] = "I",   ["Й"] = "J",      ["К"] = "K", -        ["Л"] = "L",    ["М"] = "M",   ["Н"] = "N",      ["О"] = "O", -        ["П"] = "P",    ["Р"] = "R",   ["С"] = "S",      ["Т"] = "T", -        ["У"] = "U",    ["Ф"] = "F",   ["Х"] = "Ch",     ["Ц"] = "Z", -        ["Ч"] = "Tsch", ["Ш"] = "Sch", ["Щ"] = "Schtsch",["Ъ"] = "", -        ["Ы"] = "Y",    ["Ь"] = "",    ["Э"] = "E",      ["Ю"] = "Ju", -        ["Я"] = "Ja" -    } -    translit.tables["German transcription second pass uppercase"] -      = de_tables[4] - -    local B, P, Cs = lpeg.B, lpeg.P, lpeg.Cs - -    -- All chars are 2-byte. -    local Co = P{ -       P"б" + "в" + "г" + "д" + "ж" + "з" + "к" + "л" + "м" + "н" + -        "п" + "р" + "с" + "т" + "ф" + "х" + "ц" + "ч" + "ш" + "щ" + -        "ъ" + "ь" + -        "Б" + "В" + "Г" + "Д" + "Ж" + "З" + "К" + "Л" + "М" + "Н" + -        "П" + "Р" + "С" + "Т" + "Ф" + "Х" + "Ц" + "Ч" + "Ш" + "Щ" + -        "Ъ" + "Ь" -    } - -    local Vo = P{ -       P"а" + "е" + "ё" + "и" + "й" + "о" + "у" + "ы" + "э" + "я" + -        "ю" + "А" + "Е" + "Ё" + "И" + "Й" + "О" + "У" + "Ы" + "Э" + -        "Я" + "Ю" -    } - -    local iy = P"и" + P"ы" + P"И" + P"Ы" - -    ------------------------------------------- -    -- Pattern generation. -    ------------------------------------------- - -    local p_transcript - -    for _, set in next, de_tables do -        for str, rep in next, set do -            if not p_transcript then -- it’ll be empty initially -                p_transcript = P(str) / rep -            else -                p_transcript = p_transcript + (P(str) / rep) -            end -        end -    end - -    local irule  = B(Vo,2) * Cs(P"й") * #Co   / "i" -    local iyrule = B(iy,2) * Cs(P"й") * #Co   / "j" -    local jrule  =           Cs(P"й") * #Vo   / "j" -    local srule  = B(Vo,2) * Cs(P"с") * #Vo   / "ss" -    local ssrule = B(Vo,2) * Cs(P"с") * #P"х" / "ß" -    local jerule = B(Vo,2) * Cs(P"е")         / "je" -    local jorule = B(Vo,2) * Cs(P"ё")         / "jo" - -    translit.future_ru_transcript_de -      = Cs((iyrule + jrule + irule -          + jerule + srule + ssrule -          + jorule + p_transcript + 1)^0 -        ) -end - -if not translit.done_ru_trsc_en then - -    --------------------------------------------------------- -    -- Lowercase English simple transcription---first pass -- -    --------------------------------------------------------- - -    translit.ru_trsc_en_low_first = translit.make_add_dict{ -      [" е"] = " ye", -      ["ъе"] = "ye", -      ["ье"] = "ye", -      ["ье"] = "ye", -      ["ьи"] = "yi", -    } - -    translit.tables["English transcription lowercase first pass"] -      = translit.ru_trsc_en_low_first - -    --------------------------------------------------------- -    -- Uppercase English simple transcription---first pass -- -    --------------------------------------------------------- - -    translit.ru_trsc_en_upp_first = translit.make_add_dict{ -      [" Е"] = " Ye", -      ["Ъe"] = "Ye", -      ["Ье"] = "Ye", -    } - -    translit.tables["English transcription uppercase first pass"] -      = translit.ru_trsc_en_upp_first - -    -------------------------------------------- -    -- Lowercase English simple transcription -- -    -------------------------------------------- - -    translit.ru_trsc_en_low = translit.make_add_dict{ -      ["а"] = "a", -      ["б"] = "b", -      ["в"] = "v", -      ["г"] = "g", -      ["д"] = "d", -      ["е"] = "e", -      ["ё"] = "e", -      ["ж"] = "zh", -      ["з"] = "z", -      ["и"] = "i", -      ["й"] = "y", -      ["к"] = "k", -      ["л"] = "l", -      ["м"] = "m", -      ["н"] = "n", -      ["о"] = "o", -      ["п"] = "p", -      ["р"] = "r", -      ["с"] = "s", -      ["т"] = "t", -      ["у"] = "u", -      ["ф"] = "f", -      ["х"] = "kh", -      ["ц"] = "ts", -      ["ч"] = "ch", -      ["ш"] = "sh", -      ["щ"] = "shsh", -      ["ъ"] = "", -      ["ы"] = "y", -      ["ь"] = "", -      ["э"] = "e", -      ["ю"] = "yu", -      ["я"] = "ya" -    } - -    translit.tables["English transcription lowercase second pass"] -      = translit.ru_trsc_en_low - -    -------------------------------------------- -    -- Uppercase English simple transcription -- -    -------------------------------------------- - -    translit.ru_trsc_en_upp = translit.make_add_dict{ -      ["А"] = "A", -      ["Б"] = "B", -      ["В"] = "V", -      ["Г"] = "G", -      ["Д"] = "D", -      ["Е"] = "E", -      ["Ё"] = "E", -      ["Ж"] = "Zh", -      ["З"] = "Z", -      ["И"] = "I", -      ["Й"] = "Y", -      ["К"] = "K", -      ["Л"] = "L", -      ["М"] = "M", -      ["Н"] = "N", -      ["О"] = "O", -      ["П"] = "P", -      ["Р"] = "R", -      ["С"] = "S", -      ["Т"] = "T", -      ["У"] = "U", -      ["Ф"] = "F", -      ["Х"] = "Kh", -      ["Ц"] = "Ts", -      ["Ч"] = "Ch", -      ["Ш"] = "Sh", -      ["Щ"] = "Shsh", -      ["Ъ"] = "", -      ["Ы"] = "Y", -      ["Ь"] = "", -      ["Э"] = "E", -      ["Ю"] = "Yu", -      ["Я"] = "Ya" -    } - -    translit.tables["English transcription uppercase second pass"] -      = translit.ru_trsc_en_upp - -    function translit.gen_rules_en () -        -- The english е-rule, Vе -> Vye -        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" -            translit.ru_trsc_en_jerule[new_ante] = new_post -        end - -        translit.tables["English transcription ye-rule"] -          = translit.ru_trsc_en_jerule -    end - -    translit.gen_rules_en() -    translit.done_ru_trsc_en = true -end - - -if not translit.done_ru_trsc_cz then -    ----------------------------------- -    -- Lowercase Czech transcription -- -    ----------------------------------- - -    translit.ru_trsc_cz_low = translit.make_add_dict{ -      ["а"] = "a", -      ["б"] = "b", -      ["в"] = "v", -      ["г"] = "g", -      ["д"] = "d", -      ["е"] = "e", -      ["ё"] = "ë", -      ["ж"] = "ž", -      ["з"] = "z", -      ["и"] = "i", -      ["й"] = "j", -      ["к"] = "k", -      ["л"] = "l", -      ["м"] = "m", -      ["н"] = "n", -      ["о"] = "o", -      ["п"] = "p", -      ["р"] = "r", -      ["с"] = "s", -      ["т"] = "t", -      ["у"] = "u", -      ["ф"] = "f", -      ["х"] = "ch", -      ["ц"] = "c", -      ["ч"] = "č", -      ["ш"] = "š", -      ["щ"] = "šč", -      ["ъ"] = "ъ", -      ["ы"] = "y", -      ["ь"] = "ь", -      ["э"] = "è", -      ["ю"] = "ju", -- Maybe we should do things like ню -> ňu and -      ["я"] = "ja", -- тя -> ťa, but that would complicate things a -    }               -- bit and linguists might not agree. - -    translit.tables["Czech transcription lowercase"] -      = translit.ru_trsc_cz_low - -    ----------------------------------- -    -- Uppercase Czech transcription -- -    ----------------------------------- - -    translit.ru_trsc_cz_upp = translit.make_add_dict{ -      ["А"] = "A", -      ["Б"] = "B", -      ["В"] = "V", -      ["Г"] = "G", -      ["Д"] = "D", -      ["Е"] = "E", -      ["Ё"] = "Ë", -      ["Ж"] = "Ž", -      ["З"] = "Z", -      ["И"] = "I", -      ["Й"] = "J", -      ["К"] = "K", -      ["Л"] = "L", -      ["М"] = "M", -      ["Н"] = "N", -      ["О"] = "O", -      ["П"] = "P", -      ["Р"] = "R", -      ["С"] = "S", -      ["Т"] = "T", -      ["У"] = "U", -      ["Ф"] = "F", -      ["Х"] = "Ch", -      ["Ц"] = "C", -      ["Ч"] = "Č", -      ["Ш"] = "Š", -      ["Щ"] = "Šč", -      ["Ъ"] = "Ъ", -      ["Ы"] = "Y", -      ["Ь"] = "Ь", -      ["Э"] = "È", -      ["Ю"] = "Ju", -      ["Я"] = "Ja"  -    } - -    translit.tables["Czech transcription uppercase"] -      = translit.ru_trsc_cz_upp - -    ---------------------------------------------- -    -- Lowercase Additional Czech Transcription -- -    ---------------------------------------------- - -    translit.ru_trsc_cz_add_low = translit.make_add_dict{ -    ["ѕ"] = "dz", -    ["з"] = "z", -    ["ꙁ"] = "z", -    ["і"] = "ï", -    ["ѹ"] = "u", -    ["ѡ"] = "ō", -    ["ѣ"] = "ě", -    ["ѥ"] = "je", -    ["ѧ"] = "ę", -    ["ѩ"] = "ję", -    ["ѫ"] = "ǫ", -    ["ѭ"] = "jǫ", -    ["ѯ"] = "ks", -    ["ѱ"] = "ps", -    ["ѳ"] = "th", -    ["ѵ"] = "ÿ", -    } - -    translit.tables[ -      "Czech transcription for OCS and pre-1918 lowercase"] -      = translit.ru_trsc_cz_add_low - - -    ---------------------------------------------- -    -- Uppercase Additional Czech Transcription -- -    ---------------------------------------------- - -    translit.ru_trsc_cz_add_upp = translit.make_add_dict{ -    ["Ѕ"] = "Dz", -    ["З"] = "Z", -    ["Ꙁ"] = "Z", -    ["І"] = "Ï", -    ["Ѹ"] = "U", -    ["Ѡ"] = "Ō", -    ["Ѣ"] = "Ě", -    ["Ѥ"] = "Je", -    ["Ѧ"] = "Ę", -    ["Ѩ"] = "Ję", -    ["Ѫ"] = "Ǫ", -    ["Ѭ"] = "Jǫ", -    ["Ѯ"] = "Ks", -    ["Ѱ"] = "Ps", -    ["Ѳ"] = "Th", -    ["Ѵ"] = "Ÿ", -    } - -    translit.tables[ -      "Czech transcription for OCS and pre-1918 uppercase"] -      = translit.ru_trsc_cz_add_upp -    translit.done_ru_trsc_cz = true -end - ---===================================================================-- ---                           End Of Tables                           -- ---===================================================================-- - -local function transcript (mode, text) -    local P, R, S, V, Cs = lpeg.P, lpeg.R, lpeg.S, lpeg.V, lpeg.Cs - -    local trsc_parser, p_rules, capt, p_de - -    local function tab_subst (s, ...) -        local sets = { ... } -        local p_tmp, tmp = nil, translit.make_add_dict{} -        for n=1, #sets do -            local set = sets[n] -            tmp = tmp + set -        end -        p_tmp = addrules(tmp, p_tmp) -        local fp = Cs((Cs(P(p_tmp) / tmp) + utfchar)^0) -        return lpegmatch(fp, s) -    end - -    if mode == "ru_transcript_en" then - -        text = tab_subst(text, translit.ru_trsc_en_jerule) -        text = tab_subst(text, -                  translit.ru_trsc_en_low_first, -                  translit.ru_trsc_en_upp_first) -        text = tab_subst(text, -                  translit.ru_trsc_en_low, -                  translit.ru_trsc_en_upp) - -        return text - -    elseif mode == "ru_transcript_en_exp" then - -        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 = translit.make_add_dict{} - -        twochar = addrules( translit.ru_trsc_en_low_first, twochar) -        twochar = addrules( translit.ru_trsc_en_upp_first, twochar) - -        tworepl = translit.ru_trsc_en_low_first -                + translit.ru_trsc_en_upp_first - -        -- The е-rule, Vе -> Vye -        local function V_je (s) -            local ante = utf.sub(s, 1, 1) -            return en_low_upp[ante] .. "ye" -        end - -        local jerule    = Cs((vow * "е")        / V_je) - -        local dvoje     = Cs(twochar            / tworepl) -        local other     = Cs((utfchar)          / en_low_upp) - -        local g = Cs((dvoje + jerule + other + utfchar)^0) - -        text = g:match(text) - -        return text - -    elseif mode == "ru_cz" or mode ==  "ocs_cz" then -        text = tab_subst(text, -                         translit.ru_trsc_cz_low, -                         translit.ru_trsc_cz_upp) -        if mode == "ocs_cz" then -            text = tab_subst(text, -                      translit.ru_trsc_cz_add_low, -                      translit.ru_trsc_cz_add_upp) -        end -        return text -    end - -    if mode == "ru_transcript_de_exp" then - -        local vow, con, iy -        vow = addrules(translit.ru_vowels,     vow) -        con = addrules(translit.ru_consonants, con) -        iy  = addrules(translit.ru_trsc_iy,    iy ) - -        local de_low_upp = translit.make_add_dict{} -        de_low_upp = translit.ru_trsc_upp + translit.ru_trsc_low - -        local twochar -        local tworepl = translit.make_add_dict{} - -        twochar = addrules( translit.ru_trsc_low_first, twochar ) -        twochar = addrules( translit.ru_trsc_upp_first, twochar ) - -        tworepl = translit.ru_trsc_low_first -                + translit.ru_trsc_upp_first - -        -- The й-rule, VйC -> ViC -        local function V_i_C (s) -            local ante = utf.sub(s, 1, 1) -            local post = utf.sub(s, 3, 3) -            return de_low_upp[ante] .. "i" .. de_low_upp[post] -        end - -        -- The second й-rule, йV -> jV && [иы]йC -> [иы]jC -        local function iy_j_C (s) -            local ante = utf.sub(s, 1, 1) -            local post = utf.sub(s, 3, 3) -            return de_low_upp[ante] .. "j" .. de_low_upp[post] -        end - -        local function j_V (s) -            local post = utf.sub(s, 2, 2) -            return "j" .. de_low_upp[post] -        end - -        -- The с-rule, VсV -> VssV -        local function V_ss_V (s) -            local ante = utf.sub(s, 1, 1) -            local post = utf.sub(s, 3, 3) -            return de_low_upp[ante] .. "ss" .. de_low_upp[post] -        end - -        -- The sharp-s-rule, Vсх -> Vßх -        local function V_sz_ch (s) -            local ante = utf.sub(s, 1, 1) -            return de_low_upp[ante] .. "ßch" -        end - -        -- The е-rule, Vе -> Vje -        local function V_je (s) -            local ante = utf.sub(s, 1, 1) -            return de_low_upp[ante] .. "je" -        end - -        -- Reapplying V_je on its result + next char would make the -        -- following two rules obsolete. -        local function V_jeje (s) -            local ante = utf.sub(s, 1, 1) -            return de_low_upp[ante] .. "jeje" -        end - -        local function V___je (s) -            local ante = utf.sub(s, 1, 1) -            return de_low_upp[ante] .. "jeje" -        end - -        -- The ё-rule, Vё -> Vjo -        -- This should be redundant as [жцчшщ]ё -> o, else ё -> jo . -        -- Somebody should teach those DUDEN guys parsimony. -        local function V_jo (s) -            local ante = utf.sub(s, 1, 1) -            return de_low_upp[ante] .. "jo" -        end - -        local iyrule    = Cs((iy * "й" * con)   / iy_j_C) -        local jrule     = Cs(("й" * vow)        / j_V) -        local irule     = Cs((vow * "й" * con)  / V_i_C) - -        local ssrule    = Cs((vow * "с" * vow)  / V_ss_V) -        local szrule    = Cs((vow * "сх")       / V_sz_ch) - -        --local _jrule    = Cs((vow * "ее")       / V___je) -        local jjrule    = Cs((vow * "ее")       / V_jeje) -        local jerule    = Cs((vow * "е")        / V_je) -        local jorule    = Cs((vow * "ё")        / V_jo) - -        local dvoje     = Cs(twochar            / tworepl) -        local other     = Cs((utfchar)          / de_low_upp) - -        local izhe      = iyrule + jrule + irule -        local slovo     = ssrule + szrule -        local jest      = jjrule + jerule + jorule - -        local g = Cs((izhe + slovo + jest + dvoje + other + utfchar)^0) - -        text = g:match(text) -        return text - -    elseif mode == "ru_transcript_de" then - -        if lpeg.version() == "0.9" then - -            text = tab_subst(text, translit.ru_trsc_jrule) -            text = tab_subst(text, translit.ru_trsc_irule) -            text = tab_subst(text, translit.ru_trsc_jerule) -            text = tab_subst(text, translit.ru_trsc_srule) -            text = tab_subst(text, translit.ru_trsc_sharpsrule) -            text = tab_subst(text, translit.ru_trsc_jorule) -            text = tab_subst(text, -                      translit.ru_trsc_upp_first, -                      translit.ru_trsc_low_first) -            text = tab_subst(text, -                      translit.ru_trsc_upp, -                      translit.ru_trsc_low) - -            return text -        elseif lpeg.version() == "0.10" then -            return translit.future_ru_transcript_de:match(text) -        end - -    end - -end - -translit.methods ["ru_transcript_de"] -  = function (text) return transcript("ru_transcript_de"    , text) end -translit.methods ["ru_transcript_de_exp"] -  = function (text) return transcript("ru_transcript_de_exp", text) end -translit.methods ["ru_transcript_en"] -  = function (text) return transcript("ru_transcript_en"    , text) end -translit.methods ["ru_transcript_en_exp"] -  = function (text) return transcript("ru_transcript_en_exp", text) end -translit.methods ["ru_cz"] -  = function (text) return transcript("ru_cz"               , text) end -translit.methods ["ocs_cz"] -  = function (text) return transcript("ocs_cz"              , text) end - --- vim:sw=4:ts=4:expandtab:ft=lua diff --git a/tex/context/third/transliterator/transliterator.lua b/tex/context/third/transliterator/transliterator.lua deleted file mode 100644 index c101ec5..0000000 --- a/tex/context/third/transliterator/transliterator.lua +++ /dev/null @@ -1,283 +0,0 @@ -#!/usr/bin/env texlua --------------------------------------------------------------------------------- ---         FILE:  transliterator.lua ---        USAGE:  to be called by t-transliterator.mkiv ---  DESCRIPTION:  basic lua environment for the Transliterator module --- REQUIREMENTS:  latest ConTeXt MkIV ---       AUTHOR:  Philipp Gesang (Phg), <phg42.2a@gmail.com> ---      CREATED:  2010-12-23 22:12:31+0100 --------------------------------------------------------------------------------- --- - -thirddata               = thirddata or { } -thirddata.translit      = thirddata.translit or { } -local translit          = thirddata.translit -translit.tables         = translit.tables  or { } -translit.methods        = translit.methods or { } -translit.deficient_font = "no" -translit.parser_cache   = { } - -local utf8     = unicode and unicode.utf8 or utf8 -local utf8byte = utf8.byte -local utf8len  = utf8.len - --------------------------------------------------------------------------------- --- Predefining vowel lists --------------------------------------------------------------------------------- --- If you haven't heard of cyrillic scripts until now you might want to read --- at least the first 15 pages of  --- http://www.uni-giessen.de/partosch/eurotex99/berdnikov2.pdf --- before you continue reading this file. -translit.ru_vowels = {"а", "е", "ё", "и", "й", "о", "у", "ы", "э", "ю", "я", -                      "А", "Е", "Ё", "И", "Й", "О", "У", "Ы", "Э", "Ю", "Я"} -translit.ru_consonants = {"б", "в", "г", "д", "ж", "з", "к", "л", "м", "н",  -                          "п", "р", "с", "т", "ф", "х", "ц", "ч", "ш", "щ", -                          "Б", "В", "Г", "Д", "Ж", "З", "К", "Л", "М", "Н",  -                          "П", "Р", "С", "Т", "Ф", "Х", "Ц", "Ч", "Ш", "Щ"} - --- Substitution tables are the very heart of the Transliterator.  Due to the --- nature of languages and scripts exhaustive substitution is the simplest --- method for transliterations and transcriptions unless they are one-to-one --- mappings like those defined in ISO~9. --- --- To achieve better reusability we split the tables into segments, the most --- obvious being the \type{*_low} and \type{*_upp} variants for sets of lowercase --- and uppercase characters.  Another set is constituted by e.~g. the --- \type{ru_old*} tables that allow adding transcription of historical --- characters if needed; by the way those are included in the default --- transliteration mode \type{ru_old}. - --- Tables can be found in separate Lua files. --- See {\tt --- trans_tables_glag.lua --- trans_tables_gr.lua --- trans_tables_iso9.lua --- trans_tables_scntfc.lua --- and --- trans_tables_trsc.lua.} - --------------------------------------------------------------------------------- --- Metatables allow for lazy concatenation. --------------------------------------------------------------------------------- - -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 -    } - -    translit.make_add_dict = function (dict) -        return setmetatable(dict, Dict_add) -    end -end - --------------------------------------------------------------------------------- --- Auxiliary Functions --------------------------------------------------------------------------------- - --- Generate a rule pattern from hash table. -do -    local P, R, V = lpeg.P, lpeg.R, lpeg.V - -    -- multi-char rules first -    translit.addrules = function (dict, rules) -        local by_length, occurring_lengths = { }, { } -        for chr, _ in next, dict do -            local l = utf8len(chr) -            if not by_length[l] then -                by_length[l] = { } -                occurring_lengths[#occurring_lengths+1] = l -            end -            by_length[l][#by_length[l]+1] = chr -        end -        table.sort(occurring_lengths) -        for i=#occurring_lengths, 1, -1 do -            local l = occurring_lengths[i] -            for _, chr in next, by_length[l] do -                rules = rules and rules + P(chr) or P(chr) -            end -        end -        return rules -    end - --- Modified version of Hans’s utf pattern (l-lpeg.lua). - - -    translit.utfchar = P{ -        V"utf8one" + V"utf8two" + V"utf8three" + V"utf8four", - -        utf8next  = R("\128\191"), -        utf8one   = R("\000\127"), -        utf8two   = R("\194\223") * V"utf8next", -        utf8three = R("\224\239") * V"utf8next" * V"utf8next", -        utf8four  = R("\240\244") * V"utf8next" * V"utf8next" * V"utf8next", -    } -end - --- We might want to have all the table data nicely formatted by \CONTEXT\  --- itself, here's how we'll do it.  \type{translit.show_tab(t)} handles a --- single table \type{t}, builds a Natural TABLE out of its content and --- hands it down to the machine for typesetting.  For debugging purposes it --- does not only print the replacement pairs but shows their code points as --- well. - --- handle the input chars and replacement values -local strempty = function (s)  -    if s == "" then return "nil" -    else  -        -- add the unicode positions of the replacements (can be more -        -- than one with composed diacritics -        local i = 1 -        local r = "" -        repeat -            r = r .. utf8byte(s,i) .. " " -            i = i + 1 -        until utf8byte(s,i) == nil -        return r -    end -end - -function translit.show_tab (tab) -    -- Output a transliteration table, nicely formatted with natural tables. -    -- Lots of calls to context() but as it’s only a goodie this doesn’t -    -- really matter. -    local cnt = 0 -    context.setupTABLE({"r"}, {"each"},     {style="\\tfx", align="center"}) -    context.setupTABLE({"c"}, {"each"},     {frame="off"}) -    context.setupTABLE({"r"}, {"each"},     {frame="off"}) -    context.setupTABLE({"c"}, {"first"},    {style="italic"}) -    context.setupTABLE({"r"}, {"first"},    {style="bold", topframe="on", bottomframe="on"}) -    context.setupTABLE({"r"}, {"last"},     {style="bold", topframe="on", bottomframe="on"}) -    context.bTABLE({split="yes", option="stretch"}) -        context.bTABLEhead() -        context.bTR() -            context.bTH() context("number")         context.eTH() -            context.bTH() context("letters")        context.eTH() -            context.bTH() context("n")              context.eTH() -            context.bTH() context("replacement")    context.eTH() -            context.bTH() context("n")              context.eTH() -            context.bTH() context("bytes")          context.eTH() -            context.bTH() context("repl. bytes")    context.eTH() -        context.eTR() -        context.eTABLEhead() -        context.bTABLEbody() - -        for key, val in next,tab do -            cnt = cnt + 1 -            context.bTR() -            context.bTC() context(cnt)              context.eTC() -            context.bTC() context(key)              context.eTC() -            context.bTC() context(string.len(key))  context.eTC() -            context.bTC() context(val)              context.eTC() -            context.bTC() context(string.len(val))  context.eTC() -            context.bTC() context(strempty(key))    context.eTC() -            context.bTC() context(strempty(val))    context.eTC() -            context.eTR() -        end - -        context.eTABLEbody() -        context.bTABLEfoot() context.bTR() -        context.bTC() context("number")       context.eTC() -        context.bTC() context("letters")      context.eTC() -        context.bTC() context("n")            context.eTC() -        context.bTC() context("replacement")  context.eTC() -        context.bTC() context("n")            context.eTC() -        context.bTC() context("bytes")        context.eTC() -        context.bTC() context("repl. bytes")  context.eTC() -        context.eTR() -        context.eTABLEfoot() -    context.eTABLE() -end - --- Having to pick out single tables for printing can be tedious, therefore we --- let Lua do the job in our stead.  \type{translit.show_all_tabs()} calls --- \type{translit.show_tab} on every table that is registered with --- \type{translit.table} -- and uses its registered key as table heading. - -function translit.show_all_tabs () -    environment.loadluafile ("trans_tables_iso9") -    environment.loadluafile ("trans_tables_trsc") -    environment.loadluafile ("trans_tables_scntfc") -    environment.loadluafile ("trans_tables_sr") -    environment.loadluafile ("trans_tables_trsc") -    environment.loadluafile ("trans_tables_glag") -    environment.loadluafile ("trans_tables_gr") -    translit.gen_rules_en() -    translit.gen_rules_de() -    -- Output all translation tables that are registered within translit.tables. -    -- This will be quite unordered.  -    context.chapter("Transliterator Showing All Tables") -    for key, val in pairs(translit.tables) do -        context.section(key) -        translit.show_tab (val) -    end -end - --- for internal use only - -translit.debug_count = 0 - -function translit.debug_next () -    translit.debug_count = translit.debug_count + 1 -    context("\\tfxx{\\bf translit debug msg. nr.~" .. translit.debug_count ..  "}") -end - --------------------------------------------------------------------------------- --- User-level Function --------------------------------------------------------------------------------- - --- \type{translit.transliterate(m, t)} constitutes the --- metafunction that is called by the \type{\transliterate} command. --- 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.  The rest will be loaded on request. -environment.loadluafile ("trans_tables_iso9") - -function translit.transliterate (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:match("^sr_") then -            environment.loadluafile ("trans_tables_sr") -        elseif  method:match("^bg_") then -- only bg_de for now -            environment.loadluafile ("trans_tables_bg") -        elseif  method == "gr"   or -                method == "gr_n" then -            environment.loadluafile ("trans_tables_gr") -        end -    end - -    if translit.__script then -        return methods[method](text) -    end -    context ( methods[method](text) ) -end - --- vim:sw=4:ts=4:expandtab:ft=lua  | 
