89 lines
1.7 KiB
Go
89 lines
1.7 KiB
Go
|
|
package formatters
|
||
|
|
|
||
|
|
import (
|
||
|
|
"bytes"
|
||
|
|
|
||
|
|
"codeberg.org/danjones000/my-log/config"
|
||
|
|
"codeberg.org/danjones000/my-log/models"
|
||
|
|
"codeberg.org/danjones000/my-log/tools"
|
||
|
|
)
|
||
|
|
|
||
|
|
func newPlain(oo config.Outputs) (Formatter, error) {
|
||
|
|
return &PlainText{}, nil
|
||
|
|
}
|
||
|
|
|
||
|
|
type PlainText struct {
|
||
|
|
// config might go here some day
|
||
|
|
}
|
||
|
|
|
||
|
|
func (pt *PlainText) Name() string {
|
||
|
|
return "plain"
|
||
|
|
}
|
||
|
|
|
||
|
|
func (pt *PlainText) Log(log models.Log) (out []byte, err error) {
|
||
|
|
if len(log.Entries) == 0 {
|
||
|
|
return
|
||
|
|
}
|
||
|
|
|
||
|
|
buff := &bytes.Buffer{}
|
||
|
|
buff.WriteString(log.Name)
|
||
|
|
buff.WriteString("\n#######")
|
||
|
|
written := false
|
||
|
|
for _, e := range log.Entries {
|
||
|
|
bb := pt.entryBuffer(e)
|
||
|
|
if bb.Len() > 0 {
|
||
|
|
buff.WriteByte(10)
|
||
|
|
buff.WriteByte(10)
|
||
|
|
buff.ReadFrom(bb)
|
||
|
|
written = true
|
||
|
|
}
|
||
|
|
}
|
||
|
|
if written {
|
||
|
|
out = buff.Bytes()
|
||
|
|
}
|
||
|
|
return
|
||
|
|
}
|
||
|
|
|
||
|
|
func (pt *PlainText) entryBuffer(entry models.Entry) *bytes.Buffer {
|
||
|
|
buff := &bytes.Buffer{}
|
||
|
|
buff.WriteString("Title: ")
|
||
|
|
buff.WriteString(entry.Title)
|
||
|
|
buff.WriteByte(10)
|
||
|
|
buff.WriteString("Date: ")
|
||
|
|
buff.WriteString(entry.Date.Format(tools.DateFormat))
|
||
|
|
for _, m := range entry.Fields {
|
||
|
|
bb, err := pt.metaBuffer(m)
|
||
|
|
if (bb.Len() > 0) && (err == nil) {
|
||
|
|
buff.WriteByte(10)
|
||
|
|
buff.ReadFrom(bb)
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
return buff
|
||
|
|
}
|
||
|
|
|
||
|
|
func (pt *PlainText) Entry(entry models.Entry) ([]byte, error) {
|
||
|
|
buff := pt.entryBuffer(entry)
|
||
|
|
return buff.Bytes(), nil
|
||
|
|
}
|
||
|
|
|
||
|
|
func (pt *PlainText) metaBuffer(meta models.Meta) (*bytes.Buffer, error) {
|
||
|
|
buff := &bytes.Buffer{}
|
||
|
|
buff.WriteString(meta.Key)
|
||
|
|
buff.WriteString(": ")
|
||
|
|
n, err := tools.WriteValue(buff, meta.Value)
|
||
|
|
if n == 0 || err != nil {
|
||
|
|
return &bytes.Buffer{}, err
|
||
|
|
}
|
||
|
|
return buff, nil
|
||
|
|
}
|
||
|
|
|
||
|
|
func (pt *PlainText) Meta(meta models.Meta) (out []byte, err error) {
|
||
|
|
buff, err := pt.metaBuffer(meta)
|
||
|
|
if err != nil {
|
||
|
|
return
|
||
|
|
}
|
||
|
|
out = buff.Bytes()
|
||
|
|
return
|
||
|
|
}
|