1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
|
-- This is file `lualibs-extended.lua',
module('lualibs-extended', package.seeall)
local lualibs_basic_module = {
name = "lualibs-extended",
version = 1.01,
date = "2013/04/10",
description = "Basic Lua extensions, meta package.",
author = "Hans Hagen, PRAGMA-ADE, Hasselt NL & Elie Roux",
copyright = "PRAGMA ADE / ConTeXt Development Team",
license = "See ConTeXt's mreadme.pdf for the license",
}
--[[doc--
Here we define some functions that fake the elaborate logging/tracking
mechanism Context provides.
--doc]]--
local error, logger, mklog
if luatexbase and luatexbase.provides_module then
--- TODO test how those work out when running tex
local __error,_,_,__logger = luatexbase.provides_module(lualibs_module)
error = __error
logger = __logger
mklog = function ( ) return logger end
else
local texiowrite = texio.write
local texiowrite_nl = texio.write_nl
local stringformat = string.format
mklog = function (t)
local prefix = stringformat("[%s] ", t)
return function (...)
texiowrite_nl(prefix)
texiowrite (stringformat(...))
end
end
error = mklog"ERROR"
logger = mklog"INFO"
end
--[[doc--
We temporarily put our own global table in place and restore whatever
we overloaded afterwards.
\CONTEXT\ modules each have a custom logging mechanism that can be
enabled for debugging.
In order to fake the presence of this facility we need to define at
least the function \verb|logs.reporter|.
For now it’s sufficient to make it a reference to \verb|mklog| as
defined above.
--doc]]--
local dummy_function = function ( ) end
local newline = function ( ) texiowrite_nl"" end
local fake_logs = function (name)
return {
name = name,
enable = dummy_function,
disable = dummy_function,
reporter = mklog,
newline = newline
}
end
local fake_trackers = function (name)
return {
name = name,
enable = dummy_function,
disable = dummy_function,
register = mklog,
newline = newline,
}
end
local backup_store
local fake_context = function ( )
if not backup_store then
backup_store = utilities.storage.allocate()
end
if _G.logs then backup_store.logs = _G.logs end
if _G.trackers then backup_store.trackers = _G.trackers end
_G.logs = fake_logs"logs"
_G.trackers = fake_trackers"trackers"
end
--[[doc--
Restore a backed up logger if appropriate.
--doc]]--
local unfake_context = function ( )
if backup_store then
local bl, bt = backup_store.logs, backup_store.trackers
if bl then _G.logs = bl end
if bt then _G.trackers = bt end
end
end
local loadmodule = lualibs.loadmodule
loadmodule("lualibs-util-str.lua")--- string formatters (fast)
loadmodule("lualibs-util-tab.lua")--- extended table operations
loadmodule("lualibs-util-sto.lua")--- storage (hash allocation)
----------("lualibs-util-pck.lua")---!packers; necessary?
----------("lualibs-util-seq.lua")---!sequencers (function chaining)
----------("lualibs-util-mrg.lua")---!only relevant in mtx-package
loadmodule("lualibs-util-prs.lua")--- miscellaneous parsers; cool. cool cool cool
----------("lualibs-util-fmt.lua")---!column formatter (rarely used)
loadmodule("lualibs-util-dim.lua")--- conversions between dimensions
loadmodule("lualibs-util-jsn.lua")--- JSON parser
fake_context()
----------("lualibs-trac-set.lua")---!generalization of trackers
----------("lualibs-trac-log.lua")---!logging
loadmodule("lualibs-trac-inf.lua")--- timing/statistics
loadmodule("lualibs-util-lua.lua")--- operations on lua bytecode
loadmodule("lualibs-util-deb.lua")--- extra debugging
loadmodule("lualibs-util-tpl.lua")--- templating
unfake_context() --- TODO check if this works at runtime
-- vim:tw=71:sw=2:ts=2:expandtab
-- End of File `lualibs-extended.lua'.
|