aboutsummaryrefslogtreecommitdiffstats
path: root/util/events.lua
diff options
context:
space:
mode:
Diffstat (limited to 'util/events.lua')
-rw-r--r--util/events.lua32
1 files changed, 1 insertions, 31 deletions
diff --git a/util/events.lua b/util/events.lua
index 363d2ac6..65b3b00b 100644
--- a/util/events.lua
+++ b/util/events.lua
@@ -7,16 +7,13 @@
--
-local ipairs = ipairs;
local pairs = pairs;
local t_insert = table.insert;
local t_sort = table.sort;
-local select = select;
module "events"
function new()
- local dispatchers = {};
local handlers = {};
local event_map = {};
local function _rebuild_index(event) -- TODO optimize index rebuilding
@@ -57,22 +54,7 @@ function new()
remove_handler(event, handler);
end
end;
- local function _create_dispatcher(event) -- FIXME duplicate code in fire_event
- local h = handlers[event];
- if not h then h = {}; handlers[event] = h; end
- local dispatcher = function(...)
- for i=1,#h do
- local ret = h[i](...);
- if ret ~= nil then return ret; end
- end
- end;
- dispatchers[event] = dispatcher;
- return dispatcher;
- end;
- local function get_dispatcher(event)
- return dispatchers[event] or _create_dispatcher(event);
- end;
- local function fire_event(event, ...) -- FIXME duplicates dispatcher code
+ local function fire_event(event, ...)
local h = handlers[event];
if h then
for i=1,#h do
@@ -81,24 +63,12 @@ function new()
end
end
end;
- local function get_named_arg_dispatcher(event, ...)
- local dispatcher = get_dispatcher(event);
- local keys = {...};
- local data = {};
- return function(...)
- for i, key in ipairs(keys) do data[key] = select(i, ...); end
- dispatcher(data);
- end;
- end;
return {
add_handler = add_handler;
remove_handler = remove_handler;
add_plugin = add_plugin;
remove_plugin = remove_plugin;
- get_dispatcher = get_dispatcher;
fire_event = fire_event;
- get_named_arg_dispatcher = get_named_arg_dispatcher;
- _dispatchers = dispatchers;
_handlers = handlers;
_event_map = event_map;
};