jbe/bsw@0: --[[-- jbe/bsw@0: slot.restore_all( jbe/bsw@0: blob -- string as returned by slot.dump_all() jbe/bsw@0: ) jbe/bsw@0: jbe/bsw@0: Restores all slots using a string created by slot.dump_all(). jbe/bsw@0: jbe/bsw@0: --]]-- jbe/bsw@0: jbe/bsw@0: local function decode(str) jbe/bsw@0: return ( jbe/bsw@0: string.gsub( jbe/bsw@0: str, jbe/bsw@0: "%[[a-z]+%]", jbe/bsw@0: function(char) jbe/bsw@0: if char == "[eq]" then return "=" jbe/bsw@0: elseif char == "[s]" then return ";" jbe/bsw@0: elseif char == "[o]" then return "[" jbe/bsw@0: elseif char == "[c]" then return "]" jbe/bsw@0: else end jbe/bsw@0: end jbe/bsw@0: ) jbe/bsw@0: ) jbe/bsw@0: end jbe/bsw@0: jbe/bsw@0: function slot.restore_all(blob) jbe/bsw@0: slot.reset_all() jbe/bsw@0: for encoded_key, encoded_value in string.gmatch(blob, "([^=;]*)=([^=;]*)") do jbe/bsw@0: local key, value = decode(encoded_key), decode(encoded_value) jbe/bsw@0: slot._data[key].string_fragments = { value } jbe/bsw@0: end jbe/bsw@0: end