diff options
| author | Andrew Balholm <andybalholm@gmail.com> | 2011-11-13 23:27:20 +1100 |
|---|---|---|
| committer | Nigel Tao <nigeltao@golang.org> | 2011-11-13 23:27:20 +1100 |
| commit | 06ef97e15d8952d46118427d4e93b490d0366fa8 (patch) | |
| tree | 2f1bd197e5d7588cdc66a98371b4120aef358569 /src/pkg | |
| parent | 631a575fd92b711854930f3b03b40a2bf66bbd29 (diff) | |
| download | go-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.go | 18 | ||||
| -rw-r--r-- | src/pkg/html/parse_test.go | 2 |
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 { |
