summaryrefslogtreecommitdiff
path: root/tex/context/base/mkiv/blob-ini.lmt
diff options
context:
space:
mode:
Diffstat (limited to 'tex/context/base/mkiv/blob-ini.lmt')
-rw-r--r--tex/context/base/mkiv/blob-ini.lmt210
1 files changed, 0 insertions, 210 deletions
diff --git a/tex/context/base/mkiv/blob-ini.lmt b/tex/context/base/mkiv/blob-ini.lmt
deleted file mode 100644
index 42a18fddd..000000000
--- a/tex/context/base/mkiv/blob-ini.lmt
+++ /dev/null
@@ -1,210 +0,0 @@
-if not modules then modules = { } end modules ['blob-ini'] = {
- version = 1.001,
- comment = "companion to blob-ini.mkiv",
- author = "Hans Hagen, PRAGMA-ADE, Hasselt NL",
- copyright = "PRAGMA ADE / ConTeXt Development Team",
- license = "see context related readme files"
-}
-
--- This module is just a playground. Occasionally we need to typeset at the lua and and
--- this is one method. In principle we can construct pages this way too which sometimes
--- makes sense in dumb cases. Actually, if one only needs this, one does not really need
--- tex, okay maybe the parbuilder but that one can be simplified as well then.
-
--- set fonts, attributes
--- rest already done in packers etc
--- add local par whatsit (or wait till cleaned up)
--- collapse or new pars
--- interline spacing etc
-
--- blob.char
--- blob.line
--- blob.paragraph
--- blob.page
-
-local type, tostring = type, tostring
-local lpegmatch, lpegpatterns = lpeg.match, lpeg.patterns
-
-local report_blobs = logs.reporter("blobs")
-
-local flush_node_list = node.flush_list
-local hpack_node_list = node.hpack
------ vpack_node_list = node.vpack
-local write_node = node.write
-
-local typesetters = nodes.typesetters
-local tonodes = typesetters.tonodes
-local tohpack = typesetters.tohpack
-local tovpack = typesetters.tovpack
-
-local implement = interfaces.implement
-
--- provide copies here (nicer for manuals)
-
-blobs = blobs or { }
-local blobs = blobs
-
-blobs.tonodes = tonodes
-blobs.tohpack = tohpack
-blobs.tovpack = tovpack
-
--- end of helpers
-
-local newline = lpeg.patterns.newline
-local space = lpeg.patterns.spacer
-local newpar = (space^0*newline*space^0)^2
-
-local ctxtextcapture = lpeg.Ct ( ( space^0 * ( newpar + lpeg.Cs(((space^1/" " + 1)-newpar)^1) ) )^0)
-
-function blobs.new()
- return {
- list = { },
- }
-end
-
-function blobs.dispose(t)
- local list = t.list
- for i=1,#list do
- local li = list[i]
- local pack = li.pack
- if pack then
- flush_node_list(pack)
- li.pack = nil
- end
- end
-end
-
-function blobs.append(t,str) -- compare concat and link
- local typ = type(str)
- local dummy = nil
- if typ == "number" then
- str = tostring(str)
- typ = "string"
- end
- if typ == "string" then
- local pars = lpegmatch(ctxtextcapture,str)
- local list = t.list
- for p=1,#pars do
- local head, tail = tonodes(pars[p],nil,nil)
- list[#list+1] = { head = head, tail = tail }
- end
- end
-end
-
-function blobs.pack(t,how)
- local list = t.list
- for i=1,#list do
- local pack = list[i].pack
- if pack then
- flush_node_list(node.pack)
- end
- if how == "vertical" then
- -- we need to prepend a local par node
- -- list[i].pack = vpack_node_list(list[i].head,"exactly")
- report_blobs("vpack not yet supported")
- else
- list[i].pack = hpack_node_list(list[i].head,"exactly")
- end
- end
-end
-
-function blobs.write(t)
- local list = t.list
- for i=1,#list do
- local li = list[i]
- local pack = li.pack
- if pack then
- write_node(pack)
- flush_node_list(pack)
- li.pack = nil
- end
- end
-end
-
-function blobs.dimensions(t)
- local list = t.list
- local first = list and list[1]
- if first then
- local pack = first.pack
- return pack.width, pack.height, pack.depth
- else
- return 0, 0, 0
- end
-end
-
--- blob.char
--- blob.line: head, tail
--- blob.paragraph
--- blob.page
-
--- local lineblob = {
--- type = "line",
--- head = false,
--- tail = false,
--- pack = false,
--- properties = { },
--- end
-
--- local parblob = {
--- type = "line",
--- head = false,
--- tail = false,
--- pack = false,
--- properties = { },
--- end
-
--- for the moment here:
-
-local function strwd(str)
- local l = tohpack(str)
- local w = l.width
- flush_node_list(l)
- return w
-end
-
-local function strht(str)
- local l = tohpack(str)
- local h = l.height
- flush_node_list(l)
- return h
-end
-
-local function strdp(str)
- local l = tohpack(str)
- local d = l.depth
- flush_node_list(l)
- return d
-end
-
-local function strhd(str)
- local l = tohpack(str)
- local s = l.height + l.depth
- flush_node_list(l)
- return s
-end
-
-blobs.strwd = strwd
-blobs.strht = strht
-blobs.strdp = strdp
-blobs.strhd = strhd
-
--- upgraded
-
-local dimension_code = tokens.values.dimension
-local scan_hbox = tokens.scanners.hbox
-
-local function action(field,what)
- local l = scan_hbox()
- local d = l[field]
- flush_node_list(l)
- if what == "value" then
- return dimension_code, d
- else
- context("%p",d)
- end
-end
-
-implement { name = "widthofstring", public = true, usage = "value", actions = function(w) return action("width", w) end }
-implement { name = "heightofstring", public = true, usage = "value", actions = function(w) return action("height",w) end }
-implement { name = "depthofstring", public = true, usage = "value", actions = function(w) return action("depth", w) end }
-implement { name = "totalofstring", public = true, usage = "value", actions = function(w) return action("total", w) end }