Documentation ¶
Overview ¶
Use the top level Evaluator or StreamEvaluator to evaluate expressions and return matches.
Index ¶
- Constants
- Variables
- func GetLogger() *logging.Logger
- func InitExpressionParser()
- func KindString(kind yaml.Kind) string
- func NewFrontMatterHandler(originalFilename string) frontMatterHandler
- func NewWriteInPlaceHandler(inputFile string) writeInPlaceHandler
- func NodeToString(node *CandidateNode) string
- func NodesToString(collection *list.List) string
- func SafelyCloseReader(reader io.Reader)
- type CandidateNode
- func (n *CandidateNode) AsList() *list.List
- func (n *CandidateNode) Copy() (*CandidateNode, error)
- func (n *CandidateNode) CreateChildInArray(index int, node *yaml.Node) *CandidateNode
- func (n *CandidateNode) CreateChildInMap(key *yaml.Node, node *yaml.Node) *CandidateNode
- func (n *CandidateNode) CreateReplacement(node *yaml.Node) *CandidateNode
- func (n *CandidateNode) GetKey() string
- func (n *CandidateNode) GetNicePath() string
- func (n *CandidateNode) GetNiceTag() string
- func (n *CandidateNode) UpdateAttributesFrom(other *CandidateNode, prefs assignPreferences)
- func (n *CandidateNode) UpdateFrom(other *CandidateNode, prefs assignPreferences)
- type Context
- func (n *Context) ChildContext(results *list.List) Context
- func (n *Context) Clone() Context
- func (n *Context) DeepClone() Context
- func (n *Context) GetDateTimeLayout() string
- func (n *Context) GetVariable(name string) *list.List
- func (n *Context) ReadOnlyClone() Context
- func (n *Context) SetDateTimeLayout(newDateTimeLayout string)
- func (n *Context) SetVariable(name string, value *list.List)
- func (n *Context) SingleChildContext(candidate *CandidateNode) Context
- func (n *Context) SingleReadonlyChildContext(candidate *CandidateNode) Context
- func (n *Context) ToString() string
- func (n *Context) WritableClone() Context
- type DataTreeNavigator
- type Decoder
- type Encoder
- func NewBase64Encoder() Encoder
- func NewCsvEncoder(separator rune) Encoder
- func NewJONEncoder(indent int, colorise bool) Encoder
- func NewPropertiesEncoder() Encoder
- func NewXMLEncoder(indent int, attributePrefix string, contentName string) Encoder
- func NewYamlEncoder(indent int, colorise bool, printDocSeparators bool, unwrapScalar bool) Encoder
- type Evaluator
- type ExpressionNode
- type ExpressionParserInterface
- type InputFormat
- type Operation
- type Printer
- type PrinterOutputFormat
- type PrinterWriter
- type StreamEvaluator
Constants ¶
View Source
const ( YamlInputFormat = 1 << iota XMLInputFormat PropertiesInputFormat Base64InputFormat )
View Source
const ( YamlOutputFormat = 1 << iota JSONOutputFormat PropsOutputFormat CSVOutputFormat TSVOutputFormat XMLOutputFormat Base64OutputFormat )
Variables ¶
View Source
var Now = time.Now
for unit tests
View Source
var PrettyPrintExp = `(... | (select(tag != "!!str"), select(tag == "!!str") | select(test("(?i)^(y|yes|n|no|on|off)$") | not)) ) style=""`
View Source
var XMLPreferences = xmlPreferences{AttributePrefix: "+", ContentName: "+content", StrictMode: false}
Functions ¶
func InitExpressionParser ¶
func InitExpressionParser()
func KindString ¶
func NewFrontMatterHandler ¶
func NewFrontMatterHandler(originalFilename string) frontMatterHandler
func NewWriteInPlaceHandler ¶
func NewWriteInPlaceHandler(inputFile string) writeInPlaceHandler
func NodeToString ¶
func NodeToString(node *CandidateNode) string
func SafelyCloseReader ¶
Types ¶
type CandidateNode ¶
type CandidateNode struct { Node *yaml.Node // the actual node Parent *CandidateNode // parent node Key *yaml.Node // node key, if this is a value from a map (or index in an array) LeadingContent string TrailingContent string Path []interface{} /// the path we took to get to this node Document uint // the document index of this node Filename string FileIndex int // when performing op against all nodes given, this will treat all the nodes as one // (e.g. top level cross document merge). This property does not propagate to child nodes. EvaluateTogether bool IsMapKey bool }
func (*CandidateNode) AsList ¶
func (n *CandidateNode) AsList() *list.List
func (*CandidateNode) Copy ¶
func (n *CandidateNode) Copy() (*CandidateNode, error)
func (*CandidateNode) CreateChildInArray ¶
func (n *CandidateNode) CreateChildInArray(index int, node *yaml.Node) *CandidateNode
func (*CandidateNode) CreateChildInMap ¶
func (n *CandidateNode) CreateChildInMap(key *yaml.Node, node *yaml.Node) *CandidateNode
func (*CandidateNode) CreateReplacement ¶
func (n *CandidateNode) CreateReplacement(node *yaml.Node) *CandidateNode
func (*CandidateNode) GetKey ¶
func (n *CandidateNode) GetKey() string
func (*CandidateNode) GetNicePath ¶
func (n *CandidateNode) GetNicePath() string
func (*CandidateNode) GetNiceTag ¶
func (n *CandidateNode) GetNiceTag() string
func (*CandidateNode) UpdateAttributesFrom ¶
func (n *CandidateNode) UpdateAttributesFrom(other *CandidateNode, prefs assignPreferences)
func (*CandidateNode) UpdateFrom ¶
func (n *CandidateNode) UpdateFrom(other *CandidateNode, prefs assignPreferences)
updates this candidate from the given candidate node
type Context ¶
type Context struct { MatchingNodes *list.List Variables map[string]*list.List DontAutoCreate bool // contains filtered or unexported fields }
func (*Context) GetDateTimeLayout ¶
func (*Context) ReadOnlyClone ¶
func (*Context) SetDateTimeLayout ¶
func (*Context) SingleChildContext ¶
func (n *Context) SingleChildContext(candidate *CandidateNode) Context
func (*Context) SingleReadonlyChildContext ¶
func (n *Context) SingleReadonlyChildContext(candidate *CandidateNode) Context
func (*Context) WritableClone ¶
type DataTreeNavigator ¶
type DataTreeNavigator interface { // this will process the against the given expressionNode and return // a new context of matching candidates GetMatchingNodes(context Context, expressionNode *ExpressionNode) (Context, error) }
func NewDataTreeNavigator ¶
func NewDataTreeNavigator() DataTreeNavigator
type Decoder ¶
func NewBase64Decoder ¶
func NewBase64Decoder() Decoder
func NewPropertiesDecoder ¶
func NewPropertiesDecoder() Decoder
func NewXMLDecoder ¶
func NewYamlDecoder ¶
func NewYamlDecoder() Decoder
type Encoder ¶
type Encoder interface { Encode(writer io.Writer, node *yaml.Node) error PrintDocumentSeparator(writer io.Writer) error PrintLeadingContent(writer io.Writer, content string) error CanHandleAliases() bool }
func NewBase64Encoder ¶
func NewBase64Encoder() Encoder
func NewCsvEncoder ¶
func NewJONEncoder ¶
func NewPropertiesEncoder ¶
func NewPropertiesEncoder() Encoder
func NewXMLEncoder ¶
type Evaluator ¶
type Evaluator interface { EvaluateFiles(expression string, filenames []string, printer Printer, leadingContentPreProcessing bool, decoder Decoder) error // EvaluateNodes takes an expression and one or more yaml nodes, returning a list of matching candidate nodes EvaluateNodes(expression string, nodes ...*yaml.Node) (*list.List, error) // EvaluateCandidateNodes takes an expression and list of candidate nodes, returning a list of matching candidate nodes EvaluateCandidateNodes(expression string, inputCandidateNodes *list.List) (*list.List, error) }
A yaml expression evaluator that runs the expression once against all files/nodes in memory.
func NewAllAtOnceEvaluator ¶
type ExpressionNode ¶
type ExpressionNode struct { Operation *Operation LHS *ExpressionNode RHS *ExpressionNode }
type ExpressionParserInterface ¶
type ExpressionParserInterface interface {
ParseExpression(expression string) (*ExpressionNode, error)
}
var ExpressionParser ExpressionParserInterface
type InputFormat ¶
type InputFormat uint
func InputFormatFromString ¶
func InputFormatFromString(format string) (InputFormat, error)
type Operation ¶
type Operation struct { OperationType *operationType Value interface{} StringValue string CandidateNode *CandidateNode // used for Value Path elements Preferences interface{} UpdateAssign bool // used for assign ops, when true it means we evaluate the rhs given the lhs }
type Printer ¶
type Printer interface { PrintResults(matchingNodes *list.List) error PrintedAnything() bool //e.g. when given a front-matter doc, like jekyll SetAppendix(reader io.Reader) }
func NewPrinter ¶
func NewPrinter(encoder Encoder, printerWriter PrinterWriter) Printer
type PrinterOutputFormat ¶
type PrinterOutputFormat uint32
func OutputFormatFromString ¶
func OutputFormatFromString(format string) (PrinterOutputFormat, error)
type PrinterWriter ¶
type PrinterWriter interface {
GetWriter(node *CandidateNode) (*bufio.Writer, error)
}
func NewMultiPrinterWriter ¶
func NewMultiPrinterWriter(expression *ExpressionNode, format PrinterOutputFormat) PrinterWriter
func NewSinglePrinterWriter ¶
func NewSinglePrinterWriter(writer io.Writer) PrinterWriter
type StreamEvaluator ¶
type StreamEvaluator interface { Evaluate(filename string, reader io.Reader, node *ExpressionNode, printer Printer, leadingContent string, decoder Decoder) (uint, error) EvaluateFiles(expression string, filenames []string, printer Printer, leadingContentPreProcessing bool, decoder Decoder) error EvaluateNew(expression string, printer Printer, leadingContent string) error }
A yaml expression evaluator that runs the expression multiple times for each given yaml document. Uses less memory than loading all documents and running the expression once, but this cannot process cross document expressions.
func NewStreamEvaluator ¶
func NewStreamEvaluator(stripComments bool) StreamEvaluator
Source Files ¶
- all_at_once_evaluator.go
- candidate_node.go
- color_print.go
- compare_operators.go
- context.go
- data_tree_navigator.go
- decoder.go
- decoder_base64.go
- decoder_properties.go
- decoder_xml.go
- decoder_yaml.go
- encoder.go
- encoder_base64.go
- encoder_csv.go
- encoder_json.go
- encoder_properties.go
- encoder_xml.go
- encoder_yaml.go
- expression_parser.go
- expression_postfix.go
- expression_tokeniser.go
- file_utils.go
- front_matter.go
- lib.go
- matchKeyString.go
- operator_add.go
- operator_alternative.go
- operator_anchors_aliases.go
- operator_assign.go
- operator_booleans.go
- operator_collect.go
- operator_collect_object.go
- operator_column.go
- operator_comments.go
- operator_contains.go
- operator_create_map.go
- operator_datetime.go
- operator_delete.go
- operator_document_index.go
- operator_encoder_decoder.go
- operator_entries.go
- operator_env.go
- operator_equals.go
- operator_eval.go
- operator_file.go
- operator_flatten.go
- operator_group_by.go
- operator_has.go
- operator_keys.go
- operator_length.go
- operator_line.go
- operator_load.go
- operator_map.go
- operator_multiply.go
- operator_parent.go
- operator_path.go
- operator_pick.go
- operator_pipe.go
- operator_recursive_descent.go
- operator_reduce.go
- operator_reverse.go
- operator_select.go
- operator_self.go
- operator_sort.go
- operator_sort_keys.go
- operator_split_document.go
- operator_strings.go
- operator_style.go
- operator_subtract.go
- operator_tag.go
- operator_traverse_path.go
- operator_union.go
- operator_unique.go
- operator_value.go
- operator_variables.go
- operator_with.go
- operators.go
- printer.go
- printer_writer.go
- stream_evaluator.go
- utils.go
- write_in_place_handler.go
Click to show internal directories.
Click to hide internal directories.