summaryrefslogtreecommitdiff
path: root/tex/context/base/core-con.lua
diff options
context:
space:
mode:
authorHans Hagen <pragma@wxs.nl>2009-09-09 14:31:00 +0200
committerHans Hagen <pragma@wxs.nl>2009-09-09 14:31:00 +0200
commit8683bfc5e51de9f4436c7deebd9517c9f2779f0a (patch)
tree3031e2270b20777bba40f54fdb7e5129323a5f06 /tex/context/base/core-con.lua
parentc6e9f914fe93f3f674c20fded71bf7e18b8df600 (diff)
downloadcontext-8683bfc5e51de9f4436c7deebd9517c9f2779f0a.tar.gz
beta 2009.09.09 14:31
Diffstat (limited to 'tex/context/base/core-con.lua')
-rw-r--r--tex/context/base/core-con.lua54
1 files changed, 38 insertions, 16 deletions
diff --git a/tex/context/base/core-con.lua b/tex/context/base/core-con.lua
index 47d6ca658..b8ca17387 100644
--- a/tex/context/base/core-con.lua
+++ b/tex/context/base/core-con.lua
@@ -147,42 +147,64 @@ converters.chr = chr
converters.chrs = chrs
converters.maxchrs = maxchrs
-local function do_alphabetic(n,max,chr)
- if n > max then
- do_alphabetic(floor((n-1)/max),max,chr)
- n = (n-1)%max+1
- end
- characters.flush(chr(n))
-end
-
--~ more efficient but needs testing
--~
--~ local escapes = utffilters.private.escapes
--~
---~ local function do_alphabetic(n,max,chr)
+--~ local function do_alphabetic(n,mapping,chr)
+--~ local max = #mapping
--~ if n > max then
--~ do_alphabetic(floor((n-1)/max),max,chr)
--~ n = (n-1)%max+1
--~ end
---~ n = chr(n)
+--~ n = chr(n,mapping)
--~ texsprint(ctxcatcodes,escapes[n] or utfchar(n))
--~ end
--~ local lccodes, uccodes = characters.lccode, characters.uccode
-local function lowercased(n) return characters.lccode(code[n] or fallback) end
-local function uppercased(n) return characters.uccode(code[n] or fallback) end
+--~ local function do_alphabetic(n,mapping,chr)
+--~ local max = #mapping
+--~ if n > max then
+--~ do_alphabetic(floor((n-1)/max),mapping,chr)
+--~ n = (n-1)%max+1
+--~ end
+--~ characters.flush(chr(n,mapping))
+--~ end
+--~
+--~ local function lowercased(n,mapping) return characters.lccode(mapping[n] or fallback) end
+--~ local function uppercased(n,mapping) return characters.uccode(mapping[n] or fallback) end
+--~
+--~ function converters.alphabetic(n,code)
+--~ do_alphabetic(n,counters[code] or counters['**'],lowercased) -- lccode catches wrong tables
+--~ end
+--~
+--~ function converters.Alphabetic(n,code)
+--~ do_alphabetic(n,counters[code] or counters['**'],uppercased)
+--~ end
+
+--
+
+local function do_alphabetic(n,mapping,mapper)
+ local chr = mapper(mapping[n] or fallback)
+ local max = #mapping
+ if n > max then
+ do_alphabetic(floor((n-1)/max),mapping,mapper)
+ n = (n-1)%max+1
+ end
+ characters.flush(chr)
+end
function converters.alphabetic(n,code)
- local code = counters[code] or counters['**']
- do_alphabetic(n,#code,lowercased) -- lccode catches wrong tables
+ do_alphabetic(n,counters[code] or counters['**'],characters.lccode)
end
function converters.Alphabetic(n,code)
- local code = counters[code] or counters['**']
- do_alphabetic(n,#code,uppercased)
+ do_alphabetic(n,counters[code] or counters['**'],characters.uccode)
end
+--
+
function converters.character (n) chr (n,96) end
function converters.Character (n) chr (n,64) end
function converters.characters(n) chrs(n,96) end