Documentation
¶
Overview ¶
Use the top level Evaluator or StreamEvaluator to evaluate expressions and return matches.
Index ¶
- Constants
- Variables
- func FormatFromFilename(filename string) string
- func GetLogger() *logging.Logger
- func InitExpressionParser()
- func KindString(kind Kind) string
- func MapToYamlStyle(original Style) yaml.Style
- func NewFrontMatterHandler(originalFilename string) frontMatterHandler
- func NewWriteInPlaceHandler(inputFile string) writeInPlaceHandler
- func NodeContentToString(node *CandidateNode, depth int) string
- func NodeToString(node *CandidateNode) string
- func NodesToString(collection *list.List) string
- func SafelyCloseReader(reader io.Reader)
- type CandidateNode
- func (n *CandidateNode) AddChild(rawChild *CandidateNode)
- func (n *CandidateNode) AddChildren(children []*CandidateNode)
- func (n *CandidateNode) AddKeyValueChild(rawKey *CandidateNode, rawValue *CandidateNode) (*CandidateNode, *CandidateNode)
- func (n *CandidateNode) AsList() *list.List
- func (n *CandidateNode) Copy() *CandidateNode
- func (n *CandidateNode) CopyAsReplacement(replacement *CandidateNode) *CandidateNode
- func (n *CandidateNode) CopyWithoutContent() *CandidateNode
- func (n *CandidateNode) CreateChild() *CandidateNode
- func (n *CandidateNode) CreateReplacement(kind Kind, tag string, value string) *CandidateNode
- func (n *CandidateNode) CreateReplacementWithComments(kind Kind, tag string, style Style) *CandidateNode
- func (n *CandidateNode) GetDocument() uint
- func (n *CandidateNode) GetFileIndex() int
- func (n *CandidateNode) GetFilename() string
- func (n *CandidateNode) GetKey() string
- func (n *CandidateNode) GetNicePath() string
- func (n *CandidateNode) GetPath() []interface{}
- func (n *CandidateNode) GetValueRep() (interface{}, error)
- func (o *CandidateNode) MarshalJSON() ([]byte, error)
- func (o *CandidateNode) MarshalYAML() (*yaml.Node, error)
- func (n *CandidateNode) SetDocument(idx uint)
- func (n *CandidateNode) SetFileIndex(idx int)
- func (n *CandidateNode) SetFilename(name string)
- func (n *CandidateNode) SetParent(parent *CandidateNode)
- func (o *CandidateNode) UnmarshalGoccyYAML(node ast.Node, cm yaml.CommentMap) error
- func (o *CandidateNode) UnmarshalJSON(data []byte) error
- func (o *CandidateNode) UnmarshalYAML(node *yaml.Node, anchorMap map[string]*CandidateNode) error
- 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
- func NewBase64Decoder() Decoder
- func NewCSVObjectDecoder(separator rune) Decoder
- func NewGoccyYAMLDecoder() Decoder
- func NewJSONDecoder() Decoder
- func NewLuaDecoder(prefs LuaPreferences) Decoder
- func NewPropertiesDecoder() Decoder
- func NewTomlDecoder() Decoder
- func NewUriDecoder() Decoder
- func NewXMLDecoder(prefs XmlPreferences) Decoder
- func NewYamlDecoder(prefs YamlPreferences) Decoder
- type Encoder
- func NewBase64Encoder() Encoder
- func NewCsvEncoder(separator rune) Encoder
- func NewJSONEncoder(indent int, colorise bool, unwrapScalar bool) Encoder
- func NewLuaEncoder(prefs LuaPreferences) Encoder
- func NewPropertiesEncoder(unwrapScalar bool) Encoder
- func NewShEncoder() Encoder
- func NewShellVariablesEncoder() Encoder
- func NewTomlEncoder() Encoder
- func NewUriEncoder() Encoder
- func NewXMLEncoder(indent int, prefs XmlPreferences) Encoder
- func NewYamlEncoder(indent int, colorise bool, prefs YamlPreferences) Encoder
- type Evaluator
- type ExpressionNode
- type ExpressionParserInterface
- type InputFormat
- type Kind
- type LuaPreferences
- type Operation
- type Printer
- type PrinterOutputFormat
- type PrinterWriter
- type StreamEvaluator
- type StringEvaluator
- type Style
- type XmlPreferences
- type YamlPreferences
Constants ¶
View Source
const ( YamlInputFormat = 1 << iota XMLInputFormat PropertiesInputFormat Base64InputFormat JsonInputFormat CSVObjectInputFormat TSVObjectInputFormat TomlInputFormat UriInputFormat LuaInputFormat )
View Source
const ( YamlOutputFormat = 1 << iota JSONOutputFormat PropsOutputFormat CSVOutputFormat TSVOutputFormat XMLOutputFormat Base64OutputFormat UriOutputFormat ShOutputFormat TomlOutputFormat ShellVariablesOutputFormat LuaOutputFormat )
Variables ¶
View Source
var ConfiguredLuaPreferences = NewDefaultLuaPreferences()
View Source
var ConfiguredXMLPreferences = NewDefaultXmlPreferences()
View Source
var ConfiguredYamlPreferences = NewDefaultYamlPreferences()
View Source
var LoadYamlPreferences = YamlPreferences{ LeadingContentPreProcessing: false, PrintDocSeparators: true, UnwrapScalar: true, EvaluateTogether: false, }
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=""`
Functions ¶
func FormatFromFilename ¶
func InitExpressionParser ¶
func InitExpressionParser()
func KindString ¶
func MapToYamlStyle ¶
func NewFrontMatterHandler ¶
func NewFrontMatterHandler(originalFilename string) frontMatterHandler
func NewWriteInPlaceHandler ¶
func NewWriteInPlaceHandler(inputFile string) writeInPlaceHandler
func NodeContentToString ¶
func NodeContentToString(node *CandidateNode, depth int) string
func NodeToString ¶
func NodeToString(node *CandidateNode) string
func SafelyCloseReader ¶
Types ¶
type CandidateNode ¶
type CandidateNode struct { Kind Kind Style Style Tag string Value string Anchor string Alias *CandidateNode Content []*CandidateNode HeadComment string LineComment string FootComment string Parent *CandidateNode // parent node Key *CandidateNode // node key, if this is a value from a map (or index in an array) LeadingContent string Line int Column 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 // contains filtered or unexported fields }
func (*CandidateNode) AddChild ¶
func (n *CandidateNode) AddChild(rawChild *CandidateNode)
func (*CandidateNode) AddChildren ¶
func (n *CandidateNode) AddChildren(children []*CandidateNode)
func (*CandidateNode) AddKeyValueChild ¶
func (n *CandidateNode) AddKeyValueChild(rawKey *CandidateNode, rawValue *CandidateNode) (*CandidateNode, *CandidateNode)
func (*CandidateNode) AsList ¶
func (n *CandidateNode) AsList() *list.List
func (*CandidateNode) Copy ¶
func (n *CandidateNode) Copy() *CandidateNode
func (*CandidateNode) CopyAsReplacement ¶
func (n *CandidateNode) CopyAsReplacement(replacement *CandidateNode) *CandidateNode
func (*CandidateNode) CopyWithoutContent ¶
func (n *CandidateNode) CopyWithoutContent() *CandidateNode
func (*CandidateNode) CreateChild ¶
func (n *CandidateNode) CreateChild() *CandidateNode
func (*CandidateNode) CreateReplacement ¶
func (n *CandidateNode) CreateReplacement(kind Kind, tag string, value string) *CandidateNode
func (*CandidateNode) CreateReplacementWithComments ¶
func (n *CandidateNode) CreateReplacementWithComments(kind Kind, tag string, style Style) *CandidateNode
func (*CandidateNode) GetDocument ¶
func (n *CandidateNode) GetDocument() uint
func (*CandidateNode) GetFileIndex ¶
func (n *CandidateNode) GetFileIndex() int
func (*CandidateNode) GetFilename ¶
func (n *CandidateNode) GetFilename() string
func (*CandidateNode) GetKey ¶
func (n *CandidateNode) GetKey() string
func (*CandidateNode) GetNicePath ¶
func (n *CandidateNode) GetNicePath() string
func (*CandidateNode) GetPath ¶
func (n *CandidateNode) GetPath() []interface{}
func (*CandidateNode) GetValueRep ¶
func (n *CandidateNode) GetValueRep() (interface{}, error)
func (*CandidateNode) MarshalJSON ¶
func (o *CandidateNode) MarshalJSON() ([]byte, error)
func (*CandidateNode) MarshalYAML ¶
func (o *CandidateNode) MarshalYAML() (*yaml.Node, error)
func (*CandidateNode) SetDocument ¶
func (n *CandidateNode) SetDocument(idx uint)
func (*CandidateNode) SetFileIndex ¶
func (n *CandidateNode) SetFileIndex(idx int)
func (*CandidateNode) SetFilename ¶
func (n *CandidateNode) SetFilename(name string)
func (*CandidateNode) SetParent ¶
func (n *CandidateNode) SetParent(parent *CandidateNode)
func (*CandidateNode) UnmarshalGoccyYAML ¶
func (o *CandidateNode) UnmarshalGoccyYAML(node ast.Node, cm yaml.CommentMap) error
func (*CandidateNode) UnmarshalJSON ¶
func (o *CandidateNode) UnmarshalJSON(data []byte) error
func (*CandidateNode) UnmarshalYAML ¶
func (o *CandidateNode) UnmarshalYAML(node *yaml.Node, anchorMap map[string]*CandidateNode) error
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 ¶
type Decoder interface { Init(reader io.Reader) error Decode() (*CandidateNode, error) }
func NewBase64Decoder ¶
func NewBase64Decoder() Decoder
func NewCSVObjectDecoder ¶
func NewGoccyYAMLDecoder ¶
func NewGoccyYAMLDecoder() Decoder
func NewJSONDecoder ¶
func NewJSONDecoder() Decoder
func NewLuaDecoder ¶
func NewLuaDecoder(prefs LuaPreferences) Decoder
func NewPropertiesDecoder ¶
func NewPropertiesDecoder() Decoder
func NewTomlDecoder ¶
func NewTomlDecoder() Decoder
func NewUriDecoder ¶
func NewUriDecoder() Decoder
func NewXMLDecoder ¶
func NewXMLDecoder(prefs XmlPreferences) Decoder
func NewYamlDecoder ¶
func NewYamlDecoder(prefs YamlPreferences) Decoder
type Encoder ¶
type Encoder interface { Encode(writer io.Writer, node *CandidateNode) error PrintDocumentSeparator(writer io.Writer) error PrintLeadingContent(writer io.Writer, content string) error CanHandleAliases() bool }
func NewBase64Encoder ¶
func NewBase64Encoder() Encoder
func NewCsvEncoder ¶
func NewLuaEncoder ¶
func NewLuaEncoder(prefs LuaPreferences) Encoder
func NewPropertiesEncoder ¶
func NewShEncoder ¶
func NewShEncoder() Encoder
func NewShellVariablesEncoder ¶
func NewShellVariablesEncoder() Encoder
func NewTomlEncoder ¶
func NewTomlEncoder() Encoder
func NewUriEncoder ¶
func NewUriEncoder() Encoder
func NewXMLEncoder ¶
func NewXMLEncoder(indent int, prefs XmlPreferences) Encoder
func NewYamlEncoder ¶
func NewYamlEncoder(indent int, colorise bool, prefs YamlPreferences) Encoder
type Evaluator ¶
type Evaluator interface { EvaluateFiles(expression string, filenames []string, printer Printer, decoder Decoder, extra_reader io.Reader) error // EvaluateNodes takes an expression and one or more yaml nodes, returning a list of matching candidate nodes EvaluateNodes(expression string, nodes ...*CandidateNode) (*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 ¶
func NewAllAtOnceEvaluator() Evaluator
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 LuaPreferences ¶
func NewDefaultLuaPreferences ¶
func NewDefaultLuaPreferences() LuaPreferences
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) SetNulSepOutput(nulSepOutput bool) }
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, decoder Decoder) (uint, error) EvaluateFiles(expression string, filenames []string, printer Printer, decoder Decoder, extra_reader io.Reader) error EvaluateNew(expression string, printer Printer) 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() StreamEvaluator
type StringEvaluator ¶
type StringEvaluator interface {
Evaluate(expression string, input string, encoder Encoder, decoder Decoder) (string, error)
}
func NewStringEvaluator ¶
func NewStringEvaluator() StringEvaluator
type XmlPreferences ¶
type XmlPreferences struct { AttributePrefix string ContentName string StrictMode bool KeepNamespace bool UseRawToken bool ProcInstPrefix string DirectiveName string SkipProcInst bool SkipDirectives bool }
func NewDefaultXmlPreferences ¶
func NewDefaultXmlPreferences() XmlPreferences
type YamlPreferences ¶
type YamlPreferences struct { LeadingContentPreProcessing bool PrintDocSeparators bool UnwrapScalar bool EvaluateTogether bool }
func NewDefaultYamlPreferences ¶
func NewDefaultYamlPreferences() YamlPreferences
Source Files
¶
- all_at_once_evaluator.go
- candidate_node.go
- candidate_node_goccy_yaml.go
- candidate_node_yaml.go
- candidiate_node_json.go
- chown_linux.go
- color_print.go
- context.go
- data_tree_navigator.go
- decoder.go
- decoder_base64.go
- decoder_csv_object.go
- decoder_goccy_yaml.go
- decoder_json.go
- decoder_lua.go
- decoder_properties.go
- decoder_toml.go
- decoder_uri.go
- decoder_xml.go
- decoder_yaml.go
- encoder.go
- encoder_base64.go
- encoder_csv.go
- encoder_json.go
- encoder_lua.go
- encoder_properties.go
- encoder_sh.go
- encoder_shellvariables.go
- encoder_toml.go
- encoder_uri.go
- encoder_xml.go
- encoder_yaml.go
- expression_parser.go
- expression_postfix.go
- file_utils.go
- front_matter.go
- lexer.go
- lexer_participle.go
- lib.go
- lua.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_compare.go
- operator_contains.go
- operator_create_map.go
- operator_datetime.go
- operator_delete.go
- operator_divide.go
- operator_document_index.go
- operator_encoder_decoder.go
- operator_entries.go
- operator_env.go
- operator_equals.go
- operator_error.go
- operator_eval.go
- operator_expression.go
- operator_file.go
- operator_filter.go
- operator_flatten.go
- operator_group_by.go
- operator_has.go
- operator_keys.go
- operator_kind.go
- operator_length.go
- operator_line.go
- operator_load.go
- operator_map.go
- operator_modulo.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_shuffle.go
- operator_slice.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_to_number.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
- string_evaluator.go
- utils.go
- write_in_place_handler.go
- xml.go
- yaml.go
Click to show internal directories.
Click to hide internal directories.