projects
/
prosody.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
configmanager: Added rawget().
[prosody.git]
/
util
/
filters.lua
diff --git
a/util/filters.lua
b/util/filters.lua
index 08e683c16c354ca69c8329a629e30ee6152bb8f5..d143666bf8d8f212225d475cdc8312317e746ad4 100644
(file)
--- a/
util/filters.lua
+++ b/
util/filters.lua
@@
-10,6
+10,8
@@
local t_insert, t_remove = table.insert, table.remove;
module "filters"
module "filters"
+local new_filter_hooks = {};
+
function initialize(session)
if not session.filters then
local filters = {};
function initialize(session)
if not session.filters then
local filters = {};
@@
-19,13
+21,18
@@
function initialize(session)
local filter_list = filters[type];
if filter_list then
for i = 1, #filter_list do
local filter_list = filters[type];
if filter_list then
for i = 1, #filter_list do
- data = filter_list[i](data);
+ data = filter_list[i](data
, session
);
if data == nil then break; end
end
end
return data;
end
end
if data == nil then break; end
end
end
return data;
end
end
+
+ for i=1,#new_filter_hooks do
+ new_filter_hooks[i](session);
+ end
+
return session.filter;
end
return session.filter;
end
@@
-65,4
+72,16
@@
function remove_filter(session, type, callback)
end
end
end
end
+function add_filter_hook(callback)
+ t_insert(new_filter_hooks, callback);
+end
+
+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);
+ end
+ end
+end
+
return _M;
return _M;