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
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
|
-- This is file `lualibs-extended.lua',
module('lualibs-extended', package.seeall)
local lualibs_extended_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",
}
local find_file, error, warn, info
if luatexbase and luatexbase.provides_module then
error, warn, info = luatexbase.provides_module(lualibs_extended_module)
else
error, warn, info = texio.write_nl, texio.write_nl, texio.write_nl -- stub
end
local stringformat = string.format
local loadmodule = lualibs.loadmodule
local texiowrite = texio.write
local texiowrite_nl = texio.write_nl
--[[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_extended_module)
error = __error
logger = __logger
mklog = function ( ) return logger end
else
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
--[[doc--
Among the libraries loaded is \verb|util-env.lua|, which adds
\CONTEXT’s own, superior command line argument handler.
Packages that rely on their own handling of arguments might not be
aware of this, or the library might have been loaded by another package
altogether.
For these cases we provide a copy of the original \verb|arg| list and
restore it after we are done loading.
--doc]]--
local backup_store = { }
local fake_context = function ( )
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"
backup_store.argv = table.fastcopy(_G.arg)
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
local argv = backup_store.argv
if bl then _G.logs = bl end
if bt then _G.trackers = bt end
if argv then _G.arg = argv end
end
end
fake_context()
local loaded = false
if lualibs.prefer_merged then
loaded = loadmodule('lualibs-extended-merged.lua')
else
info"Ignoring merged packages."
info"Falling back to individual libraries from collection “extended”."
end
if loaded == false then
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
----------("lualibs-util-jsn.lua")--- JSON parser
----------("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
loadmodule("lualibs-util-sta.lua")--- stacker (for writing pdf)
-------------------------------------!data-* -- Context specific
----------("lualibs-util-lib.lua")---!swiglib; there is a luatex-swiglib
loadmodule("lualibs-util-env.lua")--- environment arguments
----------("lualibs-mult-ini.lua")---
----------("lualibs-core-con.lua")---
end
loadmodule"lualibs-util-jsn.lua"--- cannot be merged because of return statement
unfake_context() --- TODO check if this works at runtime
-- vim:tw=71:sw=2:ts=2:expandtab
-- End of File `lualibs-extended.lua'.
|