diff options
| author | Andrew Balholm <andybalholm@gmail.com> | 2011-11-17 13:12:13 +1100 |
|---|---|---|
| committer | Nigel Tao <nigeltao@golang.org> | 2011-11-17 13:12:13 +1100 |
| commit | a1dbfa6f09d2463f421eaa91ee06e15848df7ba0 (patch) | |
| tree | 44f1142ecb8342838375fe7d192ec1d739696f2c /src | |
| parent | 0b1bcf8f94620b34396b3549ea959646e830c7c8 (diff) | |
| download | go-a1dbfa6f09d2463f421eaa91ee06e15848df7ba0.tar.xz | |
html: parse <isindex>
Pass tests2.dat, test 42:
<isindex test=x name=x>
| <html>
| <head>
| <body>
| <form>
| <hr>
| <label>
| "This is a searchable index. Enter search keywords: "
| <input>
| name="isindex"
| test="x"
| <hr>
R=nigeltao
CC=golang-dev
https://golang.org/cl/5399049
Diffstat (limited to 'src')
| -rw-r--r-- | src/pkg/html/parse.go | 38 | ||||
| -rw-r--r-- | src/pkg/html/parse_test.go | 2 |
2 files changed, 39 insertions, 1 deletions
diff --git a/src/pkg/html/parse.go b/src/pkg/html/parse.go index 58b754ef3d..9b7e934ac3 100644 --- a/src/pkg/html/parse.go +++ b/src/pkg/html/parse.go @@ -683,6 +683,44 @@ func inBodyIM(p *parser) bool { case "image": p.tok.Data = "img" return false + case "isindex": + if p.form != nil { + // Ignore the token. + return true + } + action := "" + prompt := "This is a searchable index. Enter search keywords: " + attr := []Attribute{{Key: "name", Val: "isindex"}} + for _, a := range p.tok.Attr { + switch a.Key { + case "action": + action = a.Val + case "name": + // Ignore the attribute. + case "prompt": + prompt = a.Val + default: + attr = append(attr, a) + } + } + p.acknowledgeSelfClosingTag() + p.popUntil(buttonScopeStopTags, "p") + p.addElement("form", nil) + p.form = p.top() + if action != "" { + p.form.Attr = []Attribute{{Key: "action", Val: action}} + } + p.addElement("hr", nil) + p.oe.pop() + p.addElement("label", nil) + p.addText(prompt) + p.addElement("input", attr) + p.oe.pop() + p.oe.pop() + p.addElement("hr", nil) + p.oe.pop() + p.oe.pop() + p.form = nil case "caption", "col", "colgroup", "frame", "head", "tbody", "td", "tfoot", "th", "thead", "tr": // Ignore the token. default: diff --git a/src/pkg/html/parse_test.go b/src/pkg/html/parse_test.go index 07e84907cf..4f15ae1d55 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", 42}, + {"tests2.dat", 43}, {"tests3.dat", 0}, } for _, tf := range testFiles { |
