jbe/bsw@0: --[[-- poelzi@34: slot.reset_all{ jbe@47: except = except -- Reset all slots, except slots named in this list poelzi@34: } jbe/bsw@0: jbe@47: Calling this function resets all slots to be empty. An exclusion list may be passed to the function as named argument. jbe/bsw@0: jbe/bsw@0: --]]-- jbe/bsw@0: jbe@260: local data_metatable = {} jbe@260: function data_metatable:__index(key) jbe@260: self[key] = { string_fragments = {}, state_table = {} } jbe@260: return self[key] jbe@260: end jbe@260: poelzi@34: function slot.reset_all(args) jbe@257: local saved poelzi@34: if args and args.except then jbe@257: saved = {} jbe@47: for i, key in ipairs(args.except) do poelzi@34: saved[key] = slot._data[key] poelzi@34: end poelzi@34: end jbe@260: slot._data = setmetatable({}, data_metatable) poelzi@34: if saved then jbe@47: for key, value in pairs(saved) do poelzi@34: slot._data[key] = value poelzi@34: end poelzi@34: end jbe/bsw@0: end