Mercurial > prosody-hg
comparison util/serialization.lua @ 3856:2cb50432bc9a
util.serialization: Implemented deserialize().
| author | Waqas Hussain <waqas20@gmail.com> |
|---|---|
| date | Sun, 12 Dec 2010 06:29:19 +0500 |
| parents | b7049746bd29 |
| children | 87f6eabd90c9 |
comparison
equal
deleted
inserted
replaced
| 3855:b77bb597bcb0 | 3856:2cb50432bc9a |
|---|---|
| 12 local t_insert = table.insert; | 12 local t_insert = table.insert; |
| 13 local t_concat = table.concat; | 13 local t_concat = table.concat; |
| 14 local error = error; | 14 local error = error; |
| 15 local pairs = pairs; | 15 local pairs = pairs; |
| 16 local next = next; | 16 local next = next; |
| 17 | |
| 18 local loadstring = loadstring; | |
| 19 local setfenv = setfenv; | |
| 20 local pcall = pcall; | |
| 17 | 21 |
| 18 local debug_traceback = debug.traceback; | 22 local debug_traceback = debug.traceback; |
| 19 local log = require "util.logger".init("serialization"); | 23 local log = require "util.logger".init("serialization"); |
| 20 module "serialization" | 24 module "serialization" |
| 21 | 25 |
| 70 function serialize(o) | 74 function serialize(o) |
| 71 return t_concat(append({}, o)); | 75 return t_concat(append({}, o)); |
| 72 end | 76 end |
| 73 | 77 |
| 74 function deserialize(str) | 78 function deserialize(str) |
| 75 error("Not implemented"); | 79 if type(str) ~= "string" then return nil; end |
| 80 str = "return "..str; | |
| 81 local f, err = loadstring(str, "@data"); | |
| 82 if not f then return nil, err; end | |
| 83 setfenv(f, {}); | |
| 84 local success, ret = pcall(f); | |
| 85 if not success then return nil, ret; end | |
| 86 return ret; | |
| 76 end | 87 end |
| 77 | 88 |
| 78 return _M; | 89 return _M; |
