jbe/bsw@0: --[[-- jbe/bsw@0: blob = -- string for later usage with slot.restore_all(...) jbe/bsw@0: slot.dump_all() jbe/bsw@0: jbe/bsw@0: Returns a single string, containing all slot contents. The result of this function can be used to restore all slots after a 303 redirect. This is done automatically by the WebMCP using slot.restore_all(...). If the result of this function is an empty string, then all slots are empty. jbe/bsw@0: jbe/bsw@0: --]]-- jbe/bsw@0: jbe/bsw@0: local function encode(str) jbe/bsw@0: return ( jbe/bsw@0: string.gsub( jbe/bsw@0: str, jbe/bsw@0: "[=;%[%]]", jbe/bsw@0: function(char) jbe/bsw@0: if char == "=" then return "[eq]" jbe/bsw@0: elseif char == ";" then return "[s]" jbe/bsw@0: elseif char == "[" then return "[o]" jbe/bsw@0: elseif char == "]" then return "[c]" 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.dump_all() jbe/bsw@0: local blob_parts = {} jbe/bsw@0: for key in pairs(slot._data) do jbe/bsw@0: if type(key) == "string" then jbe/bsw@0: local value = slot.get_content(key) jbe/bsw@0: if value ~= "" then jbe/bsw@0: blob_parts[#blob_parts + 1] = encode(key) .. "=" .. encode(value) jbe/bsw@0: end jbe/bsw@0: end jbe/bsw@0: end jbe/bsw@0: return table.concat(blob_parts, ";") jbe/bsw@0: end