diff options
author | Context Git Mirror Bot <phg42.2a@gmail.com> | 2016-01-12 17:15:07 +0100 |
---|---|---|
committer | Context Git Mirror Bot <phg42.2a@gmail.com> | 2016-01-12 17:15:07 +0100 |
commit | 8d8d528d2ad52599f11250cfc567fea4f37f2a8b (patch) | |
tree | 94286bc131ef7d994f9432febaf03fe23d10eef8 /tex/context/base/mkiv/trac-tex.lua | |
parent | f5aed2e51223c36c84c5f25a6cad238b2af59087 (diff) | |
download | context-8d8d528d2ad52599f11250cfc567fea4f37f2a8b.tar.gz |
2016-01-12 16:26:00
Diffstat (limited to 'tex/context/base/mkiv/trac-tex.lua')
-rw-r--r-- | tex/context/base/mkiv/trac-tex.lua | 118 |
1 files changed, 118 insertions, 0 deletions
diff --git a/tex/context/base/mkiv/trac-tex.lua b/tex/context/base/mkiv/trac-tex.lua new file mode 100644 index 000000000..24dc3f1bd --- /dev/null +++ b/tex/context/base/mkiv/trac-tex.lua @@ -0,0 +1,118 @@ +if not modules then modules = { } end modules ['trac-tex'] = { + version = 1.001, + comment = "companion to trac-deb.mkiv", + author = "Hans Hagen, PRAGMA-ADE, Hasselt NL", + copyright = "PRAGMA ADE / ConTeXt Development Team", + license = "see context related readme files" +} + +-- moved from trac-deb.lua + +local next = next + +local texhashtokens = tex.hashtokens + +local trackers = trackers +local newtoken = newtoken or token +local saved = { } + +function trackers.savehash() + saved = texhashtokens() +end + +function trackers.dumphashtofile(filename,delta) + local list = { } + local hash = tex.hashtokens() + local create = newtoken.create + for name, token in next, hash do + if not delta or not saved[name] then + if token[2] ~= 0 then -- still old interface + local token = create(name) + -- inspect(token) + local category = token.cmdname + local dk = list[category] + if not dk then + dk = { + names = { }, + found = 0, + -- code = token[1], + } + list[category] = dk + end + if token.protected then + if token.expandable then + dk.names[name] = "ep" + else + dk.names[name] = "-p" + end + else + if token.expandable then + dk.names[name] = "ep" + else + dk.names[name] = "--" + end + end + dk.found = dk.found + 1 + end + end + end + table.save(filename or tex.jobname .. "-hash.log",list) +end + +-- -- old token code +-- +-- function trackers.dumphashtofile(filename,delta) +-- local list = { } +-- local hash = texhashtokens() +-- local getname = token.command_name +-- for name, token in next, hash do +-- if not delta or not saved[name] then +-- -- token: cmd, chr, csid -- combination cmd,chr determines name +-- local category = getname(token) +-- local dk = list[category] +-- if not dk then +-- -- a bit funny names but this sorts better (easier to study) +-- dk = { names = { }, found = 0, code = token[1] } +-- list[category] = dk +-- end +-- dk.names[name] = { token[2], token[3] } +-- dk.found = dk.found + 1 +-- end +-- end +-- table.save(filename or tex.jobname .. "-hash.log",list) +-- end + +local delta = nil + +local function dump_hash(wanteddelta) + if delta == nil then + saved = saved or texhashtokens() -- no need for trackers.dump_hash + luatex.registerstopactions(1,function() dump_hash(nil,wanteddelta) end) -- at front + end + delta = wanteddelta +end + +directives.register("system.dumphash", function() dump_hash(false) end) +directives.register("system.dumpdelta", function() dump_hash(true ) end) + +local report_dump = logs.reporter("resolvers","dump") + +local function saveusedfilesintrees(format) + local data = { + jobname = environment.jobname or "?", + version = environment.version or "?", + kind = environment.kind or "?", + files = resolvers.instance.foundintrees + } + local filename = file.replacesuffix(environment.jobname or "context-job",'jlg') + if format == "lua" then + io.savedata(filename,table.serialize(data,true)) + else + io.savedata(filename,table.toxml(data,"job")) + end +end + +directives.register("system.dumpfiles", function(v) + luatex.registerstopactions(function() saveusedfilesintrees(v) end) +end) + |