util.serialization: Implemented deserialize().
authorWaqas Hussain <waqas20@gmail.com>
Sun, 12 Dec 2010 01:29:19 +0000 (06:29 +0500)
committerWaqas Hussain <waqas20@gmail.com>
Sun, 12 Dec 2010 01:29:19 +0000 (06:29 +0500)
util/serialization.lua

index bad2fe43dddf7cc0b7ec17da6892f10dffe4f646..474b5d655c285248330b06ae673843c3bfdc6662 100644 (file)
@@ -15,6 +15,10 @@ local error = error;
 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 @@ function serialize(o)
 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;