Skip to content

Commit 1ff3c80

Browse files
committed
Fix #239: make elementInScope consider namespaces for target (#262)
r=nobody!
1 parent 563dc29 commit 1ff3c80

File tree

2 files changed

+7
-47
lines changed

2 files changed

+7
-47
lines changed

.pytest.expect

-45
Original file line numberDiff line numberDiff line change
@@ -208,51 +208,6 @@ u'html5lib/tests/testdata/tree-construction/isindex.dat::3::cElementTree::parser
208208
u'html5lib/tests/testdata/tree-construction/isindex.dat::3::cElementTree::parser::void-namespace': FAIL
209209
u'html5lib/tests/testdata/tree-construction/isindex.dat::3::lxml::parser::namespaced': FAIL
210210
u'html5lib/tests/testdata/tree-construction/isindex.dat::3::lxml::parser::void-namespace': FAIL
211-
u'html5lib/tests/testdata/tree-construction/math.dat::0::DOM::parser::namespaced': FAIL
212-
u'html5lib/tests/testdata/tree-construction/math.dat::0::DOM::parser::void-namespace': FAIL
213-
u'html5lib/tests/testdata/tree-construction/math.dat::0::DOM::treewalker': FAIL
214-
u'html5lib/tests/testdata/tree-construction/math.dat::0::ElementTree::parser::namespaced': FAIL
215-
u'html5lib/tests/testdata/tree-construction/math.dat::0::ElementTree::parser::void-namespace': FAIL
216-
u'html5lib/tests/testdata/tree-construction/math.dat::0::ElementTree::treewalker': FAIL
217-
u'html5lib/tests/testdata/tree-construction/math.dat::0::cElementTree::parser::namespaced': FAIL
218-
u'html5lib/tests/testdata/tree-construction/math.dat::0::cElementTree::parser::void-namespace': FAIL
219-
u'html5lib/tests/testdata/tree-construction/math.dat::0::cElementTree::treewalker': FAIL
220-
u'html5lib/tests/testdata/tree-construction/math.dat::0::genshi::treewalker': FAIL
221-
u'html5lib/tests/testdata/tree-construction/math.dat::0::lxml::parser::namespaced': FAIL
222-
u'html5lib/tests/testdata/tree-construction/math.dat::0::lxml::parser::void-namespace': FAIL
223-
u'html5lib/tests/testdata/tree-construction/math.dat::0::lxml::treewalker': FAIL
224-
u'html5lib/tests/testdata/tree-construction/math.dat::1::DOM::parser::namespaced': FAIL
225-
u'html5lib/tests/testdata/tree-construction/math.dat::1::DOM::parser::void-namespace': FAIL
226-
u'html5lib/tests/testdata/tree-construction/math.dat::1::ElementTree::parser::namespaced': FAIL
227-
u'html5lib/tests/testdata/tree-construction/math.dat::1::ElementTree::parser::void-namespace': FAIL
228-
u'html5lib/tests/testdata/tree-construction/math.dat::1::cElementTree::parser::namespaced': FAIL
229-
u'html5lib/tests/testdata/tree-construction/math.dat::1::cElementTree::parser::void-namespace': FAIL
230-
u'html5lib/tests/testdata/tree-construction/math.dat::1::lxml::parser::namespaced': FAIL
231-
u'html5lib/tests/testdata/tree-construction/math.dat::1::lxml::parser::void-namespace': FAIL
232-
u'html5lib/tests/testdata/tree-construction/math.dat::2::DOM::parser::namespaced': FAIL
233-
u'html5lib/tests/testdata/tree-construction/math.dat::2::DOM::parser::void-namespace': FAIL
234-
u'html5lib/tests/testdata/tree-construction/math.dat::2::ElementTree::parser::namespaced': FAIL
235-
u'html5lib/tests/testdata/tree-construction/math.dat::2::ElementTree::parser::void-namespace': FAIL
236-
u'html5lib/tests/testdata/tree-construction/math.dat::2::cElementTree::parser::namespaced': FAIL
237-
u'html5lib/tests/testdata/tree-construction/math.dat::2::cElementTree::parser::void-namespace': FAIL
238-
u'html5lib/tests/testdata/tree-construction/math.dat::2::lxml::parser::namespaced': FAIL
239-
u'html5lib/tests/testdata/tree-construction/math.dat::2::lxml::parser::void-namespace': FAIL
240-
u'html5lib/tests/testdata/tree-construction/math.dat::3::DOM::parser::namespaced': FAIL
241-
u'html5lib/tests/testdata/tree-construction/math.dat::3::DOM::parser::void-namespace': FAIL
242-
u'html5lib/tests/testdata/tree-construction/math.dat::3::ElementTree::parser::namespaced': FAIL
243-
u'html5lib/tests/testdata/tree-construction/math.dat::3::ElementTree::parser::void-namespace': FAIL
244-
u'html5lib/tests/testdata/tree-construction/math.dat::3::cElementTree::parser::namespaced': FAIL
245-
u'html5lib/tests/testdata/tree-construction/math.dat::3::cElementTree::parser::void-namespace': FAIL
246-
u'html5lib/tests/testdata/tree-construction/math.dat::3::lxml::parser::namespaced': FAIL
247-
u'html5lib/tests/testdata/tree-construction/math.dat::3::lxml::parser::void-namespace': FAIL
248-
u'html5lib/tests/testdata/tree-construction/math.dat::4::DOM::parser::namespaced': FAIL
249-
u'html5lib/tests/testdata/tree-construction/math.dat::4::DOM::parser::void-namespace': FAIL
250-
u'html5lib/tests/testdata/tree-construction/math.dat::4::ElementTree::parser::namespaced': FAIL
251-
u'html5lib/tests/testdata/tree-construction/math.dat::4::ElementTree::parser::void-namespace': FAIL
252-
u'html5lib/tests/testdata/tree-construction/math.dat::4::cElementTree::parser::namespaced': FAIL
253-
u'html5lib/tests/testdata/tree-construction/math.dat::4::cElementTree::parser::void-namespace': FAIL
254-
u'html5lib/tests/testdata/tree-construction/math.dat::4::lxml::parser::namespaced': FAIL
255-
u'html5lib/tests/testdata/tree-construction/math.dat::4::lxml::parser::void-namespace': FAIL
256211
u'html5lib/tests/testdata/tree-construction/menuitem-element.dat::3::DOM::parser::namespaced': FAIL
257212
u'html5lib/tests/testdata/tree-construction/menuitem-element.dat::3::DOM::parser::void-namespace': FAIL
258213
u'html5lib/tests/testdata/tree-construction/menuitem-element.dat::3::ElementTree::parser::namespaced': FAIL

html5lib/treebuilders/_base.py

+7-2
Original file line numberDiff line numberDiff line change
@@ -167,12 +167,17 @@ def elementInScope(self, target, variant=None):
167167
# If we pass a node in we match that. if we pass a string
168168
# match any node with that name
169169
exactNode = hasattr(target, "nameTuple")
170+
if not exactNode:
171+
if isinstance(target, text_type):
172+
target = (namespaces["html"], target)
173+
assert isinstance(target, tuple)
170174

171175
listElements, invert = listElementsMap[variant]
172176

173177
for node in reversed(self.openElements):
174-
if (node.name == target and not exactNode or
175-
node == target and exactNode):
178+
if exactNode and node == target:
179+
return True
180+
elif not exactNode and node.nameTuple == target:
176181
return True
177182
elif (invert ^ (node.nameTuple in listElements)):
178183
return False

0 commit comments

Comments
 (0)