summaryrefslogtreecommitdiff
path: root/luaextra.dtx
diff options
context:
space:
mode:
Diffstat (limited to 'luaextra.dtx')
-rw-r--r--luaextra.dtx215
1 files changed, 139 insertions, 76 deletions
diff --git a/luaextra.dtx b/luaextra.dtx
index cb95dd8..51b2835 100644
--- a/luaextra.dtx
+++ b/luaextra.dtx
@@ -53,7 +53,8 @@ and the derived file luaextra.lua.
\endpreamble
-% The following hacks are to generate a lua file with lua comments starting by -- instead of %%
+% The following hacks are to generate a lua file with lua comments starting by
+% -- instead of %%
\def\MetaPrefix{-- }
@@ -125,20 +126,39 @@ and the derived file luaextra.lua.
% \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 libs 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}
%
-% Lua is a very minimal language, and it does not have a lot of built-in functions. Some functions will certainly be needed by a lot of packages. Instead of making each of them implement these functions, the aim of this file is to provide a minimal set of functions. All functions are taken from Con\TeX t libraries.
-%
-% There are some differences with the Con\TeX t funtions though, especially on names: for example the \texttt{file.*} funtions are renamed in \texttt{fpath.*}. It seems more logical as they deal with file paths, not files. Also the \texttt{file.is\_readable} and \texttt{file.is\_writable} are renamed \texttt{lfs.is\_readable} and \texttt{lfs.is\_writable}.
-%
-% If you use a function you think is missing in this file, please tell the maintainer.
-%
-% \texttt{Warning:} Even if the names will certainly remain the same, some implementations may differ, and some functions might appear or dissapear. As Lua\TeX\ is not stable, this file is not neither.
-%
-% All functions are described in this document, but the one of the functions you'll use most will certainly be \texttt{table.serialize} (also named \texttt{table.tostring}) that takes a table and returns an intented string describing the table. It describes the table so that Lua\TeX\ can read it again as a table. You can do a lot of things with this functions, like printing a table for debugging, or saving a table into a file. Functions are also converted into bytecode to be saved.
+% Lua is a very minimal language, and it does not have a lot of built-in
+% functions. Some functions will certainly be needed by a lot of packages.
+% Instead of making each of them implement these functions, the aim of this
+% file is to provide a minimal set of functions. All functions are taken from
+% Con\TeX t libraries.
+%
+% There are some differences with the Con\TeX t funtions though, especially on
+% names: for example the \texttt{file.*} funtions are renamed in
+% \texttt{fpath.*}. It seems more logical as they deal with file paths, not
+% files. Also the \texttt{file.is\_readable} and \texttt{file.is\_writable}
+% are renamed \texttt{lfs.is\_readable} and \texttt{lfs.is\_writable}.
+%
+% If you use a function you think is missing in this file, please tell the
+% maintainer.
+%
+% \texttt{Warning:} Even if the names will certainly remain the same, some
+% implementations may differ, and some functions might appear or dissapear. As
+% Lua\TeX\ is not stable, this file is not neither.
+%
+% All functions are described in this document, but the one of the functions
+% you'll use most will certainly be \texttt{table.serialize} (also named
+% \texttt{table.tostring}) that takes a table and returns an intented string
+% describing the table. It describes the table so that Lua\TeX\ can read it
+% again as a table. You can do a lot of things with this functions, like
+% printing a table for debugging, or saving a table into a file. Functions are
+% also converted into bytecode to be saved.
%
% \section{\texttt{luaextra.lua}}
%
@@ -162,9 +182,10 @@ do
end
% \end{macrocode}
%
-% \begin{macro}{string:stripspaces}
+% \begin{macro}{string:stripspaces}
%
-% A function to strip the spaces at the beginning and at the end of a string.
+% A function to strip the spaces at the beginning and at the end of a
+% string.
%
% \begin{macrocode}
@@ -174,9 +195,11 @@ end
% \end{macrocode}
%
-% \end{macro}\begin{macro}{string.is boolean}
+% \end{macro}
+% \begin{macro}{string.is boolean}
%
-% If the argument is a string describing a boolean, this function returns the boolean, otherwise it retuns nil.
+% If the argument is a string describing a boolean, this function returns
+% the boolean, otherwise it retuns nil.
%
% \begin{macrocode}
@@ -193,9 +216,10 @@ end
% \end{macrocode}
%
-% \end{macro}\begin{macro}{string.is number}
+% \end{macro}
+% \begin{macro}{string.is number}
%
-% Returns true if the argument string is a number.
+% Returns true if the argument string is a number.
%
% \begin{macrocode}
@@ -205,9 +229,11 @@ end
% \end{macrocode}
%
-% \end{macro}\begin{macro}{lpeg.space and lpeg.newline}
+% \end{macro}
+% \begin{macro}{lpeg.space and lpeg.newline}
%
-% Two small helpers for \texttt{lpeg}, that will certainly be widely used: spaces and newlines.
+% Two small helpers for \texttt{lpeg}, that will certainly be widely used:
+% spaces and newlines.
%
% \begin{macrocode}
@@ -216,15 +242,17 @@ lpeg.newline = lpeg.P("\r\n") + lpeg.P("\r") +lpeg.P("\n")
% \end{macrocode}
%
-% \end{macro}\begin{macro}{table.fastcopy}
+% \end{macro}
+% \begin{macro}{table.fastcopy}
%
-% A function copying a table fastly.
+% A function copying a table fastly.
%
% \begin{macrocode}
if not table.fastcopy then do
- local type, pairs, getmetatable, setmetatable = type, pairs, getmetatable, setmetatable
+ local type, pairs, getmetatable, setmetatable =
+ type, pairs, getmetatable, setmetatable
local function fastcopy(old) -- fast one
if old then
@@ -252,9 +280,11 @@ end end
% \end{macrocode}
%
-% \end{macro}\begin{macro}{table.copy}
+% \end{macro}
+% \begin{macro}{table.copy}
%
-% A function copying a table in more cases than fastcopy, for example when a key is a table.
+% A function copying a table in more cases than fastcopy, for example when
+% a key is a table.
%
% \begin{macrocode}
@@ -297,9 +327,10 @@ end end
% \end{macrocode}
%
-% \end{macro}\begin{macro}{table.serialize}
+% \end{macro}
+% \begin{macro}{table.serialize}
%
-% A bunch of functions leading to \texttt{table.serialize}.
+% A bunch of functions leading to \texttt{table.serialize}.
%
% \begin{macrocode}
@@ -554,9 +585,11 @@ end
% \end{macrocode}
%
-% \end{macro}\begin{macro}{table.tohash}
+% \end{macro}
+% \begin{macro}{table.tohash}
%
-% Returning a table with all values of the argument table as keys, and \texttt{false} as values. This is what we will call a hash.
+% Returning a table with all values of the argument table as keys, and
+% \texttt{false} as values. This is what we will call a hash.
%
% \begin{macrocode}
@@ -570,9 +603,10 @@ end
% \end{macrocode}
%
-% \end{macro}\begin{macro}{table.fromhash}
+% \end{macro}
+% \begin{macro}{table.fromhash}
%
-% Returning a table built from a hash, with simple integer keys.
+% Returning a table built from a hash, with simple integer keys.
%
% \begin{macrocode}
@@ -586,9 +620,11 @@ end
% \end{macrocode}
%
-% \end{macro}\begin{macro}{table.contains value}
+% \end{macro}
+% \begin{macro}{table.contains value}
%
-% A function returning true if the value \texttt{val} is in the table \texttt{t}.
+% A function returning true if the value \texttt{val} is in the table
+% \texttt{t}.
%
% \begin{macrocode}
@@ -605,9 +641,11 @@ end
% \end{macrocode}
%
-% \end{macro}\begin{macro}{table.contains key}
+% \end{macro}
+% \begin{macro}{table.contains key}
%
-% A function returning true if the key \texttt{key} is in the table \texttt{t}
+% A function returning true if the key \texttt{key} is in the table
+% \texttt{t}
%
% \begin{macrocode}
@@ -624,9 +662,11 @@ end
% \end{macrocode}
%
-% \end{macro}\begin{macro}{table.value position}
+% \end{macro}
+% \begin{macro}{table.value position}
%
-% A function returning the position of a value in a table. This will be important to be able to remove a value.
+% A function returning the position of a value in a table. This will be
+% important to be able to remove a value.
%
% \begin{macrocode}
@@ -645,9 +685,10 @@ end
% \end{macrocode}
%
-% \end{macro}\begin{macro}{table.key position}
+% \end{macro}
+% \begin{macro}{table.key position}
%
-% A function returning the position of a key in a table.
+% A function returning the position of a key in a table.
%
% \begin{macrocode}
@@ -666,9 +707,10 @@ end
% \end{macrocode}
%
-% \end{macro}\begin{macro}{table.remove value}
+% \end{macro}
+% \begin{macro}{table.remove value}
%
-% Removes the first occurence of a value from a table.
+% Removes the first occurence of a value from a table.
%
% \begin{macrocode}
@@ -681,9 +723,10 @@ end
% \end{macrocode}
%
-% \end{macro}\begin{macro}{table.remove key}
+% \end{macro}
+% \begin{macro}{table.remove key}
%
-% Removing a key from a table.
+% Removing a key from a table.
%
% \begin{macrocode}
@@ -696,9 +739,10 @@ end
% \end{macrocode}
%
-% \end{macro}\begin{macro}{table.is empty}
+% \end{macro}
+% \begin{macro}{table.is empty}
%
-% Returns true if a table is empty.
+% Returns true if a table is empty.
%
% \begin{macrocode}
@@ -708,7 +752,8 @@ end
% \end{macrocode}
%
-% \texttt{fpath} will contain all the file path manipulation functions. Some functions certainly need a little update or cleanup...
+% \texttt{fpath} will contain all the file path manipulation functions.
+% Some functions certainly need a little update or cleanup...
%
% \begin{macrocode}
@@ -716,9 +761,10 @@ fpath = { }
% \end{macrocode}
%
-% \end{macro}\begin{macro}{fpath.removesuffix}
+% \end{macro}
+% \begin{macro}{fpath.removesuffix}
%
-% A function to remove the suffix (extention) of a filename.
+% A function to remove the suffix (extention) of a filename.
%
% \begin{macrocode}
@@ -728,9 +774,10 @@ end
% \end{macrocode}
%
-% \end{macro}\begin{macro}{fpath.addsuffix}
+% \end{macro}
+% \begin{macro}{fpath.addsuffix}
%
-% A function adding a suffix to a filename, except if it already has one.
+% A function adding a suffix to a filename, except if it already has one.
%
% \begin{macrocode}
@@ -744,9 +791,10 @@ end
% \end{macrocode}
%
-% \end{macro}\begin{macro}{fpath.replacesuffix}
+% \end{macro}
+% \begin{macro}{fpath.replacesuffix}
%
-% A function replacing a suffix by a new one.
+% A function replacing a suffix by a new one.
%
% \begin{macrocode}
@@ -760,9 +808,10 @@ end
% \end{macrocode}
%
-% \end{macro}\begin{macro}{fpath.dirname}
+% \end{macro}
+% \begin{macro}{fpath.dirname}
%
-% A function returning the directory of a file path.
+% A function returning the directory of a file path.
%
% \begin{macrocode}
@@ -772,7 +821,8 @@ end
% \end{macrocode}
%
-% \end{macro}\begin{macro}{fpath.basename}
+% \end{macro}
+% \begin{macro}{fpath.basename}
%
% A function returning the basename (the name of the file, without the directories) of a file path.
%
@@ -787,9 +837,10 @@ end
% \end{macrocode}
%
-% \end{macro}\begin{macro}{fpath.nameonly}
+% \end{macro}
+% \begin{macro}{fpath.nameonly}
%
-% Returning the basename of a file without the suffix.
+% Returning the basename of a file without the suffix.
%
% \begin{macrocode}
@@ -799,9 +850,10 @@ end
% \end{macrocode}
%
-% \end{macro}\begin{macro}{fpath.suffix}
+% \end{macro}
+% \begin{macro}{fpath.suffix}
%
-% Returns the suffix of a file name.
+% Returns the suffix of a file name.
%
% \begin{macrocode}
@@ -811,9 +863,10 @@ end
% \end{macrocode}
%
-% \end{macro}\begin{macro}{fpath.join}
+% \end{macro}
+% \begin{macro}{fpath.join}
%
-% A function joining any number of arguments into a complete path.
+% A function joining any number of arguments into a complete path.
%
% \begin{macrocode}
@@ -833,9 +886,10 @@ end
% \end{macrocode}
%
-% \end{macro}\begin{macro}{fpath.split}
+% \end{macro}
+% \begin{macro}{fpath.split}
%
-% A function returning a table with all directories from a filename.
+% A function returning a table with all directories from a filename.
%
% \begin{macrocode}
@@ -854,9 +908,10 @@ end
% \end{macrocode}
%
-% \end{macro}\begin{macro}{fpath.normalize sep}
+% \end{macro}
+% \begin{macro}{fpath.normalize sep}
%
-% A function to change directory separators to canonical ones (\texttt{/}).
+% A function to change directory separators to canonical ones (\texttt{/}).
%
% \begin{macrocode}
@@ -866,9 +921,11 @@ end
% \end{macrocode}
%
-% \end{macro}\begin{macro}{fpath.localize sep}
+% \end{macro}
+% \begin{macro}{fpath.localize sep}
%
-% A function changing directory separators into local ones (\texttt{/} on Unix, |\| on Windows).
+% A function changing directory separators into local ones (\texttt{/} on
+% Unix, |\| on Windows).
%
% \begin{macrocode}
@@ -882,9 +939,11 @@ end
% \end{macrocode}
%
-% \end{macro}\begin{macro}{lfs.is writable}
+% \end{macro}
+% \begin{macro}{lfs.is writable}
%
-% Returns true if a file is writable. This function and the following ones are a bit too expensive, they should be made with |lfs.attributes|.
+% Returns true if a file is writable. This function and the following ones
+% are a bit too expensive, they should be made with |lfs.attributes|.
%
% \begin{macrocode}
@@ -900,9 +959,10 @@ end
% \end{macrocode}
%
-% \end{macro}\begin{macro}{lfs.is readable}
+% \end{macro}
+% \begin{macro}{lfs.is readable}
%
-% Returns true if a file is readable.
+% Returns true if a file is readable.
%
% \begin{macrocode}
@@ -918,9 +978,10 @@ end
% \end{macrocode}
%
-% \end{macro}\begin{macro}{math.round}
+% \end{macro}
+% \begin{macro}{math.round}
%
-% Returns the closest integer.
+% Returns the closest integer.
%
% \begin{macrocode}
@@ -932,9 +993,10 @@ end
% \end{macrocode}
%
-% \end{macro}\begin{macro}{math.div}
+% \end{macro}
+% \begin{macro}{math.div}
%
-% Returns the quotient of the euclidian division of n by m.
+% Returns the quotient of the euclidian division of n by m.
%
% \begin{macrocode}
@@ -946,9 +1008,10 @@ end
% \end{macrocode}
%
-% \end{macro}\begin{macro}{math.mod}
+% \end{macro}
+% \begin{macro}{math.mod}
%
-% Returns the remainder of the euclidian division of n by m.
+% Returns the remainder of the euclidian division of n by m.
%
% \begin{macrocode}