模块:HooksHandler

来自维阿百科
霓虹灯鱼讨论 | 贡献2022年7月8日 (五) 21:15的版本 (导入1个版本)
(差异) ←上一版本 | 最后版本 (差异) | 下一版本→ (差异)
跳转至: 导航搜索

此模块的文档可以在模块:HooksHandler/doc创建

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