local event = require("event") local function createMultipleFilter(...) local filter = table.pack(...) if filter.n == 0 then return nil end return function(...) local signal = table.pack(...) if type(signal[1]) ~= "string" then return false end for i = 1, filter.n do if filter[i] ~= nil and signal[1]:match(filter[i]) then return true end end return false end end function event.pullMultiple(...) local seconds local args if type(...) == "number" then seconds = ... args = table.pack(select(2,...)) for i=1,args.n do checkArg(i+1, args[i], "string", "nil") end else args = table.pack(...) for i=1,args.n do checkArg(i, args[i], "string", "nil") end end return event.pullFiltered(seconds, createMultipleFilter(table.unpack(args, 1, args.n))) end function event.cancel(timerId) checkArg(1, timerId, "number") if event.handlers[timerId] then event.handlers[timerId] = nil return true end return false end function event.ignore(name, callback) checkArg(1, name, "string") checkArg(2, callback, "function") for id, handler in pairs(event.handlers) do if handler.key == name and handler.callback == callback then event.handlers[id] = nil return true end end return false end function event.onError(message) local log = io.open("/tmp/event.log", "a") if log then pcall(log.write, log, tostring(message), "\n") log:close() end end function event.timer(interval, callback, times) checkArg(1, interval, "number") checkArg(2, callback, "function") checkArg(3, times, "number", "nil") return event.register(false, callback, interval, times) end