Skip to content

Commit 60b8c11

Browse files
committed
Some more elementtree fixes. Still fails whenever a doctype is encountered
--HG-- extra : convert_revision : svn%3Aacbfec75-9323-0410-a652-858a13e371e0/trunk%40392
1 parent c3347a4 commit 60b8c11

File tree

3 files changed

+20
-7
lines changed

3 files changed

+20
-7
lines changed

src/parser.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -897,11 +897,12 @@ def endTagFormatting(self, name):
897897
clone = afeElement.cloneNode()
898898

899899
# Step 10
900-
clone.childNodes.extend(furthestBlock.childNodes)
900+
for furthestBlockChild in furthestBlock.childNodes:
901+
clone.appendChild(furthestBlockChild)
901902
furthestBlock.childNodes = []
902903

903904
# Step 11
904-
furthestBlock.childNodes.append(clone)
905+
furthestBlock.appendChild(clone)
905906

906907
# Step 12
907908
self.tree.activeFormattingElements.remove(afeElement)

src/treebuilders/DOMlite.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -120,4 +120,4 @@ class TreeBuilder(base.TreeBuilder):
120120
commentClass = CommentNode
121121

122122
def testSerializer(self, node):
123-
node.printTree()
123+
return node.printTree()

src/treebuilders/etree.py

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ def __init__(self, name):
1010
self._element = ElementTree.Element(name)
1111
self.name = name
1212
self.parent = None
13+
self._childNodes = []
1314
self._flags = []
1415

1516
#Set the element text and tail to the empty string rather than None
@@ -38,7 +39,19 @@ def _setAttributes(self, attributes):
3839

3940
attributes = property(_getAttributes, _setAttributes)
4041

42+
def _getChildNodes(self):
43+
return self._childNodes
44+
45+
def _setChildNodes(self, value):
46+
del self._element[:]
47+
self._childNodes = []
48+
for element in value:
49+
self.insertChild(element)
50+
51+
childNodes = property(_getChildNodes, _setChildNodes)
52+
4153
def appendChild(self, node):
54+
self._childNodes.append(node)
4255
self._element.append(node._element)
4356
node.parent = self
4457

@@ -64,7 +77,7 @@ def insertText(self, data, insertBefore=None):
6477
if index > 0:
6578
self._element[index-1].tail += data
6679
else:
67-
self.text += data
80+
self._element.text += data
6881

6982
def cloneNode(self):
7083
element = Element(self.name)
@@ -88,14 +101,13 @@ def _setData(self, value):
88101
class DocumentType(Element):
89102
def __init__(self, name):
90103
self._element = ElementTree.Element(DocumentType)
91-
self.text = "html"
104+
self._element.text = "html"
92105

93106
class Document(Element):
94107
def __init__(self):
95108
Element.__init__(self, "")
96109

97110
def testSerializer(element):
98-
print type(ElementTree.Comment)
99111
rv = []
100112
rv.append("#document")
101113
def serializeElement(element, indent=0):
@@ -115,7 +127,7 @@ def serializeElement(element, indent=0):
115127
serializeElement(child, indent)
116128
if element.tail:
117129
rv.append("|%s\"%s\"" %(' '*(indent-2), element.tail))
118-
serializeElement(element)
130+
serializeElement(element, 2)
119131
return "\n".join(rv)
120132

121133
class TreeBuilder(base.TreeBuilder):

0 commit comments

Comments
 (0)