Skip to content

Commit bf4e0e0

Browse files
committed
More namespace support for genshi and pulldom treewalkers
1 parent 6b09aac commit bf4e0e0

File tree

2 files changed

+17
-12
lines changed

2 files changed

+17
-12
lines changed

src/html5lib/treewalkers/genshistream.py

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,7 @@ def __iter__(self):
1111
depth = 0
1212
ignore_until = None
1313
previous = None
14-
for event in NamespaceFlattener(prefixes={
15-
'http://www.w3.org/1999/xhtml': ''
16-
})(self.tree):
14+
for event in self.tree:
1715
if previous is not None:
1816
if previous[0] == START:
1917
depth += 1
@@ -38,16 +36,21 @@ def tokens(self, event, next):
3836
kind, data, pos = event
3937
if kind == START:
4038
tag, attrib = data
39+
name = tag.localname
40+
namespace = tag.namespace
4141
if tag in voidElements:
42-
for token in self.emptyTag(tag, list(attrib), \
43-
not next or next[0] != END or next[1] != tag):
42+
for token in self.emptyTag(namespace, name, list(attrib),
43+
not next or next[0] != END
44+
or next[1] != tag):
4445
yield token
4546
else:
46-
yield self.startTag(tag, list(attrib))
47+
yield self.startTag(namespace, name, list(attrib))
4748

4849
elif kind == END:
49-
if data not in voidElements:
50-
yield self.endTag(data)
50+
name = data.localname
51+
namespace = data.namespace
52+
if (namespace, name) not in voidElements:
53+
yield self.endTag(namespace, name)
5154

5255
elif kind == COMMENT:
5356
yield self.comment(data)

src/html5lib/treewalkers/pulldom.py

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -30,16 +30,18 @@ def tokens(self, event, next):
3030
if type == START_ELEMENT:
3131
name = node.nodeName
3232
if name in voidElements:
33-
for token in self.emptyTag(name, \
34-
node.attributes.items(), not next or next[1] is not node):
33+
for token in self.emptyTag(node.namespace,
34+
name,
35+
node.attributes.items(),
36+
not next or next[1] is not node):
3537
yield token
3638
else:
37-
yield self.startTag(name, node.attributes.items())
39+
yield self.startTag(node.namespace, name, node.attributes.items())
3840

3941
elif type == END_ELEMENT:
4042
name = node.nodeName
4143
if name not in voidElements:
42-
yield self.endTag(name)
44+
yield self.endTag(node.namespace, name)
4345

4446
elif type == COMMENT:
4547
yield self.comment(node.nodeValue)

0 commit comments

Comments
 (0)