diff options
author | Hans Hagen <pragma@wxs.nl> | 2023-03-20 17:14:54 +0100 |
---|---|---|
committer | Context Git Mirror Bot <phg@phi-gamma.net> | 2023-03-20 17:14:54 +0100 |
commit | 97f560d2993c367fb84ef62eefbe90ca03c19ebc (patch) | |
tree | 2008bdbfc92d045d7451e655cc43945b84234868 /tex/context/base/mkxl/char-tex.lmt | |
parent | 250c5684b9ee44ac972db51f87289ef935182c53 (diff) | |
download | context-97f560d2993c367fb84ef62eefbe90ca03c19ebc.tar.gz |
2023-03-20 15:44:00
Diffstat (limited to 'tex/context/base/mkxl/char-tex.lmt')
-rw-r--r-- | tex/context/base/mkxl/char-tex.lmt | 54 |
1 files changed, 39 insertions, 15 deletions
diff --git a/tex/context/base/mkxl/char-tex.lmt b/tex/context/base/mkxl/char-tex.lmt index 0e0297381..31023136d 100644 --- a/tex/context/base/mkxl/char-tex.lmt +++ b/tex/context/base/mkxl/char-tex.lmt @@ -23,6 +23,8 @@ local mark = utilities.storage.mark local context = context local commands = commands +if not characters then require("char-ini") require("char-utf") end + local characters = characters local texcharacters = { } characters.tex = texcharacters @@ -401,7 +403,7 @@ if not interfaces then return end local implement = interfaces.implement -local pattern +local pattern1, pattern2 local verbosemarks = characters.verbosemarks @@ -418,6 +420,7 @@ else ["grave"] = utfchar(0x300), ["acute"] = utfchar(0x301), ["circumflex"] = utfchar(0x302), + ["circumflex"] = utfchar(0x302), ["tilde"] = utfchar(0x303), ["macron"] = utfchar(0x304), ["line"] = utfchar(0x304), ["overline"] = utfchar(0x305), @@ -442,6 +445,7 @@ else ["macron below"] = utfchar(0x331), ["line below"] = utfchar(0x331), ["hook below"] = utfchar(0x1FA9D), + } characters.verbosemarks = verbosemarks @@ -452,48 +456,68 @@ else end -local function prepare() - pattern = Cs((utfchartabletopattern(verbosemarks) / verbosemarks + lpegpatterns.space/"" + lpegpatterns.utf8character)^0) - return pattern +local function prepare1() + pattern1 = Cs( + ( +P("\\")/"" * (utfchartabletopattern(commandmapping) / commandmapping) * (P(" ")/"") ++ utfchartabletopattern(verbosemarks) / verbosemarks + + lpegpatterns.space/"" + + lpegpatterns.utf8character + )^0 + ) + return pattern1 +end + +local function prepare2() + local back = { + ["ı"] = "i", + ["ȷ"] = "j", + } + pattern2 = Cs( + ( + utfchartabletopattern(back) / back + + lpegpatterns.utf8character + )^0 + ) + return pattern2 end local hash = table.setmetatableindex(function(t,k) - local f = "" - k = lpegmatch(pattern or prepare(),k) or k + local f = k + k = lpegmatch(pattern1 or prepare1(),k) or k + k = lpegmatch(pattern2 or prepare2(),k) or k local v = collapse(k) or k -- char specials --- print("collapse",k,v) if k ~= v then goto DONE end v = combine(k) or k -- with specials --- print("combine",k,v) if k ~= v then goto DONE end v = commandmapping[k] or k --- print("command",k,v) if k ~= v then - f = "\\" + f = "\\" .. f goto DONE end v = textoutf(k) or k --- print("utf",k,v) if k ~= v then - f = "\\" + f = "\\" .. f goto DONE end ::DONE:: - report_defining("instead of old school '%s%s' you can input the utf sequence %s",f,k,v) + report_defining("instead of old school '%s' you can input the utf sequence %s",f,v) t[k] = v return v end) implement { name = "chr", - arguments = "argument", + -- arguments = "argument", -- not here + arguments = "string", public = true, actions = function(str) - context(hash[str]) -- expandable + local hsh = hash[str] + context(hsh) -- expandable end } |