I would do it like this:
core.lua
Lua Code:
function evaluate_all()
if stuff then
for _, v in pairs(stuff) do
v:evaluate()
end
end
end
module1.lua
Lua Code:
if not stuff then stuff = {} end -- <local stuff = stuff or {}> would work too, or?
table.insert(stuff, {
data = {a=1, b=2},
evaluate = function()
if a > a then
return a
end
})
module2.lua
Lua Code:
if not stuff then stuff = {} end
table.insert(stuff, {
data = {n1="nag", n2="nagnag"},
evaluate = function()
if n1 == n2 then
return "nagnagnag"
end
})