def save(self, f, nid=None, level=Tree.ROOT, idhidden=True, filter=None, cmp=None, key=None, reverse=False): leading = '' lasting = '' nid = self.root if (nid is None) else Node.sanitize_id(nid) label = ("{0}".format(self[nid].tag)) if idhidden else ( "{0}[{1}]".format(self[nid].tag, self[nid].identifier)) filter = (self._real_true) if (filter is None) else filter if level == self.ROOT: f.write(label + '\n') else: leading += '\t' * level f.write("{0}{1}{2}\n".format(leading, lasting, label)) if filter(self[nid]) and self[nid].expanded: queue = [self[i] for i in self[nid].fpointer if filter(self[i])] key = (lambda x: x) if (key is None) else key queue.sort(cmp=cmp, key=key, reverse=reverse) level += 1 for element in queue: self.save(f, element.identifier, level, idhidden, filter, cmp, key, reverse)
def save(self, f, nid=None, level=Tree.ROOT, idhidden=True, filter=None, cmp=None, key=None, reverse=False): leading = '' lasting = '' nid = self.root if (nid is None) else Node.sanitize_id(nid) label = ("{0}".format(self[nid].tag)) if idhidden else ("{0}[{1}]".format(self[nid].tag, self[nid].identifier)) filter = (self._real_true) if (filter is None) else filter if level == self.ROOT: f.write(label + '\n') else: leading += '\t' * level f.write("{0}{1}{2}\n".format(leading, lasting, label)) if filter(self[nid]) and self[nid].expanded: queue = [self[i] for i in self[nid].fpointer if filter(self[i])] key = (lambda x: x) if (key is None) else key queue.sort(cmp=cmp, key=key, reverse=reverse) level += 1 for element in queue: self.save(f, element.identifier, level, idhidden, filter, cmp, key, reverse)