summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/source/luatex
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2010-05-14 18:32:26 +0000
committerKarl Berry <karl@freefriends.org>2010-05-14 18:32:26 +0000
commit1d462235e9301d809d6f8b600e52e43481d77fa4 (patch)
tree7a17cf9c877d60d159e95d7490c0283cb07d37c0 /Master/texmf-dist/source/luatex
parent6678cfe21d5566c7ddf935ab80e19e89d30c4603 (diff)
new package lualibs (13may10)
git-svn-id: svn://tug.org/texlive/trunk@18254 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/source/luatex')
-rw-r--r--Master/texmf-dist/source/luatex/lualibs/Makefile93
-rw-r--r--Master/texmf-dist/source/luatex/lualibs/lualibs.dtx408
2 files changed, 501 insertions, 0 deletions
diff --git a/Master/texmf-dist/source/luatex/lualibs/Makefile b/Master/texmf-dist/source/luatex/lualibs/Makefile
new file mode 100644
index 00000000000..6d7673b9fa7
--- /dev/null
+++ b/Master/texmf-dist/source/luatex/lualibs/Makefile
@@ -0,0 +1,93 @@
+# Makefile for lualibs.
+
+NAME = lualibs
+DTX = $(wildcard *.dtx)
+DOC_DTX = $(patsubst %.dtx, %.pdf, $(DTX))
+MODULES = $(wildcard lualibs-*.lua)
+
+# Files grouped by generation mode
+UNPACKED= lualibs.lua
+COMPILED = $(DOC_DTX)
+GENERATED = $(UNPACKED) $(DOC_DTX)
+SOURCE = $(DTX) $(MODULES) README Makefile NEWS
+
+# Files grouped by installation location
+RUNFILES = $(UNPACKED) $(MODULES)
+DOCFILES = $(DOC_DTX) README NEWS
+SRCFILES = $(DTX) $(SRC_TEX) Makefile
+
+# The following definitions should be equivalent
+# ALL_FILES = $(RUNFILES) $(DOCFILES) $(SRCFILES)
+ALL_FILES = $(GENERATED) $(SOURCE)
+
+# Installation locations
+FORMAT = luatex
+RUNDIR = $(TEXMFROOT)/tex/$(FORMAT)/$(NAME)
+DOCDIR = $(TEXMFROOT)/doc/$(FORMAT)/$(NAME)
+SRCDIR = $(TEXMFROOT)/source/$(FORMAT)/$(NAME)
+TEXMFROOT = ./texmf
+
+CTAN_ZIP = $(NAME).zip
+TDS_ZIP = $(NAME).tds.zip
+ZIPS = $(CTAN_ZIP) $(TDS_ZIP)
+
+DO_TEX = tex --interaction=batchmode $< >/dev/null
+DO_PDFLATEX = pdflatex --interaction=batchmode $< >/dev/null
+DO_PDFLUALATEX = pdflualatex --interaction=batchmode $< >/dev/null
+DO_MAKEINDEX = makeindex -s gind.ist $(subst .dtx,,$<) >/dev/null 2>&1
+
+all: $(GENERATED) $(DOC_TEX)
+doc: $(COMPILED)
+unpack: $(UNPACKED)
+ctan: $(CTAN_ZIP)
+tds: $(TDS_ZIP)
+world: all ctan
+.PHONY: all doc unpack ctan tds world
+
+%.pdf: %.dtx
+ $(DO_PDFLATEX)
+ $(DO_MAKEINDEX)
+ $(DO_PDFLATEX)
+ $(DO_PDFLATEX)
+
+$(UNPACKED): lualibs.dtx
+ $(DO_TEX)
+
+$(CTAN_ZIP): $(SOURCE) $(COMPILED) $(TDS_ZIP)
+ @echo "Making $@ for CTAN upload."
+ @$(RM) -- $@
+ @zip -9 $@ $^ >/dev/null
+
+define run-install
+@mkdir -p $(RUNDIR) && cp $(RUNFILES) $(RUNDIR)
+@mkdir -p $(DOCDIR) && cp $(DOCFILES) $(DOCDIR)
+@mkdir -p $(SRCDIR) && cp $(SRCFILES) $(SRCDIR)
+endef
+
+$(TDS_ZIP): TEXMFROOT=./tmp-texmf
+$(TDS_ZIP): $(ALL_FILES)
+ @echo "Making TDS-ready archive $@."
+ @$(RM) -- $@
+ $(run-install)
+ @cd $(TEXMFROOT) && zip -9 ../$@ -r . >/dev/null
+ @$(RM) -r -- $(TEXMFROOT)
+
+.PHONY: install manifest clean mrproper
+
+install: $(ALL_FILES)
+ @echo "Installing in '$(TEXMFROOT)'."
+ $(run-install)
+
+manifest:
+ @echo "Source files:"
+ @for f in $(SOURCE); do echo $$f; done
+ @echo ""
+ @echo "Derived files:"
+ @for f in $(GENERATED); do echo $$f; done
+
+clean:
+ @$(RM) -- *.log *.aux *.toc *.idx *.ind *.ilg
+
+mrproper: clean
+ @$(RM) -- $(GENERATED) $(ZIPS)
+
diff --git a/Master/texmf-dist/source/luatex/lualibs/lualibs.dtx b/Master/texmf-dist/source/luatex/lualibs/lualibs.dtx
new file mode 100644
index 00000000000..56aba9d2ff9
--- /dev/null
+++ b/Master/texmf-dist/source/luatex/lualibs/lualibs.dtx
@@ -0,0 +1,408 @@
+% \iffalse meta-comment
+%
+% Copyright (C) 2009 by PRAGMA ADE / ConTeXt Development Team
+%
+% See ConTeXt's mreadme.pdf for the license.
+%
+% This work consists of the main source file lualibs.dtx
+% and the derived file lualibs.lua.
+%
+% Unpacking:
+% tex lualibs.dtx
+%
+% Documentation:
+% pdflatex lualibs.dtx
+%
+% The class ltxdoc loads the configuration file ltxdoc.cfg
+% if available. Here you can specify further options, e.g.
+% use A4 as paper format:
+% \PassOptionsToClass{a4paper}{article}
+%
+%
+%
+%<*ignore>
+\begingroup
+ \def\x{LaTeX2e}%
+\expandafter\endgroup
+\ifcase 0\ifx\install y1\fi\expandafter
+ \ifx\csname processbatchFile\endcsname\relax\else1\fi
+ \ifx\fmtname\x\else 1\fi\relax
+\else\csname fi\endcsname
+%</ignore>
+%<*install>
+\input docstrip.tex
+\Msg{************************************************************************}
+\Msg{* Installation}
+\Msg{* Package: lualibs 2010/01/11 v0.92 Lua additional functions.}
+\Msg{************************************************************************}
+
+\keepsilent
+\askforoverwritefalse
+
+\let\MetaPrefix\relax
+
+\preamble
+This is a generated file.
+
+Copyright (C) 2009 by PRAGMA ADE / ConTeXt Development Team
+
+See ConTeXt's mreadme.pdf for the license.
+
+This work consists of the main source file lualibs.dtx
+and the derived file lualibs.lua.
+
+\endpreamble
+
+% The following hacks are to generate a lua file with lua comments starting by
+% -- instead of %%
+
+\def\MetaPrefix{-- }
+
+\def\luapostamble{%
+ \MetaPrefix^^J%
+ \MetaPrefix\space End of File `\outFileName'.%
+}
+
+\def\currentpostamble{\luapostamble}%
+
+\generate{%
+ \usedir{tex/luatex/lualibs}%
+ \file{lualibs.lua}{\from{lualibs.dtx}{lua}}%
+}
+
+\obeyspaces
+\Msg{************************************************************************}
+\Msg{*}
+\Msg{* To finish the installation you have to move the following}
+\Msg{* files into a directory searched by TeX:}
+\Msg{*}
+\Msg{* lualibs.lua}
+\Msg{*}
+\Msg{* Happy TeXing!}
+\Msg{*}
+\Msg{************************************************************************}
+
+\endbatchfile
+%</install>
+%<*ignore>
+\fi
+%</ignore>
+%<*driver>
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesFile{lualibs.drv}
+ [2010/01/11 v0.92 Lua additional functions.]
+\documentclass{ltxdoc}
+\EnableCrossrefs
+\CodelineIndex
+\begin{document}
+ \DocInput{lualibs.dtx}%
+\end{document}
+%</driver>
+% \fi
+% \CheckSum{0}
+%
+% \CharacterTable
+% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+% Digits \0\1\2\3\4\5\6\7\8\9
+% Exclamation \! Double quote \" Hash (number) \#
+% Dollar \$ Percent \% Ampersand \&
+% Acute accent \' Left paren \( Right paren \)
+% Asterisk \* Plus \+ Comma \,
+% Minus \- Point \. Solidus \/
+% Colon \: Semicolon \; Less than \<
+% Equals \= Greater than \> Question mark \?
+% Commercial at \@ Left bracket \[ Backslash \\
+% Right bracket \] Circumflex \^ Underscore \_
+% Grave accent \` Left brace \{ Vertical bar \|
+% Right brace \} Tilde \~}
+%
+% \GetFileInfo{lualibs.drv}
+%
+% \title{The \textsf{lualibs} package}
+% \date{2010/05/10 v0.93}
+% \author{Elie Roux \\ \texttt{elie.roux@telecom-bretagne.eu}}
+%
+% \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}.
+% \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
+% package is to provide a standard 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{lualibs.lua}}
+%
+% \iffalse
+%<*lua>
+% \fi
+%
+% \begin{macrocode}
+do
+ local lualibs_module = {
+ name = "lualibs",
+ version = 0.93,
+ date = "2010/05/10",
+ 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",
+ }
+ if luatexbase then
+ luatexbase.provides_module(lualibs_module)
+ end
+end
+% \end{macrocode}
+% Initialize \textsf{Kpathsea} library, so that |require()| will use it to
+% locate modules.
+% \begin{macrocode}
+
+kpse.set_program_name("luatex")
+
+% \end{macrocode}
+% We could load the modules with |require|, but this works only from version
+% 0.44, and doesn't work in Debian, so we simply use |dofile|.
+% \begin{macrocode}
+
+local function load_lualibs_module(filename)
+ local path = kpse.find_file(filename)
+ if not path then
+ texio.write_nl(string.format("lualibs: error: cannot find file %s", filename))
+ return
+ end
+ texio.write_nl('log', string.format("lualibs: loading file %s", path))
+ --if (tex and tex.luatexversion and tex.luatexversion > 44)
+ -- or (status and status.luatex_version and status.luatex_version > 44) then
+ -- require(filename)
+ --else
+ dofile(path)
+ --end
+end
+
+load_lualibs_module("lualibs-string.lua")
+load_lualibs_module("lualibs-lpeg.lua")
+load_lualibs_module("lualibs-boolean.lua")
+load_lualibs_module("lualibs-number.lua")
+load_lualibs_module("lualibs-math.lua")
+load_lualibs_module("lualibs-table.lua")
+load_lualibs_module("lualibs-aux.lua")
+load_lualibs_module("lualibs-io.lua")
+load_lualibs_module("lualibs-os.lua")
+load_lualibs_module("lualibs-file.lua")
+load_lualibs_module("lualibs-md5.lua")
+load_lualibs_module("lualibs-dir.lua")
+load_lualibs_module("lualibs-unicode.lua")
+load_lualibs_module("lualibs-utils.lua")
+load_lualibs_module("lualibs-dimen.lua")
+load_lualibs_module("lualibs-url.lua")
+load_lualibs_module("lualibs-set.lua")
+load_lualibs_module("lualibs-dimen.lua")
+
+% \end{macrocode}
+% Aliases for backward compatibility.
+% \begin{macrocode}
+
+fpath = file
+fpath.split = file.split_path
+lfs.is_readable = file.is_readable
+lfs.is_writable = file.is_writable
+
+% \end{macrocode}
+% Functions no longer provided by Con\TeX t module.
+%
+% \begin{macro}{string:stripspaces}
+%
+% A function to strip the spaces at the beginning and at the end of a
+% string.
+%
+% \begin{macrocode}
+
+function string:stripspaces()
+ return (self:gsub("^%s*(.-)%s*$", "%1"))
+end
+
+% \end{macrocode}
+%
+% \end{macro}
+% \begin{macro}{lpeg.space and lpeg.newline}
+%
+% Two small helpers for \texttt{lpeg}, that will certainly be widely used:
+% spaces and newlines.
+%
+% \begin{macrocode}
+
+lpeg.space = lpeg.S(" \t\f\v")
+lpeg.newline = lpeg.P("\r\n") + lpeg.P("\r") +lpeg.P("\n")
+
+% \end{macrocode}
+%
+% \end{macro}
+% \begin{macro}{table.contains value}
+%
+% A function returning true if the value \texttt{val} is in the table
+% \texttt{t}.
+%
+% \begin{macrocode}
+
+function table.contains_value(t, val)
+ if t then
+ for k, v in pairs(t) do
+ if v==val then
+ return true
+ end
+ end
+ end
+ return false
+end
+
+% \end{macrocode}
+%
+% \end{macro}
+% \begin{macro}{table.contains key}
+%
+% A function returning true if the key \texttt{key} is in the table
+% \texttt{t}
+%
+% \begin{macrocode}
+
+function table.contains_key(t, key)
+ if t then
+ for k, v in pairs(t) do
+ if k==key then
+ return true
+ end
+ end
+ end
+ return false
+end
+
+% \end{macrocode}
+%
+% \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.
+%
+% \begin{macrocode}
+
+function table.value_position(t, val)
+ if t then
+ local i=1
+ for k, v in pairs(t) do
+ if v==val then
+ return i
+ end
+ i=i+1
+ end
+ end
+ return 0
+end
+
+% \end{macrocode}
+%
+% \end{macro}
+% \begin{macro}{table.key position}
+%
+% A function returning the position of a key in a table.
+%
+% \begin{macrocode}
+
+function table.key_position(t, key)
+ if t then
+ local i=1
+ for k,v in pairs(t) do
+ if k==key then
+ return i
+ end
+ i = i+1
+ end
+ end
+ return -1
+end
+
+% \end{macrocode}
+%
+% \end{macro}
+% \begin{macro}{table.remove key}
+%
+% Removing a key from a table.
+%
+% \begin{macrocode}
+
+function table.remove_key(t, k)
+ local p = table.key_position(t,k)
+ if p ~= -1 then
+ table.remove(t, table.key_position(t,k))
+ end
+end
+
+% \end{macrocode}
+%
+% \end{macro}
+% \begin{macro}{fpath.normalize sep}
+%
+% A function to change directory separators to canonical ones (\texttt{/}).
+%
+% \begin{macrocode}
+
+function fpath.normalize_sep(str)
+ return str:gsub("\\", "/")
+end
+
+% \end{macrocode}
+%
+% \end{macro}
+% \begin{macro}{fpath.localize sep}
+%
+% A function changing directory separators into local ones (\texttt{/} on
+% Unix, |\| on Windows).
+%
+% \begin{macrocode}
+
+function fpath.localize_sep(str)
+ if os.type == 'windows' or os.type == 'msdos' then
+ return str:gsub("/", "\\")
+ else
+ return str:gsub("\\", "/")
+ end
+end
+
+% \end{macrocode}
+%
+% \end{macro}
+%
+% \iffalse
+%</lua>
+% \fi
+% \Finale
+\endinput