...

Package jsonpath

import "k8s.io/client-go/util/jsonpath"
Overview
Index

Overview ▾

package jsonpath is a template engine using jsonpath syntax, which can be seen at http://goessner.net/articles/JsonPath/. In addition, it has {range} {end} function to iterate list and slice.

Index ▾

Package files

doc.go jsonpath.go node.go parser.go

Variables

var (
    ErrSyntax = errors.New("invalid syntax")
)
var NodeTypeName = map[NodeType]string{
    NodeText:       "NodeText",
    NodeArray:      "NodeArray",
    NodeList:       "NodeList",
    NodeField:      "NodeField",
    NodeIdentifier: "NodeIdentifier",
    NodeFilter:     "NodeFilter",
    NodeInt:        "NodeInt",
    NodeFloat:      "NodeFloat",
    NodeWildcard:   "NodeWildcard",
    NodeRecursive:  "NodeRecursive",
    NodeUnion:      "NodeUnion",
    NodeBool:       "NodeBool",
}

func UnquoteExtend

func UnquoteExtend(s string) (string, error)

UnquoteExtend is almost same as strconv.Unquote(), but it support parse single quotes as a string

type ArrayNode

ArrayNode holds start, end, step information for array index selection

type ArrayNode struct {
    NodeType
    Params [3]ParamsEntry // start, end, step
}

func (*ArrayNode) String

func (a *ArrayNode) String() string

type BoolNode

BoolNode holds bool value

type BoolNode struct {
    NodeType
    Value bool
}

func (*BoolNode) String

func (b *BoolNode) String() string

type FieldNode

FieldNode holds field of struct

type FieldNode struct {
    NodeType
    Value string
}

func (*FieldNode) String

func (f *FieldNode) String() string

type FilterNode

FilterNode holds operand and operator information for filter

type FilterNode struct {
    NodeType
    Left     *ListNode
    Right    *ListNode
    Operator string
}

func (*FilterNode) String

func (f *FilterNode) String() string

type FloatNode

FloatNode holds float value

type FloatNode struct {
    NodeType
    Value float64
}

func (*FloatNode) String

func (i *FloatNode) String() string

type IdentifierNode

IdentifierNode holds an identifier

type IdentifierNode struct {
    NodeType
    Name string
}

func (*IdentifierNode) String

func (f *IdentifierNode) String() string

type IntNode

IntNode holds integer value

type IntNode struct {
    NodeType
    Value int
}

func (*IntNode) String

func (i *IntNode) String() string

type JSONPath

type JSONPath struct {
    // contains filtered or unexported fields
}

func New

func New(name string) *JSONPath

New creates a new JSONPath with the given name.

func (*JSONPath) AllowMissingKeys

func (j *JSONPath) AllowMissingKeys(allow bool) *JSONPath

AllowMissingKeys allows a caller to specify whether they want an error if a field or map key cannot be located, or simply an empty result. The receiver is returned for chaining.

func (*JSONPath) EnableJSONOutput

func (j *JSONPath) EnableJSONOutput(v bool)

EnableJSONOutput changes the PrintResults behavior to return a JSON array of results

func (*JSONPath) Execute

func (j *JSONPath) Execute(wr io.Writer, data interface{}) error

Execute bounds data into template and writes the result.

func (*JSONPath) FindResults

func (j *JSONPath) FindResults(data interface{}) ([][]reflect.Value, error)

func (*JSONPath) Parse

func (j *JSONPath) Parse(text string) error

Parse parses the given template and returns an error.

func (*JSONPath) PrintResults

func (j *JSONPath) PrintResults(wr io.Writer, results []reflect.Value) error

PrintResults writes the results into writer

type ListNode

ListNode holds a sequence of nodes.

type ListNode struct {
    NodeType
    Nodes []Node // The element nodes in lexical order.
}

func (*ListNode) String

func (l *ListNode) String() string

type Node

type Node interface {
    Type() NodeType
    String() string
}

type NodeType

NodeType identifies the type of a parse tree node.

type NodeType int
const (
    NodeText NodeType = iota
    NodeArray
    NodeList
    NodeField
    NodeIdentifier
    NodeFilter
    NodeInt
    NodeFloat
    NodeWildcard
    NodeRecursive
    NodeUnion
    NodeBool
)

func (NodeType) String

func (t NodeType) String() string

func (NodeType) Type

func (t NodeType) Type() NodeType

Type returns itself and provides an easy default implementation

type ParamsEntry

ParamsEntry holds param information for ArrayNode

type ParamsEntry struct {
    Value   int
    Known   bool // whether the value is known when parse it
    Derived bool
}

type Parser

type Parser struct {
    Name string
    Root *ListNode
    // contains filtered or unexported fields
}

func NewParser

func NewParser(name string) *Parser

func Parse

func Parse(name, text string) (*Parser, error)

Parse parsed the given text and return a node Parser. If an error is encountered, parsing stops and an empty Parser is returned with the error

func (*Parser) Parse

func (p *Parser) Parse(text string) error

type RecursiveNode

RecursiveNode means a recursive descent operator

type RecursiveNode struct {
    NodeType
}

func (*RecursiveNode) String

func (r *RecursiveNode) String() string

type TextNode

TextNode holds plain text.

type TextNode struct {
    NodeType
    Text string // The text; may span newlines.
}

func (*TextNode) String

func (t *TextNode) String() string

type UnionNode

UnionNode is union of ListNode

type UnionNode struct {
    NodeType
    Nodes []*ListNode
}

func (*UnionNode) String

func (u *UnionNode) String() string

type WildcardNode

WildcardNode means a wildcard

type WildcardNode struct {
    NodeType
}

func (*WildcardNode) String

func (i *WildcardNode) String() string