@@ -40,7 +40,7 @@ def startswithany(str, prefixes):
4040import utils
4141import constants
4242from constants import spaceCharacters , asciiUpper2Lower
43- from constants import scopingElements , formattingElements , specialElements
43+ from constants import formattingElements , specialElements
4444from constants import headingElements , tableInsertModeElements
4545from constants import cdataElements , rcdataElements , voidElements
4646from constants import tokenTypes , ReparseException , namespaces , spaceCharacters
@@ -1015,12 +1015,12 @@ def startTagFrameset(self, token):
10151015 self .parser .phase = self .parser .phases ["inFrameset" ]
10161016
10171017 def startTagCloseP (self , token ):
1018- if self .tree .elementInScope ("p" ):
1018+ if self .tree .elementInScope ("p" , variant = "button" ):
10191019 self .endTagP (impliedTagToken ("p" ))
10201020 self .tree .insertElement (token )
10211021
10221022 def startTagPreListing (self , token ):
1023- if self .tree .elementInScope ("p" ):
1023+ if self .tree .elementInScope ("p" , variant = "button" ):
10241024 self .endTagP (impliedTagToken ("p" ))
10251025 self .tree .insertElement (token )
10261026 self .parser .framesetOK = False
@@ -1030,7 +1030,7 @@ def startTagForm(self, token):
10301030 if self .tree .formPointer :
10311031 self .parser .parseError (u"unexpected-start-tag" , {"name" : "form" })
10321032 else :
1033- if self .tree .elementInScope ("p" ):
1033+ if self .tree .elementInScope ("p" , variant = "button" ):
10341034 self .endTagP (impliedTagToken ("p" ))
10351035 self .tree .insertElement (token )
10361036 self .tree .formPointer = self .tree .openElements [- 1 ]
@@ -1047,24 +1047,24 @@ def startTagListItem(self, token):
10471047 self .parser .phase .processEndTag (
10481048 impliedTagToken (node .name , "EndTag" ))
10491049 break
1050- if (node .nameTuple in ( scopingElements | specialElements ) and
1050+ if (node .nameTuple in specialElements and
10511051 node .name not in ("address" , "div" , "p" )):
10521052 break
10531053
1054- if self .tree .elementInScope ("p" ):
1054+ if self .tree .elementInScope ("p" , variant = "button" ):
10551055 self .parser .phase .processEndTag (
10561056 impliedTagToken ("p" , "EndTag" ))
10571057
10581058 self .tree .insertElement (token )
10591059
10601060 def startTagPlaintext (self , token ):
1061- if self .tree .elementInScope ("p" ):
1061+ if self .tree .elementInScope ("p" , variant = "button" ):
10621062 self .endTagP (impliedTagToken ("p" ))
10631063 self .tree .insertElement (token )
10641064 self .parser .tokenizer .state = self .parser .tokenizer .plaintextState
10651065
10661066 def startTagHeading (self , token ):
1067- if self .tree .elementInScope ("p" ):
1067+ if self .tree .elementInScope ("p" , variant = "button" ):
10681068 self .endTagP (impliedTagToken ("p" ))
10691069 if self .tree .openElements [- 1 ].name in headingElements :
10701070 self .parser .parseError ("unexpected-start-tag" , {"name" : token ["name" ]})
@@ -1116,15 +1116,15 @@ def startTagAppletMarqueeObject(self, token):
11161116 self .parser .framesetOK = False
11171117
11181118 def startTagXmp (self , token ):
1119- if self .tree .elementInScope ("p" ):
1119+ if self .tree .elementInScope ("p" , variant = "button" ):
11201120 self .endTagP (impliedTagToken ("p" ))
11211121 self .tree .reconstructActiveFormattingElements ()
11221122 self .parser .framesetOK = False
11231123 self .parser .parseRCDataRawtext (token , "RAWTEXT" )
11241124
11251125 def startTagTable (self , token ):
11261126 if self .parser .compatMode != "quirks" :
1127- if self .tree .elementInScope ("p" ):
1127+ if self .tree .elementInScope ("p" , variant = "button" ):
11281128 self .processEndTag (impliedTagToken ("p" ))
11291129 self .tree .insertElement (token )
11301130 self .parser .framesetOK = False
@@ -1143,7 +1143,7 @@ def startTagParamSource(self, token):
11431143 token ["selfClosingAcknowledged" ] = True
11441144
11451145 def startTagHr (self , token ):
1146- if self .tree .elementInScope ("p" ):
1146+ if self .tree .elementInScope ("p" , variant = "button" ):
11471147 self .endTagP (impliedTagToken ("p" ))
11481148 self .tree .insertElement (token )
11491149 self .tree .openElements .pop ()
@@ -1402,8 +1402,7 @@ def endTagFormatting(self, token):
14021402 afeIndex = self .tree .openElements .index (formattingElement )
14031403 furthestBlock = None
14041404 for element in self .tree .openElements [afeIndex :]:
1405- if (element .nameTuple in
1406- specialElements | scopingElements ):
1405+ if element .nameTuple in specialElements :
14071406 furthestBlock = element
14081407 break
14091408 # Step 3
@@ -1525,8 +1524,7 @@ def endTagOther(self, token):
15251524 pass
15261525 break
15271526 else :
1528- if (node .nameTuple in
1529- specialElements | scopingElements ):
1527+ if node .nameTuple in specialElements :
15301528 self .parser .parseError ("unexpected-end-tag" , {"name" : token ["name" ]})
15311529 break
15321530
0 commit comments