Allow custom function comments in specs
This commit is contained in:
parent
e6b8f04dcf
commit
f80148fdf6
@ -1,5 +1,12 @@
|
|||||||
# Changelog
|
# Changelog
|
||||||
|
|
||||||
|
## Unversioned
|
||||||
|
|
||||||
|
### Changed
|
||||||
|
|
||||||
|
- Element and attribute specs can define custom function doc comments.
|
||||||
|
- element.A and attribute.Accept specs have comments.
|
||||||
|
|
||||||
## [0.0.3] - 2019-05-11
|
## [0.0.3] - 2019-05-11
|
||||||
|
|
||||||
### Added
|
### Added
|
||||||
|
@ -6,7 +6,7 @@ package attribute
|
|||||||
import "gitlab.codemonkeysoftware.net/b/hatmill"
|
import "gitlab.codemonkeysoftware.net/b/hatmill"
|
||||||
import "strconv"
|
import "strconv"
|
||||||
|
|
||||||
// Accept creates a "accept" attribute
|
// 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{
|
return hatmill.Attrib{
|
||||||
Key: "accept",
|
Key: "accept",
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"attributes": [
|
"attributes": [
|
||||||
{"name": "accept", "type": "string"},
|
{"name": "accept", "type": "string", "comment": "Accept sets the content types or file types allowed in a form or file input."},
|
||||||
{"name": "accept-charset", "type": "string"},
|
{"name": "accept-charset", "type": "string"},
|
||||||
{"name": "action", "type": "string"},
|
{"name": "action", "type": "string"},
|
||||||
{"name": "alt", "type": "string"},
|
{"name": "alt", "type": "string"},
|
||||||
@ -98,7 +98,7 @@
|
|||||||
{"name": "wrap", "type": "string"}
|
{"name": "wrap", "type": "string"}
|
||||||
],
|
],
|
||||||
"elements": [
|
"elements": [
|
||||||
{"name": "a"},
|
{"name": "a", "comment": "A creates a hyperlink."},
|
||||||
{"name": "abbr"},
|
{"name": "abbr"},
|
||||||
{"name": "address"},
|
{"name": "address"},
|
||||||
{"name": "area", "void": true},
|
{"name": "area", "void": true},
|
||||||
|
@ -5,7 +5,7 @@ package element
|
|||||||
|
|
||||||
import "gitlab.codemonkeysoftware.net/b/hatmill"
|
import "gitlab.codemonkeysoftware.net/b/hatmill"
|
||||||
|
|
||||||
// A creates a <a> element.
|
// A creates a hyperlink.
|
||||||
func A(attribs ...hatmill.Attrib) func(children ...hatmill.Term) hatmill.ParentElement {
|
func A(attribs ...hatmill.Attrib) func(children ...hatmill.Term) hatmill.ParentElement {
|
||||||
return func(children ...hatmill.Term) hatmill.ParentElement {
|
return func(children ...hatmill.Term) hatmill.ParentElement {
|
||||||
return hatmill.ParentElement{
|
return hatmill.ParentElement{
|
||||||
|
@ -19,6 +19,10 @@ func identifier(s string) string {
|
|||||||
return strings.Join(words, "")
|
return strings.Join(words, "")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func formatComment(s string) string {
|
||||||
|
return "// " + strings.TrimSpace(s) + "\n"
|
||||||
|
}
|
||||||
|
|
||||||
type AttribTypeInfo struct {
|
type AttribTypeInfo struct {
|
||||||
Template string
|
Template string
|
||||||
Imports []string
|
Imports []string
|
||||||
@ -72,15 +76,21 @@ type Spec interface {
|
|||||||
type AttribSpec struct {
|
type AttribSpec struct {
|
||||||
Name string `json:"name"`
|
Name string `json:"name"`
|
||||||
Type string `json:"type"`
|
Type string `json:"type"`
|
||||||
|
Comment string `json:"comment"`
|
||||||
}
|
}
|
||||||
|
|
||||||
func (spec AttribSpec) Generate() Def {
|
func (spec AttribSpec) Generate() Def {
|
||||||
name := spec.Name
|
name := spec.Name
|
||||||
ident := identifier(spec.Name)
|
ident := identifier(spec.Name)
|
||||||
comment := fmt.Sprintf("// %s creates a \"%s\" attribute\n", ident, name)
|
var comment string
|
||||||
|
if spec.Comment != "" {
|
||||||
|
comment = spec.Comment
|
||||||
|
} else {
|
||||||
|
comment = fmt.Sprintf("%s creates a \"%s\" attribute", ident, name)
|
||||||
|
}
|
||||||
template := attribTypes[spec.Type].Template
|
template := attribTypes[spec.Type].Template
|
||||||
return Def{
|
return Def{
|
||||||
Source: comment + fmt.Sprintf(template, ident, name),
|
Source: formatComment(comment) + fmt.Sprintf(template, ident, name),
|
||||||
Imports: attribTypes[spec.Type].Imports,
|
Imports: attribTypes[spec.Type].Imports,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -88,6 +98,7 @@ func (spec AttribSpec) Generate() Def {
|
|||||||
type ElemSpec struct {
|
type ElemSpec struct {
|
||||||
Name string `json:"name"`
|
Name string `json:"name"`
|
||||||
Void bool `json:"void"`
|
Void bool `json:"void"`
|
||||||
|
Comment string `json:"comment"`
|
||||||
}
|
}
|
||||||
|
|
||||||
func (spec ElemSpec) Generate() Def {
|
func (spec ElemSpec) Generate() Def {
|
||||||
@ -115,13 +126,18 @@ func (spec ElemSpec) Generate() Def {
|
|||||||
|
|
||||||
name := spec.Name
|
name := spec.Name
|
||||||
ident := identifier(spec.Name)
|
ident := identifier(spec.Name)
|
||||||
comment := fmt.Sprintf("// %s creates a <%s> element.\n", ident, name)
|
var comment string
|
||||||
|
if spec.Comment != "" {
|
||||||
|
comment = spec.Comment
|
||||||
|
} else {
|
||||||
|
comment = fmt.Sprintf("%s creates a <%s> element.", ident, name)
|
||||||
|
}
|
||||||
template := parentTemplate
|
template := parentTemplate
|
||||||
if spec.Void {
|
if spec.Void {
|
||||||
template = voidTemplate
|
template = voidTemplate
|
||||||
}
|
}
|
||||||
return Def{
|
return Def{
|
||||||
Source: comment + fmt.Sprintf(template, ident, name),
|
Source: formatComment(comment) + fmt.Sprintf(template, ident, name),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user