util.serialization: Implemented deserialize().

Sun, 12 Dec 2010 06:29:19 +0500

author
Waqas Hussain <waqas20@gmail.com>
date
Sun, 12 Dec 2010 06:29:19 +0500
changeset 3856
2cb50432bc9a
parent 3855
b77bb597bcb0
child 3857
57d88113e3a4

util.serialization: Implemented deserialize().

util/serialization.lua file | annotate | diff | comparison | revisions
--- a/util/serialization.lua	Sun Dec 12 06:15:08 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;

mercurial