summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/luatex/lualibs/lualibs-basic.lua
blob: 630f2cce588e8167b18e7de61b2242f04c33e1cd (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
-- 
--  This is file `lualibs-basic.lua',
--  generated with the docstrip utility.
-- 
--  The original source files were:
-- 
--  lualibs.dtx  (with options: `basic')
--  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.
--  
-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  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.

-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
lualibs                 = lualibs or { }
local info              = lualibs.info
local loadmodule        = lualibs.loadmodule

local lualibs_basic_module = {
  name          = "lualibs-basic",
  version       = 2.00,
  date          = "2013/04/30",
  description   = "ConTeXt Lua libraries -- basic collection.",
  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",
}

local loaded = false --- track success of package loading

if lualibs.prefer_merged then
  info"Loading merged package for collection “basic”."
  loaded = loadmodule('lualibs-basic-merged.lua')
else
  info"Ignoring merged packages."
  info"Falling back to individual libraries from collection “basic”."
end


if loaded == false then
  loadmodule("lualibs-lua.lua")
  loadmodule("lualibs-package.lua")
  loadmodule("lualibs-lpeg.lua")
  loadmodule("lualibs-function.lua")
  loadmodule("lualibs-string.lua")
  loadmodule("lualibs-table.lua")
  loadmodule("lualibs-boolean.lua")
  loadmodule("lualibs-number.lua")
  loadmodule("lualibs-math.lua")
  loadmodule("lualibs-io.lua")
  loadmodule("lualibs-os.lua")
  loadmodule("lualibs-file.lua")
  loadmodule("lualibs-md5.lua")
  loadmodule("lualibs-dir.lua")
  loadmodule("lualibs-unicode.lua")
  loadmodule("lualibs-url.lua")
  loadmodule("lualibs-set.lua")
end

lualibs.basic_loaded = true
-- vim:tw=71:sw=2:ts=2:expandtab

-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-- 
--  End of File `lualibs-basic.lua'.