aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAndrew Balholm <andybalholm@gmail.com>2011-11-17 13:12:13 +1100
committerNigel Tao <nigeltao@golang.org>2011-11-17 13:12:13 +1100
commita1dbfa6f09d2463f421eaa91ee06e15848df7ba0 (patch)
tree44f1142ecb8342838375fe7d192ec1d739696f2c /src
parent0b1bcf8f94620b34396b3549ea959646e830c7c8 (diff)
downloadgo-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.go38
-rw-r--r--src/pkg/html/parse_test.go2
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 {