1if not modules then modules = { } end modules ['trac-ctx'] = {
2 version = 1.001,
3 comment = "companion to trac-ctx.mkiv",
4 author = "Hans Hagen, PRAGMA-ADE, Hasselt NL",
5 copyright = "PRAGMA ADE / ConTeXt Development Team",
6 license = "see context related readme files"
7}
8
9local next = next
10
11local context = context
12local implement = interfaces.implement
13local register = trackers.register
14
15local textrackers = tex.trackers or { }
16local texdirectives = tex.directives or { }
17local texexperiments = tex.experiments or { }
18
19tex.trackers = textrackers
20tex.directives = texdirectives
21tex.experiments = texexperiments
22
23storage.register("tex/trackers", textrackers, "tex.trackers")
24storage.register("tex/directives", texdirectives, "tex.directives")
25storage.register("tex/experiments",texexperiments,"tex.experiments")
26
27local function doit(category,tag,v)
28 local tt = category[tag]
29 if tt then
30 context.unprotect()
31 context(v and tt[1] or tt[2])
32 context.protect()
33 end
34end
35
36local function initialize(category,register)
37 for tag, commands in next, category do
38 register(tag, function(v) doit(category,tag,v) end)
39 end
40end
41
42local function install(category,register,tag,enable,disable)
43 category[tag] = { enable, disable }
44 register(tag, function(v) doit(category,tag,v) end)
45end
46
47implement {
48 name = "initializetextrackers",
49 actions = function()
50 initialize(textrackers,trackers.register)
51 end
52}
53
54implement {
55 name = "initializetexdirectives",
56 actions = function()
57 initialize(texdirectives,directives.register)
58 end
59}
60
61implement {
62 name = "initializetexexperiments",
63 actions = function()
64 initialize(texexperiments,experiments.register)
65 end
66}
67
68implement {
69 name = "installtextracker",
70 arguments = "3 strings",
71 actions = function(tag,enable,disable)
72 install(textrackers,trackers.register,tag,enable,disable)
73 end,
74}
75
76implement {
77 name = "installtexdirective",
78 arguments = "3 strings",
79 actions = function(tag,enable,disable)
80 install(texdirectives,directives.register,tag,enable,disable)
81 end,
82}
83
84implement {
85 name = "installtexexperiment",
86 arguments = "3 strings",
87 actions = function(tag,enable,disable)
88 install(texexperiments,experiments.register,tag,enable,disable)
89 end,
90}
91
92
93
94interfaces.implement {
95 name = "unsupportedcs",
96 public = true,
97 actions = function()
98 logs.newline()
99 logs.report("fatal error","unsupported cs \\%s",tokens.scanners.csname())
100 logs.newline()
101 luatex.abort()
102 end
103}
104
105 |