Commit 820523d0 authored by Andrew Balholm's avatar Andrew Balholm Committed by Nigel Tao

html: correctly parse </html> in <head> element.

Pass tests1.dat, test 92:
<head></html><meta><p>

| <html>
|   <head>
|   <body>
|     <meta>
|     <p>

Also pass tests through test 98:
<p><b><div><marquee></p></b></div>

R=nigeltao
CC=golang-dev
https://golang.org/cl/5359054
parent 929070ee
...@@ -470,10 +470,15 @@ func inHeadIM(p *parser) (insertionMode, bool) { ...@@ -470,10 +470,15 @@ func inHeadIM(p *parser) (insertionMode, bool) {
implied = true implied = true
} }
case EndTagToken: case EndTagToken:
if p.tok.Data == "head" { switch p.tok.Data {
case "head":
pop = true pop = true
case "body", "html", "br":
implied = true
default:
// Ignore the token.
return inHeadIM, true
} }
// TODO.
case CommentToken: case CommentToken:
p.addChild(&Node{ p.addChild(&Node{
Type: CommentNode, Type: CommentNode,
...@@ -524,7 +529,14 @@ func afterHeadIM(p *parser) (insertionMode, bool) { ...@@ -524,7 +529,14 @@ func afterHeadIM(p *parser) (insertionMode, bool) {
framesetOK = true framesetOK = true
} }
case EndTagToken: case EndTagToken:
// TODO. switch p.tok.Data {
case "body", "html", "br":
implied = true
framesetOK = true
default:
// Ignore the token.
return afterHeadIM, true
}
case CommentToken: case CommentToken:
p.addChild(&Node{ p.addChild(&Node{
Type: CommentNode, Type: CommentNode,
......
...@@ -133,7 +133,7 @@ func TestParser(t *testing.T) { ...@@ -133,7 +133,7 @@ func TestParser(t *testing.T) {
n int n int
}{ }{
// TODO(nigeltao): Process all the test cases from all the .dat files. // TODO(nigeltao): Process all the test cases from all the .dat files.
{"tests1.dat", 92}, {"tests1.dat", 99},
{"tests2.dat", 0}, {"tests2.dat", 0},
{"tests3.dat", 0}, {"tests3.dat", 0},
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment