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 if i := strings.IndexByte(string(m), stop); i != -1 {
47 f = append(f, Field{eat(2), eat(3)})
52 return []Field{{"", string(m)}}
55 func (m ItemMeta) Field(name string) (s string, ok bool) {
56 for _, f := range m.Fields() {
64 func (m *ItemMeta) SetField(name, value string) {
66 for _, f := range m.Fields() {
68 fields = append(fields, f)
71 fields = append(fields, Field{name, value})
72 *m = NewItemMeta(fields)