Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commitfdde764

Browse files
committed
Syntax errors in jinja
1 parent25555a8 commitfdde764

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
fortokeninself.normalizedTokens():
177177
new_token=token
178178
whilenew_tokenisnotNone:
179+
log.debug(u"Token {} Phase = {}".format(new_token,self.phase))
179180
currentNode=self.tree.openElements[-1]ifself.tree.openElementselseNone
180181
currentNodeNamespace=currentNode.namespaceifcurrentNodeelseNone
181182
currentNodeName=currentNode.nameifcurrentNodeelseNone
@@ -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
defparseRCDataRawtext(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
defendTagHead(self,token):
826829
node=self.parser.tree.openElements.pop()
827830
assertnode.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
defendTagHtmlBodyBr(self,token):
@@ -835,6 +840,8 @@ def endTagOther(self, token):
835840
self.parser.parseError("unexpected-end-tag", {"name":token["name"]})
836841

837842
defanythingElse(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
defanythingElse(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+
elifdataisEOF:
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
returnTrue
@@ -339,6 +350,17 @@ def jinjaVariableEndState(self):
339350
"selfClosing":False
340351
})
341352
self.state=self.dataState
353+
elifdataisEOF:
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+
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
returnTrue
@@ -349,8 +371,9 @@ def jinjaStatementState(self):
349371
ifdata=="%":
350372
self.state=self.jinjaStatementEndState
351373
elifdataisEOF:
352-
# Tokenization ends.
353-
returnFalse
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
ifdata=="}":
365388
self.state=self.jinjaVariableEndState
366389
elifdataisEOF:
367-
# Tokenization ends.
368-
returnFalse
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)

[8]ページ先頭

©2009-2025 Movatter.jp