summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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):