Permalink
Find file
Fetching contributors…
Cannot retrieve contributors at this time
47 lines (38 sloc) 907 Bytes
local base = _G
require("string")
require("table")
module("config")
settings = {}
function loadFunction(fct)
local old_mt = base.getmetatable(settings)
local loader = { active = true }
base.setmetatable(settings,
{
__index = function(table, key)
local t = {}
base.setmetatable(t, base.getmetatable(table))
if loader.active and base.rawget(table, key) == nil then base.rawset(table, key, t) end
return base.rawget(table, key)
end,
})
base.setfenv(fct, settings)
local ret, err = base.pcall(fct)
loader.active = false
if ret then return true
else return false, err end
end
function loadString(str)
local fct = base.loadstring(str)
if fct then
return loadFunction(fct)
end
return nil, "Could not load string"
end
function loadFile(file)
local fct = base.loadfile(file)
if fct then
return loadFunction(fct)
end
return nil, "Could not load file"
end
load = loadFile