Skip to content

Commit 2538d8d

Browse files
committed
fix a bug in the in frameset phase and add some better error messages there; also change parse.py to print a list of all error messages instead of just a number
--HG-- extra : convert_revision : svn%3Aacbfec75-9323-0410-a652-858a13e371e0/trunk%40385
1 parent be63155 commit 2538d8d

File tree

2 files changed

+21
-10
lines changed

2 files changed

+21
-10
lines changed

parse.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ def parse():
5151
else:
5252
document = p.parse(f)
5353
print convertTreeDump(document.printTree())
54-
print "\nParse errors:", len(p.errors)
54+
print "\nParse errors:\n" + "\n".join(p.errors)
5555

5656
def getOptParser():
5757
parser = OptionParser(usage=__doc__)

src/parser.py

Lines changed: 20 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1541,13 +1541,16 @@ def __init__(self, parser, tree):
15411541
("frame", self.startTagFrame),
15421542
("noframes", self.startTagNoframes)
15431543
])
1544-
self.startTagHandler.default = self.tagOther
1544+
self.startTagHandler.default = self.startTagOther
15451545

1546-
self.endTagHandler = utils.MethodDispatcher([("frameset", self.endTagFrameset)])
1547-
self.endTagHandler.default = self.tagOther
1546+
self.endTagHandler = utils.MethodDispatcher([
1547+
("frameset", self.endTagFrameset)
1548+
])
1549+
self.endTagHandler.default = self.endTagOther
15481550

15491551
def processCharacters(self, data):
1550-
self.parser.parseError()
1552+
self.parser.parseError("Unepxected characters in the frameset phase. "
1553+
"Characters ignored.")
15511554

15521555
def startTagFrameset(self, name, attributes):
15531556
self.tree.insertElement(name, attributes)
@@ -1559,18 +1562,26 @@ def startTagFrame(self, name, attributes):
15591562
def startTagNoframes(self, name, attributes):
15601563
self.parser.phases["inBody"].processStartTag(name, attributes)
15611564

1565+
def startTagOther(self, name, attributes):
1566+
self.parser.parseError("Unexpected start tag token (" + name +\
1567+
") in the frameset phase.")
1568+
15621569
def endTagFrameset(self, name):
15631570
if self.tree.openElements[-1].name == "html":
15641571
# innerHTML case
1565-
self.parser.parseError()
1572+
self.parser.parseError("Unexpected end tag token (frameset) in the"
1573+
"frameset phase (innerHTML)")
15661574
else:
15671575
self.tree.openElements.pop()
1568-
if not self.parser.innerHTML and \
1569-
self.tree.openElements[-1].name == "frameset":
1576+
if not self.parser.innerHTML and\
1577+
self.tree.openElements[-1].name != "frameset":
1578+
# If we're not in innerHTML mode and the the current node is not a
1579+
# "frameset" element (anymore) then switch.
15701580
self.parser.phase = self.parser.phases["afterFrameset"]
15711581

1572-
def tagOther(self, name, attributes={}):
1573-
self.parser.parseError()
1582+
def endTagOther(self, name):
1583+
self.parser.parseError("Unexpected end tag token (" + name +
1584+
") in the frameset phase.")
15741585

15751586

15761587
class AfterFramesetPhase(Phase):

0 commit comments

Comments
 (0)