def format_node_tree(node, filterfunc=None): if filterfunc is None: filterfunc = lambda n: n.type in SHOW_NODES def childiter(nodes): nodes = [n for n in nodes if filterfunc(n)] return sorted(nodes, key=lambda node: (node._type, node.name)) depth = node.depth render = anytree.RenderTree(node, childiter=childiter, style=anytree.ContRoundStyle()) lines = [] for pre, _, node in render: lines.append(pre + format_node(node, pre, depth)) return "\n".join(lines)
def print_tree(self, node, style=anytree.ContRoundStyle(), fmt='native', header=False): ''' print the tree similar to unix tool "tree" @node: start node @style: when fmt=native, defines the tree style @fmt: output format @header: when fmt=csv, print the header ''' if fmt == 'native': rend = anytree.RenderTree(node, childiter=self._sort_tree) for pre, fill, node in rend: self._print_node(node, pre=pre, withdepth=True) elif fmt == 'csv': self._to_csv(node, with_header=header)
def test_controundstyle(): style = anytree.ContRoundStyle() eq_(style.vertical, u'\u2502 ') eq_(style.cont, u'\u251c\u2500\u2500 ') eq_(style.end, u'\u2570\u2500\u2500 ')
def print_tree(self, node, style=anytree.ContRoundStyle()): '''print the tree similar to unix tool "tree"''' rend = anytree.RenderTree(node, childiter=self._sort_tree) for pre, fill, node in rend: self._print_node(node, pre=pre, withdepth=True)
def __init__(self, node): anytree.RenderTree.__init__(self, node, style=anytree.ContRoundStyle(), childiter=self.childsort)
def render(self): if self.filename == Path(): return "ConfigNode(Empty)" return anytree.RenderTree(self, anytree.ContRoundStyle())