# HG changeset patch # User Daniel Poelzleithner # Date 1286374473 -7200 # Node ID e19b0b5c46ba9960e89aed0d5cb9615b2c8b2f99 # Parent fc98e5c6bfabf146c2a2071f956a962adcce7bbc 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 diff -r fc98e5c6bfab -r e19b0b5c46ba framework/env/slot/reset_all.lua --- a/framework/env/slot/reset_all.lua Tue Oct 05 05:19:47 2010 +0200 +++ b/framework/env/slot/reset_all.lua Wed Oct 06 16:14:33 2010 +0200 @@ -1,10 +1,23 @@ --[[-- -slot.reset_all() +slot.reset_all{ + except = except, -- Reset all slots, except slots named in this list +} Calling this function resets all slots to be empty. --]]-- -function slot.reset_all() +function slot.reset_all(args) + local saved = {} + if args and args.except then + for i,key in ipairs(args.except) do + saved[key] = slot._data[key] + end + end slot._data = setmetatable({}, slot._data_metatable) + if saved then + for key,value in pairs(saved) do + slot._data[key] = value + end + end end