summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@redhat.com>2020-11-30 16:54:25 +0000
committerMatthias Clasen <mclasen@redhat.com>2020-11-30 16:54:25 +0000
commitd87fd900cca0488de1b62bd7c3191dc110b323b8 (patch)
tree52050d24976fc32319d66b2c6eea8165edb61daf
parentfbc159c5d1c53d6e957dde9e27e8d4df40be67d3 (diff)
parent9e289cd74056c42ac6ea824809efcb65bd265a85 (diff)
downloadgtk-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.py52
-rwxr-xr-xtests/mkhtml2.py2
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):