summaryrefslogtreecommitdiff
path: root/lualibs.lua
diff options
context:
space:
mode:
authorPhilipp Gesang <phg42.2a@gmail.com>2013-04-11 14:18:19 +0200
committerPhilipp Gesang <phg42.2a@gmail.com>2013-04-11 14:18:19 +0200
commit74502160056d9c1df64f653bf2364efbb2e7a56b (patch)
tree5252bf85567aa149394aa1a3ecca58f1099fd13c /lualibs.lua
parent170fbd1a07aaadace4b976f62e67572c53c8449b (diff)
downloadlualibs-74502160056d9c1df64f653bf2364efbb2e7a56b.tar.gz
add support for merge files; split into basic/extended
Diffstat (limited to 'lualibs.lua')
-rw-r--r--lualibs.lua84
1 files changed, 60 insertions, 24 deletions
diff --git a/lualibs.lua b/lualibs.lua
index cf9b039..79e17fd 100644
--- a/lualibs.lua
+++ b/lualibs.lua
@@ -18,37 +18,73 @@ module('lualibs', package.seeall)
local lualibs_module = {
name = "lualibs",
- version = 0.97,
- date = "2012/10/19",
+ version = 1.01,
+ date = "2013/04/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",
}
+local lpeg, kpse = lpeg, kpse
+
+local dofile = dofile
+local lpegmatch = lpeg.match
+local stringformat = string.format
+
+local find_file, error, warn, info
if luatexbase and luatexbase.provides_module then
- luatexbase.provides_module(lualibs_module)
+ error, warn, info = luatexbase.provides_module(lualibs_module)
+else
+ error, warn, info = texio.write_nl, texio.write_nl, texio.write_nl -- stub
+end
+if luatexbase and luatexbase.find_file then
+ find_file = luatexbase.find_file
+else
+ kpse.set_program_name"luatex"
+ find_file = kpse.find_file
end
-require("lualibs-string")
-require("lualibs-lpeg")
-require("lualibs-boolean")
-require("lualibs-number")
-require("lualibs-math")
-require("lualibs-table")
-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-lua")
-require("lualibs-util-sto")
-require("lualibs-util-mrg")
-require("lualibs-util-dim")
-require("lualibs-util-str")
-require("lualibs-util-tab")
-require("lualibs-util-jsn")
+
+loadmodule = _ENV.loadmodule or function (name, t)
+ if not t then t = "library" end
+ local filepath = kpse.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
+
+local merged_suffix = "-merged.lua"
+
+local p_suffix = lpeg.P".lua" * lpeg.P(-1)
+local p_nosuffix = (1 - p_suffix)^0
+local p_hassuffix = (p_nosuffix) * p_suffix
+local p_stripsuffix = lpeg.C(p_nosuffix) * p_suffix
+
+local loadmerged = function (basename)
+ basename = lualibs_module.name .. "-" .. basename
+ if not lpegmatch(p_hassuffix, basename) then -- force .lua suffix
+ basename = basename .. ".lua"
+ end
+ local mergedname = lpegmatch(p_stripsuffix, basename) .. merged_suffix
+ local res = loadmodule(mergedname, "merged package")
+ if not res then -- package not present, load individual libs
+ info(stringformat("Falling back to “%s”.", basename))
+ res = loadmodule(basename, "metapackage")
+ end
+ if res == false then
+ error(stringformat("Could not load metapackage “%s”.", basename))
+ end
+end
+
+loadmerged"basic.lua"
+--inspect(table.keys(table))
+--inspect(table.keys(string))
+loadmerged"extended.lua"
+
+io.write"\n"
--
+-- vim:tw=71:sw=2:ts=2:expandtab
-- End of File `lualibs.lua'.