webmcp
view framework/env/slot/restore_all.lua @ 113:ca88032cb37c
Anchor (#) support for redirect and routing
| author | jbe | 
|---|---|
| date | Sun Jan 19 14:47:08 2014 +0100 (2014-01-19) | 
| parents | 9fdfb27f8e67 | 
| children | 
 line source
     1 --[[--
     2 slot.restore_all(
     3   blob             -- string as returned by slot.dump_all()
     4 )
     6 Restores all slots using a string created by slot.dump_all().
     8 --]]--
    10 local function decode(str)
    11   return (
    12     string.gsub(
    13       str,
    14       "%[[a-z]+%]",
    15       function(char)
    16         if char == "[eq]" then return "="
    17         elseif char == "[s]" then return ";"
    18         elseif char == "[o]" then return "["
    19         elseif char == "[c]" then return "]"
    20         else end
    21       end
    22     )
    23   )
    24 end
    26 function slot.restore_all(blob)
    27   slot.reset_all()
    28   for encoded_key, encoded_value in string.gmatch(blob, "([^=;]*)=([^=;]*)") do
    29     local key, value = decode(encoded_key), decode(encoded_value)
    30     slot._data[key].string_fragments = { value }
    31   end
    32 end
