diff options
Diffstat (limited to 'tex/context/base/page-ins.lua')
-rw-r--r-- | tex/context/base/page-ins.lua | 194 |
1 files changed, 97 insertions, 97 deletions
diff --git a/tex/context/base/page-ins.lua b/tex/context/base/page-ins.lua index 7f870735d..15656a231 100644 --- a/tex/context/base/page-ins.lua +++ b/tex/context/base/page-ins.lua @@ -1,97 +1,97 @@ -if not modules then modules = { } end modules ['page-ins'] = { - version = 1.001, - comment = "companion to page-mix.mkiv", - author = "Hans Hagen, PRAGMA-ADE, Hasselt NL", - copyright = "PRAGMA ADE / ConTeXt Development Team", - license = "see context related readme files", - -- public = { - -- functions = { - -- "inserts.define", - -- "inserts.getdata", - -- }, - -- commands = { - -- "defineinsertion", - -- "inserttionnumber", - -- } - -- } -} - --- Maybe we should only register in lua and forget about the tex end. - -structures = structures or { } -structures.inserts = structures.inserts or { } -local inserts = structures.inserts - -local report_inserts = logs.reporter("inserts") - -local allocate = utilities.storage.allocate - -inserts.stored = inserts.stored or allocate { } -- combining them in one is inefficient in the -inserts.data = inserts.data or allocate { } -- bytecode storage pool - -local variables = interfaces.variables -local v_page = variables.page -local v_columns = variables.columns -local v_firstcolumn = variables.firstcolumn -local v_lastcolumn = variables.lastcolumn -local v_text = variables.text - -storage.register("structures/inserts/stored", inserts.stored, "structures.inserts.stored") - -local data = inserts.data -local stored = inserts.stored - -for name, specification in next, stored do - data[specification.number] = specification - data[name] = specification -end - -function inserts.define(name,specification) - specification.name= name - local number = specification.number or 0 - data[name] = specification - data[number] = specification - -- only needed at runtime as this get stored in a bytecode register - stored[name] = specification - if not specification.location then - specification.location = v_page - end - return specification -end - -function inserts.setup(name,settings) - local specification = data[name] - for k, v in next, settings do - -- maybe trace change - specification[k] = v - end - return specification -end - -function inserts.setlocation(name,location) -- a practical fast one - data[name].location = location -end - -function inserts.getlocation(name,location) - return data[name].location or v_page -end - -function inserts.getdata(name) -- or number - return data[name] -end - -function inserts.getname(number) - return data[name].name -end - -function inserts.getnumber(name) - return data[name].number -end - --- interface - -commands.defineinsertion = inserts.define -commands.setupinsertion = inserts.setup -commands.setinsertionlocation = inserts.setlocation -commands.insertionnumber = function(name) context(data[name].number or 0) end - +if not modules then modules = { } end modules ['page-ins'] = {
+ version = 1.001,
+ comment = "companion to page-mix.mkiv",
+ author = "Hans Hagen, PRAGMA-ADE, Hasselt NL",
+ copyright = "PRAGMA ADE / ConTeXt Development Team",
+ license = "see context related readme files",
+ -- public = {
+ -- functions = {
+ -- "inserts.define",
+ -- "inserts.getdata",
+ -- },
+ -- commands = {
+ -- "defineinsertion",
+ -- "inserttionnumber",
+ -- }
+ -- }
+}
+
+-- Maybe we should only register in lua and forget about the tex end.
+
+structures = structures or { }
+structures.inserts = structures.inserts or { }
+local inserts = structures.inserts
+
+local report_inserts = logs.reporter("inserts")
+
+local allocate = utilities.storage.allocate
+
+inserts.stored = inserts.stored or allocate { } -- combining them in one is inefficient in the
+inserts.data = inserts.data or allocate { } -- bytecode storage pool
+
+local variables = interfaces.variables
+local v_page = variables.page
+local v_columns = variables.columns
+local v_firstcolumn = variables.firstcolumn
+local v_lastcolumn = variables.lastcolumn
+local v_text = variables.text
+
+storage.register("structures/inserts/stored", inserts.stored, "structures.inserts.stored")
+
+local data = inserts.data
+local stored = inserts.stored
+
+for name, specification in next, stored do
+ data[specification.number] = specification
+ data[name] = specification
+end
+
+function inserts.define(name,specification)
+ specification.name= name
+ local number = specification.number or 0
+ data[name] = specification
+ data[number] = specification
+ -- only needed at runtime as this get stored in a bytecode register
+ stored[name] = specification
+ if not specification.location then
+ specification.location = v_page
+ end
+ return specification
+end
+
+function inserts.setup(name,settings)
+ local specification = data[name]
+ for k, v in next, settings do
+ -- maybe trace change
+ specification[k] = v
+ end
+ return specification
+end
+
+function inserts.setlocation(name,location) -- a practical fast one
+ data[name].location = location
+end
+
+function inserts.getlocation(name,location)
+ return data[name].location or v_page
+end
+
+function inserts.getdata(name) -- or number
+ return data[name]
+end
+
+function inserts.getname(number)
+ return data[name].name
+end
+
+function inserts.getnumber(name)
+ return data[name].number
+end
+
+-- interface
+
+commands.defineinsertion = inserts.define
+commands.setupinsertion = inserts.setup
+commands.setinsertionlocation = inserts.setlocation
+commands.insertionnumber = function(name) context(data[name].number or 0) end
+
|