diff options
author | Philipp Gesang <phg42.2a@gmail.com> | 2013-04-11 14:18:19 +0200 |
---|---|---|
committer | Philipp Gesang <phg42.2a@gmail.com> | 2013-04-11 14:18:19 +0200 |
commit | 74502160056d9c1df64f653bf2364efbb2e7a56b (patch) | |
tree | 5252bf85567aa149394aa1a3ecca58f1099fd13c | |
parent | 170fbd1a07aaadace4b976f62e67572c53c8449b (diff) | |
download | lualibs-74502160056d9c1df64f653bf2364efbb2e7a56b.tar.gz |
add support for merge files; split into basic/extended
-rw-r--r-- | lualibs-basic.lua | 54 | ||||
-rw-r--r-- | lualibs.lua | 84 |
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'. |