Skip to content

Commit 8abc31b

Browse files
committed
change parse.py to not import html5lib; fix a bug in endTagP handling; add a regression testcase for that; make a comment in _base.py clearer; add some more parseError messages
--HG-- extra : convert_revision : svn%3Aacbfec75-9323-0410-a652-858a13e371e0/trunk%40511
1 parent d9a9980 commit 8abc31b

File tree

3 files changed

+11
-8
lines changed

3 files changed

+11
-8
lines changed

parse.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
from src import html5parser, liberalxmlparser
1313
#END RELEASE
1414
#RELEASE add
15-
from html5lib import html5parser, liberalxmlparser
15+
#from html5lib import html5parser, liberalxmlparser
1616
#END RELEASE
1717

1818
def convertTreeDump(treedump):

src/html5parser.py

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -840,7 +840,8 @@ def startTagOther(self, name, attributes):
840840
self.tree.insertElement(name, attributes)
841841

842842
def endTagP(self, name):
843-
self.tree.generateImpliedEndTags("p")
843+
if self.tree.elementInScope("p"):
844+
self.tree.generateImpliedEndTags("p")
844845
if self.tree.openElements[-1].name != "p":
845846
self.parser.parseError("Unexpected end tag (p).")
846847
while self.tree.elementInScope("p"):
@@ -1150,7 +1151,8 @@ def startTagImplyTbody(self, name, attributes):
11501151
self.parser.phase.processStartTag(name, attributes)
11511152

11521153
def startTagTable(self, name, attributes):
1153-
self.parser.parseError()
1154+
self.parser.parseError(_(u"Unexpected start tag (table) in table "
1155+
u"phase. Implies end tag (table)."))
11541156
self.parser.phase.processEndTag("table")
11551157
if not self.parser.innerHTML:
11561158
self.parser.phase.processStartTag(name, attributes)
@@ -1168,14 +1170,16 @@ def endTagTable(self, name):
11681170
if self.tree.elementInScope("table", True):
11691171
self.tree.generateImpliedEndTags()
11701172
if self.tree.openElements[-1].name != "table":
1171-
self.parser.parseError()
1173+
self.parser.parseError(_(u"Unexpected end tag (table). "
1174+
u"Expected end tag (" + self.tree.openElements[-1].name +\
1175+
u")."))
11721176
while self.tree.openElements[-1].name != "table":
11731177
self.tree.openElements.pop()
11741178
self.tree.openElements.pop()
11751179
self.parser.resetInsertionMode()
11761180
else:
1177-
self.parser.parseError()
11781181
# innerHTML case
1182+
self.parser.parseError()
11791183

11801184
def endTagIgnore(self, name):
11811185
self.parser.parseError(_("Unexpected end tag (" + name +\

src/treebuilders/_base.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -303,9 +303,8 @@ def generateImpliedEndTags(self, exclude=None):
303303
if (name in frozenset(("dd", "dt", "li", "p", "td", "th", "tr"))
304304
and name != exclude):
305305
self.openElements.pop()
306-
# XXX Until someone has broven that the above breaks stuff I think
307-
# we should keep it in.
308-
# self.processEndTag(name)
306+
# XXX This is not entirely what the specification says. We should
307+
# investigate it more closely.
309308
self.generateImpliedEndTags(exclude)
310309

311310
def getDocument(self):

0 commit comments

Comments
 (0)