diff options
Diffstat (limited to 'itemmeta.go')
-rw-r--r-- | itemmeta.go | 27 |
1 files changed, 26 insertions, 1 deletions
diff --git a/itemmeta.go b/itemmeta.go index 563de99..d5d5ff0 100644 --- a/itemmeta.go +++ b/itemmeta.go @@ -1,6 +1,9 @@ package mt -import "strings" +import ( + "encoding/json" + "strings" +) type ItemMeta string @@ -71,3 +74,25 @@ func (m *ItemMeta) SetField(name, value string) { fields = append(fields, Field{name, value}) *m = NewItemMeta(fields) } + +func (m ItemMeta) ToolCaps() (ToolCaps, bool) { + f, ok := m.Field("tool_capabilities") + if !ok { + return ToolCaps{}, false + } + + var tc ToolCaps + if err := json.Unmarshal([]byte(f), &tc); err != nil { + return tc, false + } + return tc, true +} + +func (m *ItemMeta) SetToolCaps(tc ToolCaps) { + b, err := tc.MarshalJSON() + if err != nil { + panic(err) + } + + m.SetField("tool_capabilities", string(b)) +} |