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

Commitc7461f9

Browse files
committed
Works with inline if
1 parent2ffcf5c commitc7461f9

File tree

2 files changed

+37
-4
lines changed

2 files changed

+37
-4
lines changed

‎html5lib/tests/test_jinja.py‎

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ def test_var_1(self):
2121
html_string="""<h1>{{ hi }}</h1>"""
2222

2323
tree=self.parser.parseFragment(html_string)
24+
dump(tree)
2425

2526
self.assertTree(tree, [{
2627
'tag':'h1',
@@ -37,6 +38,7 @@ def test_var_2(self):
3738
html_string="""<h1>{{ a.b }}</h1>"""
3839

3940
tree=self.parser.parseFragment(html_string)
41+
dump(tree)
4042

4143
self.assertTree(tree, [{
4244
'tag':'h1',
@@ -339,6 +341,34 @@ def test_jinja_import(self):
339341
'value':"'forms.html' import input as input_field, textarea"
340342
}])
341343

344+
deftest_inline_if(self):
345+
html_string="""
346+
{{ '[%s]' % page.title if page.title }}
347+
"""
348+
349+
tree=self.parser.parseFragment(html_string)
350+
dump(tree)
351+
352+
self.assertTree(tree, [{
353+
'tag':'jinjavariabletag',
354+
'children': [{
355+
'tag':'jinjavariable',
356+
'value':"'[%s]'"
357+
}, {
358+
'tag':'jinjavariable',
359+
'value':"%"
360+
}, {
361+
'tag':'jinjavariable',
362+
'value':"page.title"
363+
}, {
364+
'tag':'jinjavariable',
365+
'value':"if"
366+
}, {
367+
'tag':'jinjavariable',
368+
'value':"page.title"
369+
}]
370+
}])
371+
342372
defassertTree(self,root,spec):
343373
self.assertEqual(len(root),len(spec))
344374

‎html5lib/tokenizer.py‎

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -233,7 +233,7 @@ def processEntityInAttribute(self, allowedChar):
233233
"""
234234
self.consumeEntity(allowedChar=allowedChar,fromAttribute=True)
235235

236-
defemitCurrentToken(self):
236+
defemitCurrentToken(self,resetState=True):
237237
"""This method is a generic handler for emitting the tags. It also sets
238238
the state to "data" because that's what's needed after a token has been
239239
emitted.
@@ -251,7 +251,9 @@ def emitCurrentToken(self):
251251
self.tokenQueue.append({"type":tokenTypes["ParseError"],
252252
"data":"self-closing-flag-on-end-tag"})
253253
self.tokenQueue.append(token)
254-
self.state=self.dataState
254+
255+
ifresetState:
256+
self.state=self.dataState
255257

256258
# Below are the various tokenizer states worked out.
257259
defdataState(self):
@@ -508,8 +510,9 @@ def jinjaVariableState(self):
508510
}}
509511
self.tokenQueue.append(self.currentToken)
510512
# If this is the first token after the variable start tag
511-
elifself.currentToken['type']==tokenTypes["JinjaVariableStartTag"]:
512-
#log.debug(u"Got start tag {}".format(("|", "}", "\u0000") | spaceCharacters))
513+
elifself.currentToken['type']==tokenTypes["JinjaVariableStartTag"]\
514+
orself.currentToken['type']==tokenTypes["JinjaVariable"]:
515+
#log.debug(u"Got start tag {}".format(("|", "}", "\u0000") | spaceCharacters))
513516

514517
chars=self.stream.charsUntil(frozenset(("(","|","}","\u0000"))|spaceCharacters)
515518
self.currentToken= {"type":tokenTypes["JinjaVariable"],

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp