diff options
Diffstat (limited to 'tex/context/base/x-set-11.tex')
-rw-r--r-- | tex/context/base/x-set-11.tex | 110 |
1 files changed, 110 insertions, 0 deletions
diff --git a/tex/context/base/x-set-11.tex b/tex/context/base/x-set-11.tex new file mode 100644 index 000000000..920fd7426 --- /dev/null +++ b/tex/context/base/x-set-11.tex @@ -0,0 +1,110 @@ +%D \module +%D [ file=x-set-11, +%D version=2004.10.31, +%D remark=setupx.tex: 1998.07.20 and later, +%D title=\CONTEXT\ Setup Definitions, +%D subtitle=Macro Definitions, +%D author=Hans Hagen, +%D date=\currentdate, +%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%C +%C This module is part of the \CONTEXT\ macro||package and is +%C therefore copyrighted by \PRAGMA. See mreadme.pdf for +%C details. + +\loadmarkfile{x-set-11} + +\endinput + +% Old code, a mixture of loading in mkiv and processing in mkii. + +\startluacode + do + document = document or { } + + document.setups = { + loaded = { }, + root = nil, + used = { }, + } + + function document.setups.load(filename) + filename = resolvers.find_file(filename) or "" + if filename ~= "" and not document.setups.loaded[filename] then + local loaded = xml.load(filename) + if loaded then + if document.setups.root then + xml.inject(document.setups.root,"/",loaded) + else + document.setups.root = loaded + end + document.setups.loaded[filename] = true + end + end + end + function document.setups.name(ek) + local at = ek.at + local name = at.name + if at.type == 'environment' then + name = "start" .. name + end + if at.variant then + name = name .. ":" .. at.variant + end + if at.generated == "yes" then + name = name .. "*" + end + return name:lower() + end + function document.setups.show(name) + if document.setups.root then + local name = name:gsub("[<>]","") + local setup = xml.first(document.setups.root,"cd:command[@name='" .. name .. "']") + document.setups.used[#document.setups.used+1] = setup + xml.sprint(setup) + end + end + function document.setups.showused() + if document.setups.root and next(document.setups.used) then + for k,v in ipairs(table.sortedkeys(document.setups.used)) do + xml.sprint(document.setups.used[v]) + end + end + end + function document.setups.showall() + if document.setups.root then + local list = { } + xml.each_element(document.setups.root,"cd:command", function(r,d,t) + local ek = d[t] + list[document.setups.name(ek)] = ek + end ) + for k,v in ipairs(table.sortedkeys(list)) do + xml.sprint(list[v]) + end + end + end + function document.setups.resolve(name) + if document.setups.root then + local e = xml.filter(document.setups.root,string.format("cd:define[@name='%s']/text()",name)) + if e then + xml.sprint(e) + end + end + end + end +\stopluacode + +\def\mkloadsetups #1{\ctxlua{document.setups.load("#1")}} +\def\mkshowsetup #1{\ctxlua{document.setups.show("#1")}} +\def\mkshowusedsetups {\bgroup\enableXML\ctxlua{document.setups.showused()}\egroup} +\def\mkshowallsetups {\bgroup\enableXML\ctxlua{document.setups.showall ()}\egroup} + +\def\mkshowsetup #1{\bgroup\enableXML\ctxlua{document.setups.show("#1")}\egroup} + +\defineXMLenvironmentsave [cd:define] [name=] + {} + +\defineXMLsingular [cd:resolve] [name=] + {\enableXML\ignorespaces\ctxlua{document.setups.resolve("\XMLop{name}")}} + +\endinput |