Warning: this is an htmlized version!
The original is here, and the conversion rules are here. |
-- This file: -- http://angg.twu.net/LUA/Path.lua.html -- http://angg.twu.net/LUA/Path.lua -- (find-angg "LUA/Path.lua") -- Author: Eduardo Ochs <eduardoochs@gmail.com> -- -- Also here: (find-angg "LUA/lua50init.lua" "Path") -- See: (find-lua51manual "#pdf-package.path") -- (find-lua51manual "#pdf-package.cpath") Path = Class { type = "Path", from = function (field) return Path {field = field} end, prepend = function (field, fname) return Path.from(field):prepend(fname) end, prependtopath = function (fname) return Path.prepend("path", fname) end, prependtocpath = function (fname) return Path.prepend("cpath", fname) end, find = function (field, modulename) local modulepath = modulename:gsub("%.", "/") for pathentry in package[field]:gmatch("([^;]+)") do local filename = pathentry:gsub("%?", modulepath) local file = io.open(filename, "rb") if file then file:close() return filename end end end, __tostring = function (p) return p:tostring() end, __index = { get = function (p) return package[p.field] end, set = function (p, newvalue) package[p.field] = newvalue end, tostring = function (p, sep) return format("package.%s = %s", p.field, p:tostring0(sep)) end, tostring0 = function (p, sep) return (p:get():gsub(";", sep or "\n ;")) end, toset = function (p) return Set.from(split(p:get(), "([^;]+)")) end, has = function (p, fname) return p:toset():has(fname) end, prepend0 = function (p, fname) p:set(ee_expand(fname)..";"..p:get()) end, prepend = function (p, fname) if not p:has(ee_expand(fname)) then p:prepend0(fname) end return p end }, } --[[ * (eepitch-lua51) * (eepitch-kill) * (eepitch-lua51) dofile "Path.lua" p = Path.from "path" = p:tostring(";") = p:tostring() = p = p:toset():ksc() = p:prepend("~/bread/?.lua") -- add bread = p:prepend("~/cheese/?.lua") -- add cheese = p:prepend("~/bread/?.lua") -- bread is not added again = Path.find("cpath", "lpeg") = Path.find("path", "re") --]] -- Local Variables: -- coding: utf-8-unix -- End: