package element import ( "git.nspix.com/golang/pgenr/internal/pool" "golang.org/x/net/html/atom" ) type ( Entry struct { Title Element Items map[string]Element Outro Element } ) func (element *Entry) Html() string { return element.String() } func (element *Entry) String() string { br := pool.Get() defer pool.Put(br) br.WriteString(beginTag(atom.Div.String(), Attrs{"class": "grid"})) if element.Title != nil { br.WriteString(element.Title.Html()) } for k, v := range element.Items { br.WriteString(beginTag(atom.Div.String(), Attrs{"class": "row"})) br.WriteString(beginTag(atom.Div.String(), Attrs{"class": "preview-label"})) br.WriteString(k) br.WriteString(endTag(atom.Div.String())) br.WriteString(beginTag(atom.Div.String(), Attrs{"class": "preview-value"})) br.WriteString(v.Html()) br.WriteString(endTag(atom.Div.String())) br.WriteString(endTag(atom.Div.String())) } if element.Outro != nil { br.WriteString(element.Outro.Html()) } br.WriteString(endTag(atom.Div.String())) return br.String() } func (element *Entry) AddItem(label string, txt *Text) *Entry { if element.Items == nil { element.Items = make(map[string]Element) } element.Items[label] = txt return element } func NewEntry(element Element) *Entry { return &Entry{ Title: element, Items: make(map[string]Element), } }