1
0
mirror of https://github.com/golang/go synced 2024-11-20 00:34:43 -07:00

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
This commit is contained in:
Andrew Balholm 2011-11-17 13:12:13 +11:00 committed by Nigel Tao
parent 0b1bcf8f94
commit a1dbfa6f09
2 changed files with 39 additions and 1 deletions

View File

@ -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:

View File

@ -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 {