toks-map.lua / last modification: 2020-01-30 14:16
if not modules then modules = { } end modules ['toks-map'] = {
    version   = 1.001,
    author    = "Hans Hagen, PRAGMA-ADE, Hasselt NL",
    copyright = "PRAGMA ADE / ConTeXt Development Team",
    license   = "see context related readme files"
}

-- Even more experimental ... this used to be part of toks-ini but as
-- this kind of remapping has not much use it is not loaded in the
-- core. We just keep it here for old times sake.

-- local remapper      = { }  -- namespace
-- collectors.remapper = remapper
--
-- local remapperdata  = { }  -- user mappings
-- remapper.data       = remapperdata
--
-- function remapper.store(tag,class,key)
--     local s = remapperdata[class]
--     if not s then
--         s = { }
--         remapperdata[class] = s
--     end
--     s[key] = collectordata[tag]
--     collectordata[tag] = nil
-- end
--
-- function remapper.convert(tag,toks)
--     local data         = remapperdata[tag]
--     local leftbracket  = utfbyte('[')
--     local rightbracket = utfbyte(']')
--     local skipping     = 0
--     -- todo: math
--     if data then
--         local t, n = { }, 0
--         for s=1,#toks do
--             local tok = toks[s]
--             local one, two = tok[1], tok[2]
--             if one == 11 or one == 12 then
--                 if two == leftbracket then
--                     skipping = skipping + 1
--                     n = n + 1 ; t[n] = tok
--                 elseif two == rightbracket then
--                     skipping = skipping - 1
--                     n = n + 1 ; t[n] = tok
--                 elseif skipping == 0 then
--                     local new = data[two]
--                     if new then
--                         if #new > 1 then
--                             for n=1,#new do
--                                 n = n + 1 ; t[n] = new[n]
--                             end
--                         else
--                             n = n + 1 ; t[n] = new[1]
--                         end
--                     else
--                         n = n + 1 ; t[n] = tok
--                     end
--                 else
--                     n = n + 1 ; t[n] = tok
--                 end
--             else
--                 n = n + 1 ; t[n] = tok
--             end
--         end
--         return t
--     else
--         return toks
--     end
-- end