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'. | 
