# HG changeset patch
# User Waqas Hussain <waqas20@gmail.com>
# Date 1292117359 -18000
# Node ID 73399dd525e846128fb59e459bae37f7580b4018
# Parent  40b54c46a14c00c2e9366ef5ea0ea15d4064295f
util.serialization: Implemented deserialize().

diff -r 40b54c46a14c -r 73399dd525e8 util/serialization.lua
--- 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;