util/stanza: Added clone function

remotes/origin/sasl
Waqas Hussain 17 years ago
parent 4c696b7d8a
commit 0fe02618e5
  1. 21
      util/stanza.lua

@ -12,9 +12,10 @@ local t_concat = table.concat;
local t_remove = table.remove;
local t_concat = table.concat;
local s_format = string.format;
local s_match = string.match;
local s_match = string.match;
local tostring = tostring;
local setmetatable = setmetatable;
local getmetatable = getmetatable;
local pairs = pairs;
local ipairs = ipairs;
local type = type;
@ -215,6 +216,24 @@ function deserialize(stanza)
return stanza;
end
function clone(stanza)
local lookup_table = {};
local function _copy(object)
if type(object) ~= "table" then
return object;
elseif lookup_table[object] then
return lookup_table[object];
end
local new_table = {};
lookup_table[object] = new_table;
for index, value in pairs(object) do
new_table[_copy(index)] = _copy(value);
end
return setmetatable(new_table, getmetatable(object));
end
return _copy(stanza)
end
function message(attr, body)
if not body then
return stanza("message", attr);

Loading…
Cancel
Save