aboutsummaryrefslogtreecommitdiff
path: root/src/pkg
diff options
context:
space:
mode:
authorAndrew Balholm <andybalholm@gmail.com>2011-11-13 23:27:20 +1100
committerNigel Tao <nigeltao@golang.org>2011-11-13 23:27:20 +1100
commit06ef97e15d8952d46118427d4e93b490d0366fa8 (patch)
tree2f1bd197e5d7588cdc66a98371b4120aef358569 /src/pkg
parent631a575fd92b711854930f3b03b40a2bf66bbd29 (diff)
downloadgo-06ef97e15d8952d46118427d4e93b490d0366fa8.tar.xz
html: auto-close <dd> and <dt> elements
Pass tests2.dat, test 8: <!DOCTYPE html><dt><div><dd> | <!DOCTYPE html> | <html> | <head> | <body> | <dt> | <div> | <dd> Also pass tests through test 9: <script></x R=nigeltao CC=golang-dev https://golang.org/cl/5373083
Diffstat (limited to 'src/pkg')
-rw-r--r--src/pkg/html/parse.go18
-rw-r--r--src/pkg/html/parse_test.go2
2 files changed, 19 insertions, 1 deletions
diff --git a/src/pkg/html/parse.go b/src/pkg/html/parse.go
index d6505c6913..e8edcf956f 100644
--- a/src/pkg/html/parse.go
+++ b/src/pkg/html/parse.go
@@ -637,6 +637,24 @@ func inBodyIM(p *parser) bool {
}
p.popUntil(buttonScopeStopTags, "p")
p.addElement(p.tok.Data, p.tok.Attr)
+ case "dd", "dt":
+ p.framesetOK = false
+ for i := len(p.oe) - 1; i >= 0; i-- {
+ node := p.oe[i]
+ switch node.Data {
+ case "dd", "dt":
+ p.oe = p.oe[:i]
+ case "address", "div", "p":
+ continue
+ default:
+ if !isSpecialElement[node.Data] {
+ continue
+ }
+ }
+ break
+ }
+ p.popUntil(buttonScopeStopTags, "p")
+ p.addElement(p.tok.Data, p.tok.Attr)
case "optgroup", "option":
if p.top().Data == "option" {
p.oe.pop()
diff --git a/src/pkg/html/parse_test.go b/src/pkg/html/parse_test.go
index 13c50a99bc..992f73b060 100644
--- a/src/pkg/html/parse_test.go
+++ b/src/pkg/html/parse_test.go
@@ -134,7 +134,7 @@ func TestParser(t *testing.T) {
}{
// TODO(nigeltao): Process all the test cases from all the .dat files.
{"tests1.dat", -1},
- {"tests2.dat", 0},
+ {"tests2.dat", 10},
{"tests3.dat", 0},
}
for _, tf := range testFiles {