Comparison

util/stanza.lua @ 862:b3b80ccddb0c

Merged with main tip.
author Tobias Markmann <tm@ayena.de>
date Tue, 03 Mar 2009 17:48:04 +0100
parent 829:b01fd698495e
child 896:2c0b9e3c11c3
comparison
equal deleted inserted replaced
861:2a5373897128 862:b3b80ccddb0c
10 local t_insert = table.insert; 10 local t_insert = table.insert;
11 local t_concat = table.concat; 11 local t_concat = table.concat;
12 local t_remove = table.remove; 12 local t_remove = table.remove;
13 local t_concat = table.concat; 13 local t_concat = table.concat;
14 local s_format = string.format; 14 local s_format = string.format;
15 local s_match = string.match; 15 local s_match = string.match;
16 local tostring = tostring; 16 local tostring = tostring;
17 local setmetatable = setmetatable; 17 local setmetatable = setmetatable;
18 local getmetatable = getmetatable;
18 local pairs = pairs; 19 local pairs = pairs;
19 local ipairs = ipairs; 20 local ipairs = ipairs;
20 local type = type; 21 local type = type;
21 local next = next; 22 local next = next;
22 local print = print; 23 local print = print;
211 end 212 end
212 end 213 end
213 end 214 end
214 215
215 return stanza; 216 return stanza;
217 end
218
219 function clone(stanza)
220 local lookup_table = {};
221 local function _copy(object)
222 if type(object) ~= "table" then
223 return object;
224 elseif lookup_table[object] then
225 return lookup_table[object];
226 end
227 local new_table = {};
228 lookup_table[object] = new_table;
229 for index, value in pairs(object) do
230 new_table[_copy(index)] = _copy(value);
231 end
232 return setmetatable(new_table, getmetatable(object));
233 end
234 return _copy(stanza)
216 end 235 end
217 236
218 function message(attr, body) 237 function message(attr, body)
219 if not body then 238 if not body then
220 return stanza("message", attr); 239 return stanza("message", attr);