diff options
-rw-r--r-- | lualibs.dtx | 199 |
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 |