Mercurial > wow > hotcorners
diff Libs/CallbackHandler-1.0/CallbackHandler-1.0.lua @ 22:3596dadf9a90 v8.1.0.022
- ToC and Libraries update.
author | Tercioo |
---|---|
date | Mon, 31 Dec 2018 11:30:31 -0200 |
parents | 371e14cd2feb |
children |
line wrap: on
line diff
--- a/Libs/CallbackHandler-1.0/CallbackHandler-1.0.lua Fri Jul 20 19:13:22 2018 -0300 +++ b/Libs/CallbackHandler-1.0/CallbackHandler-1.0.lua Mon Dec 31 11:30:31 2018 -0200 @@ -1,5 +1,5 @@ ---[[ $Id: CallbackHandler-1.0.lua 1131 2015-06-04 07:29:24Z nevcairiel $ ]] -local MAJOR, MINOR = "CallbackHandler-1.0", 6 +--[[ $Id: CallbackHandler-1.0.lua 22 2018-07-21 14:17:22Z nevcairiel $ ]] +local MAJOR, MINOR = "CallbackHandler-1.0", 7 local CallbackHandler = LibStub:NewLibrary(MAJOR, MINOR) if not CallbackHandler then return end -- No upgrade needed @@ -22,41 +22,15 @@ return geterrorhandler()(err) end -local function CreateDispatcher(argCount) - local code = [[ - local next, xpcall, eh = ... - - local method, ARGS - local function call() method(ARGS) end - - local function dispatch(handlers, ...) - local index - index, method = next(handlers) - if not method then return end - local OLD_ARGS = ARGS - ARGS = ... - repeat - xpcall(call, eh) - index, method = next(handlers, index) - until not method - ARGS = OLD_ARGS - end - - return dispatch - ]] - - local ARGS, OLD_ARGS = {}, {} - for i = 1, argCount do ARGS[i], OLD_ARGS[i] = "arg"..i, "old_arg"..i end - code = code:gsub("OLD_ARGS", tconcat(OLD_ARGS, ", ")):gsub("ARGS", tconcat(ARGS, ", ")) - return assert(loadstring(code, "safecall Dispatcher["..argCount.."]"))(next, xpcall, errorhandler) +local function Dispatch(handlers, ...) + local index, method = next(handlers) + if not method then return end + repeat + xpcall(method, errorhandler, ...) + index, method = next(handlers, index) + until not method end -local Dispatchers = setmetatable({}, {__index=function(self, argCount) - local dispatcher = CreateDispatcher(argCount) - rawset(self, argCount, dispatcher) - return dispatcher -end}) - -------------------------------------------------------------------------- -- CallbackHandler:New -- @@ -87,7 +61,7 @@ local oldrecurse = registry.recurse registry.recurse = oldrecurse + 1 - Dispatchers[select('#', ...) + 1](events[eventname], eventname, ...) + Dispatch(events[eventname], eventname, ...) registry.recurse = oldrecurse