Skip to content

Commit 11bdb49

Browse files
jdufresnegsnedders
authored andcommitted
Make self closing col start tags not cause a parse error (#244)
1 parent fbce67d commit 11bdb49

File tree

3 files changed

+13
-3
lines changed

3 files changed

+13
-3
lines changed

AUTHORS.rst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,3 +41,4 @@ Patches and suggestions
4141
- Jim Baker
4242
- Michael[tm] Smith
4343
- Marc Abramowitz
44+
- Jon Dufresne

html5lib/html5parser.py

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -171,8 +171,10 @@ def mainLoop(self):
171171
ParseErrorToken = tokenTypes["ParseError"]
172172

173173
for token in self.normalizedTokens():
174+
prev_token = None
174175
new_token = token
175176
while new_token is not None:
177+
prev_token = new_token
176178
currentNode = self.tree.openElements[-1] if self.tree.openElements else None
177179
currentNodeNamespace = currentNode.namespace if currentNode else None
178180
currentNodeName = currentNode.name if currentNode else None
@@ -211,10 +213,10 @@ def mainLoop(self):
211213
elif type == DoctypeToken:
212214
new_token = phase.processDoctype(new_token)
213215

214-
if (type == StartTagToken and token["selfClosing"] and
215-
not token["selfClosingAcknowledged"]):
216+
if (type == StartTagToken and prev_token["selfClosing"] and
217+
not prev_token["selfClosingAcknowledged"]):
216218
self.parseError("non-void-element-with-trailing-solidus",
217-
{"name": token["name"]})
219+
{"name": prev_token["name"]})
218220

219221
# When the loop finishes it's EOF
220222
reprocess = True
@@ -1933,6 +1935,7 @@ def processCharacters(self, token):
19331935
def startTagCol(self, token):
19341936
self.tree.insertElement(token)
19351937
self.tree.openElements.pop()
1938+
token["selfClosingAcknowledged"] = True
19361939

19371940
def startTagOther(self, token):
19381941
ignoreEndTag = self.ignoreEndTagColgroup()

html5lib/tests/test_parser2.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,3 +93,9 @@ def test_debug_log():
9393
def test_no_duplicate_clone():
9494
frag = parseFragment("<b><em><foo><foob><fooc><aside></b></em>")
9595
assert len(frag) == 2
96+
97+
98+
def test_self_closing_col():
99+
parser = HTMLParser()
100+
parser.parseFragment('<table><colgroup><col /></colgroup></table>')
101+
assert not parser.errors

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy