@@ -40,7 +40,7 @@ def startswithany(str, prefixes):
40
40
import utils
41
41
import constants
42
42
from constants import spaceCharacters , asciiUpper2Lower
43
- from constants import scopingElements , formattingElements , specialElements
43
+ from constants import formattingElements , specialElements
44
44
from constants import headingElements , tableInsertModeElements
45
45
from constants import cdataElements , rcdataElements , voidElements
46
46
from constants import tokenTypes , ReparseException , namespaces , spaceCharacters
@@ -1015,12 +1015,12 @@ def startTagFrameset(self, token):
1015
1015
self .parser .phase = self .parser .phases ["inFrameset" ]
1016
1016
1017
1017
def startTagCloseP (self , token ):
1018
- if self .tree .elementInScope ("p" ):
1018
+ if self .tree .elementInScope ("p" , variant = "button" ):
1019
1019
self .endTagP (impliedTagToken ("p" ))
1020
1020
self .tree .insertElement (token )
1021
1021
1022
1022
def startTagPreListing (self , token ):
1023
- if self .tree .elementInScope ("p" ):
1023
+ if self .tree .elementInScope ("p" , variant = "button" ):
1024
1024
self .endTagP (impliedTagToken ("p" ))
1025
1025
self .tree .insertElement (token )
1026
1026
self .parser .framesetOK = False
@@ -1030,7 +1030,7 @@ def startTagForm(self, token):
1030
1030
if self .tree .formPointer :
1031
1031
self .parser .parseError (u"unexpected-start-tag" , {"name" : "form" })
1032
1032
else :
1033
- if self .tree .elementInScope ("p" ):
1033
+ if self .tree .elementInScope ("p" , variant = "button" ):
1034
1034
self .endTagP (impliedTagToken ("p" ))
1035
1035
self .tree .insertElement (token )
1036
1036
self .tree .formPointer = self .tree .openElements [- 1 ]
@@ -1047,24 +1047,24 @@ def startTagListItem(self, token):
1047
1047
self .parser .phase .processEndTag (
1048
1048
impliedTagToken (node .name , "EndTag" ))
1049
1049
break
1050
- if (node .nameTuple in ( scopingElements | specialElements ) and
1050
+ if (node .nameTuple in specialElements and
1051
1051
node .name not in ("address" , "div" , "p" )):
1052
1052
break
1053
1053
1054
- if self .tree .elementInScope ("p" ):
1054
+ if self .tree .elementInScope ("p" , variant = "button" ):
1055
1055
self .parser .phase .processEndTag (
1056
1056
impliedTagToken ("p" , "EndTag" ))
1057
1057
1058
1058
self .tree .insertElement (token )
1059
1059
1060
1060
def startTagPlaintext (self , token ):
1061
- if self .tree .elementInScope ("p" ):
1061
+ if self .tree .elementInScope ("p" , variant = "button" ):
1062
1062
self .endTagP (impliedTagToken ("p" ))
1063
1063
self .tree .insertElement (token )
1064
1064
self .parser .tokenizer .state = self .parser .tokenizer .plaintextState
1065
1065
1066
1066
def startTagHeading (self , token ):
1067
- if self .tree .elementInScope ("p" ):
1067
+ if self .tree .elementInScope ("p" , variant = "button" ):
1068
1068
self .endTagP (impliedTagToken ("p" ))
1069
1069
if self .tree .openElements [- 1 ].name in headingElements :
1070
1070
self .parser .parseError ("unexpected-start-tag" , {"name" : token ["name" ]})
@@ -1116,15 +1116,15 @@ def startTagAppletMarqueeObject(self, token):
1116
1116
self .parser .framesetOK = False
1117
1117
1118
1118
def startTagXmp (self , token ):
1119
- if self .tree .elementInScope ("p" ):
1119
+ if self .tree .elementInScope ("p" , variant = "button" ):
1120
1120
self .endTagP (impliedTagToken ("p" ))
1121
1121
self .tree .reconstructActiveFormattingElements ()
1122
1122
self .parser .framesetOK = False
1123
1123
self .parser .parseRCDataRawtext (token , "RAWTEXT" )
1124
1124
1125
1125
def startTagTable (self , token ):
1126
1126
if self .parser .compatMode != "quirks" :
1127
- if self .tree .elementInScope ("p" ):
1127
+ if self .tree .elementInScope ("p" , variant = "button" ):
1128
1128
self .processEndTag (impliedTagToken ("p" ))
1129
1129
self .tree .insertElement (token )
1130
1130
self .parser .framesetOK = False
@@ -1143,7 +1143,7 @@ def startTagParamSource(self, token):
1143
1143
token ["selfClosingAcknowledged" ] = True
1144
1144
1145
1145
def startTagHr (self , token ):
1146
- if self .tree .elementInScope ("p" ):
1146
+ if self .tree .elementInScope ("p" , variant = "button" ):
1147
1147
self .endTagP (impliedTagToken ("p" ))
1148
1148
self .tree .insertElement (token )
1149
1149
self .tree .openElements .pop ()
@@ -1402,8 +1402,7 @@ def endTagFormatting(self, token):
1402
1402
afeIndex = self .tree .openElements .index (formattingElement )
1403
1403
furthestBlock = None
1404
1404
for element in self .tree .openElements [afeIndex :]:
1405
- if (element .nameTuple in
1406
- specialElements | scopingElements ):
1405
+ if element .nameTuple in specialElements :
1407
1406
furthestBlock = element
1408
1407
break
1409
1408
# Step 3
@@ -1525,8 +1524,7 @@ def endTagOther(self, token):
1525
1524
pass
1526
1525
break
1527
1526
else :
1528
- if (node .nameTuple in
1529
- specialElements | scopingElements ):
1527
+ if node .nameTuple in specialElements :
1530
1528
self .parser .parseError ("unexpected-end-tag" , {"name" : token ["name" ]})
1531
1529
break
1532
1530
0 commit comments