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
|
lualibs = lualibs or { }
lualibs.module_info = {
name = "lualibs",
version = 2.00,
date = "2013/04/30",
description = "ConTeXt Lua standard libraries.",
author = "Hans Hagen, PRAGMA-ADE, Hasselt NL & Elie Roux & Philipp Gesang",
copyright = "PRAGMA ADE / ConTeXt Development Team",
license = "See ConTeXt's mreadme.pdf for the license",
}
--[[doc--
The behavior of the lualibs can be configured to some extent.
\begin{itemize}
\item Based on the parameter \verb|lualibs.prefer_merged|, the
libraries can be loaded via the included merged packages or
the individual files.
\item Two classes of libraries are distinguished, mainly because
of a similar distinction in \CONTEXT, but also to make
loading of the less fundamental functionality optional.
While the “basic” collection is always loaded, the
configuration setting \verb|lualibs.load_extended| triggers
inclusion of the extended collection.
\item Verbosity can be increased via the \verb|verbose| switch.
\end{itemize}
--doc]]--
config = config or { }
config.lualibs = config.lualibs or { }
if config.lualibs.prefer_merged == nil then
lualibs.prefer_merged = true
end
if config.lualibs.load_extended == nil then
lualibs.load_extended = true
end
config.lualibs.verbose = config.lualibs.verbose == false
--[[doc--
The lualibs may be loaded in scripts.
To account for the different environment, fallbacks for
the luatexbase facilities are installed.
--doc]]--
local dofile = dofile
local kpsefind_file = kpse.find_file
local stringformat = string.format
local texiowrite_nl = texio.write_nl
local find_file, error, warn, info
do
local _error, _warn, _info
if luatexbase and luatexbase.provides_module then
_error, _warn, _info = luatexbase.provides_module(lualibs.module_info)
else
_error, _warn, _info = texiowrite_nl, texiowrite_nl, texiowrite_nl
end
if lualibs.verbose then
error, warn, info = _error, _warn, _info
else
local dummylogger = function ( ) end
error, warn, info = _error, dummylogger, dummylogger
end
lualibs.error, lualibs.warn, lualibs.info = error, warn, info
end
if luatexbase and luatexbase.find_file then
find_file = luatexbase.find_file
else
kpse.set_program_name"luatex"
find_file = kpsefind_file
end
--[[doc--
The lualibs load a merged package by default.
In order to create one of these, the meta file that includes the
libraries must satisfy certain assumptions \verb|mtx-package| makes
about the coding style.
Most important is that the functions that indicates which files
to include must go by the name \verb|loadmodule()|.
For this reason we define a \verb|loadmodule()| function as a
wrapper around \verb|dofile()|.
--doc]]--
local loadmodule = loadmodule or function (name, t)
if not t then t = "library" end
local filepath = find_file(name, "lua")
if not filepath or filepath == "" then
warn(stringformat("Could not locate %s “%s”.", t, name))
return false
end
dofile(filepath)
return true
end
lualibs.loadmodule = loadmodule
--[[doc--
The separation of the “basic” from the “extended” sets coincides
with the split into luat-bas.mkiv and luat-lib.mkiv.
--doc]]--
if lualibs.basic_loaded ~= true then
loadmodule"lualibs-basic.lua"
loadmodule"lualibs-compat.lua" --- restore stuff gone since v1.*
end
if lualibs.load_extended == true
and lualibs.extended_loaded ~= true then
loadmodule"lualibs-extended.lua"
end
-- vim:tw=71:sw=2:ts=2:expandtab
-- End of File `lualibs-basic.lua'.
|