diff options
Diffstat (limited to 'tex/context/base/trac-set.lua')
-rw-r--r-- | tex/context/base/trac-set.lua | 57 |
1 files changed, 33 insertions, 24 deletions
diff --git a/tex/context/base/trac-set.lua b/tex/context/base/trac-set.lua index e7498ea85..54ef22ee5 100644 --- a/tex/context/base/trac-set.lua +++ b/tex/context/base/trac-set.lua @@ -1,4 +1,4 @@ -if not modules then modules = { } end modules ['trac-set'] = { +if not modules then modules = { } end modules ['trac-set'] = { -- might become util-set.lua version = 1.001, comment = "companion to luat-lib.mkiv", author = "Hans Hagen, PRAGMA-ADE, Hasselt NL", @@ -10,8 +10,12 @@ local type, next, tostring = type, next, tostring local concat = table.concat local format, find, lower, gsub, simpleesc = string.format, string.find, string.lower, string.gsub, string.simpleesc local is_boolean = string.is_boolean +local settings_to_hash = utilities.parsers.settings_to_hash -setters = { } +utilities = utilities or { } +local utilities = utilities +utilities.setters = utilities.setters or { } +local setters = utilities.setters local data = { } -- maybe just local @@ -67,7 +71,7 @@ end local function set(t,what,newvalue) local data, done = t.data, t.done if type(what) == "string" then - what = aux.settings_to_hash(what) -- inefficient but ok + what = settings_to_hash(what) -- inefficient but ok end for w, value in next, what do if value == "" then @@ -194,18 +198,20 @@ end -- we could have used a bit of oo and the trackers:enable syntax but -- there is already a lot of code around using the singular tracker --- we could make this into a module +-- we could make this into a module but we also want the rest avaliable + +local enable, disable, register, list, show = setters.enable, setters.disable, setters.register, setters.list, setters.show function setters.new(name) - local t + local t -- we need to access it in t t = { data = { }, -- indexed, but also default and value fields name = name, - enable = function(...) setters.enable (t,...) end, - disable = function(...) setters.disable (t,...) end, - register = function(...) setters.register(t,...) end, - list = function(...) setters.list (t,...) end, - show = function(...) setters.show (t,...) end, + enable = function(...) enable (t,...) end, + disable = function(...) disable (t,...) end, + register = function(...) register(t,...) end, + list = function(...) list (t,...) end, + show = function(...) show (t,...) end, } data[name] = t return t @@ -215,13 +221,18 @@ trackers = setters.new("trackers") directives = setters.new("directives") experiments = setters.new("experiments") +local t_enable, t_disable = trackers .enable, trackers .disable +local d_enable, d_disable = directives .enable, directives .disable +local e_enable, e_disable = experiments.enable, experiments.disable + -- experiment if trackers and environment and environment.engineflags.trackers then - trackers.enable(environment.engineflags.trackers) + t_enable(environment.engineflags.trackers) end + if directives and environment and environment.engineflags.directives then - directives.enable(environment.engineflags.directives) + d_enable(environment.engineflags.directives) end -- nice trick: we overload two of the directives related functions with variants that @@ -235,30 +246,24 @@ end local trace_directives = false local trace_directives = false trackers.register("system.directives", function(v) trace_directives = v end) local trace_experiments = false local trace_experiments = false trackers.register("system.experiments", function(v) trace_experiments = v end) -local enable = directives.enable -local disable = directives.disable - function directives.enable(...) report("directives","enabling: %s",concat({...}," ")) - enable(...) + d_enable(...) end function directives.disable(...) report("directives","disabling: %s",concat({...}," ")) - disable(...) + d_disable(...) end -local enable = experiments.enable -local disable = experiments.disable - function experiments.enable(...) report("experiments","enabling: %s",concat({...}," ")) - enable(...) + e_enable(...) end function experiments.disable(...) report("experiments","disabling: %s",concat({...}," ")) - disable(...) + e_disable(...) end -- a useful example @@ -267,11 +272,15 @@ directives.register("system.nostatistics", function(v) statistics.enable = not v end) +directives.register("system.nolibraries", function(v) + libraries = nil -- we discard this tracing for security +end) + -- experiment if trackers and environment and environment.engineflags.trackers then - trackers.enable(environment.engineflags.trackers) + t_enable(environment.engineflags.trackers) end if directives and environment and environment.engineflags.directives then - directives.enable(environment.engineflags.directives) + d_enable(environment.engineflags.directives) end |