mirror of
https://github.com/bjc/prosody.git
synced 2025-04-04 21:57:45 +03:00
util.serialization: Implemented deserialize().
This commit is contained in:
parent
0c43b50b88
commit
31cd341b7d
1 changed files with 12 additions and 1 deletions
|
@ -15,6 +15,10 @@ local error = error;
|
||||||
local pairs = pairs;
|
local pairs = pairs;
|
||||||
local next = next;
|
local next = next;
|
||||||
|
|
||||||
|
local loadstring = loadstring;
|
||||||
|
local setfenv = setfenv;
|
||||||
|
local pcall = pcall;
|
||||||
|
|
||||||
local debug_traceback = debug.traceback;
|
local debug_traceback = debug.traceback;
|
||||||
local log = require "util.logger".init("serialization");
|
local log = require "util.logger".init("serialization");
|
||||||
module "serialization"
|
module "serialization"
|
||||||
|
@ -72,7 +76,14 @@ function serialize(o)
|
||||||
end
|
end
|
||||||
|
|
||||||
function deserialize(str)
|
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
|
end
|
||||||
|
|
||||||
return _M;
|
return _M;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue