Added comma-delimited string attrib type

This commit is contained in:
Brandon Dyck 2019-05-29 22:26:36 -06:00
parent 6f42553a9b
commit 4aacd6e722
5 changed files with 33 additions and 16 deletions

View File

@ -10,8 +10,8 @@
### Changed
- Formatted code identifiers in Changelog
- Attributes `accept-charset`, `class`, `for`, `headers`, `ping`, `rel`, and
`sandbox` have variadic string parameters.
- Attributes `accept`, `accept-charset`, `class`, `for`, `headers`, `ping`,
`rel`, `srcset`, and `sandbox` have variadic string parameters.
## [0.0.4] - 2019-05-27

View File

@ -8,10 +8,10 @@ import "strings"
import "strconv"
// Accept sets the content types or file types allowed in a form or file input.
func Accept(value string) hatmill.Attrib {
func Accept(value ...string) hatmill.Attrib {
return hatmill.Attrib{
Key: "accept",
Value: value,
Value: strings.Join(value, ","),
}
}
@ -677,10 +677,10 @@ func Srclang(value string) hatmill.Attrib {
}
// Srcset creates a "srcset" attribute
func Srcset(value string) hatmill.Attrib {
func Srcset(value ...string) hatmill.Attrib {
return hatmill.Attrib{
Key: "srcset",
Value: value,
Value: strings.Join(value, ","),
}
}

View File

@ -23,6 +23,15 @@ func TestSpaceList(t *testing.T) {
})
}
func TestCommaList(t *testing.T) {
t.Run("empty", func(t *testing.T) {
testAttribValue(t, attribute.Class(), "")
})
t.Run("nonempty", func(t *testing.T) {
testAttribValue(t, attribute.Accept("alpha", "bravo", "charlie"), "alpha,bravo,charlie")
})
}
func TestString(t *testing.T) {
const s = "abcdefg"
testAttribValue(t, attribute.Id(s), s)

View File

@ -1,6 +1,6 @@
{
"attributes": [
{"name": "accept", "type": "string", "comment": "Accept sets the content types or file types allowed in a form or file input."},
{"name": "accept", "type": "comma list", "comment": "Accept sets the content types or file types allowed in a form or file input."},
{"name": "accept-charset", "type": "space list"},
{"name": "action", "type": "string"},
{"name": "alt", "type": "string"},
@ -86,7 +86,7 @@
{"name": "src", "type": "string"},
{"name": "srcdoc", "type": "string"},
{"name": "srclang", "type": "string"},
{"name": "srcset", "type": "string"},
{"name": "srcset", "type": "comma list"},
{"name": "start", "type": "string"},
{"name": "style", "type": "string"},
{"name": "tabindex", "type": "int"},

View File

@ -39,6 +39,16 @@ func simpleTemplate(paramType, convertExpr string) string {
`, paramType, conversion)
}
func listTemplate(separator string) string {
return fmt.Sprintf(`func %%s(value ...string) hatmill.Attrib {
return hatmill.Attrib{
Key: "%%s",
Value: strings.Join(value, "%s"),
}
}
`, separator)
}
var attribTypes = map[string]AttribTypeInfo{
"string": {Template: simpleTemplate("string", "%s")},
"bool": {
@ -62,13 +72,11 @@ var attribTypes = map[string]AttribTypeInfo{
Imports: []string{"strconv"},
},
"space list": {
Template: `func %s(value ...string) hatmill.Attrib {
return hatmill.Attrib{
Key: "%s",
Value: strings.Join(value, " "),
}
}
`,
Template: listTemplate(" "),
Imports: []string{"strings"},
},
"comma list": {
Template: listTemplate(","),
Imports: []string{"strings"},
},
}