(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
local module = {}
function module.init()
local hooks = {}
local hookTrigger = function (name, ...)
if not hooks[name] then return ... end
local args = {...}
for _, func in ipairs(hooks[name]) do
if type(func) == 'function' then
local retn = {func(unpack(args))}
if #retn > 0 then
for idx, val in ipairs(retn) do
args[idx] = val
end
end
end
end
return unpack(args)
end
return function (list)
for name, func in pairs(list) do
if type(func) == 'function' then
hooks[name] = hooks[name] or {}
table.insert(hooks[name], func)
end
end
return hookTrigger
end
end
return module