Documentation ¶
Index ¶
- Constants
- func Count(root External, kinds Kind) int
- func Equal(n1, n2 External) bool
- func WalkPreOrder(root Node, walk func(Node) bool)
- func WalkPreOrderExt(root External, walk func(External) bool)
- type Array
- func (m Array) Clone() Node
- func (m Array) CloneList() Array
- func (m Array) Equal(n External) bool
- func (m Array) EqualArray(m2 Array) bool
- func (Array) Kind() Kind
- func (m Array) Native() interface{}
- func (m *Array) SetNode(n Node) error
- func (m Array) Size() int
- func (Array) Value() Value
- func (m Array) ValueAt(i int) External
- type Bool
- type External
- type ExternalArray
- type ExternalObject
- type Float
- type Int
- type Kind
- type Node
- type NodePtr
- type Object
- func (m Object) Clone() Node
- func (m Object) CloneObject() Object
- func (m Object) Equal(n External) bool
- func (m Object) EqualObject(m2 Object) bool
- func (m Object) Keys() []string
- func (Object) Kind() Kind
- func (m Object) Native() interface{}
- func (m Object) Set(k string, v Node) Object
- func (m *Object) SetNode(n Node) error
- func (m Object) Size() int
- func (Object) Value() Value
- func (m Object) ValueAt(k string) (External, bool)
- type String
- type ToNodeFunc
- type Uint
- type Value
Constants ¶
const ( KindNil = Kind(1 << iota) KindObject KindArray KindString KindInt KindUint KindFloat KindBool )
const ( KindsValues = KindString | KindInt | KindUint | KindFloat | KindBool KindsNotNil = KindObject | KindArray | KindsValues KindsAny = KindNil | KindsNotNil )
Variables ¶
This section is empty.
Functions ¶
func WalkPreOrder ¶
WalkPreOrder visits all nodes of the tree in pre-order.
func WalkPreOrderExt ¶
WalkPreOrderExt visits all nodes of the tree in pre-order.
Types ¶
type Array ¶
type Array []Node
Array is an ordered list of nodes.
func (Array) EqualArray ¶
type External ¶
type External interface { // Kind returns a node kind. Kind() Kind // Value returns a primitive value of the node or nil if node is not a value. Value() Value }
External is a node interface that can be implemented by other packages.
type ExternalArray ¶
type ExternalArray interface { External // Size returns the number of child nodes. Size() int // ValueAt returns a array value by an index. ValueAt(i int) External }
ExternalArray is an analog of Array type.
type ExternalObject ¶
type ExternalObject interface { External // Size returns the number of fields in an object. Size() int // Keys returns a sorted list of keys (object field names). Keys() []string // ValueAt returns an object field by key. It returns false if key does not exist. ValueAt(key string) (External, bool) }
ExternalObject is an analog of Object type.
type Node ¶
type Node interface { External // Clone creates a deep copy of the node. Clone() Node // Native returns a native Go type for this node. Native() interface{} // Equal checks if the node is equal to another node. // Equality is checked by value (deep), not by reference. Equal(n2 External) bool // contains filtered or unexported methods }
Node is a generic interface for a tree structure.
Can be one of:
- Object
- Array
- Value
func Apply ¶
Apply takes a root node and applies callback to each node of the tree recursively. Apply returns an old or a new node and a flag that indicates if node was changed or not. If callback returns true and a new node, Apply will make a copy of parent node and will replace an old value with a new one. It will make a copy of all parent nodes recursively in this case.
func ToNode ¶
func ToNode(o interface{}, fallback ToNodeFunc) (Node, error)
ToNode converts objects returned by schema-less encodings such as JSON to Node objects.
type Object ¶
Object is a representation of generic node with fields.
func (Object) CloneObject ¶
CloneObject clones this node only, without deep copy of field values.
func (Object) EqualObject ¶
func (Object) Native ¶
func (m Object) Native() interface{}
Native converts an object to a generic Go map type (map[string]interface{}).
type ToNodeFunc ¶
Directories ¶
Path | Synopsis |
---|---|
Package nodesproto is a generated protocol buffer package.
|
Package nodesproto is a generated protocol buffer package. |