123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- 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),
- }
- }
|