Module:HooksHandler

Admin讨论 | 贡献2022年7月20日 (三) 23:18的版本 (创建页面,内容为“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 pair…”)
(差异) ←上一版本 | 最后版本 (差异) | 下一版本→ (差异)

此模块的文档可以在Module: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