summaryrefslogtreecommitdiff
path: root/lualibs.dtx
diff options
context:
space:
mode:
Diffstat (limited to 'lualibs.dtx')
-rw-r--r--lualibs.dtx199
1 files changed, 152 insertions, 47 deletions
diff --git a/lualibs.dtx b/lualibs.dtx
index 9a56b37..426f358 100644
--- a/lualibs.dtx
+++ b/lualibs.dtx
@@ -33,7 +33,7 @@
\input docstrip.tex
\Msg{************************************************************************}
\Msg{* Installation}
-\Msg{* Package: lualibs 2012/10/19 v0.97 Lua additional functions.}
+\Msg{* Package: lualibs 2013/05/04 v2.00 Lua additional functions.}
\Msg{************************************************************************}
\keepsilent
@@ -67,7 +67,7 @@ and the derived file lualibs.lua.
\generate{%
\usedir{tex/luatex/lualibs}%
- \file{lualibs.lua}{\from{lualibs.dtx}{lua}}%
+ \file{lualibs.lua}{\from{lualibs.dtx}{lualibs}}%
}
\obeyspaces
@@ -90,10 +90,38 @@ and the derived file lualibs.lua.
%<*driver>
\NeedsTeXFormat{LaTeX2e}
\ProvidesFile{lualibs.drv}
- [2012/10/19 v0.97 Lua additional functions.]
+ [2013/05/04 v2.00 Lua Libraries.]
\documentclass{ltxdoc}
+\usepackage{fancyvrb,xspace}
+\usepackage[x11names]{xcolor}
+%
+\def\primarycolor{DodgerBlue4} %%-> rgb 16 78 139 | #104e8b
+\def\secondarycolor{Goldenrod4} %%-> rgb 139 105 200 | #8b6914
+%
+\usepackage[
+ bookmarks=true,
+ colorlinks=true,
+ linkcolor=\primarycolor,
+ urlcolor=\secondarycolor,
+ citecolor=\primarycolor,
+ pdftitle={The lualibs package},
+ pdfsubject={Port of the ConTeXt Lua libraries},
+ pdfauthor={Elie Roux & Philipp Gesang},
+ pdfkeywords={luatex, lualatex, unicode, opentype}
+]{hyperref}
+\usepackage{fontspec}
+\setmainfont[
+ Numbers=OldStyle,
+ Ligatures=TeX,
+]{Linux Libertine O}
+\setmonofont[Ligatures=TeX,Scale=MatchLowercase]{Liberation Mono}
+\setsansfont[Ligatures=TeX,Scale=MatchLowercase]{Iwona Medium}
+\usepackage{hologo}
\EnableCrossrefs
\CodelineIndex
+\newcommand\TEX {\TeX\xspace}
+\newcommand\LUA {Lua\xspace}
+\newcommand\CONTEXT {Con\TeX t\xspace}
\begin{document}
\DocInput{lualibs.dtx}%
\end{document}
@@ -120,15 +148,17 @@ and the derived file lualibs.lua.
% \GetFileInfo{lualibs.drv}
%
% \title{The \textsf{lualibs} package}
-% \date{2012/10/19 v0.97}
-% \author{Elie Roux \\ \texttt{elie.roux@telecom-bretagne.eu}}
+% \date{2013/05/04 v2.00}
+% \author{Élie Roux · \texttt{elie.roux@telecom-bretagne.eu}\\
+% Philipp Gesang · \texttt{philipp.gesang@alumni.uni-heidelberg.de}}
%
% \maketitle
%
% \begin{abstract}
-% Additional lua functions taken from the libs of Con\TeX t. For an
-% introduction on this package (among others), please refer to the document
-% \texttt{luatex-reference.pdf}.
+% Additional \LUA functions taken from the \verb|l-*| and \verb|util-*| files
+% of Con\TeX t.
+% For an introduction on this package (among others), please refer
+% to the document \texttt{luatex-reference.pdf}.
% \end{abstract}
%
% \section{Overview}
@@ -212,58 +242,133 @@ and the derived file lualibs.lua.
% \section{\texttt{lualibs.lua}}
%
% \iffalse
-%<*lua>
+%<*lualibs>
% \fi
-%
% \begin{macrocode}
-module('lualibs', package.seeall)
+lualibs = lualibs or { }
-local lualibs_module = {
- name = "lualibs",
- version = 0.97,
- date = "2012/10/19",
- 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",
+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)
+% \end{macrocode}
+% 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}
+%
+% \begin{macrocode}
+
+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
+
+% \end{macrocode}
+% The lualibs may be loaded in scripts.
+% To account for the different environment, fallbacks for
+% the luatexbase facilities are installed.
+%
+% \begin{macrocode}
+
+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
+
% \end{macrocode}
+% 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()|.
%
-% Load the modules.
+% \begin{macrocode}
+
+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
+
+% \end{macrocode}
+% The separation of the “basic” from the “extended” sets coincides
+% with the split into luat-bas.mkiv and luat-lib.mkiv.
%
% \begin{macrocode}
-require("lualibs-lua")
-require("lualibs-lpeg")
-require("lualibs-function")
-require("lualibs-string")
-require("lualibs-table")
-require("lualibs-boolean")
-require("lualibs-number")
-require("lualibs-math")
-require("lualibs-io")
-require("lualibs-os")
-require("lualibs-file")
-require("lualibs-md5")
-require("lualibs-dir")
-require("lualibs-unicode")
-require("lualibs-url")
-require("lualibs-set")
-require("lualibs-util-str")
---[[everything below apparently not required for the fontloader]]
-require("lualibs-util-tab")
-require("lualibs-util-sto")
-require("lualibs-util-dim")
-require("lualibs-util-jsn")
---require("lualibs-util-mrg")-- not required
---require("lualibs-util-lua")
+
+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{macrocode}
%
% \iffalse
-%</lua>
+%</lualibs>
% \fi
% \Finale
\endinput