1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- package element
- import (
- "git.nspix.com/golang/pgenr/internal/pool"
- "golang.org/x/net/html/atom"
- )
- type (
- entryItem struct {
- Label Element
- Content Element
- }
- Entry struct {
- Title Element
- Items []entryItem
- 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 _, 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(v.Label.Html())
- br.WriteString(endTag(atom.Div.String()))
- br.WriteString(beginTag(atom.Div.String(), Attrs{"class": "preview-value"}))
- br.WriteString(v.Content.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) PushItem(label Element, content Element) *Entry {
- if element.Items == nil {
- element.Items = make([]entryItem, 0)
- }
- element.Items = append(element.Items, entryItem{
- Label: label,
- Content: content,
- })
- return element
- }
- func (element *Entry) AddItem(label string, e Element) *Entry {
- return element.PushItem(NewText(label), e)
- }
- func NewEntry(element Element) *Entry {
- return &Entry{
- Title: element,
- Items: make([]entryItem, 0),
- }
- }
|