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 }