Comparison

util/filters.lua @ 3625:f8d61da5bcc1

util.filters: Support for 'filter hooks' that get called when a session is initialized for filters
author Matthew Wild <mwild1@gmail.com>
date Sat, 13 Nov 2010 23:10:13 +0000
parent 3331:57a9cf5f4259
child 3943:ad5924c31953
comparison
equal deleted inserted replaced
3624:e2cfc6b8fe5d 3625:f8d61da5bcc1
8 8
9 local t_insert, t_remove = table.insert, table.remove; 9 local t_insert, t_remove = table.insert, table.remove;
10 10
11 module "filters" 11 module "filters"
12 12
13 local new_filter_hooks = {};
14
13 function initialize(session) 15 function initialize(session)
14 if not session.filters then 16 if not session.filters then
15 local filters = {}; 17 local filters = {};
16 session.filters = filters; 18 session.filters = filters;
17 19
18 function session.filter(type, data) 20 function session.filter(type, data)
19 local filter_list = filters[type]; 21 local filter_list = filters[type];
20 if filter_list then 22 if filter_list then
21 for i = 1, #filter_list do 23 for i = 1, #filter_list do
22 data = filter_list[i](data); 24 data = filter_list[i](data, session);
23 if data == nil then break; end 25 if data == nil then break; end
24 end 26 end
25 end 27 end
26 return data; 28 return data;
27 end 29 end
28 end 30 end
31
32 for i=1,#new_filter_hooks do
33 new_filter_hooks[i](session);
34 end
35
29 return session.filter; 36 return session.filter;
30 end 37 end
31 38
32 function add_filter(session, type, callback, priority) 39 function add_filter(session, type, callback, priority)
33 if not session.filters then 40 if not session.filters then
63 end 70 end
64 end 71 end
65 end 72 end
66 end 73 end
67 74
75 function add_filter_hook(callback)
76 t_insert(new_filter_hooks, callback);
77 end
78
68 return _M; 79 return _M;