diff options
Diffstat (limited to 'model/objectNode.go')
-rw-r--r-- | model/objectNode.go | 63 |
1 files changed, 0 insertions, 63 deletions
diff --git a/model/objectNode.go b/model/objectNode.go deleted file mode 100644 index 989fd9e..0000000 --- a/model/objectNode.go +++ /dev/null @@ -1,63 +0,0 @@ -package model - -import ( - "bytes" - "fmt" -) - -type ObjectNode struct { - Value NodeObjectValue - Meta map[string]any -} - -func (n ObjectNode) Type() NodeType { - return ObjectType -} - -func (n *ObjectNode) MarshalJSON() ([]byte, error) { - result := make([][]byte, 0, len(n.Value)) - for k, v := range n.Value { - b, err := v.MarshalJSON() - if err != nil { - return nil, err - } - result = append(result, []byte(fmt.Sprintf("\"%s\": %s", k, b))) - } - return bytes.Join( - [][]byte{ - []byte("{"), - bytes.Join(result, []byte(", ")), - []byte("}"), - }, []byte("")), nil -} - -func (n *ObjectNode) Get(k string) (Node, error) { - child, ok := n.Value[k] - if !ok { - return nil, fmt.Errorf("field %s not found", k) - } - return child, nil -} - -func (n *ObjectNode) Merge(n2 *ObjectNode) { - for k, v := range n2.Value { - n.Value[k] = v - } -} - -func (n *ObjectNode) Len() int { - return len(n.Value) -} - -func (n *ObjectNode) Set(v any) error { - val, ok := v.(NodeObjectValue) - if !ok { - return fmt.Errorf("%v is not object", v) - } - n.Value = val - return nil -} - -func (n *ObjectNode) Remove(key string) { - delete(n.Value, key) -} |