diff options
author | Matthias Clasen <mclasen@redhat.com> | 2020-11-30 16:54:25 +0000 |
---|---|---|
committer | Matthias Clasen <mclasen@redhat.com> | 2020-11-30 16:54:25 +0000 |
commit | d87fd900cca0488de1b62bd7c3191dc110b323b8 (patch) | |
tree | 52050d24976fc32319d66b2c6eea8165edb61daf | |
parent | fbc159c5d1c53d6e957dde9e27e8d4df40be67d3 (diff) | |
parent | 9e289cd74056c42ac6ea824809efcb65bd265a85 (diff) | |
download | gtk-doc-d87fd900cca0488de1b62bd7c3191dc110b323b8.tar.gz |
Merge branch 'wip/smcv/internal-tree' into 'master'
Implement a simple tree structure without using anytree
See merge request GNOME/gtk-doc!56
-rw-r--r-- | gtkdoc/mkhtml2.py | 52 | ||||
-rwxr-xr-x | tests/mkhtml2.py | 2 |
2 files changed, 52 insertions, 2 deletions
diff --git a/gtkdoc/mkhtml2.py b/gtkdoc/mkhtml2.py index 3bec6fd..1336da9 100644 --- a/gtkdoc/mkhtml2.py +++ b/gtkdoc/mkhtml2.py @@ -101,7 +101,6 @@ import os import shutil import sys -from anytree import Node, PreOrderIter from copy import deepcopy from glob import glob from lxml import etree @@ -254,6 +253,57 @@ def get_chunk_titles(module, node, tree_node): return result +class PreOrderIter: + def __init__(self, node): + self.__node = node + + def __iter__(self): + yield self.__node + + for child in self.__node.descendants: + yield child + + +class Node: + def __init__(self, name, parent=None, **kwargs): + self.name = name + self.__root = None + self.__attrs = kwargs + self.children = [] + + assert parent is None or isinstance(parent, Node) + self.parent = parent + if parent is not None: + self.__root = parent.root + parent.children.append(self) + + @property + def root(self): + return self.__root or self + + @property + def descendants(self): + ret = [] + + for child in self.children: + ret.append(child) + + for other in child.descendants: + ret.append(other) + + return ret + + def __iter__(self): + for child in self.children: + yield child + + def __getattr__(self, name): + try: + return self.__attrs[name] + except KeyError as e: + raise AttributeError(str(e)) + + def chunk(xml_node, module, depth=0, idx=0, parent=None): """Chunk the tree. diff --git a/tests/mkhtml2.py b/tests/mkhtml2.py index c61ee27..439e7fe 100755 --- a/tests/mkhtml2.py +++ b/tests/mkhtml2.py @@ -22,11 +22,11 @@ import logging import textwrap import unittest -from anytree import PreOrderIter from lxml import etree from parameterized import parameterized from gtkdoc import mkhtml2 +from gtkdoc.mkhtml2 import PreOrderIter class TestChunking(unittest.TestCase): |