@@ -716,7 +716,7 @@ def __init__(self, parser, tree):
716
716
("title" , self .startTagTitle ),
717
717
(("noscript" , "noframes" , "style" ), self .startTagNoScriptNoFramesStyle ),
718
718
("script" , self .startTagScript ),
719
- (("base" , "link " , "command" ),
719
+ (("base" , "basefont " , "bgsound" , " command" , "link " ),
720
720
self .startTagBaseLinkCommand ),
721
721
("meta" , self .startTagMeta ),
722
722
("head" , self .startTagHead )
@@ -814,7 +814,8 @@ def __init__(self, parser, tree):
814
814
("html" , self .startTagHtml ),
815
815
("body" , self .startTagBody ),
816
816
("frameset" , self .startTagFrameset ),
817
- (("base" , "link" , "meta" , "noframes" , "script" , "style" , "title" ),
817
+ (("base" , "basefont" , "bgsound" , "link" , "meta" , "noframes" , "script" ,
818
+ "style" , "title" ),
818
819
self .startTagFromHead ),
819
820
("head" , self .startTagHead )
820
821
])
@@ -884,20 +885,21 @@ def __init__(self, parser, tree):
884
885
885
886
self .startTagHandler = utils .MethodDispatcher ([
886
887
("html" , self .startTagHtml ),
887
- (("base" , "command" , "link" , "meta" , "noframes" , "script" , "style" ,
888
- "title" ), self .startTagProcessInHead ),
888
+ (("base" , "basefont" , "bgsound" , "command" , "link" , "meta" ,
889
+ "noframes" , "script" , "style" , "title" ),
890
+ self .startTagProcessInHead ),
889
891
("body" , self .startTagBody ),
890
892
("frameset" , self .startTagFrameset ),
891
- (("address" , "article" , "aside" , "blockquote" , "center" , "datagrid " ,
892
- "details" , "dir" , "div" , "dl" , "fieldset" , "figure" ,
893
+ (("address" , "article" , "aside" , "blockquote" , "center" , "details " ,
894
+ "details" , "dir" , "div" , "dl" , "fieldset" , "figcaption" , " figure" ,
893
895
"footer" , "header" , "hgroup" , "menu" , "nav" , "ol" , "p" ,
894
- "section" , "ul" ),
896
+ "section" , "summary" , " ul" ),
895
897
self .startTagCloseP ),
898
+ (headingElements , self .startTagHeading ),
896
899
(("pre" , "listing" ), self .startTagPreListing ),
897
900
("form" , self .startTagForm ),
898
901
(("li" , "dd" , "dt" ), self .startTagListItem ),
899
902
("plaintext" ,self .startTagPlaintext ),
900
- (headingElements , self .startTagHeading ),
901
903
("a" , self .startTagA ),
902
904
(("b" , "big" , "code" , "em" , "font" , "i" , "s" , "small" , "strike" ,
903
905
"strong" , "tt" , "u" ),self .startTagFormatting ),
@@ -906,8 +908,8 @@ def __init__(self, parser, tree):
906
908
(("applet" , "marquee" , "object" ), self .startTagAppletMarqueeObject ),
907
909
("xmp" , self .startTagXmp ),
908
910
("table" , self .startTagTable ),
909
- (("area" , "basefont " , "bgsound " , "br " , "embed " , "img " , "input" ,
910
- "keygen" , "spacer" , " wbr" ), self .startTagVoidFormatting ),
911
+ (("area" , "br " , "embed " , "img " , "input " , "keygen " , "spacer" ,
912
+ "wbr" ), self .startTagVoidFormatting ),
911
913
(("param" , "source" ), self .startTagParamSource ),
912
914
("hr" , self .startTagHr ),
913
915
("image" , self .startTagImage ),
@@ -929,10 +931,10 @@ def __init__(self, parser, tree):
929
931
self .endTagHandler = utils .MethodDispatcher ([
930
932
("body" ,self .endTagBody ),
931
933
("html" ,self .endTagHtml ),
932
- (("address" , "article" , "aside" , "blockquote" , "center" , "datagrid" ,
933
- "details" , "dir" , "div" , "dl" , "fieldset" , "figure" ,
934
+ (("address" , "article" , "aside" , "blockquote" , "center" ,
935
+ "details" , "dir" , "div" , "dl" , "fieldset" , "figcaption" , " figure" ,
934
936
"footer" , "header" , "hgroup" , "listing" , "menu" , "nav" , "ol" , "pre" ,
935
- "section" , "ul" ), self .endTagBlock ),
937
+ "section" , "summary" , " ul" ), self .endTagBlock ),
936
938
("form" , self .endTagForm ),
937
939
("p" ,self .endTagP ),
938
940
(("dd" , "dt" , "li" ), self .endTagListItem ),
@@ -1277,7 +1279,7 @@ def startTagOther(self, token):
1277
1279
self .tree .insertElement (token )
1278
1280
1279
1281
def endTagP (self , token ):
1280
- if not self .tree .elementInScope ("p" ):
1282
+ if not self .tree .elementInScope ("p" , variant = "button" ):
1281
1283
self .startTagCloseP (impliedTagToken ("p" , "StartTag" ))
1282
1284
self .parser .parseError ("unexpected-end-tag" , {"name" : "p" })
1283
1285
self .endTagP (impliedTagToken ("p" , "EndTag" ))
@@ -2358,7 +2360,11 @@ def processCharacters(self, token):
2358
2360
Phase .processCharacters (self , token )
2359
2361
2360
2362
def processEOF (self ):
2361
- pass
2363
+ self .parser .parseError ("eof-in-foreign-lands" )
2364
+ #while self.tree.openElements.pop().name not in ("svg", "math"):
2365
+ # pass
2366
+ self .parser .phase = self .parser .secondaryPhase
2367
+ self .parser .phase .processEOF ()
2362
2368
2363
2369
def processStartTag (self , token ):
2364
2370
currentNode = self .tree .openElements [- 1 ]
@@ -2410,9 +2416,7 @@ def processEndTag(self, token):
2410
2416
2411
2417
while True :
2412
2418
if node .name == token ["name" ]:
2413
- popped = self .tree .openElements .pop ()
2414
- while popped != node :
2415
- popped = self .tree .openElements .pop ()
2419
+ while self .tree .openElements .pop () != node :
2416
2420
assert self .tree .openElements
2417
2421
break
2418
2422
nodeIndex -= 1
0 commit comments