Software /
code /
prosody
Changeset
3736:73399dd525e8
util.serialization: Implemented deserialize().
author | Waqas Hussain <waqas20@gmail.com> |
---|---|
date | Sun, 12 Dec 2010 06:29:19 +0500 |
parents | 3735:40b54c46a14c |
children | 3737:659563b1db89 |
files | util/serialization.lua |
diffstat | 1 files changed, 12 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/util/serialization.lua Sun Dec 12 06:25:54 2010 +0500 +++ b/util/serialization.lua Sun Dec 12 06:29:19 2010 +0500 @@ -15,6 +15,10 @@ local pairs = pairs; local next = next; +local loadstring = loadstring; +local setfenv = setfenv; +local pcall = pcall; + local debug_traceback = debug.traceback; local log = require "util.logger".init("serialization"); module "serialization" @@ -72,7 +76,14 @@ end function deserialize(str) - error("Not implemented"); + if type(str) ~= "string" then return nil; end + str = "return "..str; + local f, err = loadstring(str, "@data"); + if not f then return nil, err; end + setfenv(f, {}); + local success, ret = pcall(f); + if not success then return nil, ret; end + return ret; end return _M;