tpath

package
v1.3.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 30, 2019 License: Apache-2.0 Imports: 6 Imported by: 0

Documentation

Overview

Package tpath contains functions for traversing and updating a tree constructed from yaml or json.Unmarshal. Nodes in such trees have the form map[interface{}]interface{} or map[interface{}][]interface{}. For some tree updates, like delete or append, it's necessary to have access to the parent node. PathContext is a tree constructed during tree traversal that gives access to ancestor nodes all the way up to the root, which can be used for this purpose.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func DeleteFromTree

func DeleteFromTree(valueTree map[string]interface{}, path util.Path, remainPath util.Path) (bool, error)

TODO Merge this into existing WritePathContext method DeleteFromTree sets value at path of input untyped tree to nil

func WriteNode

func WriteNode(root interface{}, path util.Path, value interface{}) error

WriteNode writes value to the tree in root at the given path, creating any required missing internal nodes in path.

func WritePathContext

func WritePathContext(nc *PathContext, value interface{}) error

WritePathContext writes the given value to the Node in the given PathContext.

Types

type PathContext

type PathContext struct {
	// Parent in the Parent of this PathContext.
	Parent *PathContext
	// KeyToChild is the key required to reach the child.
	KeyToChild interface{}
	// Node is the actual Node in the data tree.
	Node interface{}
}

PathContext provides a means for traversing a tree towards the root.

func GetPathContext

func GetPathContext(root interface{}, path util.Path) (*PathContext, bool, error)

GetPathContext returns the PathContext for the Node which has the given path from root. It returns false and and no error if the given path is not found, or an error code in other error situations, like a malformed path. It also creates a tree of PathContexts during the traversal so that Parent nodes can be updated if required. This is required when (say) appending to a list, where the parent list itself must be updated.

func (*PathContext) String

func (nc *PathContext) String() string

String implements the Stringer interface.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL