Software / code / prosody
Comparison
util/filters.lua @ 3142:3cf02e5e632b
util.filters: Ensure initialize() never initializes an object twice - and return the filter function to the caller
| author | Matthew Wild <mwild1@gmail.com> |
|---|---|
| date | Wed, 02 Jun 2010 17:23:57 +0100 |
| parent | 3140:8c6ed6fd2d35 |
| child | 3331:57a9cf5f4259 |
comparison
equal
deleted
inserted
replaced
| 3141:50318ac90394 | 3142:3cf02e5e632b |
|---|---|
| 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 function initialize(session) | 13 function initialize(session) |
| 14 local filters = {}; | 14 if not session.filters then |
| 15 session.filters = filters; | 15 local filters = {}; |
| 16 | 16 session.filters = filters; |
| 17 function session.filter(type, data) | 17 |
| 18 local filter_list = filters[type]; | 18 function session.filter(type, data) |
| 19 if filter_list then | 19 local filter_list = filters[type]; |
| 20 for i = 1, #filter_list do | 20 if filter_list then |
| 21 data = filter_list[i](data); | 21 for i = 1, #filter_list do |
| 22 if data == nil then break; end | 22 data = filter_list[i](data); |
| 23 if data == nil then break; end | |
| 24 end | |
| 23 end | 25 end |
| 26 return data; | |
| 24 end | 27 end |
| 25 return data; | |
| 26 end | 28 end |
| 29 return session.filter; | |
| 27 end | 30 end |
| 28 | 31 |
| 29 function add_filter(session, type, callback, priority) | 32 function add_filter(session, type, callback, priority) |
| 30 if not session.filters then | 33 if not session.filters then |
| 31 initialize(session); | 34 initialize(session); |