package element
import (
"golang.org/x/net/html/atom"
"html"
)
type (
TagOption func(t *element)
element struct {
Name atom.Atom
Attr Attrs
Content string
}
)
func WithTagAttribute(label string, value string) TagOption {
return func(t *element) {
if t.Attr == nil {
t.Attr = make(map[string]string)
}
t.Attr[label] = value
}
}
func (tag *element) Html() string {
return tag.String()
}
func (tag *element) String() string {
return renderTag(tag.Name.String(), tag.Attr, html.EscapeString(tag.Content))
}
func NewElement(atom atom.Atom, content string, opts ...TagOption) *element {
e := &element{Name: atom, Content: content}
for _, cb := range opts {
cb(e)
}
return e
}