7 var sanitizer = strings.NewReplacer(
13 func NewItemMeta(fields []Field) ItemMeta {
18 b := new(strings.Builder)
20 for _, f := range fields {
21 sanitizer.WriteString(b, f.Name)
23 sanitizer.WriteString(b, f.Value)
26 return ItemMeta(b.String())
29 func (m ItemMeta) Fields() []Field {
31 if len(m) > 0 && m[0] == 1 {
33 eat := func(stop byte) string {
34 for i := 0; i < len(m); i++ {
48 f = append(f, Field{eat(2), eat(3)})
53 return []Field{{"", string(m)}}
56 func (m ItemMeta) Field(name string) (s string, ok bool) {
57 for _, f := range m.Fields() {
65 func (m *ItemMeta) SetField(name, value string) {
67 for _, f := range m.Fields() {
69 fields = append(fields, f)
72 fields = append(fields, Field{name, value})
73 *m = NewItemMeta(fields)