summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lualibs-basic.lua54
-rw-r--r--lualibs.lua84
2 files changed, 114 insertions, 24 deletions
diff --git a/lualibs-basic.lua b/lualibs-basic.lua
new file mode 100644
index 0000000..d12eb93
--- /dev/null
+++ b/lualibs-basic.lua
@@ -0,0 +1,54 @@
+--
+-- This is file `lualibs.lua',
+-- generated with the docstrip utility.
+--
+-- The original source files were:
+--
+-- lualibs.dtx (with options: `lua')
+-- 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.
+--
+module('lualibs-basic', package.seeall)
+
+local lualibs_module = {
+ name = "lualibs-basic",
+ version = 1.01,
+ date = "2013/04/10",
+ description = "Basic Lua extensions, meta package.",
+ 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 loadmodule = lualibs.loadmodule
+
+loadmodule("lualibs-lua.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")
+
+-- these don’t look much basic to me:
+--l-pdfview.lua
+--l-xml.lua
+
+
+
+-- End of File `lualibs.lua'.
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'.