equal
deleted
inserted
replaced
151 function stanza_mt:maptags(callback) |
151 function stanza_mt:maptags(callback) |
152 local tags, curr_tag = self.tags, 1; |
152 local tags, curr_tag = self.tags, 1; |
153 local n_children, n_tags = #self, #tags; |
153 local n_children, n_tags = #self, #tags; |
154 |
154 |
155 local i = 1; |
155 local i = 1; |
156 while curr_tag <= n_tags do |
156 while curr_tag <= n_tags and n_tags > 0 do |
157 if self[i] == tags[curr_tag] then |
157 if self[i] == tags[curr_tag] then |
158 local ret = callback(self[i]); |
158 local ret = callback(self[i]); |
159 if ret == nil then |
159 if ret == nil then |
160 t_remove(self, i); |
160 t_remove(self, i); |
161 t_remove(tags, curr_tag); |
161 t_remove(tags, curr_tag); |
162 n_children = n_children - 1; |
162 n_children = n_children - 1; |
163 n_tags = n_tags - 1; |
163 n_tags = n_tags - 1; |
|
164 i = i - 1; |
|
165 curr_tag = curr_tag - 1; |
164 else |
166 else |
165 self[i] = ret; |
167 self[i] = ret; |
166 tags[i] = ret; |
168 tags[i] = ret; |
167 end |
169 end |
168 i = i + 1; |
|
169 curr_tag = curr_tag + 1; |
170 curr_tag = curr_tag + 1; |
170 end |
171 end |
|
172 i = i + 1; |
171 end |
173 end |
172 return self; |
174 return self; |
173 end |
175 end |
174 |
176 |
175 local xml_escape |
177 local xml_escape |