summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/luatex/lualibs/lualibs.lua
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/tex/luatex/lualibs/lualibs.lua')
-rw-r--r--Master/texmf-dist/tex/luatex/lualibs/lualibs.lua177
1 files changed, 146 insertions, 31 deletions
diff --git a/Master/texmf-dist/tex/luatex/lualibs/lualibs.lua b/Master/texmf-dist/tex/luatex/lualibs/lualibs.lua
index 9c11c1d4a8a..74eafba6878 100644
--- a/Master/texmf-dist/tex/luatex/lualibs/lualibs.lua
+++ b/Master/texmf-dist/tex/luatex/lualibs/lualibs.lua
@@ -4,7 +4,7 @@
--
-- The original source files were:
--
--- lualibs.dtx (with options: `lua')
+-- lualibs.dtx (with options: `lualibs')
-- This is a generated file.
--
-- Copyright (C) 2009 by PRAGMA ADE / ConTeXt Development Team
@@ -14,38 +14,153 @@
-- This work consists of the main source file lualibs.dtx
-- and the derived file lualibs.lua.
--
-module('lualibs', package.seeall)
-
-local lualibs_module = {
- name = "lualibs",
- version = 0.96,
- date = "2011/01/20",
- description = "Lua additional functions.",
- author = "Hans Hagen, PRAGMA-ADE, Hasselt NL & Elie Roux",
- copyright = "PRAGMA ADE / ConTeXt Development Team",
- license = "See ConTeXt's mreadme.pdf for the license",
+-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ By default, \identifier{lualibs} will not load the libraries individually.
+ Instead, it includes two \emphasis{merged packages} that have been compiled
+ from the original files.
+ This is achieved by means of \identifier{mtx-package}, a script for bundling
+ \LUA code shipped with \CONTEXT.
+ This concatenates the code of several \LUA files into a single file that is
+ both easier to distribute and loading (marginally) faster.
+ \identifier{mtx-package} ensures that the code from each file gets its
+ own closure and strips newlines and comments, resulting in a smaller payload.
+ Another package that relies on it heavily is the font loader as contained in
+ \identifier{luaotfload} and \identifier{luatex-fonts}.
+
+ If \CONTEXT is installed on the system, the merge files can be created
+ by running:
+
+ \begin{quote}\begin{verbatim}
+ mtxrun --script package --merge lualibs-basic.lua
+ mtxrun --script package --merge lualibs-extended.lua
+ \end{verbatim}\end{quote}
+
+ \noindent
+ Of course there is a make target for that:
+
+ \begin{quote}\begin{verbatim}
+ make merge
+ \end{verbatim}\end{quote}
+ \noindent
+ will take care of assembling the packages from the files distributed with
+ \identifier{lualibs}.
+
+ For this to work, the syntax of the \LUA file needs to be well-formed:
+ files that should be merged must be included via a function
+ \verb|loadmodule()|.
+ It doesn’t matter if the function actually does something; a dummy will
+ suffice.
+ Also, the argument to \verb|loadmodule()| must be wrapped in parentheses.
+ This rule is quite convenient, actually, since it allows excluding files
+ from the merge while still using \verb|loadmodule()| consistently.
+
+ \begin{quote}\begin{verbatim}
+ ...
+ loadmodule("my-lua-file.lua") -- <= will be merged
+ loadmodule('my-2nd-file.lua') -- <= will be merged
+ loadmodule "my-3rd-file.lua" -- <= will be ignored
+ ...
+ \end{verbatim}\end{quote}
+
+ Note that there is one exception to the packaging:
+ \fileent{lualibs-util-jsn.lua} cannot be successfully packaged because
+ it follows a different coding convention, returning a \LUA table on exit.
+ Therefore, the file is loaded separately as part of the \identifier{extended}
+ set like any other \LUA module.
+
+-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+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",
}
-if luatexbase and luatexbase.provides_module then
- luatexbase.provides_module(lualibs_module)
+
+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
-require("lualibs-string")
-require("lualibs-lpeg")
-require("lualibs-boolean")
-require("lualibs-number")
-require("lualibs-math")
-require("lualibs-table")
-require("lualibs-aux")
-require("lualibs-io")
-require("lualibs-os")
-require("lualibs-file")
-require("lualibs-md5")
-require("lualibs-dir")
-require("lualibs-unicode")
-require("lualibs-utils")
-require("lualibs-dimen")
-require("lualibs-url")
-require("lualibs-set")
-require("lualibs-dimen")
+config.lualibs.verbose = config.lualibs.verbose == false
+
+
+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
+
+
+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
+
+
+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
+
+--- This restores the default of loading everything should a package
+--- have requested otherwise. Will be gone once there is a canonical
+--- interface for parameterized loading of libraries.
+lualibs.load_extended = true
+
+-- vim:tw=71:sw=2:ts=2:expandtab
+
+-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
--
-- End of File `lualibs.lua'.