8000 Syntax errors in jinja · cratejoy/html5lib-python@fdde764 · GitHub
[go: up one dir, main page]

Skip to content

Commit fdde764

Browse files
committed
Syntax errors in jinja
1 parent 25555a8 commit fdde764

File tree

2 files changed

+37
-4
lines changed

2 files changed

+37
-4
lines changed

html5lib/html5parser.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -176,6 +176,7 @@ def mainLoop(self):
176176
for token in self.normalizedTokens():
177177
new_token = token
178178
while new_token is not None:
179+
log.debug(u"Token {} Phase = {}".format(new_token, self.phase))
179180
currentNode = self.tree.openElements[-1] if self.tree.openElements else None
180181
currentNodeNamespace = currentNode.namespace if currentNode else None
181182
currentNodeName = currentNode.name if currentNode else None
@@ -421,6 +422,7 @@ def resetInsertionMode(self):
421422
new_phase = self.phases["inBody"]
422423
break
423424

425+
log.debug(u"Changing phase to {}".format(new_phase))
424426
self.phase = new_phase
425427

426428
def parseRCDataRawtext(self, token, contentType):
@@ -438,6 +440,7 @@ def parseRCDataRawtext(self, token, contentType):
438440

439441
self.originalPhase = self.phase
440442

443+
log.debug(u"Changing phase to text")
441444
self.phase = self.phases["text"]
442445

443446

@@ -825,6 +828,8 @@ def startTagOther(self, token):
825828
def endTagHead(self, token):
826829
node = self.parser.tree.openElements.pop()
827830
assert node.name == "head", "Expected head got %s" % node.name
831+
log = logging.getLogger(u"html5lib")
832+
log.debug(u"Switching phase to afterHead")
828833
self.parser.phase = self.parser.phases["afterHead"]
829834

830835
def endTagHtmlBodyBr(self, token):
@@ -835,6 +840,8 @@ def endTagOther(self, token):
835840
self.parser.parseError("unexpected-end-tag", {"name": token["name"]})
836841

837842
def anythingElse(self):
843+
log = logging.getLogger(u"html5lib")
844+
log.debug(u"Implied end head tag")
838845
self.endTagHead(impliedTagToken("head"))
839846

840847
# XXX If we implement a parser for which scripting is disabled we need to
@@ -905,6 +912,8 @@ def endTagOther(self, token):
905912

906913
def anythingElse(self):
907914
self.tree.insertElement(impliedTagToken("body", "StartTag"))
915+
log = logging.getLogger(u"html5lib")
916+
log.debug(u"Changing phase to body")
908917
self.parser.phase = self.parser.phases["inBody"]
909918
self.parser.framesetOK = True
910919

html5lib/tokenizer.py

Lines changed: 28 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -324,6 +324,17 @@ def jinjaStatementEndState(self):
324324
"selfClosing": False
325325
})
326326
self.state = self.dataState
327+
elif data is EOF:
328+
self.tokenQueue.append({"type": tokenTypes["ParseError"], "data":
329+
"expected-jinja-statement-closing-tag-but-got-eof",
330+
"datavars": {"data": data}})
331+
self.state = self.dataState
332+
else:
333+
self.tokenQueue.append({"type": tokenTypes["ParseError"], "data":
334+
"expected-jinja-statement-closing-tag-but-got-char",
335+
"datavars": {"data": data}})
336+
self.stream.unget(data)
337+
self.state = self.bogusCommentState
327338

328339
#self.state = self.dataState
329340
return True
@@ -339,6 +350,17 @@ def jinjaVariableEndState(self):
339350
"selfClosing": False
340351
})
341352
self.state = self.dataState
353+
elif data is EOF:
354+
self.tokenQueue.append({"type": tokenTypes["ParseError"], "data":
355+
"expected-jinja-variable-closing-tag-but-got-eof",
356+
"datavars": {"data": data}})
357+
self.state = self.dataState
358+
else:
359+
8000 self.tokenQueue.append({"type": tokenTypes["ParseError"], "data":
360+
"expected-jinja-variable-closing-tag-but-got-char",
361+
"datavars": {"data": data}})
362+
self.stream.unget(data)
363+
self.state = self.bogusCommentState
342364

343365
#self.state = self.dataState
344366
return True
@@ -349,8 +371,9 @@ def jinjaStatementState(self):
349371
if data == "%":
350372
self.state = self.jinjaStatementEndState
351373
elif data is EOF:
352-
# Tokenization ends.
353-
return False
374+
self.tokenQueue.append({"type": tokenTypes["ParseError"], "data":
375+
"eof-in-jinja-statement"})
376+
self.state = self.dataState
354377
else:
355378
chars = self.stream.charsUntil(("%", "\u0000"))
356379
self.tokenQueue.append({"type": tokenTypes["JinjaStatementTag"], "data":
@@ -364,8 +387,9 @@ def jinjaVariableState(self):
364387
if data == "}":
365388
self.state = self.jinjaVariableEndState
366389
elif data is EOF:
367-
# Tokenization ends.
368-
return False
390+
self.tokenQueue.append({"type": tokenTypes["ParseError"], "data":
391+
"eof-in-jinja-variable"})
392+
self.state = self.dataState
369393
else:
370394
chars = self.stream.charsUntil(("}", "\u0000"))
371395
self.tokenQueue.append({"type": tokenTypes["JinjaVariableTag"], "data":

0 commit comments

Comments
 (0)
0