“模块:HooksHandler”的版本间的差异

来自维阿百科
跳转至: 导航搜索
1.38>牛腩面
(导入1个版本)
 
(导入1个版本)
 
(没有差异)

2022年7月8日 (五) 21:15的最新版本

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