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

Commit913aa1f

Browse files
committed
WIP
1 parent2e6aaf6 commit913aa1f

File tree

3 files changed

+106
-0
lines changed

3 files changed

+106
-0
lines changed

‎html5lib/html5parser.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -168,6 +168,7 @@ def mainLoop(self):
168168
ParseErrorToken=tokenTypes["ParseError"]
169169

170170
fortokeninself.normalizedTokens():
171+
#log.debug(u"Token {}".format(token))
171172
new_token=token
172173
whilenew_tokenisnotNone:
173174
currentNode=self.tree.openElements[-1]ifself.tree.openElementselseNone

‎html5lib/tests/test_jinja.py

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
importhtml5lib
2+
importunittest
3+
importlogging
4+
5+
log=logging.getLogger(__name__)
6+
7+
8+
defdump(tree,tabs=0):
9+
log.debug(u"{}Tag '{}' - {} children - Value = {} - Text = {}".format(
10+
"".join(["\t"foriinrange(tabs)]),tree.tag,len(tree),tree.attrib['value']if'value'intree.attribelseNone,tree.text))
11+
12+
forchildintree:
13+
dump(child,tabs+1)
14+
15+
16+
classJinjaTestCase(unittest.TestCase):
17+
defsetUp(self):
18+
self.parser=html5lib.HTMLParser(strict=True,namespaceHTMLElements=False,tree=html5lib.treebuilders.getTreeBuilder("etree",fullTree=True))
19+
20+
defassertTree(self,root,spec):
21+
self.assertEqual(len(root),len(spec))
22+
23+
forchild,spec_childinzip(root,spec):
24+
self.assertEqual(child.tag,spec_child['tag'])
25+
26+
if'text'inspec_child:
27+
self.assertEqual(child.text,spec_child['text'])
28+
29+
if'value'inspec_child:
30+
self.assertEqual(child.attrib['value'],spec_child['value'])
31+
32+
if'children'inspec_child:
33+
self.assertTree(child,spec_child['children'])
34+
else:
35+
self.assertEqual(len(child),0)
36+
37+
if'attrs'inspec_child:
38+
fork,vinspec_child['attrs'].iteritems():
39+
self.assertIn(k,child.attrib)
40+
self.assertEqual(v,child.attrib[k])
41+
42+
deftest_open_block(self):
43+
html_string="""
44+
<div class="basket-site dropdown-menu" role="menu">
45+
{% set cart = active_cart() %}
46+
{% for cart_product in cart.products %}
47+
{% endfor %}
48+
49+
<div class="controls clearfix">
50+
{#
51+
<button type="button" class="btn btn-link">VIEW BASKET</button>
52+
#}
53+
</div>
54+
</div>
55+
"""
56+
tree=self.parser.parseFragment(html_string)
57+
dump(tree)

‎html5lib/tokenizer.py

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -311,6 +311,14 @@ def jinjaOpenState(self):
311311
#})
312312

313313
self.state=self.jinjaStatementState
314+
elifdata=="#":
315+
#self.tokenQueue.append({
316+
#"type": tokenTypes["JinjaStatementStartTag"],
317+
#"name": "{%", "data": {},
318+
#"selfClosing": False
319+
#})
320+
321+
self.state=self.jinjaCommentState
314322

315323
#self.state = self.dataState
316324
returnTrue
@@ -359,6 +367,28 @@ def jinjaVariableEndState(self):
359367
#self.state = self.dataState
360368
returnTrue
361369

370+
defjinjaCommentEndState(self):
371+
# We got a {
372+
data=self.stream.char()
373+
374+
ifdata=="}":
375+
#self.tokenQueue.append({
376+
#"type": tokenTypes["JinjaVariableEndTag"],
377+
#"name": "}}", "data": [],
378+
#"selfClosing": False
379+
#})
380+
self.state=self.dataState
381+
elifdataisEOF:
382+
self.tokenQueue.append({"type":tokenTypes["ParseError"],"data":
383+
"expected-jinja-comment-closing-tag-but-got-eof",
384+
"datavars": {"data":data}})
385+
self.state=self.dataState
386+
else:
387+
self.state=self.jinjaStatementState
388+
389+
#self.state = self.dataState
390+
returnTrue
391+
362392
defjinjaStatementState(self):
363393
data=self.stream.char()
364394

@@ -375,6 +405,24 @@ def jinjaStatementState(self):
375405

376406
returnTrue
377407

408+
defjinjaCommentState(self):
409+
data=self.stream.char()
410+
411+
log.debug(u"Jinja comment state '{}'".format(data))
412+
413+
ifdata=="#":
414+
self.state=self.jinjaCommentEndState
415+
elifdataisEOF:
416+
self.tokenQueue.append({"type":tokenTypes["ParseError"],"data":
417+
"missing-jinja-comment-closing-brace"})
418+
self.state=self.dataState
419+
else:
420+
chars=self.stream.charsUntil(("#","\u0000"))
421+
#self.tokenQueue.append({"type": tokenTypes["JinjaStatementTag"], "data":
422+
#data + chars})
423+
424+
returnTrue
425+
378426
defjinjaVariableState(self):
379427
data=self.stream.char()
380428

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp