diff options
Diffstat (limited to 'tex/context/base/mult-aux.lua')
-rw-r--r-- | tex/context/base/mult-aux.lua | 308 |
1 files changed, 154 insertions, 154 deletions
diff --git a/tex/context/base/mult-aux.lua b/tex/context/base/mult-aux.lua index 3c4cbcc0f..05dd112a8 100644 --- a/tex/context/base/mult-aux.lua +++ b/tex/context/base/mult-aux.lua @@ -1,154 +1,154 @@ -if not modules then modules = { } end modules ['mult-aux'] = { - version = 1.001, - comment = "companion to mult-aux.mkiv", - author = "Hans Hagen, PRAGMA-ADE, Hasselt NL", - copyright = "PRAGMA ADE / ConTeXt Development Team", - license = "see context related readme files" -} - -local find = string.find - -interfaces.namespaces = interfaces.namespaces or { } -local namespaces = interfaces.namespaces -local variables = interfaces.variables - -local trace_namespaces = false trackers.register("interfaces.namespaces", function(v) trace_namespaces = v end) - -local report_namespaces = logs.reporter("interface","namespaces") - -local v_yes, v_list = variables.yes, variables.list - -local prefix = "????" -local meaning = "@@@@" - -local data = { } - -function namespaces.define(namespace,settings) - if trace_namespaces then - report_namespaces("installing namespace %a with settings %a",namespace,settings) - end - if data[namespace] then - report_namespaces("namespace %a is already taken",namespace) - end - if #namespace < 2 then - report_namespaces("namespace %a should have more than 1 character",namespace) - end - local ns = { } - data[namespace] = ns - utilities.parsers.settings_to_hash(settings,ns) - local name = ns.name - if not name or name == "" then - report_namespaces("provide a (command) name in namespace %a",namespace) - end - local self = "\\" .. prefix .. namespace - context.unprotect() - -- context.installnamespace(namespace) - context("\\def\\%s%s{%s%s}",prefix,namespace,meaning,namespace) -- or context.setvalue - if trace_namespaces then - report_namespaces("using namespace %a for %a",namespace,name) - end - local parent = ns.parent or "" - if parent ~= "" then - if trace_namespaces then - report_namespaces("namespace %a for %a uses parent %a",namespace,name,parent) - end - if not find(parent,"\\") then - parent = "\\" .. prefix .. parent - -- todo: check if defined - end - end - context.installparameterhandler(self,name) - if trace_namespaces then - report_namespaces("installing parameter handler for %a",name) - end - context.installparameterhashhandler(self,name) - if trace_namespaces then - report_namespaces("installing parameterhash handler for %a",name) - end - local style = ns.style - if style == v_yes then - context.installstyleandcolorhandler(self,name) - if trace_namespaces then - report_namespaces("installing attribute handler for %a",name) - end - end - local command = ns.command - if command == v_yes then - context.installdefinehandler(self,name,parent) - if trace_namespaces then - report_namespaces("installing definition command for %a (single)",name) - end - elseif command == v_list then - context.installdefinehandler(self,name,parent) - if trace_namespaces then - report_namespaces("installing definition command for %a (multiple)",name) - end - end - local setup = ns.setup - if setup == v_yes then - context.installsetuphandler(self,name) - if trace_namespaces then - report_namespaces("installing setup command for %a (%s)",name,"single") - end - elseif setup == v_list then - context.installsetuphandler(self,name) - if trace_namespaces then - report_namespaces("installing setup command for %a (%s)",name,"multiple") - end - end - local set = ns.set - if set == v_yes then - context.installparametersethandler(self,name) - if trace_namespaces then - report_namespaces("installing set/let/reset command for %a (%s)",name,"single") - end - elseif set == v_list then - context.installparametersethandler(self,name) - if trace_namespaces then - report_namespaces("installing set/let/reset command for %a (%s)",name,"multiple") - end - end - local frame = ns.frame - if frame == v_yes then - context.installinheritedframed(name) - if trace_namespaces then - report_namespaces("installing framed command for %a",name) - end - end - context.protect() -end - -function utilities.formatters.list(data,key,keys) - if not keys then - keys = { } - for _, v in next, data do - for k, _ in next, v do - keys[k] = true - end - end - keys = table.sortedkeys(keys) - end - context.starttabulate { "|"..string.rep("l|",#keys+1) } - context.NC() - context(key) - for i=1,#keys do - context.NC() - context(keys[i]) - end context.NR() - context.HL() - for k, v in table.sortedhash(data) do - context.NC() - context(k) - for i=1,#keys do - context.NC() - context(v[keys[i]]) - end context.NR() - end - context.stoptabulate() -end - -function namespaces.list() - -- utilities.formatters.list(data,"namespace") - local keys = { "type", "name", "comment", "version", "parent", "definition", "setup", "style" } - utilities.formatters.list(data,"namespace",keys) -end +if not modules then modules = { } end modules ['mult-aux'] = {
+ version = 1.001,
+ comment = "companion to mult-aux.mkiv",
+ author = "Hans Hagen, PRAGMA-ADE, Hasselt NL",
+ copyright = "PRAGMA ADE / ConTeXt Development Team",
+ license = "see context related readme files"
+}
+
+local find = string.find
+
+interfaces.namespaces = interfaces.namespaces or { }
+local namespaces = interfaces.namespaces
+local variables = interfaces.variables
+
+local trace_namespaces = false trackers.register("interfaces.namespaces", function(v) trace_namespaces = v end)
+
+local report_namespaces = logs.reporter("interface","namespaces")
+
+local v_yes, v_list = variables.yes, variables.list
+
+local prefix = "????"
+local meaning = "@@@@"
+
+local data = { }
+
+function namespaces.define(namespace,settings)
+ if trace_namespaces then
+ report_namespaces("installing namespace %a with settings %a",namespace,settings)
+ end
+ if data[namespace] then
+ report_namespaces("namespace %a is already taken",namespace)
+ end
+ if #namespace < 2 then
+ report_namespaces("namespace %a should have more than 1 character",namespace)
+ end
+ local ns = { }
+ data[namespace] = ns
+ utilities.parsers.settings_to_hash(settings,ns)
+ local name = ns.name
+ if not name or name == "" then
+ report_namespaces("provide a (command) name in namespace %a",namespace)
+ end
+ local self = "\\" .. prefix .. namespace
+ context.unprotect()
+ -- context.installnamespace(namespace)
+ context("\\def\\%s%s{%s%s}",prefix,namespace,meaning,namespace) -- or context.setvalue
+ if trace_namespaces then
+ report_namespaces("using namespace %a for %a",namespace,name)
+ end
+ local parent = ns.parent or ""
+ if parent ~= "" then
+ if trace_namespaces then
+ report_namespaces("namespace %a for %a uses parent %a",namespace,name,parent)
+ end
+ if not find(parent,"\\") then
+ parent = "\\" .. prefix .. parent
+ -- todo: check if defined
+ end
+ end
+ context.installparameterhandler(self,name)
+ if trace_namespaces then
+ report_namespaces("installing parameter handler for %a",name)
+ end
+ context.installparameterhashhandler(self,name)
+ if trace_namespaces then
+ report_namespaces("installing parameterhash handler for %a",name)
+ end
+ local style = ns.style
+ if style == v_yes then
+ context.installstyleandcolorhandler(self,name)
+ if trace_namespaces then
+ report_namespaces("installing attribute handler for %a",name)
+ end
+ end
+ local command = ns.command
+ if command == v_yes then
+ context.installdefinehandler(self,name,parent)
+ if trace_namespaces then
+ report_namespaces("installing definition command for %a (single)",name)
+ end
+ elseif command == v_list then
+ context.installdefinehandler(self,name,parent)
+ if trace_namespaces then
+ report_namespaces("installing definition command for %a (multiple)",name)
+ end
+ end
+ local setup = ns.setup
+ if setup == v_yes then
+ context.installsetuphandler(self,name)
+ if trace_namespaces then
+ report_namespaces("installing setup command for %a (%s)",name,"single")
+ end
+ elseif setup == v_list then
+ context.installsetuphandler(self,name)
+ if trace_namespaces then
+ report_namespaces("installing setup command for %a (%s)",name,"multiple")
+ end
+ end
+ local set = ns.set
+ if set == v_yes then
+ context.installparametersethandler(self,name)
+ if trace_namespaces then
+ report_namespaces("installing set/let/reset command for %a (%s)",name,"single")
+ end
+ elseif set == v_list then
+ context.installparametersethandler(self,name)
+ if trace_namespaces then
+ report_namespaces("installing set/let/reset command for %a (%s)",name,"multiple")
+ end
+ end
+ local frame = ns.frame
+ if frame == v_yes then
+ context.installinheritedframed(name)
+ if trace_namespaces then
+ report_namespaces("installing framed command for %a",name)
+ end
+ end
+ context.protect()
+end
+
+function utilities.formatters.list(data,key,keys)
+ if not keys then
+ keys = { }
+ for _, v in next, data do
+ for k, _ in next, v do
+ keys[k] = true
+ end
+ end
+ keys = table.sortedkeys(keys)
+ end
+ context.starttabulate { "|"..string.rep("l|",#keys+1) }
+ context.NC()
+ context(key)
+ for i=1,#keys do
+ context.NC()
+ context(keys[i])
+ end context.NR()
+ context.HL()
+ for k, v in table.sortedhash(data) do
+ context.NC()
+ context(k)
+ for i=1,#keys do
+ context.NC()
+ context(v[keys[i]])
+ end context.NR()
+ end
+ context.stoptabulate()
+end
+
+function namespaces.list()
+ -- utilities.formatters.list(data,"namespace")
+ local keys = { "type", "name", "comment", "version", "parent", "definition", "setup", "style" }
+ utilities.formatters.list(data,"namespace",keys)
+end
|