@@ -716,7 +716,7 @@ def __init__(self, parser, tree):
716716 ("title" , self .startTagTitle ),
717717 (("noscript" , "noframes" , "style" ), self .startTagNoScriptNoFramesStyle ),
718718 ("script" , self .startTagScript ),
719- (("base" , "link " , "command" ),
719+ (("base" , "basefont " , "bgsound" , " command" , "link " ),
720720 self .startTagBaseLinkCommand ),
721721 ("meta" , self .startTagMeta ),
722722 ("head" , self .startTagHead )
@@ -814,7 +814,8 @@ def __init__(self, parser, tree):
814814 ("html" , self .startTagHtml ),
815815 ("body" , self .startTagBody ),
816816 ("frameset" , self .startTagFrameset ),
817- (("base" , "link" , "meta" , "noframes" , "script" , "style" , "title" ),
817+ (("base" , "basefont" , "bgsound" , "link" , "meta" , "noframes" , "script" ,
818+ "style" , "title" ),
818819 self .startTagFromHead ),
819820 ("head" , self .startTagHead )
820821 ])
@@ -884,20 +885,21 @@ def __init__(self, parser, tree):
884885
885886 self .startTagHandler = utils .MethodDispatcher ([
886887 ("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 ),
889891 ("body" , self .startTagBody ),
890892 ("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" ,
893895 "footer" , "header" , "hgroup" , "menu" , "nav" , "ol" , "p" ,
894- "section" , "ul" ),
896+ "section" , "summary" , " ul" ),
895897 self .startTagCloseP ),
898+ (headingElements , self .startTagHeading ),
896899 (("pre" , "listing" ), self .startTagPreListing ),
897900 ("form" , self .startTagForm ),
898901 (("li" , "dd" , "dt" ), self .startTagListItem ),
899902 ("plaintext" ,self .startTagPlaintext ),
900- (headingElements , self .startTagHeading ),
901903 ("a" , self .startTagA ),
902904 (("b" , "big" , "code" , "em" , "font" , "i" , "s" , "small" , "strike" ,
903905 "strong" , "tt" , "u" ),self .startTagFormatting ),
@@ -906,8 +908,8 @@ def __init__(self, parser, tree):
906908 (("applet" , "marquee" , "object" ), self .startTagAppletMarqueeObject ),
907909 ("xmp" , self .startTagXmp ),
908910 ("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 ),
911913 (("param" , "source" ), self .startTagParamSource ),
912914 ("hr" , self .startTagHr ),
913915 ("image" , self .startTagImage ),
@@ -929,10 +931,10 @@ def __init__(self, parser, tree):
929931 self .endTagHandler = utils .MethodDispatcher ([
930932 ("body" ,self .endTagBody ),
931933 ("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" ,
934936 "footer" , "header" , "hgroup" , "listing" , "menu" , "nav" , "ol" , "pre" ,
935- "section" , "ul" ), self .endTagBlock ),
937+ "section" , "summary" , " ul" ), self .endTagBlock ),
936938 ("form" , self .endTagForm ),
937939 ("p" ,self .endTagP ),
938940 (("dd" , "dt" , "li" ), self .endTagListItem ),
@@ -1277,7 +1279,7 @@ def startTagOther(self, token):
12771279 self .tree .insertElement (token )
12781280
12791281 def endTagP (self , token ):
1280- if not self .tree .elementInScope ("p" ):
1282+ if not self .tree .elementInScope ("p" , variant = "button" ):
12811283 self .startTagCloseP (impliedTagToken ("p" , "StartTag" ))
12821284 self .parser .parseError ("unexpected-end-tag" , {"name" : "p" })
12831285 self .endTagP (impliedTagToken ("p" , "EndTag" ))
@@ -2358,7 +2360,11 @@ def processCharacters(self, token):
23582360 Phase .processCharacters (self , token )
23592361
23602362 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 ()
23622368
23632369 def processStartTag (self , token ):
23642370 currentNode = self .tree .openElements [- 1 ]
@@ -2410,9 +2416,7 @@ def processEndTag(self, token):
24102416
24112417 while True :
24122418 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 :
24162420 assert self .tree .openElements
24172421 break
24182422 nodeIndex -= 1
0 commit comments