def __getitem__(self, k): if not k: return self self = deepcopy(self) if not isinstance(k, (tuple, list)): k = [k] for fragment in k: if isinstance(fragment, basestring): self.children.append(escape(fragment)) continue self.children.append(fragment) return self
def __iter__(self): yield 'text', escape(unicode(self.data)) if self.escape else unicode(self.data)