summaryrefslogtreecommitdiff
path: root/tex/context/base/mkiv/cldf-ver.lua
diff options
context:
space:
mode:
Diffstat (limited to 'tex/context/base/mkiv/cldf-ver.lua')
-rw-r--r--tex/context/base/mkiv/cldf-ver.lua87
1 files changed, 56 insertions, 31 deletions
diff --git a/tex/context/base/mkiv/cldf-ver.lua b/tex/context/base/mkiv/cldf-ver.lua
index 3710b2415..7a1c81301 100644
--- a/tex/context/base/mkiv/cldf-ver.lua
+++ b/tex/context/base/mkiv/cldf-ver.lua
@@ -13,32 +13,69 @@ 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
-local function flush(...)
- context(concat{...,"\r"}) -- was \n
+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 t_tocontext(...)
- context.starttyping { "typing" } -- else [1] is intercepted
- context.pushcatcodes("verbatim")
- tohandle(flush,...) -- ok?
- context.stoptyping()
- context.popcatcodes()
+-- 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)
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("}")
+local function t_tocontext(t)
+ local s = table.serialize(t)
+ context(function() flush(s,false) end)
+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)
end
local function b_tocontext(b)
@@ -74,15 +111,3 @@ 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