projects
/
prosody.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge 0.10->trunk
[prosody.git]
/
util
/
filters.lua
diff --git
a/util/filters.lua
b/util/filters.lua
index c2bdca070229f0f7ae6d9c816b56bea255c1efca..f405c0bdd91f70a47a51fa3e2a11d0cba8f93b97 100644
(file)
--- a/
util/filters.lua
+++ b/
util/filters.lua
@@
-8,11
+8,11
@@
local t_insert, t_remove = table.insert, table.remove;
local t_insert, t_remove = table.insert, table.remove;
-module "filters"
+local _ENV = nil;
local new_filter_hooks = {};
local new_filter_hooks = {};
-function initialize(session)
+
local
function initialize(session)
if not session.filters then
local filters = {};
session.filters = filters;
if not session.filters then
local filters = {};
session.filters = filters;
@@
-36,7
+36,7
@@
function initialize(session)
return session.filter;
end
return session.filter;
end
-function add_filter(session, type, callback, priority)
+
local
function add_filter(session, type, callback, priority)
if not session.filters then
initialize(session);
end
if not session.filters then
initialize(session);
end
@@
-45,6
+45,8
@@
function add_filter(session, type, callback, priority)
if not filter_list then
filter_list = {};
session.filters[type] = filter_list;
if not filter_list then
filter_list = {};
session.filters[type] = filter_list;
+ elseif filter_list[callback] then
+ return; -- Filter already added
end
priority = priority or 0;
end
priority = priority or 0;
@@
-58,7
+60,7
@@
function add_filter(session, type, callback, priority)
filter_list[callback] = priority;
end
filter_list[callback] = priority;
end
-function remove_filter(session, type, callback)
+
local
function remove_filter(session, type, callback)
if not session.filters then return; end
local filter_list = session.filters[type];
if filter_list and filter_list[callback] then
if not session.filters then return; end
local filter_list = session.filters[type];
if filter_list and filter_list[callback] then
@@
-72,11
+74,11
@@
function remove_filter(session, type, callback)
end
end
end
end
-function add_filter_hook(callback)
+
local
function add_filter_hook(callback)
t_insert(new_filter_hooks, callback);
end
t_insert(new_filter_hooks, callback);
end
-function remove_filter_hook(callback)
+
local
function remove_filter_hook(callback)
for i=1,#new_filter_hooks do
if new_filter_hooks[i] == callback then
t_remove(new_filter_hooks, i);
for i=1,#new_filter_hooks do
if new_filter_hooks[i] == callback then
t_remove(new_filter_hooks, i);
@@
-84,4
+86,10
@@
function remove_filter_hook(callback)
end
end
end
end
-return _M;
+return {
+ initialize = initialize;
+ add_filter = add_filter;
+ remove_filter = remove_filter;
+ add_filter_hook = add_filter_hook;
+ remove_filter_hook = remove_filter_hook;
+};