summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPhilipp Gesang <phg42.2a@gmail.com>2013-05-07 02:31:54 -0700
committerPhilipp Gesang <phg42.2a@gmail.com>2013-05-07 02:31:54 -0700
commitc2e7deb7254aae721ebefdc6c24ddb3e9913e537 (patch)
tree7beedb63909443eb7297e328d0c511d1fa092d94
parentef3dc20573a0b42272649a96193c4d67c1cca2b1 (diff)
parentd979da49344f89cf9a40b33c0a0b70a1a6d5ca00 (diff)
downloadlualibs-c2e7deb7254aae721ebefdc6c24ddb3e9913e537.tar.gz
Merge pull request #6 from phi-gamma/master
prepare release
-rw-r--r--LICENSE339
-rw-r--r--Makefile15
-rw-r--r--NEWS8
-rw-r--r--README60
-rw-r--r--lualibs.dtx111
-rw-r--r--lualibs.lua124
6 files changed, 445 insertions, 212 deletions
diff --git a/LICENSE b/LICENSE
new file mode 100644
index 0000000..d159169
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,339 @@
+ GNU GENERAL PUBLIC LICENSE
+ Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The licenses for most software are designed to take away your
+freedom to share and change it. By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users. This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it. (Some other Free Software Foundation software is covered by
+the GNU Lesser General Public License instead.) You can apply it to
+your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+ To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have. You must make sure that they, too, receive or can get the
+source code. And you must show them these terms so they know their
+rights.
+
+ We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+ Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software. If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+ Finally, any free program is threatened constantly by software
+patents. We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary. To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ GNU GENERAL PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License. The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language. (Hereinafter, translation is included without limitation in
+the term "modification".) Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope. The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+ 1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+ 2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+ a) You must cause the modified files to carry prominent notices
+ stating that you changed the files and the date of any change.
+
+ b) You must cause any work that you distribute or publish, that in
+ whole or in part contains or is derived from the Program or any
+ part thereof, to be licensed as a whole at no charge to all third
+ parties under the terms of this License.
+
+ c) If the modified program normally reads commands interactively
+ when run, you must cause it, when started running for such
+ interactive use in the most ordinary way, to print or display an
+ announcement including an appropriate copyright notice and a
+ notice that there is no warranty (or else, saying that you provide
+ a warranty) and that users may redistribute the program under
+ these conditions, and telling the user how to view a copy of this
+ License. (Exception: if the Program itself is interactive but
+ does not normally print such an announcement, your work based on
+ the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole. If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works. But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+ 3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+ a) Accompany it with the complete corresponding machine-readable
+ source code, which must be distributed under the terms of Sections
+ 1 and 2 above on a medium customarily used for software interchange; or,
+
+ b) Accompany it with a written offer, valid for at least three
+ years, to give any third party, for a charge no more than your
+ cost of physically performing source distribution, a complete
+ machine-readable copy of the corresponding source code, to be
+ distributed under the terms of Sections 1 and 2 above on a medium
+ customarily used for software interchange; or,
+
+ c) Accompany it with the information you received as to the offer
+ to distribute corresponding source code. (This alternative is
+ allowed only for noncommercial distribution and only if you
+ received the program in object code or executable form with such
+ an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it. For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable. However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+ 4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License. Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+ 5. You are not required to accept this License, since you have not
+signed it. However, nothing else grants you permission to modify or
+distribute the Program or its derivative works. These actions are
+prohibited by law if you do not accept this License. Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+ 6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions. You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+ 7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all. For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices. Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+ 8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded. In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+ 9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation. If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+ 10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission. For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this. Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+ NO WARRANTY
+
+ 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+ 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+ END OF TERMS AND CONDITIONS
+
+ How to Apply These Terms to Your New Programs
+
+ If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+ To do so, attach the following notices to the program. It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+ <one line to give the program's name and a brief idea of what it does.>
+ Copyright (C) <year> <name of author>
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License along
+ with this program; if not, write to the Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+ Gnomovision version 69, Copyright (C) year name of author
+ Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+ This is free software, and you are welcome to redistribute it
+ under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License. Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary. Here is a sample; alter the names:
+
+ Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+ `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+ <signature of Ty Coon>, 1 April 1989
+ Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs. If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library. If this is what you want to do, use the GNU Lesser General
+Public License instead of this License.
diff --git a/Makefile b/Makefile
index 4e79621..4c9edc3 100644
--- a/Makefile
+++ b/Makefile
@@ -9,12 +9,12 @@ MODULES = $(wildcard lualibs-*.lua)
UNPACKED= lualibs.lua
COMPILED = $(DOC_DTX)
GENERATED = $(UNPACKED) $(DOC_DTX) $(MERGED)
-SOURCE = $(DTX) $(MODULES) README Makefile NEWS
+SOURCE = $(DTX) $(MODULES) LICENSE README Makefile NEWS
MERGED = lualibs-basic-merged.lua lualibs-extended-merged.lua
# Files grouped by installation location
RUNFILES = $(UNPACKED) $(MODULES)
-DOCFILES = $(DOC_DTX) README NEWS
+DOCFILES = $(DOC_DTX) LICENSE README NEWS
SRCFILES = $(DTX) $(SRC_TEX) Makefile
# The following definitions should be equivalent
@@ -32,11 +32,10 @@ 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
-DO_PACKAGE = mtxrun --script package --merge $< >/dev/null
+DO_TEX = luatex --interaction=batchmode $< >/dev/null
+DO_PDFLATEX = latexmk -pdf -e '$$pdflatex = q(lualatex %O %S)' -silent $< >/dev/null
+DO_MAKEINDEX = makeindex -s gind.ist $(subst .dtx,,$<) >/dev/null 2>&1
+DO_PACKAGE = mtxrun --script package --merge $< >/dev/null
all: $(GENERATED) $(DOC_TEX) $(MERGED)
doc: $(COMPILED)
@@ -59,7 +58,7 @@ world: all ctan
$(UNPACKED): lualibs.dtx
$(DO_TEX)
-$(CTAN_ZIP): $(SOURCE) $(COMPILED) $(TDS_ZIP)
+$(CTAN_ZIP): $(SOURCE) $(COMPILED) $(GENERATED) $(TDS_ZIP)
@echo "Making $@ for CTAN upload."
@$(RM) -- $@
@zip -9 $@ $^ >/dev/null
diff --git a/NEWS b/NEWS
index 8b367bf..14da4da 100644
--- a/NEWS
+++ b/NEWS
@@ -1,4 +1,12 @@
History of the lualibs package
+2013/05/05 v2.0/
+ * sync with Context beta as of 2013.04.29 20:30
+ * merge with mtx-package
+ * split in basic and extended collection, allowing for partial
+ loading
+ * include additional files from Context
+ * drop module() in favor of locals
+
2012/10/19 v0.9/
* sync with ConTeXt beta 2012.10.17
* move some files to util-* prefix
diff --git a/README b/README
index 57bd351..daf0c8e 100644
--- a/README
+++ b/README
@@ -1,22 +1,26 @@
- The lualibs generic package
+********************************************************************************
+ The Lualibs Package
+********************************************************************************
Lualibs is a collection of Lua modules useful for general programming.
-This work is based on lua modules shipped with ConTeXt, and are made available
-this package to be used independent of ConTeXt.
+This work is based on Lua modules shipped with ConTeXt, to make them available
+for use independent of ConTeXt.
+
+This package is developed by the LuaLaTeX development team on
+<http://github.com/lualatex/lualibs>. See the 'NEWS' file for version history.
-This package is developed on <http://github.com/mpg/lualibs>, see the 'NEWS'
-file for version history.
Installation
-------------
+--------------------------------------------------------------------------------
Here are the recommended installation methods (preferred first).
The methods "commented out" are currently not available.
1. If you are using TeX Live 2010 or later, use 'tlmgr install lualibs'.
- Alternatively, try your (TeX or Linux) distribution's package management system.
+ Alternatively, use your (TeX or Linux) distribution's package management
+ system.
2. a. Grab lualibs.tds.zip on CTAN.
b. Unzip it at the root of one or your TDS trees.
@@ -28,55 +32,61 @@ The methods "commented out" are currently not available.
c. See 2c.
Manifest
---------
+--------------------------------------------------------------------------------
Source files:
lualibs.dtx
lualibs-boolean.lua
+ lualibs-compat.lua
lualibs-dir.lua
lualibs-file.lua
+ lualibs-function.lua
lualibs-io.lua
lualibs-lpeg.lua
+ lualibs-lua.lua
lualibs-math.lua
lualibs-md5.lua
lualibs-number.lua
lualibs-os.lua
+ lualibs-package.lua
lualibs-set.lua
lualibs-string.lua
lualibs-table.lua
+ lualibs-trac-inf.lua
lualibs-unicode.lua
lualibs-url.lua
+ lualibs-util-deb.lua
lualibs-util-dim.lua
+ lualibs-util-env.lua
lualibs-util-jsn.lua
lualibs-util-lua.lua
lualibs-util-mrg.lua
+ lualibs-util-prs.lua
+ lualibs-util-sta.lua
lualibs-util-sto.lua
lualibs-util-str.lua
lualibs-util-tab.lua
- README
+ lualibs-util-tpl.lua
+ LICENSE
Makefile
NEWS
+ README
Derived files:
lualibs.lua
+ lualibs-basic.lua
+ lualibs-basic-merged.lua
+ lualibs-extended.lua
+ lualibs-extended-merged.lua
lualibs.pdf
-License
--------
-
-This work and the derived files are under the Creative Commons CC0 license.
-
-See the full text at
-
-http://creativecommons.org/publicdomain/zero/1.0/legalcode
-
-and a FAQ at
+License and Copyright
+--------------------------------------------------------------------------------
-http://wiki.creativecommons.org/CC0
+As a derived work of Context, this work and the derived files are under the
+GNU GPL v.2.0 license.
+The full text of the license is included in the file LICENSE.
-The files lualibs-*.lua are under the GNU GPLv2 license. Their legal notice
-starts by:
+The files taken from Context (lualibs-*.lua) are copyright PRAGMA ADE / ConTeXt
+Development Team.
-"
-Copyright PRAGMA ADE / ConTeXt Development Team
-"
diff --git a/lualibs.dtx b/lualibs.dtx
index 4e0d721..b8fe169 100644
--- a/lualibs.dtx
+++ b/lualibs.dtx
@@ -127,14 +127,15 @@ and the derived file lualibs.lua.
]{Linux Libertine O}
\setmonofont [Ligatures=TeX,Scale=MatchLowercase] {Liberation Mono}
\setsansfont [Ligatures=TeX,Scale=MatchLowercase] {Iwona Medium}
-\usepackage{hologo}
+\usepackage{metalogo}
\EnableCrossrefs
\CodelineIndex
\newcommand\TEX {\TeX\xspace}
\newcommand\LATEX {\LaTeX\xspace}
\newcommand\LUA {Lua\xspace}
-\newcommand\LUATEX {Lua\TEX}
+\newcommand\LUATEX {\LuaTeX\xspace}
\newcommand\CONTEXT {Con\TeX t\xspace}
+
\def\definehighlight[#1][#2]%
{\ifcsname #1\endcsname\else
\expandafter\def\csname #1\endcsname%
@@ -355,59 +356,59 @@ and the derived file lualibs.lua.
%
% \section{Packaging}
%
- By default, \identifier{lualibs} will not load the libraries individually.
- Instead, it includes two \emphasis{merged packages} that have been compiled
- from the original files.
- This is achieved by means of \identifier{mtx-package}, a script for bundling
- \LUA code shipped with \CONTEXT.
- This concatenates the code of several \LUA files into a single file that is
- both easier to distribute and loading (marginally) faster.
- \identifier{mtx-package} ensures that the code from each file gets its
- own closure and strips newlines and comments, resulting in a smaller payload.
- Another package that relies on it heavily is the font loader as contained in
- \identifier{luaotfload} and \identifier{luatex-fonts}.
-
- If \CONTEXT is installed on the system, the merge files can be created
- by running:
-
- \begin{quote}\begin{verbatim}
- mtxrun --script package --merge lualibs-basic.lua
- mtxrun --script package --merge lualibs-extended.lua
- \end{verbatim}\end{quote}
-
- \noindent
- Of course there is a make target for that:
-
- \begin{quote}\begin{verbatim}
- make merge
- \end{verbatim}\end{quote}
- \noindent
- will take care of assembling the packages from the files distributed with
- \identifier{lualibs}.
-
- For this to work, the syntax of the \LUA file needs to be well-formed:
- files that should be merged must be included via a function
- \verb|loadmodule()|.
- It doesn’t matter if the function actually does something; a dummy will
- suffice.
- Also, the argument to \verb|loadmodule()| must be wrapped in parentheses.
- This rule is quite convenient, actually, since it allows excluding files
- from the merge while still using \verb|loadmodule()| consistently.
-
- \begin{quote}\begin{verbatim}
- ...
- loadmodule("my-lua-file.lua") -- <= will be merged
- loadmodule('my-2nd-file.lua') -- <= will be merged
- loadmodule "my-3rd-file.lua" -- <= will be ignored
- ...
- \end{verbatim}\end{quote}
-
- Note that there is one exception to the packaging:
- \fileent{lualibs-util-jsn.lua} cannot be successfully packaged because
- it follows a different coding convention, returning a \LUA table on exit.
- Therefore, the file is loaded separately as part of the \identifier{extended}
- set like any other \LUA module.
-
+% By default, \identifier{lualibs} will not load the libraries individually.
+% Instead, it includes two \emphasis{merged packages} that have been compiled
+% from the original files.
+% This is achieved by means of \identifier{mtx-package}, a script for bundling
+% \LUA code shipped with \CONTEXT.
+% This concatenates the code of several \LUA files into a single file that is
+% both easier to distribute and loading (marginally) faster.
+% \identifier{mtx-package} ensures that the code from each file gets its
+% own closure and strips newlines and comments, resulting in a smaller payload.
+% Another package that relies on it heavily is the font loader as contained in
+% \identifier{luaotfload} and \identifier{luatex-fonts}.
+%
+% If \CONTEXT is installed on the system, the merge files can be created
+% by running:
+%
+% \begin{quote}\begin{verbatim}
+% mtxrun --script package --merge lualibs-basic.lua
+% mtxrun --script package --merge lualibs-extended.lua
+% \end{verbatim}\end{quote}
+%
+% \noindent
+% Of course there is a make target for that:
+%
+% \begin{quote}\begin{verbatim}
+% make merge
+% \end{verbatim}\end{quote}
+% \noindent
+% will take care of assembling the packages from the files distributed with
+% \identifier{lualibs}.
+%
+% For this to work, the syntax of the \LUA file needs to be well-formed:
+% files that should be merged must be included via a function
+% \verb|loadmodule()|.
+% It doesn’t matter if the function actually does something; a dummy will
+% suffice.
+% Also, the argument to \verb|loadmodule()| must be wrapped in parentheses.
+% This rule is quite convenient, actually, since it allows excluding files
+% from the merge while still using \verb|loadmodule()| consistently.
+%
+% \begin{quote}\begin{verbatim}
+% ...
+% loadmodule("my-lua-file.lua") -- <= will be merged
+% loadmodule('my-2nd-file.lua') -- <= will be merged
+% loadmodule "my-3rd-file.lua" -- <= will be ignored
+% ...
+% \end{verbatim}\end{quote}
+%
+% Note that there is one exception to the packaging:
+% \fileent{lualibs-util-jsn.lua} cannot be successfully packaged because
+% it follows a different coding convention, returning a \LUA table on exit.
+% Therefore, the file is loaded separately as part of the \identifier{extended}
+% set like any other \LUA module.
+%
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% \part{\fileent{lualibs.lua}}
diff --git a/lualibs.lua b/lualibs.lua
deleted file mode 100644
index 6ba82cc..0000000
--- a/lualibs.lua
+++ /dev/null
@@ -1,124 +0,0 @@
-lualibs = lualibs or { }
-
-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",
-}
-
---[[doc--
-
- 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}
-
---doc]]--
-
-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
-
---[[doc--
-
- The lualibs may be loaded in scripts.
- To account for the different environment, fallbacks for
- the luatexbase facilities are installed.
-
---doc]]--
-
-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
-
---[[doc--
-
- 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()|.
-
---doc]]--
-
-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
-
---[[doc--
-
- The separation of the “basic” from the “extended” sets coincides
- with the split into luat-bas.mkiv and luat-lib.mkiv.
-
---doc]]--
-
-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 of File `lualibs-basic.lua'.