webmcp
annotate framework/env/slot/reset_all.lua @ 34:e19b0b5c46ba
allow execptions an slot.reset_all()
this is usefull when an error is detected deep into a view where you want redirect
to something usefull, but still save some slots like notice and error slots
this is usefull when an error is detected deep into a view where you want redirect
to something usefull, but still save some slots like notice and error slots
author | Daniel Poelzleithner <poelzi@poelzi.org> |
---|---|
date | Wed Oct 06 16:14:33 2010 +0200 (2010-10-06) |
parents | 9fdfb27f8e67 |
children | 09f749330d13 |
rev | line source |
---|---|
jbe/bsw@0 | 1 --[[-- |
poelzi@34 | 2 slot.reset_all{ |
poelzi@34 | 3 except = except, -- Reset all slots, except slots named in this list |
poelzi@34 | 4 } |
jbe/bsw@0 | 5 |
jbe/bsw@0 | 6 Calling this function resets all slots to be empty. |
jbe/bsw@0 | 7 |
jbe/bsw@0 | 8 --]]-- |
jbe/bsw@0 | 9 |
poelzi@34 | 10 function slot.reset_all(args) |
poelzi@34 | 11 local saved = {} |
poelzi@34 | 12 if args and args.except then |
poelzi@34 | 13 for i,key in ipairs(args.except) do |
poelzi@34 | 14 saved[key] = slot._data[key] |
poelzi@34 | 15 end |
poelzi@34 | 16 end |
jbe/bsw@0 | 17 slot._data = setmetatable({}, slot._data_metatable) |
poelzi@34 | 18 if saved then |
poelzi@34 | 19 for key,value in pairs(saved) do |
poelzi@34 | 20 slot._data[key] = value |
poelzi@34 | 21 end |
poelzi@34 | 22 end |
jbe/bsw@0 | 23 end |