diff options
Diffstat (limited to 'Master/texmf-dist/tex/context/base/mkiv/cldf-ver.lua')
-rw-r--r-- | Master/texmf-dist/tex/context/base/mkiv/cldf-ver.lua | 87 |
1 files changed, 31 insertions, 56 deletions
diff --git a/Master/texmf-dist/tex/context/base/mkiv/cldf-ver.lua b/Master/texmf-dist/tex/context/base/mkiv/cldf-ver.lua index 7a1c813014b..3710b24159a 100644 --- a/Master/texmf-dist/tex/context/base/mkiv/cldf-ver.lua +++ b/Master/texmf-dist/tex/context/base/mkiv/cldf-ver.lua @@ -13,69 +13,32 @@ if not modules then modules = { } end modules ['cldf-ver'] = { local concat, tohandle = table.concat, table.tohandle local splitlines, strip = string.splitlines, string.strip local tostring, type = tostring, type -local assignbuffer = buffers.assign local context = context -context.tobuffer = assignbuffer -- (name,str,catcodes) - -function context.tolines(str,strip) - local lines = type(str) == "string" and splitlines(str) or str - for i=1,#lines do - if strip then - context(strip(lines[i]) .. " ") - else - context(lines[i] .. " ") - end - end -end - --- local function flush(...) --- context(concat { ..., "\r" }) -- was \n --- end --- --- somehow this doesn't work any longer .. i need to figure out why --- --- local function t_tocontext(t) --- context.starttyping { "typing" } -- else [1] is intercepted --- context.pushcatcodes("verbatim") --- -- tohandle(flush,...) --- context(table.serialize(t)) --- context.stoptyping() --- context.popcatcodes() --- end --- --- local function s_tocontext(first,second,...) -- we need to catch {\} --- context.type() --- context("{") --- context.pushcatcodes("verbatim") --- if second then --- context(concat({ first, second, ... }, " ")) --- else --- context(first) -- no need to waste a { } --- end --- context.popcatcodes() --- context("}") --- end - -local t_buffer = { "t_o_c_o_n_t_e_x_t" } -local t_typing = { "typing" } -local t_type = { "type" } - -local function flush(s,inline) - assignbuffer("t_o_c_o_n_t_e_x_t",s) - context[inline and "typeinlinebuffer" or "typebuffer"](t_buffer) - context.resetbuffer(t_buffer) +local function flush(...) + context(concat{...,"\r"}) -- was \n end -local function t_tocontext(t) - local s = table.serialize(t) - context(function() flush(s,false) end) +local function t_tocontext(...) + context.starttyping { "typing" } -- else [1] is intercepted + context.pushcatcodes("verbatim") + tohandle(flush,...) -- ok? + context.stoptyping() + context.popcatcodes() end -local function s_tocontext(first,second,...) -- we need to catch {\} - local s = second and concat({ first, second, ... }, " ") or first - context(function() flush(s,true) end) +local function s_tocontext(first,...) -- we need to catch {\} + context.type() + context("{") + context.pushcatcodes("verbatim") + if first then + context(first) -- no need to waste a { } + else + context(concat({first,...}," ")) + end + context.popcatcodes() + context("}") end local function b_tocontext(b) @@ -111,3 +74,15 @@ end) context.tocontext = tocontext +context.tobuffer = buffers.assign -- (name,str,catcodes) + +function context.tolines(str,strip) + local lines = type(str) == "string" and splitlines(str) or str + for i=1,#lines do + if strip then + context(strip(lines[i]) .. " ") + else + context(lines[i] .. " ") + end + end +end |