summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/context/base/cldf-bas.lua
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/tex/context/base/cldf-bas.lua')
-rw-r--r--Master/texmf-dist/tex/context/base/cldf-bas.lua140
1 files changed, 140 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/context/base/cldf-bas.lua b/Master/texmf-dist/tex/context/base/cldf-bas.lua
new file mode 100644
index 00000000000..30a9265bce4
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/cldf-bas.lua
@@ -0,0 +1,140 @@
+if not modules then modules = { } end modules ['cldf-ini'] = {
+ version = 1.001,
+ comment = "companion to cldf-ini.mkiv",
+ author = "Hans Hagen, PRAGMA-ADE, Hasselt NL",
+ copyright = "PRAGMA ADE / ConTeXt Development Team",
+ license = "see context related readme files"
+}
+
+-- -- speedtest needed:
+--
+-- local flush, writer = context.getlogger()
+--
+-- trackers.register("context.trace",function(v)
+-- flush, writer = context.getlogger()
+-- end)
+--
+-- function context.bgroup()
+-- flush(ctxcatcodes,"{")
+-- end
+--
+-- function context.egroup()
+-- flush(ctxcatcodes,"}")
+-- end
+
+local type = type
+local format = string.format
+local utfchar = utf.char
+local concat = table.concat
+
+local context = context
+local generics = context.generics
+local variables = interfaces.variables
+
+local new_rule = nodes.pool.rule
+
+function context.char(k) -- used as escape too, so don't change to utf
+ if type(k) == "table" then
+ -- for i=1,#k do
+ -- context(format([[\char%s\relax]],k[i]))
+ -- end
+ context([[\char%s\relax]],concat(k,[[\relax\char]]))
+ elseif k then
+ context([[\char%s\relax]],k)
+ end
+end
+
+function context.utfchar(k)
+ context(utfchar(k))
+end
+
+-- plain variants
+
+function context.chardef(cs,u)
+ context([[\chardef\%s=%s\relax]],k)
+end
+
+function context.par()
+ context([[\par]]) -- no need to add {} there
+end
+
+function context.bgroup()
+ context("{")
+end
+
+function context.egroup()
+ context("}")
+end
+
+function context.hrule(w,h,d,dir)
+ if type(w) == "table" then
+ context(new_rule(w.width,w.height,w.depth,w.dir))
+ else
+ context(new_rule(w,h,d,dir))
+ end
+end
+
+context.vrule = context.hrule
+
+--~ local hbox, bgroup, egroup = context.hbox, context.bgroup, context.egroup
+
+--~ function context.hbox(a,...)
+--~ if type(a) == "table" then
+--~ local s = { }
+--~ if a.width then
+--~ s[#s+1] = "to " .. a.width -- todo: check for number
+--~ elseif a.spread then
+--~ s[#s+1] = "spread " .. a.spread -- todo: check for number
+--~ end
+--~ -- todo: dir, attr etc
+--~ hbox(false,table.concat(s," "))
+--~ bgroup()
+--~ context(string.format(...))
+--~ egroup()
+--~ else
+--~ hbox(a,...)
+--~ end
+--~ end
+
+-- not yet used ... but will get variant at the tex end as well
+
+function context.sethboxregister (n) context("\\setbox %s\\hbox",n) end
+function context.setvboxregister (n) context("\\setbox %s\\vbox",n) end
+
+function context.starthboxregister(n)
+ if type(n) == "number" then
+ context("\\setbox%s\\hbox\\bgroup",n)
+ else
+ context("\\setbox\\%s\\hbox\\bgroup",n)
+ end
+end
+
+function context.startvboxregister(n)
+ if type(n) == "number" then
+ context("\\setbox%s\\vbox\\bgroup",n)
+ else
+ context("\\setbox\\%s\\vbox\\bgroup",n)
+ end
+end
+
+context.stophboxregister = context.egroup
+context.stopvboxregister = context.egroup
+
+function context.flushboxregister(n)
+ if type(n) == "number" then
+ context("\\box%s ",n)
+ else
+ context("\\box\\%s",n)
+ end
+end
+
+function context.beginvbox()
+ context("\\vbox\\bgroup") -- we can do \bvbox ... \evbox (less tokens)
+end
+
+function context.beginhbox()
+ context("\\hbox\\bgroup") -- todo: use fast one
+end
+
+context.endvbox = context.egroup
+context.endhbox = context.egroup