Module:HooksHandler

来自BanG Dream! Wiki
跳到导航 跳到搜索

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