From 67744bc1c59803c2645927f15cb30fbbb7365a99 Mon Sep 17 00:00:00 2001
From: Philipp Gesang <phg42.2a@gmail.com>
Date: Sat, 4 May 2013 21:56:50 +0200
Subject: merged lualibs.lua back into dtx; adapt style to match luaotfload.dtx

---
 lualibs.dtx | 199 ++++++++++++++++++++++++++++++++++++++++++++++--------------
 1 file changed, 152 insertions(+), 47 deletions(-)

(limited to 'lualibs.dtx')

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
-- 
cgit v1.2.3

