@@ -456,7 +456,6 @@ def resetInsertionMode(self):
456
456
new_phase = self .phases ["inBody" ]
457
457
break
458
458
459
- #log.debug(u"Changing phase to {}".format(new_phase))
460
459
self .phase = new_phase
461
460
462
461
def parseRCDataRawtext (self , token , contentType ):
@@ -474,7 +473,6 @@ def parseRCDataRawtext(self, token, contentType):
474
473
475
474
self .originalPhase = self .phase
476
475
477
- log .debug (u"Changing phase to text" )
478
476
self .phase = self .phases ["text" ]
479
477
480
478
@@ -530,8 +528,6 @@ def processDoctype(self, token):
530
528
self .parser .parseError ("unexpected-doctype" )
531
529
532
530
def processCharacters (self , token ):
533
- log = logging .getLogger (u"html5lib" )
534
- log .debug (u"Inserting text {}.format(token)" )
535
531
self .tree .insertText (token ["data" ])
536
532
537
533
def processSpaceCharacters (self , token ):
@@ -604,27 +600,20 @@ def processEndTag(self, token):
604
600
605
601
class InJinjaVariablePhase (Phase ):
606
602
def processJinjaVariableStartTag (self , token ):
607
- log = logging .getLogger ('html5lib' )
608
- log .debug (u"InJinjaVariable: Start Tag" )
609
603
self .tree .reconstructActiveFormattingElements ()
610
604
self .tree .insertElement (token )
611
605
612
606
def processJinjaVariableEndTag (self , token ):
613
- log = logging .getLogger ('html5lib' )
614
- log .debug (u"InJinjaVariable: End Tag {}" .format (token ["name" ]))
615
607
for node in self .tree .openElements [::- 1 ]:
616
- log .debug (u"InJinjaVariable: Open tag {} token {}" .format (node , token ))
617
608
if node .name == token ["name" ]:
618
609
self .tree .generateImpliedEndTags (exclude = token ["name" ])
619
- log .debug (u"InJinjaVariable: Implied end tag {} {}" .format (self .tree .openElements [- 1 ].name , token ["name" ]))
620
610
if self .tree .openElements [- 1 ].name != token ["name" ]:
621
611
self .parser .parseError ("unexpected-end-tag" , {"name" : token ["name" ]})
622
612
while self .tree .openElements .pop () != node :
623
613
pass
624
614
break
625
615
else :
626
616
if node .nameTuple in specialElements :
627
- log .debug (u"InJinjaVariable Nametuple {} in {}" .format (node .nameTuple , specialElements ))
628
617
self .parser .parseError ("unexpected-end-tag" , {"name" : token ["name" ]})
629
618
break
630
619
@@ -642,27 +631,51 @@ def processJinjaFilter(self, token):
642
631
643
632
class InJinjaStatementPhase (Phase ):
644
633
def processJinjaStatementStartTag (self , token ):
645
- log = logging .getLogger ('html5lib' )
646
- log .debug (u"InJinjaStatement: Start Tag" )
634
+ if token ['name' ] == 'jinjaelse' :
635
+ self .closeOpenIf (token )
636
+ elif token ['name' ] == 'jinjaelif' :
637
+ self .closeOpenIf (token )
638
+
647
639
self .tree .reconstructActiveFormattingElements ()
648
640
self .tree .insertElement (token )
649
641
642
+ def closeOpenIf (self , token ):
643
+ import logging
644
+ log = logging .getLogger (u"html5lib" )
645
+
646
+ for node in self .tree .openElements [::- 1 ]:
647
+ log .debug (u"Prev {} Cur {}" .format (node .name , token ['name' ]))
648
+
649
+ if node .name == token ["name" ] or (node .name in ["jinjaif" , "jinjaelif" ] and token ["name" ] in ["jinjaelse" , "jinjaelif" ]):
650
+ self .tree .generateImpliedEndTags (exclude = token ["name" ])
651
+
652
+ if self .tree .openElements [- 1 ].name in ["jinjaif" , "jinjaelif" ] and token ["name" ] in ["jinjaelse" , "jinjaelif" ]:
653
+ pass
654
+ elif self .tree .openElements [- 1 ].name != token ["name" ]:
655
+ self .parser .parseError ("unexpected-end-tag" , {"name" : token ["name" ]})
656
+ while self .tree .openElements .pop () != node :
657
+ pass
658
+
659
+ break
660
+ else :
661
+ if node .nameTuple in specialElements :
662
+ self .parser .parseError ("unexpected-end-tag" , {"name" : token ["name" ]})
663
+ break
664
+
650
665
def processJinjaStatementEndTag (self , token ):
651
- log = logging .getLogger ('html5lib' )
652
- log .debug (u"InJinjaStatement: End Tag {}" .format (token ["name" ]))
653
666
for node in self .tree .openElements [::- 1 ]:
654
- log .debug (u"InJinjaStatement: Open tag {} token {}" .format (node , token ))
655
- if node .name == token ["name" ]:
667
+ if node .name == token ["name" ] or (node .name in ["jinjaelse" , "jinjaelif" ] and token ["name" ] == "jinjaif" ):
656
668
self .tree .generateImpliedEndTags (exclude = token ["name" ])
657
- log .debug (u"InJinjaStatement: Implied end tag {} {}" .format (self .tree .openElements [- 1 ].name , token ["name" ]))
658
- if self .tree .openElements [- 1 ].name != token ["name" ]:
669
+
670
+ if self .tree .openElements [- 1 ].name in ["jinjaelse" , "jinjaelif" ] and token ["name" ] == "jinjaif" :
671
+ pass
672
+ elif self .tree .openElements [- 1 ].name != token ["name" ]:
659
673
self .parser .parseError ("unexpected-end-tag" , {"name" : token ["name" ]})
660
674
while self .tree .openElements .pop () != node :
661
675
pass
662
676
break
663
677
else :
664
678
if node .nameTuple in specialElements :
665
- log .debug (u"InJinjaStatement Nametuple {} in {}" .format (node .nameTuple , specialElements ))
666
679
self .parser .parseError ("unexpected-end-tag" , {"name" : token ["name" ]})
667
680
break
668
681
@@ -671,18 +684,7 @@ def processJinjaStatement(self, token):
671
684
self .tree .openElements [- 1 ].appendChild (element )
672
685
673
686
class InJinjaArgumentPhase (Phase ):
674
- def processJinjaArgumentStartTag (self , token ):
675
- log = logging .getLogger ('html5lib' )
676
- log .debug (u"InJinjaArgument: Start Tag" )
677
-
678
- def processJinjaArgumentEndTag (self , token ):
679
- log = logging .getLogger ('html5lib' )
680
- log .debug (u"InJinjaArgument: End Tag {}" .format (token ["name" ]))
681
-
682
687
def processJinjaArgument (self , token ):
683
- log = logging .getLogger ('html5lib' )
684
- log .debug (u"InJinjaArgument: Process Jinja Argument {}" .format (token ["name" ]))
685
-
686
688
element = self .tree .createElementWithoutNamespace (token )
687
689
self .tree .openElements [- 1 ].childNodes [- 1 ].appendChild (element )
688
690
@@ -979,8 +981,6 @@ def startTagOther(self, token):
979
981
def endTagHead (self , token ):
980
982
node = self .parser .tree .openElements .pop ()
981
983
assert node .name == "head" , "Expected head got %s" % node .name
982
- log = logging .getLogger (u"html5lib" )
983
- log .debug (u"Switching phase to afterHead" )
984
984
self .parser .phase = self .parser .phases ["afterHead" ]
985
985
986
986
def endTagHtmlBodyBr (self , token ):
@@ -991,8 +991,6 @@ def endTagOther(self, token):
991
991
self .parser .parseError ("unexpected-end-tag" , {"name" : token ["name" ]})
992
992
993
993
def anythingElse (self ):
994
- log = logging .getLogger (u"html5lib" )
995
- log .debug (u"Implied end head tag" )
996
994
self .endTagHead (impliedTagToken ("head" ))
997
995
998
996
# XXX If we implement a parser for which scripting is disabled we need to
@@ -1063,8 +1061,6 @@ def endTagOther(self, token):
1063
1061
1064
1062
def anythingElse (self ):
1065
1063
self .tree .insertElement (impliedTagToken ("body" , "StartTag" ))
1066
- log = logging .getLogger (u"html5lib" )
1067
- log .debug (u"Changing phase to body" )
1068
1064
self .parser .phase = self .parser .phases ["inBody" ]
1069
1065
self .parser .framesetOK = True
1070
1066
@@ -1196,9 +1192,6 @@ def processSpaceCharactersDropNewline(self, token):
1196
1192
self .tree .insertText (data )
1197
1193
1198
1194
def processCharacters (self , token ):
1199
- import logging
1200
- log = logging .getLogger (u"html5lib" )
1201
- log .debug (u"In Body phase processing Characters {}" .format (token ))
1202
1195
if token ["data" ] == "\u0000 " :
1203
1196
# The tokenizer should always emit null on its own
1204
1197
return
0 commit comments