1if not modules then modules = { } end modules ['lxml-inf'] = {
2 version = 1.001,
3 comment = "this module is the basis for the lxml-* ones",
4 author = "Hans Hagen, PRAGMA-ADE, Hasselt NL",
5 copyright = "PRAGMA ADE / ConTeXt Development Team",
6 license = "see context related readme files"
7}
8
9
10
11local next, tostring, type = next, tostring, type
12local concat = table.concat
13
14local xmlwithelements = xml.withelements
15local getid = lxml.getid
16
17local status, stack
18
19local function get(e,d)
20 local ns = e.ns
21 local tg = e.tg
22 local name = tg
23 if ns ~= "" then name = ns .. ":" .. tg end
24 stack[d] = name
25 local ec = e.command
26 if ec == true then
27 ec = "system: text"
28 elseif ec == false then
29 ec = "system: skip"
30 elseif ec == nil then
31 ec = "system: not set"
32 elseif type(ec) == "string" then
33 ec = "setup: " .. ec
34 else
35 ec = tostring(ec)
36 end
37 local tag = concat(stack," => ",1,d)
38 local s = status[tag]
39 if not s then
40 s = { }
41 status[tag] = s
42 end
43 s[ec] = (s[ec] or 0) + 1
44end
45
46local function get_command_status(id)
47 status, stack = {}, {}
48 if id then
49 xmlwithelements(getid(id),get)
50 return status
51 else
52 local t = { }
53 for id, _ in next, loaded do
54 t[id] = get_command_status(id)
55 end
56 return t
57 end
58end
59
60lxml.get_command_status = get_command_status
61 |