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