mirror of
https://github.com/mikefarah/yq.git
synced 2025-03-09 10:25:36 +00:00
Drop document type
This commit is contained in:
parent
28909bbc5a
commit
b2415f2ca5
@ -63,14 +63,7 @@ func (e *allAtOnceEvaluator) EvaluateFiles(expression string, filenames []string
|
||||
}
|
||||
|
||||
if allDocuments.Len() == 0 {
|
||||
candidateNode := &CandidateNode{
|
||||
document: 0,
|
||||
filename: "",
|
||||
Kind: DocumentNode,
|
||||
Content: []*CandidateNode{createScalarNode(nil, "")},
|
||||
fileIndex: 0,
|
||||
LeadingContent: "",
|
||||
}
|
||||
candidateNode := createScalarNode(nil, "")
|
||||
allDocuments.PushBack(candidateNode)
|
||||
}
|
||||
|
||||
|
@ -20,7 +20,7 @@ var evaluateNodesScenario = []expressionScenario{
|
||||
document: `a: hello`,
|
||||
expression: `.`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::a: hello\n",
|
||||
"D0, P[], (!!map)::a: hello\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
|
@ -10,8 +10,7 @@ import (
|
||||
type Kind uint32
|
||||
|
||||
const (
|
||||
DocumentNode Kind = 1 << iota
|
||||
SequenceNode
|
||||
SequenceNode Kind = 1 << iota
|
||||
MappingNode
|
||||
ScalarNode
|
||||
AliasNode
|
||||
@ -140,9 +139,9 @@ func (n *CandidateNode) GetKey() string {
|
||||
}
|
||||
|
||||
func (n *CandidateNode) unwrapDocument() *CandidateNode {
|
||||
if n.Kind == DocumentNode {
|
||||
return n.Content[0]
|
||||
}
|
||||
// if n.Kind == DocumentNode {
|
||||
// return n.Content[0]
|
||||
// }
|
||||
return n
|
||||
}
|
||||
|
||||
|
@ -108,22 +108,22 @@ func (o *CandidateNode) decodeIntoChild(childNode *yaml.Node, anchorMap map[stri
|
||||
func (o *CandidateNode) UnmarshalYAML(node *yaml.Node, anchorMap map[string]*CandidateNode) error {
|
||||
log.Debugf("UnmarshalYAML %v", node.Tag)
|
||||
switch node.Kind {
|
||||
case yaml.DocumentNode:
|
||||
log.Debugf("UnmarshalYAML - a document")
|
||||
o.Kind = DocumentNode
|
||||
o.copyFromYamlNode(node, anchorMap)
|
||||
if len(node.Content) == 0 {
|
||||
return nil
|
||||
}
|
||||
// case yaml.DocumentNode:
|
||||
// log.Debugf("UnmarshalYAML - a document")
|
||||
// o.Kind = DocumentNode
|
||||
// o.copyFromYamlNode(node, anchorMap)
|
||||
// if len(node.Content) == 0 {
|
||||
// return nil
|
||||
// }
|
||||
|
||||
singleChild, err := o.decodeIntoChild(node.Content[0], anchorMap)
|
||||
// singleChild, err := o.decodeIntoChild(node.Content[0], anchorMap)
|
||||
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
o.Content = []*CandidateNode{singleChild}
|
||||
log.Debugf("UnmarshalYAML - finished document node")
|
||||
return nil
|
||||
// if err != nil {
|
||||
// return err
|
||||
// }
|
||||
// o.Content = []*CandidateNode{singleChild}
|
||||
// log.Debugf("UnmarshalYAML - finished document node")
|
||||
// return nil
|
||||
case yaml.AliasNode:
|
||||
log.Debug("UnmarshalYAML - alias from yaml: %v", o.Tag)
|
||||
o.Kind = AliasNode
|
||||
@ -197,19 +197,19 @@ func (o *CandidateNode) UnmarshalYAML(node *yaml.Node, anchorMap map[string]*Can
|
||||
func (o *CandidateNode) MarshalYAML() (*yaml.Node, error) {
|
||||
log.Debug("MarshalYAML to yaml: %v", o.Tag)
|
||||
switch o.Kind {
|
||||
case DocumentNode:
|
||||
log.Debug("MarshalYAML its a document")
|
||||
target := &yaml.Node{Kind: yaml.DocumentNode}
|
||||
o.copyToYamlNode(target)
|
||||
// case DocumentNode:
|
||||
// log.Debug("MarshalYAML its a document")
|
||||
// target := &yaml.Node{Kind: yaml.DocumentNode}
|
||||
// o.copyToYamlNode(target)
|
||||
|
||||
singleChild, err := o.Content[0].MarshalYAML()
|
||||
// singleChild, err := o.Content[0].MarshalYAML()
|
||||
|
||||
log.Debug("MarshalYAML its a document - singChild is %v", singleChild)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
target.Content = []*yaml.Node{singleChild}
|
||||
return target, nil
|
||||
// log.Debug("MarshalYAML its a document - singChild is %v", singleChild)
|
||||
// if err != nil {
|
||||
// return nil, err
|
||||
// }
|
||||
// target.Content = []*yaml.Node{singleChild}
|
||||
// return target, nil
|
||||
case AliasNode:
|
||||
log.Debug("MarshalYAML - alias to yaml: %v", o.Tag)
|
||||
target := &yaml.Node{Kind: yaml.AliasNode}
|
||||
|
@ -132,10 +132,10 @@ func (o *CandidateNode) MarshalJSON() ([]byte, error) {
|
||||
enc.SetEscapeHTML(false) // do not escape html chars e.g. &, <, >
|
||||
|
||||
switch o.Kind {
|
||||
case DocumentNode:
|
||||
log.Debugf("MarshalJSON DocumentNode")
|
||||
err := enc.Encode(o.Content[0])
|
||||
return buf.Bytes(), err
|
||||
// case DocumentNode:
|
||||
// log.Debugf("MarshalJSON DocumentNode")
|
||||
// err := enc.Encode(o.Content[0])
|
||||
// return buf.Bytes(), err
|
||||
case AliasNode:
|
||||
log.Debugf("MarshalJSON AliasNode")
|
||||
err := enc.Encode(o.Alias)
|
||||
|
@ -68,8 +68,5 @@ func (dec *csvObjectDecoder) Decode() (*CandidateNode, error) {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return &CandidateNode{
|
||||
Kind: DocumentNode,
|
||||
Content: []*CandidateNode{rootArray},
|
||||
}, nil
|
||||
return rootArray, nil
|
||||
}
|
||||
|
@ -29,8 +29,5 @@ func (dec *jsonDecoder) Decode() (*CandidateNode, error) {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return &CandidateNode{
|
||||
Kind: DocumentNode,
|
||||
Content: []*CandidateNode{&dataBucket},
|
||||
}, nil
|
||||
return &dataBucket, nil
|
||||
}
|
||||
|
@ -124,9 +124,6 @@ func (dec *propertiesDecoder) Decode() (*CandidateNode, error) {
|
||||
}
|
||||
dec.finished = true
|
||||
|
||||
return &CandidateNode{
|
||||
Kind: DocumentNode,
|
||||
Content: []*CandidateNode{rootMap},
|
||||
}, nil
|
||||
return rootMap, nil
|
||||
|
||||
}
|
||||
|
@ -242,10 +242,7 @@ func (dec *tomlDecoder) Decode() (*CandidateNode, error) {
|
||||
return nil, io.EOF
|
||||
}
|
||||
|
||||
return &CandidateNode{
|
||||
Kind: DocumentNode,
|
||||
Content: []*CandidateNode{dec.rootMap},
|
||||
}, deferredError
|
||||
return dec.rootMap, deferredError
|
||||
|
||||
}
|
||||
|
||||
|
@ -188,10 +188,7 @@ func (dec *xmlDecoder) Decode() (*CandidateNode, error) {
|
||||
dec.readAnything = true
|
||||
dec.finished = true
|
||||
|
||||
return &CandidateNode{
|
||||
Kind: DocumentNode,
|
||||
Content: []*CandidateNode{firstNode},
|
||||
}, nil
|
||||
return firstNode, nil
|
||||
}
|
||||
|
||||
type xmlNode struct {
|
||||
|
@ -120,11 +120,15 @@ func (dec *yamlDecoder) Decode() (*CandidateNode, error) {
|
||||
}
|
||||
|
||||
candidateNode := CandidateNode{document: dec.documentIndex}
|
||||
err = candidateNode.UnmarshalYAML(&yamlNode, make(map[string]*CandidateNode))
|
||||
// don't bother with the DocumentNode
|
||||
err = candidateNode.UnmarshalYAML(yamlNode.Content[0], make(map[string]*CandidateNode))
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
candidateNode.HeadComment = yamlNode.HeadComment + candidateNode.HeadComment
|
||||
candidateNode.FootComment = yamlNode.FootComment + candidateNode.FootComment
|
||||
|
||||
if dec.leadingContent != "" {
|
||||
candidateNode.LeadingContent = dec.leadingContent
|
||||
dec.leadingContent = ""
|
||||
@ -139,12 +143,7 @@ func (dec *yamlDecoder) Decode() (*CandidateNode, error) {
|
||||
}
|
||||
|
||||
func (dec *yamlDecoder) blankNodeWithComment() *CandidateNode {
|
||||
return &CandidateNode{
|
||||
document: 0,
|
||||
filename: "",
|
||||
Kind: DocumentNode,
|
||||
Content: []*CandidateNode{createScalarNode(nil, "")},
|
||||
fileIndex: 0,
|
||||
LeadingContent: dec.leadingContent,
|
||||
}
|
||||
node := createScalarNode(nil, "")
|
||||
node.LeadingContent = dec.leadingContent
|
||||
return node
|
||||
}
|
||||
|
@ -75,11 +75,6 @@ yq '[... | {"p": path | join("."), "isKey": is_key, "hc": headComment, "lc": lin
|
||||
```
|
||||
will output
|
||||
```yaml
|
||||
- p: ""
|
||||
isKey: false
|
||||
hc: ""
|
||||
lc: ""
|
||||
fc: ""
|
||||
- p: ""
|
||||
isKey: false
|
||||
hc: ""
|
||||
@ -140,11 +135,6 @@ yq '[... | {"p": path | join("."), "isKey": is_key, "hc": headComment, "lc": lin
|
||||
```
|
||||
will output
|
||||
```yaml
|
||||
- p: ""
|
||||
isKey: false
|
||||
hc: ""
|
||||
lc: ""
|
||||
fc: ""
|
||||
- p: ""
|
||||
isKey: false
|
||||
hc: ""
|
||||
@ -197,7 +187,6 @@ yq '. head_comment="single"' sample.yml
|
||||
will output
|
||||
```yaml
|
||||
# single
|
||||
|
||||
a: cat
|
||||
```
|
||||
|
||||
|
@ -31,7 +31,6 @@ yq '..' sample.yml
|
||||
will output
|
||||
```yaml
|
||||
a: frog
|
||||
a: frog
|
||||
frog
|
||||
```
|
||||
|
||||
@ -93,7 +92,6 @@ yq '...' sample.yml
|
||||
will output
|
||||
```yaml
|
||||
a: frog
|
||||
a: frog
|
||||
a
|
||||
frog
|
||||
```
|
||||
@ -111,9 +109,6 @@ yq '[..]' sample.yml
|
||||
```
|
||||
will output
|
||||
```yaml
|
||||
- a: &cat
|
||||
c: frog
|
||||
b: *cat
|
||||
- a: &cat
|
||||
c: frog
|
||||
b: *cat
|
||||
|
@ -99,8 +99,6 @@ func (pe *propertiesEncoder) doEncode(p *properties.Properties, node *CandidateN
|
||||
}
|
||||
_, _, err := p.Set(path, nodeValue)
|
||||
return err
|
||||
case DocumentNode:
|
||||
return pe.doEncode(p, node.Content[0], path, node)
|
||||
case SequenceNode:
|
||||
return pe.encodeArray(p, node.Content, path)
|
||||
case MappingNode:
|
||||
|
@ -54,8 +54,6 @@ func (pe *shellVariablesEncoder) doEncode(w *io.Writer, node *CandidateNode, pat
|
||||
}
|
||||
_, err := io.WriteString(*w, nonemptyPath+"="+quoteValue(node.Value)+"\n")
|
||||
return err
|
||||
case DocumentNode:
|
||||
return pe.doEncode(w, node.Content[0], path)
|
||||
case SequenceNode:
|
||||
for index, child := range node.Content {
|
||||
err := pe.doEncode(w, child, appendPath(path, index))
|
||||
|
@ -85,23 +85,6 @@ func (e *xmlEncoder) Encode(writer io.Writer, node *CandidateNode) error {
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
case DocumentNode:
|
||||
err := e.encodeComment(encoder, headAndLineComment(node))
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
unwrappedNode := node.unwrapDocument()
|
||||
if unwrappedNode.Kind != MappingNode {
|
||||
return fmt.Errorf("cannot encode %v to XML - only maps can be encoded", unwrappedNode.Tag)
|
||||
}
|
||||
err = e.encodeTopLevelMap(encoder, unwrappedNode)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
err = e.encodeComment(encoder, footComment(node))
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
case ScalarNode:
|
||||
var charData xml.CharData = []byte(node.Value)
|
||||
err := encoder.EncodeToken(charData)
|
||||
|
@ -239,7 +239,7 @@ var jsonScenarios = []formatScenario{
|
||||
description: "empty string",
|
||||
skipDoc: true,
|
||||
input: `""`,
|
||||
expected: "\"\"\n",
|
||||
expected: "\n",
|
||||
scenarioType: "decode-ndjson",
|
||||
},
|
||||
{
|
||||
|
@ -385,9 +385,7 @@ func NodeToString(node *CandidateNode) string {
|
||||
return "-- nil --"
|
||||
}
|
||||
tag := node.Tag
|
||||
if node.Kind == DocumentNode {
|
||||
tag = "doc"
|
||||
} else if node.Kind == AliasNode {
|
||||
if node.Kind == AliasNode {
|
||||
tag = "alias"
|
||||
}
|
||||
valueToUse := node.Value
|
||||
@ -422,8 +420,6 @@ func KindString(kind Kind) string {
|
||||
return "SequenceNode"
|
||||
case MappingNode:
|
||||
return "MappingNode"
|
||||
case DocumentNode:
|
||||
return "DocumentNode"
|
||||
case AliasNode:
|
||||
return "AliasNode"
|
||||
default:
|
||||
|
@ -36,7 +36,7 @@ var addOperatorScenarios = []expressionScenario{
|
||||
document: `{}`,
|
||||
expression: "(.a + .b) as $x | .",
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::{}\n",
|
||||
"D0, P[], (!!map)::{}\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -44,7 +44,7 @@ var addOperatorScenarios = []expressionScenario{
|
||||
document: `a: 0`,
|
||||
expression: ".a += .b.c",
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::a: 0\n",
|
||||
"D0, P[], (!!map)::a: 0\n",
|
||||
},
|
||||
},
|
||||
|
||||
@ -63,7 +63,7 @@ var addOperatorScenarios = []expressionScenario{
|
||||
dontFormatInputForDoc: true,
|
||||
expression: `.a += .b`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::a: [1, 2, 3, 4]\nb:\n - 3\n - 4\n",
|
||||
"D0, P[], (!!map)::a: [1, 2, 3, 4]\nb:\n - 3\n - 4\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -98,7 +98,7 @@ var addOperatorScenarios = []expressionScenario{
|
||||
document: `a: ['dog']`,
|
||||
expression: `.a += "cat"`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::a: ['dog', 'cat']\n",
|
||||
"D0, P[], (!!map)::a: ['dog', 'cat']\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -106,7 +106,7 @@ var addOperatorScenarios = []expressionScenario{
|
||||
document: `a: [dog]`,
|
||||
expression: `.a = ["cat"] + .a`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::a: [cat, dog]\n",
|
||||
"D0, P[], (!!map)::a: [cat, dog]\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -116,7 +116,7 @@ var addOperatorScenarios = []expressionScenario{
|
||||
document: `{a: ['dog'], b: cat}`,
|
||||
expression: `.a = .a + .b`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::{a: ['dog', 'cat'], b: cat}\n",
|
||||
"D0, P[], (!!map)::{a: ['dog', 'cat'], b: cat}\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -125,7 +125,7 @@ var addOperatorScenarios = []expressionScenario{
|
||||
document: `a: []`,
|
||||
expression: `.a += "cat"`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::a:\n - cat\n",
|
||||
"D0, P[], (!!map)::a:\n - cat\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -134,7 +134,7 @@ var addOperatorScenarios = []expressionScenario{
|
||||
document: `a: [dog]`,
|
||||
expression: `.a += "cat"`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::a: [dog, cat]\n",
|
||||
"D0, P[], (!!map)::a: [dog, cat]\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -171,7 +171,7 @@ var addOperatorScenarios = []expressionScenario{
|
||||
document: `a: {}`,
|
||||
expression: `.a += {"b": "cat"}`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::a:\n b: cat\n",
|
||||
"D0, P[], (!!map)::a:\n b: cat\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -180,7 +180,7 @@ var addOperatorScenarios = []expressionScenario{
|
||||
document: `a: {c: dog}`,
|
||||
expression: `.a += {"b": "cat"}`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::a: {c: dog, b: cat}\n",
|
||||
"D0, P[], (!!map)::a: {c: dog, b: cat}\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -196,7 +196,7 @@ var addOperatorScenarios = []expressionScenario{
|
||||
document: `a: { a1: {b: [cat]}, a2: {b: [dog]}, a3: {} }`,
|
||||
expression: `.a[].b += ["mouse"]`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::a: {a1: {b: [cat, mouse]}, a2: {b: [dog, mouse]}, a3: {b: [mouse]}}\n",
|
||||
"D0, P[], (!!map)::a: {a1: {b: [cat, mouse]}, a2: {b: [dog, mouse]}, a3: {b: [mouse]}}\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -204,7 +204,7 @@ var addOperatorScenarios = []expressionScenario{
|
||||
document: `{a: cat, b: meow}`,
|
||||
expression: `.a += .b`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::{a: catmeow, b: meow}\n",
|
||||
"D0, P[], (!!map)::{a: catmeow, b: meow}\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -231,7 +231,7 @@ var addOperatorScenarios = []expressionScenario{
|
||||
document: `{a: 3, b: 4.9}`,
|
||||
expression: `.a = .a + .b`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::{a: 7.9, b: 4.9}\n",
|
||||
"D0, P[], (!!map)::{a: 7.9, b: 4.9}\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -240,7 +240,7 @@ var addOperatorScenarios = []expressionScenario{
|
||||
document: `{a: 3, b: 4}`,
|
||||
expression: `.a = .a + .b`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::{a: 7, b: 4}\n",
|
||||
"D0, P[], (!!map)::{a: 7, b: 4}\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -248,7 +248,7 @@ var addOperatorScenarios = []expressionScenario{
|
||||
document: `{a: 3, b: 5}`,
|
||||
expression: `.[] += 1`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::{a: 4, b: 6}\n",
|
||||
"D0, P[], (!!map)::{a: 4, b: 6}\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -257,7 +257,7 @@ var addOperatorScenarios = []expressionScenario{
|
||||
document: `a: 2021-01-01T00:00:00Z`,
|
||||
expression: `.a += "3h10m"`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::a: 2021-01-01T03:10:00Z\n",
|
||||
"D0, P[], (!!map)::a: 2021-01-01T03:10:00Z\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -266,7 +266,7 @@ var addOperatorScenarios = []expressionScenario{
|
||||
document: `a: 2021-01-01`,
|
||||
expression: `.a += "24h"`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::a: 2021-01-02T00:00:00Z\n",
|
||||
"D0, P[], (!!map)::a: 2021-01-02T00:00:00Z\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -275,7 +275,7 @@ var addOperatorScenarios = []expressionScenario{
|
||||
document: `a: Saturday, 15-Dec-01 at 2:59AM GMT`,
|
||||
expression: `with_dtf("Monday, 02-Jan-06 at 3:04PM MST", .a += "3h1m")`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::a: Saturday, 15-Dec-01 at 6:00AM GMT\n",
|
||||
"D0, P[], (!!map)::a: Saturday, 15-Dec-01 at 6:00AM GMT\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -285,7 +285,7 @@ var addOperatorScenarios = []expressionScenario{
|
||||
document: `a: !cat Saturday, 15-Dec-01 at 2:59AM GMT`,
|
||||
expression: `with_dtf("Monday, 02-Jan-06 at 3:04PM MST", .a += "3h1m")`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::a: !cat Saturday, 15-Dec-01 at 6:00AM GMT\n",
|
||||
"D0, P[], (!!map)::a: !cat Saturday, 15-Dec-01 at 6:00AM GMT\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -302,7 +302,7 @@ var addOperatorScenarios = []expressionScenario{
|
||||
document: "a: {thing: {name: Astuff, value: x}, a1: cool}\nb: {thing: {name: Bstuff, legs: 3}, b1: neat}",
|
||||
expression: `.a += .b`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::a: {thing: {name: Bstuff, legs: 3}, a1: cool, b1: neat}\nb: {thing: {name: Bstuff, legs: 3}, b1: neat}\n",
|
||||
"D0, P[], (!!map)::a: {thing: {name: Bstuff, legs: 3}, a1: cool, b1: neat}\nb: {thing: {name: Bstuff, legs: 3}, b1: neat}\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -311,7 +311,7 @@ var addOperatorScenarios = []expressionScenario{
|
||||
document: "a: !horse cat\nb: !goat _meow",
|
||||
expression: `.a += .b`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::a: !horse cat_meow\nb: !goat _meow\n",
|
||||
"D0, P[], (!!map)::a: !horse cat_meow\nb: !goat _meow\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -320,7 +320,7 @@ var addOperatorScenarios = []expressionScenario{
|
||||
document: "a: !horse 1.2\nb: !goat 2.3",
|
||||
expression: `.a += .b`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::a: !horse 3.5\nb: !goat 2.3\n",
|
||||
"D0, P[], (!!map)::a: !horse 3.5\nb: !goat 2.3\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -328,7 +328,7 @@ var addOperatorScenarios = []expressionScenario{
|
||||
document: "a: !horse 2\nb: !goat 2.3",
|
||||
expression: `.a += .b`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::a: !horse 4.3\nb: !goat 2.3\n",
|
||||
"D0, P[], (!!map)::a: !horse 4.3\nb: !goat 2.3\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -336,7 +336,7 @@ var addOperatorScenarios = []expressionScenario{
|
||||
document: "a: 2\nb: !goat 2.3",
|
||||
expression: `.a += .b`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::a: 4.3\nb: !goat 2.3\n",
|
||||
"D0, P[], (!!map)::a: 4.3\nb: !goat 2.3\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -345,7 +345,7 @@ var addOperatorScenarios = []expressionScenario{
|
||||
document: "a: !horse 2\nb: !goat 3",
|
||||
expression: `.a += .b`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::a: !horse 5\nb: !goat 3\n",
|
||||
"D0, P[], (!!map)::a: !horse 5\nb: !goat 3\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -355,7 +355,7 @@ var addOperatorScenarios = []expressionScenario{
|
||||
document: "a: !horse [a]\nb: !goat [b]",
|
||||
expression: `.a += .b`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::a: !horse [a, b]\nb: !goat [b]\n",
|
||||
"D0, P[], (!!map)::a: !horse [a, b]\nb: !goat [b]\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -364,7 +364,7 @@ var addOperatorScenarios = []expressionScenario{
|
||||
document: "a: &horse [1]",
|
||||
expression: `.a += 2`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::a: &horse [1, 2]\n",
|
||||
"D0, P[], (!!map)::a: &horse [1, 2]\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
|
@ -19,7 +19,7 @@ var alternativeOperatorScenarios = []expressionScenario{
|
||||
expression: `(.b // "hello") as $x | .`,
|
||||
document: `a: bridge`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::a: bridge\n",
|
||||
"D0, P[], (!!map)::a: bridge\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -91,7 +91,7 @@ var alternativeOperatorScenarios = []expressionScenario{
|
||||
expression: "(.a // (.a = 0)) += 1",
|
||||
document: `a: 1`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::a: 2\n",
|
||||
"D0, P[], (!!map)::a: 2\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -100,7 +100,7 @@ var alternativeOperatorScenarios = []expressionScenario{
|
||||
expression: "(.a // (.a = 0)) += 1",
|
||||
document: `b: camel`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::b: camel\na: 1\n",
|
||||
"D0, P[], (!!map)::b: camel\na: 1\n",
|
||||
},
|
||||
},
|
||||
}
|
||||
|
@ -182,7 +182,7 @@ func explodeNode(node *CandidateNode, context Context) error {
|
||||
log.Debugf("explodeNode - %v", NodeToString(node))
|
||||
node.Anchor = ""
|
||||
switch node.Kind {
|
||||
case SequenceNode, DocumentNode:
|
||||
case SequenceNode:
|
||||
for index, contentNode := range node.Content {
|
||||
log.Debugf("explodeNode - index %v", index)
|
||||
errorInContent := explodeNode(contentNode, context)
|
||||
|
@ -24,7 +24,7 @@ thingTwo:
|
||||
<<: *item_value
|
||||
`
|
||||
|
||||
var expectedUpdatedArrayRef = `D0, P[], (doc)::item_value: &item_value
|
||||
var expectedUpdatedArrayRef = `D0, P[], (!!map)::item_value: &item_value
|
||||
value: true
|
||||
thingOne:
|
||||
name: item_1
|
||||
@ -34,7 +34,7 @@ thingTwo:
|
||||
!!merge <<: *item_value
|
||||
`
|
||||
|
||||
var explodeMergeAnchorsExpected = `D0, P[], (doc)::foo:
|
||||
var explodeMergeAnchorsExpected = `D0, P[], (!!map)::foo:
|
||||
a: foo_a
|
||||
thing: foo_thing
|
||||
c: foo_c
|
||||
@ -95,7 +95,7 @@ var anchorOperatorScenarios = []expressionScenario{
|
||||
document: `a: cat`,
|
||||
expression: `.a anchor = "foobar"`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::a: &foobar cat\n",
|
||||
"D0, P[], (!!map)::a: &foobar cat\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -103,7 +103,7 @@ var anchorOperatorScenarios = []expressionScenario{
|
||||
document: `a: {b: cat}`,
|
||||
expression: `.a anchor |= .b`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::a: &cat {b: cat}\n",
|
||||
"D0, P[], (!!map)::a: &cat {b: cat}\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -111,7 +111,7 @@ var anchorOperatorScenarios = []expressionScenario{
|
||||
document: `a: {c: cat}`,
|
||||
expression: `.a anchor |= .b`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::a: {c: cat}\n",
|
||||
"D0, P[], (!!map)::a: {c: cat}\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -119,7 +119,7 @@ var anchorOperatorScenarios = []expressionScenario{
|
||||
document: `a: {c: cat}`,
|
||||
expression: `.a anchor = .b`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::a: {c: cat}\n",
|
||||
"D0, P[], (!!map)::a: {c: cat}\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -135,7 +135,7 @@ var anchorOperatorScenarios = []expressionScenario{
|
||||
document: `{b: &meow purr, a: cat}`,
|
||||
expression: `.a alias = "meow"`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::{b: &meow purr, a: *meow}\n",
|
||||
"D0, P[], (!!map)::{b: &meow purr, a: *meow}\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -143,7 +143,7 @@ var anchorOperatorScenarios = []expressionScenario{
|
||||
document: `{b: &meow purr, a: cat}`,
|
||||
expression: `.a alias = ""`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::{b: &meow purr, a: cat}\n",
|
||||
"D0, P[], (!!map)::{b: &meow purr, a: cat}\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -151,7 +151,7 @@ var anchorOperatorScenarios = []expressionScenario{
|
||||
document: `{b: &meow purr, a: cat}`,
|
||||
expression: `.a alias = .c`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::{b: &meow purr, a: cat}\n",
|
||||
"D0, P[], (!!map)::{b: &meow purr, a: cat}\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -159,7 +159,7 @@ var anchorOperatorScenarios = []expressionScenario{
|
||||
document: `{b: &meow purr, a: cat}`,
|
||||
expression: `.a alias |= .c`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::{b: &meow purr, a: cat}\n",
|
||||
"D0, P[], (!!map)::{b: &meow purr, a: cat}\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -167,7 +167,7 @@ var anchorOperatorScenarios = []expressionScenario{
|
||||
document: `{b: &meow purr, a: {f: meow}}`,
|
||||
expression: `.a alias |= .f`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::{b: &meow purr, a: *meow}\n",
|
||||
"D0, P[], (!!map)::{b: &meow purr, a: *meow}\n",
|
||||
},
|
||||
},
|
||||
// {
|
||||
@ -202,7 +202,7 @@ var anchorOperatorScenarios = []expressionScenario{
|
||||
document: `{f : {a: &a cat, b: *a}}`,
|
||||
expression: `explode(.f)`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::{f: {a: cat, b: cat}}\n",
|
||||
"D0, P[], (!!map)::{f: {a: cat, b: cat}}\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -210,7 +210,7 @@ var anchorOperatorScenarios = []expressionScenario{
|
||||
document: `a: mike`,
|
||||
expression: `explode(.a)`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::a: mike\n",
|
||||
"D0, P[], (!!map)::a: mike\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -218,7 +218,7 @@ var anchorOperatorScenarios = []expressionScenario{
|
||||
document: `{f : {a: &a cat, *a: b}}`,
|
||||
expression: `explode(.f)`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::{f: {a: cat, cat: b}}\n",
|
||||
"D0, P[], (!!map)::{f: {a: cat, cat: b}}\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -252,7 +252,7 @@ var anchorOperatorScenarios = []expressionScenario{
|
||||
document: `{f : {a: &a cat, b: &b {foo: *a}, *a: *b}}`,
|
||||
expression: `explode(.f)`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::{f: {a: cat, b: {foo: cat}, cat: {foo: cat}}}\n",
|
||||
"D0, P[], (!!map)::{f: {a: cat, b: {foo: cat}, cat: {foo: cat}}}\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
|
@ -10,7 +10,7 @@ var arrayToMapScenarios = []expressionScenario{
|
||||
document: `cool: [null, null, hello]`,
|
||||
expression: `.cool |= array_to_map`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::cool:\n 2: hello\n",
|
||||
"D0, P[], (!!map)::cool:\n 2: hello\n",
|
||||
},
|
||||
},
|
||||
}
|
||||
|
@ -22,7 +22,7 @@ var assignOperatorScenarios = []expressionScenario{
|
||||
document: "{}",
|
||||
expression: `.a |= .b`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::a: null\n",
|
||||
"D0, P[], (!!map)::a: null\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -30,7 +30,7 @@ var assignOperatorScenarios = []expressionScenario{
|
||||
document: mergeAnchorAssign,
|
||||
expression: `.c = .b | .a.x = "ModifiedValue" | explode(.)`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::a:\n x: ModifiedValue\nb:\n x: ModifiedValue\nc:\n x: ModifiedValue\n",
|
||||
"D0, P[], (!!map)::a:\n x: ModifiedValue\nb:\n x: ModifiedValue\nc:\n x: ModifiedValue\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -38,7 +38,7 @@ var assignOperatorScenarios = []expressionScenario{
|
||||
document: "{}",
|
||||
expression: `.a = .b`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::a: null\n",
|
||||
"D0, P[], (!!map)::a: null\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -47,7 +47,7 @@ var assignOperatorScenarios = []expressionScenario{
|
||||
document: "a: cat",
|
||||
expression: `.a = [.a]`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::a:\n - cat\n",
|
||||
"D0, P[], (!!map)::a:\n - cat\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -56,7 +56,7 @@ var assignOperatorScenarios = []expressionScenario{
|
||||
document: `a: "3"`,
|
||||
expression: `.a = 3`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::a: 3\n",
|
||||
"D0, P[], (!!map)::a: 3\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -65,7 +65,7 @@ var assignOperatorScenarios = []expressionScenario{
|
||||
document: `a: "true"`,
|
||||
expression: `.a = true`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::a: true\n",
|
||||
"D0, P[], (!!map)::a: true\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -74,7 +74,7 @@ var assignOperatorScenarios = []expressionScenario{
|
||||
document: `a: !cat "meow"`,
|
||||
expression: `.a = "woof"`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::a: !cat \"woof\"\n",
|
||||
"D0, P[], (!!map)::a: !cat \"woof\"\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -82,7 +82,7 @@ var assignOperatorScenarios = []expressionScenario{
|
||||
document: `{a: {b: {g: foof}}}`,
|
||||
expression: `.a |= .b`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::{a: {g: foof}}\n",
|
||||
"D0, P[], (!!map)::{a: {g: foof}}\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -90,7 +90,7 @@ var assignOperatorScenarios = []expressionScenario{
|
||||
document: `[1,2,3]`,
|
||||
expression: `.[] |= . * 2`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::[2, 4, 6]\n",
|
||||
"D0, P[], (!!seq)::[2, 4, 6]\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -100,7 +100,7 @@ var assignOperatorScenarios = []expressionScenario{
|
||||
document2: "{b: bob}",
|
||||
expression: `select(fileIndex==0).a = select(fileIndex==1) | select(fileIndex==0)`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::{a: {b: bob}}\n",
|
||||
"D0, P[], (!!map)::{a: {b: bob}}\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -108,7 +108,7 @@ var assignOperatorScenarios = []expressionScenario{
|
||||
document: `{a: {b: child}, b: sibling}`,
|
||||
expression: `.a = .b`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::{a: sibling, b: sibling}\n",
|
||||
"D0, P[], (!!map)::{a: sibling, b: sibling}\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -116,7 +116,7 @@ var assignOperatorScenarios = []expressionScenario{
|
||||
document: `{a: fieldA, b: fieldB, c: fieldC}`,
|
||||
expression: `(.a, .c) = "potato"`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::{a: potato, b: fieldB, c: potato}\n",
|
||||
"D0, P[], (!!map)::{a: potato, b: fieldB, c: potato}\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -124,7 +124,7 @@ var assignOperatorScenarios = []expressionScenario{
|
||||
document: `{a: {b: apple}}`,
|
||||
expression: `.a.b = "frog"`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::{a: {b: frog}}\n",
|
||||
"D0, P[], (!!map)::{a: {b: frog}}\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -133,7 +133,7 @@ var assignOperatorScenarios = []expressionScenario{
|
||||
document: `{a: {b: apple}}`,
|
||||
expression: `.a.b |= "frog"`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::{a: {b: frog}}\n",
|
||||
"D0, P[], (!!map)::{a: {b: frog}}\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -149,7 +149,7 @@ var assignOperatorScenarios = []expressionScenario{
|
||||
document: `{a: {b: apple}}`,
|
||||
expression: `.a.b |= 5`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::{a: {b: 5}}\n",
|
||||
"D0, P[], (!!map)::{a: {b: 5}}\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -157,7 +157,7 @@ var assignOperatorScenarios = []expressionScenario{
|
||||
document: `{a: {b: apple}}`,
|
||||
expression: `.a.b |= 3.142`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::{a: {b: 3.142}}\n",
|
||||
"D0, P[], (!!map)::{a: {b: 3.142}}\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -166,7 +166,7 @@ var assignOperatorScenarios = []expressionScenario{
|
||||
document: `{a: {b: apple, c: cactus}}`,
|
||||
expression: `(.a[] | select(. == "apple")) = "frog"`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::{a: {b: frog, c: cactus}}\n",
|
||||
"D0, P[], (!!map)::{a: {b: frog, c: cactus}}\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -174,7 +174,7 @@ var assignOperatorScenarios = []expressionScenario{
|
||||
document: `{a: {b: apple, c: cactus}}`,
|
||||
expression: `(.a.[] | select(. == "apple")) = "frog"`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::{a: {b: frog, c: cactus}}\n",
|
||||
"D0, P[], (!!map)::{a: {b: frog, c: cactus}}\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -182,7 +182,7 @@ var assignOperatorScenarios = []expressionScenario{
|
||||
document: `[candy, apple, sandy]`,
|
||||
expression: `(.[] | select(. == "*andy")) = "bogs"`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::[bogs, apple, bogs]\n",
|
||||
"D0, P[], (!!seq)::[bogs, apple, bogs]\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -191,7 +191,7 @@ var assignOperatorScenarios = []expressionScenario{
|
||||
document: `{}`,
|
||||
expression: `.a.b |= "bogs"`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::a:\n b: bogs\n",
|
||||
"D0, P[], (!!map)::a:\n b: bogs\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -201,7 +201,7 @@ var assignOperatorScenarios = []expressionScenario{
|
||||
document: `a: &cool cat`,
|
||||
expression: `.a = "dog"`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::a: &cool dog\n",
|
||||
"D0, P[], (!!map)::a: &cool dog\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -210,7 +210,7 @@ var assignOperatorScenarios = []expressionScenario{
|
||||
document: `{}`,
|
||||
expression: `.a.b.[0] |= "bogs"`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::a:\n b:\n - bogs\n",
|
||||
"D0, P[], (!!map)::a:\n b:\n - bogs\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -218,7 +218,7 @@ var assignOperatorScenarios = []expressionScenario{
|
||||
document: `{}`,
|
||||
expression: `.a.b.[1].c |= "bogs"`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::a:\n b:\n - null\n - c: bogs\n",
|
||||
"D0, P[], (!!map)::a:\n b:\n - null\n - c: bogs\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -226,7 +226,7 @@ var assignOperatorScenarios = []expressionScenario{
|
||||
document: "a: !cat meow\nb: !dog woof",
|
||||
expression: `.a = .b`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::a: !cat woof\nb: !dog woof\n",
|
||||
"D0, P[], (!!map)::a: !cat woof\nb: !dog woof\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -235,7 +235,7 @@ var assignOperatorScenarios = []expressionScenario{
|
||||
document: "a: !cat meow\nb: !dog woof",
|
||||
expression: `.a =c .b`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::a: !dog woof\nb: !dog woof\n",
|
||||
"D0, P[], (!!map)::a: !dog woof\nb: !dog woof\n",
|
||||
},
|
||||
},
|
||||
}
|
||||
|
@ -43,7 +43,7 @@ var booleanOperatorScenarios = []expressionScenario{
|
||||
document: "b: hi",
|
||||
expression: `select(.a or .b)`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::b: hi\n",
|
||||
"D0, P[], (!!map)::b: hi\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -51,7 +51,7 @@ var booleanOperatorScenarios = []expressionScenario{
|
||||
document: "b: hi",
|
||||
expression: `select((.a and .b) | not)`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::b: hi\n",
|
||||
"D0, P[], (!!map)::b: hi\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -106,7 +106,7 @@ var booleanOperatorScenarios = []expressionScenario{
|
||||
document: "a: [rad, awesome]\nb: [meh, whatever]",
|
||||
expression: `.[] |= any_c(. == "awesome")`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::a: true\nb: false\n",
|
||||
"D0, P[], (!!map)::a: true\nb: false\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -114,7 +114,7 @@ var booleanOperatorScenarios = []expressionScenario{
|
||||
document: `[{pet: cat}]`,
|
||||
expression: `any_c(.name == "harry") as $c | .`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::[{pet: cat}]\n",
|
||||
"D0, P[], (!!seq)::[{pet: cat}]\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -170,7 +170,7 @@ var booleanOperatorScenarios = []expressionScenario{
|
||||
document: "a: [rad, awesome]\nb: [meh, 12]",
|
||||
expression: `.[] |= all_c(tag == "!!str")`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::a: true\nb: false\n",
|
||||
"D0, P[], (!!map)::a: true\nb: false\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -205,7 +205,7 @@ var booleanOperatorScenarios = []expressionScenario{
|
||||
document: `{}`,
|
||||
expression: `(.a.b or .c) as $x | .`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::{}\n",
|
||||
"D0, P[], (!!map)::{}\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -213,7 +213,7 @@ var booleanOperatorScenarios = []expressionScenario{
|
||||
document: `{}`,
|
||||
expression: `(.a.b and .c) as $x | .`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::{}\n",
|
||||
"D0, P[], (!!map)::{}\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
|
@ -40,7 +40,7 @@ var collectObjectOperatorScenarios = []expressionScenario{
|
||||
document: "a: []",
|
||||
expression: `.a += [{"key": "att2", "value": "val2"}]`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::a:\n - key: att2\n value: val2\n",
|
||||
"D0, P[], (!!map)::a:\n - key: att2\n value: val2\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
|
@ -112,7 +112,7 @@ func getCommentsOperator(d *dataTreeNavigator, context Context, expressionNode *
|
||||
comment = chompRegexp.ReplaceAllString(comment, "")
|
||||
} else if preferences.HeadComment {
|
||||
comment = candidate.HeadComment
|
||||
} else if preferences.FootComment && candidate.Kind == DocumentNode && candidate.TrailingContent != "" {
|
||||
} else if preferences.FootComment && candidate.TrailingContent != "" {
|
||||
comment = candidate.TrailingContent
|
||||
} else if preferences.FootComment {
|
||||
comment = candidate.FootComment
|
||||
|
@ -60,7 +60,7 @@ var commentOperatorScenarios = []expressionScenario{
|
||||
document: `a: cat`,
|
||||
expression: `.a line_comment="single"`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::a: cat # single\n",
|
||||
"D0, P[], (!!map)::a: cat # single\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -69,7 +69,7 @@ var commentOperatorScenarios = []expressionScenario{
|
||||
document: "a:\n b: things",
|
||||
expression: `(.a | key) line_comment="single"`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::a: # single\n b: things\n",
|
||||
"D0, P[], (!!map)::a: # single\n b: things\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -77,7 +77,7 @@ var commentOperatorScenarios = []expressionScenario{
|
||||
document: "a: cat\nb: dog",
|
||||
expression: `.a line_comment=.b`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::a: cat # dog\nb: dog\n",
|
||||
"D0, P[], (!!map)::a: cat # dog\nb: dog\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -85,8 +85,8 @@ var commentOperatorScenarios = []expressionScenario{
|
||||
document: "a: cat\n---\na: dog",
|
||||
expression: `.a line_comment |= documentIndex`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::a: cat # 0\n",
|
||||
"D1, P[], (doc)::a: dog # 1\n",
|
||||
"D0, P[], (!!map)::a: cat # 0\n",
|
||||
"D1, P[], (!!map)::a: dog # 1\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -94,7 +94,7 @@ var commentOperatorScenarios = []expressionScenario{
|
||||
document: "a: cat\nb: dog",
|
||||
expression: `.. line_comment |= .`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::a: cat # cat\nb: dog # dog\n",
|
||||
"D0, P[], (!!map)::a: cat # cat\nb: dog # dog\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -102,7 +102,7 @@ var commentOperatorScenarios = []expressionScenario{
|
||||
document: "a: cat\nb: dog",
|
||||
expression: `.. comments |= .`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::a: cat # cat\n# cat\n\n# cat\nb: dog # dog\n# dog\n\n# dog\n",
|
||||
"D0, P[], (!!map)::a: cat # cat\n# cat\n\n# cat\nb: dog # dog\n# dog\n\n# dog\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -146,7 +146,7 @@ var commentOperatorScenarios = []expressionScenario{
|
||||
document: `a: cat`,
|
||||
expression: `. head_comment="single"`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::# single\n\na: cat\n",
|
||||
"D0, P[], (!!map)::# single\na: cat\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -154,7 +154,7 @@ var commentOperatorScenarios = []expressionScenario{
|
||||
document: "f: foo\na:\n b: cat",
|
||||
expression: `(.a | key) head_comment="single"`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::f: foo\n# single\na:\n b: cat\n",
|
||||
"D0, P[], (!!map)::f: foo\n# single\na:\n b: cat\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -162,7 +162,7 @@ var commentOperatorScenarios = []expressionScenario{
|
||||
document: `a: cat`,
|
||||
expression: `. foot_comment=.a`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::a: cat\n# cat\n",
|
||||
"D0, P[], (!!map)::a: cat\n\n# cat\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -171,7 +171,7 @@ var commentOperatorScenarios = []expressionScenario{
|
||||
document: "a: cat\n\n# hi",
|
||||
expression: `. foot_comment=""`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::a: cat\n",
|
||||
"D0, P[], (!!map)::a: cat\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -179,7 +179,7 @@ var commentOperatorScenarios = []expressionScenario{
|
||||
document: `a: cat`,
|
||||
expression: `. foot_comment=.b.d`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::a: cat\n",
|
||||
"D0, P[], (!!map)::a: cat\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -187,7 +187,7 @@ var commentOperatorScenarios = []expressionScenario{
|
||||
document: `a: cat`,
|
||||
expression: `. foot_comment|=.b.d`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::a: cat\n",
|
||||
"D0, P[], (!!map)::a: cat\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -195,7 +195,7 @@ var commentOperatorScenarios = []expressionScenario{
|
||||
document: "a: cat # comment\nb: dog # leave this",
|
||||
expression: `.a line_comment=""`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::a: cat\nb: dog # leave this\n",
|
||||
"D0, P[], (!!map)::a: cat\nb: dog # leave this\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -204,7 +204,7 @@ var commentOperatorScenarios = []expressionScenario{
|
||||
document: "# hi\n\na: cat # comment\n\n# great\n\nb: # key comment",
|
||||
expression: `... comments=""`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::a: cat\nb:\n",
|
||||
"D0, P[], (!!map)::a: cat\nb:\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -230,7 +230,7 @@ var commentOperatorScenarios = []expressionScenario{
|
||||
document: "a: cat\n\n# haha",
|
||||
expression: `... comments= ""`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::a: cat\n",
|
||||
"D0, P[], (!!map)::a: cat\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -239,7 +239,7 @@ var commentOperatorScenarios = []expressionScenario{
|
||||
document: "a: cat\n\n# haha",
|
||||
expression: `.. comments= ""`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::a: cat\n",
|
||||
"D0, P[], (!!map)::a: cat\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
|
@ -11,7 +11,7 @@ var dateTimeOperatorScenarios = []expressionScenario{
|
||||
document: `a: 2001-12-15T02:59:43.1Z`,
|
||||
expression: `.a |= format_datetime("Monday, 02-Jan-06 at 3:04PM")`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::a: Saturday, 15-Dec-01 at 2:59AM\n",
|
||||
"D0, P[], (!!map)::a: Saturday, 15-Dec-01 at 2:59AM\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -20,7 +20,7 @@ var dateTimeOperatorScenarios = []expressionScenario{
|
||||
document: `a: Saturday, 15-Dec-01 at 2:59AM`,
|
||||
expression: `.a |= with_dtf("Monday, 02-Jan-06 at 3:04PM"; format_datetime("2006-01-02"))`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::a: 2001-12-15\n",
|
||||
"D0, P[], (!!map)::a: 2001-12-15\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -36,7 +36,7 @@ var dateTimeOperatorScenarios = []expressionScenario{
|
||||
document: "a: cool",
|
||||
expression: `.updated = now`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::a: cool\nupdated: 2021-05-19T01:02:03Z\n",
|
||||
"D0, P[], (!!map)::a: cool\nupdated: 2021-05-19T01:02:03Z\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -62,7 +62,7 @@ var dateTimeOperatorScenarios = []expressionScenario{
|
||||
document: "a: cool",
|
||||
expression: `.updated = (now | tz("Australia/Sydney"))`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::a: cool\nupdated: 2021-05-19T11:02:03+10:00\n",
|
||||
"D0, P[], (!!map)::a: cool\nupdated: 2021-05-19T11:02:03+10:00\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -71,7 +71,7 @@ var dateTimeOperatorScenarios = []expressionScenario{
|
||||
document: "a: Saturday, 15-Dec-01 at 2:59AM GMT",
|
||||
expression: `.a |= with_dtf("Monday, 02-Jan-06 at 3:04PM MST"; tz("Australia/Sydney"))`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::a: Saturday, 15-Dec-01 at 1:59PM AEDT\n",
|
||||
"D0, P[], (!!map)::a: Saturday, 15-Dec-01 at 1:59PM AEDT\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -80,7 +80,7 @@ var dateTimeOperatorScenarios = []expressionScenario{
|
||||
document: "a: Saturday, 15-Dec-01 at 2:59AM GMT",
|
||||
expression: `.a |= with_dtf("Monday, 02-Jan-06 at 3:04PM MST"; tz("Australia/Sydney"))`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::a: Saturday, 15-Dec-01 at 1:59PM AEDT\n",
|
||||
"D0, P[], (!!map)::a: Saturday, 15-Dec-01 at 1:59PM AEDT\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -88,7 +88,7 @@ var dateTimeOperatorScenarios = []expressionScenario{
|
||||
document: `a: 2021-01-01T00:00:00Z`,
|
||||
expression: `.a += "3h10m"`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::a: 2021-01-01T03:10:00Z\n",
|
||||
"D0, P[], (!!map)::a: 2021-01-01T03:10:00Z\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -97,7 +97,7 @@ var dateTimeOperatorScenarios = []expressionScenario{
|
||||
document: `a: 2021-01-01T03:10:00Z`,
|
||||
expression: `.a -= "3h10m"`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::a: 2021-01-01T00:00:00Z\n",
|
||||
"D0, P[], (!!map)::a: 2021-01-01T00:00:00Z\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -105,7 +105,7 @@ var dateTimeOperatorScenarios = []expressionScenario{
|
||||
document: `a: Saturday, 15-Dec-01 at 2:59AM GMT`,
|
||||
expression: `with_dtf("Monday, 02-Jan-06 at 3:04PM MST"; .a += "3h1m")`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::a: Saturday, 15-Dec-01 at 6:00AM GMT\n",
|
||||
"D0, P[], (!!map)::a: Saturday, 15-Dec-01 at 6:00AM GMT\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -114,7 +114,7 @@ var dateTimeOperatorScenarios = []expressionScenario{
|
||||
document: `a: Saturday, 15-Dec-01 at 2:59AM GMT`,
|
||||
expression: `with_dtf("Monday, 02-Jan-06 at 3:04PM MST"; .a = (.a + "3h1m" | tz("Australia/Perth")))`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::a: Saturday, 15-Dec-01 at 2:00PM AWST\n",
|
||||
"D0, P[], (!!map)::a: Saturday, 15-Dec-01 at 2:00PM AWST\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -123,7 +123,7 @@ var dateTimeOperatorScenarios = []expressionScenario{
|
||||
document: "a: Saturday, 15-Dec-01 at 2:59AM GMT",
|
||||
expression: `.a |= with_dtf("Monday, 02-Jan-06 at 3:04PM MST", tz("Australia/Sydney"))`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::a: Saturday, 15-Dec-01 at 1:59PM AEDT\n",
|
||||
"D0, P[], (!!map)::a: Saturday, 15-Dec-01 at 1:59PM AEDT\n",
|
||||
},
|
||||
},
|
||||
}
|
||||
|
@ -15,25 +15,14 @@ func deleteChildOperator(d *dataTreeNavigator, context Context, expressionNode *
|
||||
for el := nodesToDelete.MatchingNodes.Back(); el != nil; el = el.Prev() {
|
||||
candidate := el.Value.(*CandidateNode)
|
||||
|
||||
if candidate.Kind == DocumentNode {
|
||||
//need to delete this node from context.
|
||||
if candidate.Parent == nil {
|
||||
// must be a top level thing, delete it
|
||||
return removeFromContext(context, candidate)
|
||||
} else if candidate.Parent == nil {
|
||||
//problem: context may already be '.a' and then I pass in '.a.a2'.
|
||||
// should pass in .a2.
|
||||
log.Info("Could not find parent of %v", NodeToString(candidate))
|
||||
return context, nil
|
||||
}
|
||||
log.Debugf("processing deletion of candidate %v", NodeToString(candidate))
|
||||
|
||||
parentNode := candidate.Parent
|
||||
|
||||
if parentNode != nil && parentNode.Kind == DocumentNode {
|
||||
log.Debugf("it has a document parent")
|
||||
|
||||
return removeFromContext(context, candidate.Parent)
|
||||
}
|
||||
|
||||
candidatePath := candidate.GetPath()
|
||||
childPath := candidatePath[len(candidatePath)-1]
|
||||
|
||||
|
@ -10,7 +10,7 @@ var deleteOperatorScenarios = []expressionScenario{
|
||||
document: `{a: cat, b: dog}`,
|
||||
expression: `del(.b)`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::{a: cat}\n",
|
||||
"D0, P[], (!!map)::{a: cat}\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -18,7 +18,7 @@ var deleteOperatorScenarios = []expressionScenario{
|
||||
document: `{a: {a1: fred, a2: frood}}`,
|
||||
expression: `del(.a.a1)`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::{a: {a2: frood}}\n",
|
||||
"D0, P[], (!!map)::{a: {a2: frood}}\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -36,7 +36,7 @@ var deleteOperatorScenarios = []expressionScenario{
|
||||
document: `a: fast`,
|
||||
expression: `del(select(.a == "fast"))`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::a: slow\n",
|
||||
"D0, P[], (!!map)::a: slow\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -100,7 +100,7 @@ var deleteOperatorScenarios = []expressionScenario{
|
||||
document: `{a: {a1: fred, a2: frood}}`,
|
||||
expression: `del(.. | select(.=="frood"))`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::{a: {a1: fred}}\n",
|
||||
"D0, P[], (!!map)::{a: {a1: fred}}\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -108,7 +108,7 @@ var deleteOperatorScenarios = []expressionScenario{
|
||||
document: `[1,2,3]`,
|
||||
expression: `del(.[1])`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::[1, 3]\n",
|
||||
"D0, P[], (!!seq)::[1, 3]\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -116,7 +116,7 @@ var deleteOperatorScenarios = []expressionScenario{
|
||||
document: `a: [1,2,3]`,
|
||||
expression: `del(.a[])`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::a: []\n",
|
||||
"D0, P[], (!!map)::a: []\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -124,7 +124,7 @@ var deleteOperatorScenarios = []expressionScenario{
|
||||
document: `a: [10,x,10, 10, x, 10]`,
|
||||
expression: `del(.a[] | select(. == 10))`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::a: [x, x]\n",
|
||||
"D0, P[], (!!map)::a: [x, x]\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -144,7 +144,7 @@ var deleteOperatorScenarios = []expressionScenario{
|
||||
document: `a: {thing1: yep, thing2: cool, thing3: hi, b: {thing1: cool, great: huh}}`,
|
||||
expression: `del(.. | select(tag == "!!map") | (.b.thing1,.thing2))`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::a: {thing1: yep, thing3: hi, b: {great: huh}}\n",
|
||||
"D0, P[], (!!map)::a: {thing1: yep, thing3: hi, b: {great: huh}}\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -152,7 +152,7 @@ var deleteOperatorScenarios = []expressionScenario{
|
||||
document: `[{a: cat, b: dog}]`,
|
||||
expression: `del(.[0].a)`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::[{b: dog}]\n",
|
||||
"D0, P[], (!!seq)::[{b: dog}]\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -160,7 +160,7 @@ var deleteOperatorScenarios = []expressionScenario{
|
||||
document: `{a: cat, b: dog}`,
|
||||
expression: `del(.c)`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::{a: cat, b: dog}\n",
|
||||
"D0, P[], (!!map)::{a: cat, b: dog}\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -168,7 +168,7 @@ var deleteOperatorScenarios = []expressionScenario{
|
||||
document: `{a: cat, b: dog, c: bat}`,
|
||||
expression: `del( .[] | select(. == "*at") )`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::{b: dog}\n",
|
||||
"D0, P[], (!!map)::{b: dog}\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -176,7 +176,7 @@ var deleteOperatorScenarios = []expressionScenario{
|
||||
document: `{a: {name: frog, b: {name: blog, age: 12}}}`,
|
||||
expression: `del(.. | select(has("name")).name)`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::{a: {b: {age: 12}}}\n",
|
||||
"D0, P[], (!!map)::{a: {b: {age: 12}}}\n",
|
||||
},
|
||||
},
|
||||
}
|
||||
|
@ -19,7 +19,7 @@ var divideOperatorScenarios = []expressionScenario{
|
||||
document: `{}`,
|
||||
expression: "(.a / .b) as $x | .",
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::{}\n",
|
||||
"D0, P[], (!!map)::{}\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -27,7 +27,7 @@ var divideOperatorScenarios = []expressionScenario{
|
||||
document: `{a: cat_meow, b: _}`,
|
||||
expression: `.c = .a / .b`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::{a: cat_meow, b: _, c: [cat, meow]}\n",
|
||||
"D0, P[], (!!map)::{a: cat_meow, b: _, c: [cat, meow]}\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -36,7 +36,7 @@ var divideOperatorScenarios = []expressionScenario{
|
||||
document: `{a: 12, b: 2.5}`,
|
||||
expression: `.a = .a / .b`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::{a: 4.8, b: 2.5}\n",
|
||||
"D0, P[], (!!map)::{a: 4.8, b: 2.5}\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -45,7 +45,7 @@ var divideOperatorScenarios = []expressionScenario{
|
||||
document: `{a: 1, b: -1}`,
|
||||
expression: `.a = .a / 0 | .b = .b / 0`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::{a: !!float +Inf, b: !!float -Inf}\n",
|
||||
"D0, P[], (!!map)::{a: !!float +Inf, b: !!float -Inf}\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -54,7 +54,7 @@ var divideOperatorScenarios = []expressionScenario{
|
||||
document: "a: !horse cat_meow\nb: !goat _",
|
||||
expression: `.a = .a / .b`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::a: !horse\n - cat\n - meow\nb: !goat _\n",
|
||||
"D0, P[], (!!map)::a: !horse\n - cat\n - meow\nb: !goat _\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -63,7 +63,7 @@ var divideOperatorScenarios = []expressionScenario{
|
||||
document: "a: !horse 1.2\nb: !goat 2.3",
|
||||
expression: `.a = .a / .b`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::a: !horse 0.5217391304347826\nb: !goat 2.3\n",
|
||||
"D0, P[], (!!map)::a: !horse 0.5217391304347826\nb: !goat 2.3\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -71,7 +71,7 @@ var divideOperatorScenarios = []expressionScenario{
|
||||
document: "a: 2\nb: !goat 2.3",
|
||||
expression: `.a = .a / .b`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::a: 0.8695652173913044\nb: !goat 2.3\n",
|
||||
"D0, P[], (!!map)::a: 0.8695652173913044\nb: !goat 2.3\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -80,7 +80,7 @@ var divideOperatorScenarios = []expressionScenario{
|
||||
document: "a: !horse 2\nb: !goat 3",
|
||||
expression: `.a = .a / .b`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::a: !horse 0.6666666666666666\nb: !goat 3\n",
|
||||
"D0, P[], (!!map)::a: !horse 0.6666666666666666\nb: !goat 3\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -89,7 +89,7 @@ var divideOperatorScenarios = []expressionScenario{
|
||||
document: "a: &horse [1]",
|
||||
expression: `.a[1] = .a[0] / 2`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::a: &horse [1, 0.5]\n",
|
||||
"D0, P[], (!!map)::a: &horse [1, 0.5]\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
|
@ -28,7 +28,7 @@ var documentIndexScenarios = []expressionScenario{
|
||||
document: "a: cat\n---\na: frog\n",
|
||||
expression: `select(document_index == 1)`,
|
||||
expected: []string{
|
||||
"D1, P[], (doc)::a: frog\n",
|
||||
"D1, P[], (!!map)::a: frog\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -36,7 +36,7 @@ var documentIndexScenarios = []expressionScenario{
|
||||
document: "a: cat\n---\na: frog\n",
|
||||
expression: `select(di == 1)`,
|
||||
expected: []string{
|
||||
"D1, P[], (doc)::a: frog\n",
|
||||
"D1, P[], (!!map)::a: frog\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
|
@ -4,7 +4,7 @@ import (
|
||||
"testing"
|
||||
)
|
||||
|
||||
var prefix = "D0, P[], (doc)::a:\n cool:\n bob: dylan\n"
|
||||
var prefix = "D0, P[], (!!map)::a:\n cool:\n bob: dylan\n"
|
||||
|
||||
var encoderDecoderOperatorScenarios = []expressionScenario{
|
||||
{
|
||||
@ -13,7 +13,7 @@ var encoderDecoderOperatorScenarios = []expressionScenario{
|
||||
document: `{a: {cool: "thing"}}`,
|
||||
expression: `.b = (.a | to_json)`,
|
||||
expected: []string{
|
||||
`D0, P[], (doc)::{a: {cool: "thing"}, b: "{\n \"cool\": \"thing\"\n}\n"}
|
||||
`D0, P[], (!!map)::{a: {cool: "thing"}, b: "{\n \"cool\": \"thing\"\n}\n"}
|
||||
`,
|
||||
},
|
||||
},
|
||||
@ -24,7 +24,7 @@ var encoderDecoderOperatorScenarios = []expressionScenario{
|
||||
document: `{a: {cool: "thing"}}`,
|
||||
expression: `.b = (.a | to_json(0))`,
|
||||
expected: []string{
|
||||
`D0, P[], (doc)::{a: {cool: "thing"}, b: '{"cool":"thing"}'}
|
||||
`D0, P[], (!!map)::{a: {cool: "thing"}, b: '{"cool":"thing"}'}
|
||||
`,
|
||||
},
|
||||
},
|
||||
@ -35,7 +35,7 @@ var encoderDecoderOperatorScenarios = []expressionScenario{
|
||||
document: `{a: {cool: "thing"}}`,
|
||||
expression: `.b = (.a | @json)`,
|
||||
expected: []string{
|
||||
`D0, P[], (doc)::{a: {cool: "thing"}, b: '{"cool":"thing"}'}
|
||||
`D0, P[], (!!map)::{a: {cool: "thing"}, b: '{"cool":"thing"}'}
|
||||
`,
|
||||
},
|
||||
},
|
||||
@ -54,7 +54,7 @@ var encoderDecoderOperatorScenarios = []expressionScenario{
|
||||
document: `{a: {cool: "thing"}}`,
|
||||
expression: `.b = (.a | to_props)`,
|
||||
expected: []string{
|
||||
`D0, P[], (doc)::{a: {cool: "thing"}, b: "cool = thing\n"}
|
||||
`D0, P[], (!!map)::{a: {cool: "thing"}, b: "cool = thing\n"}
|
||||
`,
|
||||
},
|
||||
},
|
||||
@ -63,7 +63,7 @@ var encoderDecoderOperatorScenarios = []expressionScenario{
|
||||
document: `{a: {cool: "thing"}}`,
|
||||
expression: `.b = (.a | @props)`,
|
||||
expected: []string{
|
||||
`D0, P[], (doc)::{a: {cool: "thing"}, b: "cool = thing\n"}
|
||||
`D0, P[], (!!map)::{a: {cool: "thing"}, b: "cool = thing\n"}
|
||||
`,
|
||||
},
|
||||
},
|
||||
@ -72,7 +72,7 @@ var encoderDecoderOperatorScenarios = []expressionScenario{
|
||||
document: `a: "cats=great\ndogs=cool as well"`,
|
||||
expression: `.a |= @propsd`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::a:\n cats: great\n dogs: cool as well\n",
|
||||
"D0, P[], (!!map)::a:\n cats: great\n dogs: cool as well\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -80,7 +80,7 @@ var encoderDecoderOperatorScenarios = []expressionScenario{
|
||||
document: `a: "cats,dogs\ngreat,cool as well"`,
|
||||
expression: `.a |= @csvd`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::a:\n - cats: great\n dogs: cool as well\n",
|
||||
"D0, P[], (!!map)::a:\n - cats: great\n dogs: cool as well\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -88,7 +88,7 @@ var encoderDecoderOperatorScenarios = []expressionScenario{
|
||||
document: `a: "cats dogs\ngreat cool as well"`,
|
||||
expression: `.a |= @tsvd`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::a:\n - cats: great\n dogs: cool as well\n",
|
||||
"D0, P[], (!!map)::a:\n - cats: great\n dogs: cool as well\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -122,7 +122,7 @@ var encoderDecoderOperatorScenarios = []expressionScenario{
|
||||
document: `{a: {cool: "thing"}}`,
|
||||
expression: `.b = (.a | to_yaml)`,
|
||||
expected: []string{
|
||||
`D0, P[], (doc)::{a: {cool: "thing"}, b: "{cool: \"thing\"}\n"}
|
||||
`D0, P[], (!!map)::{a: {cool: "thing"}, b: "{cool: \"thing\"}\n"}
|
||||
`,
|
||||
},
|
||||
},
|
||||
@ -131,7 +131,7 @@ var encoderDecoderOperatorScenarios = []expressionScenario{
|
||||
document: `a: "foo: bar"`,
|
||||
expression: `.b = (.a | from_yaml)`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::a: \"foo: bar\"\nb:\n foo: bar\n",
|
||||
"D0, P[], (!!map)::a: \"foo: bar\"\nb:\n foo: bar\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -140,7 +140,7 @@ var encoderDecoderOperatorScenarios = []expressionScenario{
|
||||
document: "a: |\n foo: bar\n baz: dog\n",
|
||||
expression: `.a |= (from_yaml | .foo = "cat" | to_yaml)`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::a: |\n foo: cat\n baz: dog\n",
|
||||
"D0, P[], (!!map)::a: |\n foo: cat\n baz: dog\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -149,7 +149,7 @@ var encoderDecoderOperatorScenarios = []expressionScenario{
|
||||
document: "a: |-\n foo: bar\n baz: dog\n",
|
||||
expression: `.a |= (from_yaml | .foo = "cat" | to_yaml)`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::a: |-\n foo: cat\n baz: dog\n",
|
||||
"D0, P[], (!!map)::a: |-\n foo: cat\n baz: dog\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -158,7 +158,7 @@ var encoderDecoderOperatorScenarios = []expressionScenario{
|
||||
document: "a: 'foo: bar'",
|
||||
expression: `.a |= (from_yaml | .foo = "cat" | to_yaml)`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::a: 'foo: cat'\n",
|
||||
"D0, P[], (!!map)::a: 'foo: cat'\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -193,7 +193,7 @@ var encoderDecoderOperatorScenarios = []expressionScenario{
|
||||
document: "a: \"foo: bar\"",
|
||||
expression: `.a |= (from_yaml | .foo = {"a": "frog"} | to_yaml)`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::a: \"foo:\\n a: frog\"\n",
|
||||
"D0, P[], (!!map)::a: \"foo:\\n a: frog\"\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -229,7 +229,7 @@ var encoderDecoderOperatorScenarios = []expressionScenario{
|
||||
document: `a: "<foo>bar</foo>"`,
|
||||
expression: `.b = (.a | from_xml)`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::a: \"<foo>bar</foo>\"\nb:\n foo: bar\n",
|
||||
"D0, P[], (!!map)::a: \"<foo>bar</foo>\"\nb:\n foo: bar\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -299,7 +299,7 @@ var encoderDecoderOperatorScenarios = []expressionScenario{
|
||||
document: "coolData: YTogYXBwbGUK",
|
||||
expression: ".coolData |= (@base64d | from_yaml)",
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::coolData:\n a: apple\n",
|
||||
"D0, P[], (!!map)::coolData:\n a: apple\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
|
@ -60,7 +60,7 @@ var envOperatorScenarios = []expressionScenario{
|
||||
environmentVariables: map[string]string{"pathEnv": ".a.b[0].name", "valueEnv": "moo"},
|
||||
expression: `eval(strenv(pathEnv)) = strenv(valueEnv)`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::{a: {b: [{name: moo}, {name: cat}]}}\n",
|
||||
"D0, P[], (!!map)::{a: {b: [{name: moo}, {name: cat}]}}\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -136,7 +136,7 @@ var envOperatorScenarios = []expressionScenario{
|
||||
document: "{v: \"${myenv}\"}",
|
||||
expression: `.v |= envsubst`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::{v: \"cat meow\"}\n",
|
||||
"D0, P[], (!!map)::{v: \"cat meow\"}\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -157,7 +157,7 @@ var envOperatorScenarios = []expressionScenario{
|
||||
document: "# abc\n{v: \"${myenv}\"}\n# xyz\n",
|
||||
expression: `(.. | select(tag == "!!str")) |= envsubst`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::# abc\n{v: \"cat meow\"}\n# xyz\n",
|
||||
"D0, P[], (!!map)::# abc\n{v: \"cat meow\"}\n# xyz\n",
|
||||
},
|
||||
},
|
||||
}
|
||||
|
@ -49,7 +49,7 @@ var equalsOperatorScenarios = []expressionScenario{
|
||||
// document: "{}",
|
||||
// expression: "(.a == .b) as $x | .",
|
||||
// expected: []string{
|
||||
// "D0, P[], (doc)::{}\n",
|
||||
// "D0, P[], (!!map)::{}\n",
|
||||
// },
|
||||
// },
|
||||
// {
|
||||
@ -65,7 +65,7 @@ var equalsOperatorScenarios = []expressionScenario{
|
||||
// document: "{}",
|
||||
// expression: "(.a != .b) as $x | .",
|
||||
// expected: []string{
|
||||
// "D0, P[], (doc)::{}\n",
|
||||
// "D0, P[], (!!map)::{}\n",
|
||||
// },
|
||||
// },
|
||||
// {
|
||||
@ -87,7 +87,7 @@ var equalsOperatorScenarios = []expressionScenario{
|
||||
// document: "{a: {b: 10}}",
|
||||
// expression: "select(.d == .c)",
|
||||
// expected: []string{
|
||||
// "D0, P[], (doc)::{a: {b: 10}}\n",
|
||||
// "D0, P[], (!!map)::{a: {b: 10}}\n",
|
||||
// },
|
||||
// },
|
||||
// {
|
||||
@ -95,7 +95,7 @@ var equalsOperatorScenarios = []expressionScenario{
|
||||
// document: "{a: {b: 10}}",
|
||||
// expression: "select(null == .c)",
|
||||
// expected: []string{
|
||||
// "D0, P[], (doc)::{a: {b: 10}}\n",
|
||||
// "D0, P[], (!!map)::{a: {b: 10}}\n",
|
||||
// },
|
||||
// },
|
||||
// {
|
||||
@ -176,7 +176,7 @@ var equalsOperatorScenarios = []expressionScenario{
|
||||
// document: "a: frog",
|
||||
// expression: `select(.b != "thing")`,
|
||||
// expected: []string{
|
||||
// "D0, P[], (doc)::a: frog\n",
|
||||
// "D0, P[], (!!map)::a: frog\n",
|
||||
// },
|
||||
// },
|
||||
// {
|
||||
@ -184,7 +184,7 @@ var equalsOperatorScenarios = []expressionScenario{
|
||||
// document: "a: frog",
|
||||
// expression: `select(.b == .c)`,
|
||||
// expected: []string{
|
||||
// "D0, P[], (doc)::a: frog\n",
|
||||
// "D0, P[], (!!map)::a: frog\n",
|
||||
// },
|
||||
// },
|
||||
}
|
||||
|
@ -27,7 +27,7 @@ var errorOperatorScenarios = []expressionScenario{
|
||||
document: "name: Bob\nfavouriteAnimal: cat\n",
|
||||
expression: validationExpression,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::name: Bob\nfavouriteAnimal: cat\nnumPets: 3\n",
|
||||
"D0, P[], (!!map)::name: Bob\nfavouriteAnimal: cat\nnumPets: 3\n",
|
||||
},
|
||||
},
|
||||
}
|
||||
|
@ -21,7 +21,7 @@ var evalOperatorScenarios = []expressionScenario{
|
||||
environmentVariables: map[string]string{"pathEnv": ".a.b[0].name", "valueEnv": "moo"},
|
||||
expression: `eval(strenv(pathEnv)) = strenv(valueEnv)`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::{a: {b: [{name: moo}, {name: cat}]}}\n",
|
||||
"D0, P[], (!!map)::{a: {b: [{name: moo}, {name: cat}]}}\n",
|
||||
},
|
||||
},
|
||||
}
|
||||
|
@ -44,7 +44,7 @@ var fileOperatorScenarios = []expressionScenario{
|
||||
document: "a: cat\nb: dog",
|
||||
expression: `.. lineComment |= filename`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::a: cat # sample.yml\nb: dog # sample.yml\n",
|
||||
"D0, P[], (!!map)::a: cat # sample.yml\nb: dog # sample.yml\n",
|
||||
},
|
||||
},
|
||||
}
|
||||
|
@ -11,7 +11,7 @@ var flattenOperatorScenarios = []expressionScenario{
|
||||
document: `[1, [2], [[3]]]`,
|
||||
expression: `flatten`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::[1, 2, 3]\n",
|
||||
"D0, P[], (!!seq)::[1, 2, 3]\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -19,7 +19,7 @@ var flattenOperatorScenarios = []expressionScenario{
|
||||
document: `[1, [2], [[3]]]`,
|
||||
expression: `flatten(1)`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::[1, 2, [3]]\n",
|
||||
"D0, P[], (!!seq)::[1, 2, [3]]\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -27,7 +27,7 @@ var flattenOperatorScenarios = []expressionScenario{
|
||||
document: `[[]]`,
|
||||
expression: `flatten`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::[]\n",
|
||||
"D0, P[], (!!seq)::[]\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -35,7 +35,7 @@ var flattenOperatorScenarios = []expressionScenario{
|
||||
document: `[{foo: bar}, [{foo: baz}]]`,
|
||||
expression: `flatten`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::[{foo: bar}, {foo: baz}]\n",
|
||||
"D0, P[], (!!seq)::[{foo: bar}, {foo: baz}]\n",
|
||||
},
|
||||
},
|
||||
}
|
||||
|
@ -18,7 +18,7 @@ var hasOperatorScenarios = []expressionScenario{
|
||||
document: `a: hello`,
|
||||
expression: `has(.b) as $c | .`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::a: hello\n",
|
||||
"D0, P[], (!!map)::a: hello\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
|
@ -90,7 +90,7 @@ var keysOperatorScenarios = []expressionScenario{
|
||||
document: "a:\n x: 3\n y: 4",
|
||||
expression: `(.a.x | key) = "meow"`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::a:\n meow: 3\n y: 4\n",
|
||||
"D0, P[], (!!map)::a:\n meow: 3\n y: 4\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
|
@ -10,7 +10,7 @@ var loadScenarios = []expressionScenario{
|
||||
description: "Load empty file with a comment",
|
||||
expression: `load("../../examples/empty.yaml")`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::# comment\n\n",
|
||||
"D0, P[], (!!null)::# comment\n\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -19,7 +19,7 @@ var loadScenarios = []expressionScenario{
|
||||
document: `- "../../examples/small.yaml"`,
|
||||
expression: `.[] |= load(.)`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::- # comment\n # about things\n a: cat\n",
|
||||
"D0, P[], (!!seq)::- # comment\n # about things\n a: cat\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -43,7 +43,7 @@ var loadScenarios = []expressionScenario{
|
||||
document: `{myFile: "../../examples/thing.yml"}`,
|
||||
expression: `load(.myFile)`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::a: apple is included\nb: cool.\n",
|
||||
"D0, P[], (!!map)::a: apple is included\nb: cool.\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -52,7 +52,7 @@ var loadScenarios = []expressionScenario{
|
||||
document: `{something: {file: "thing.yml"}}`,
|
||||
expression: `.something |= load("../../examples/" + .file)`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::{something: {a: apple is included, b: cool.}}\n",
|
||||
"D0, P[], (!!map)::{something: {a: apple is included, b: cool.}}\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -61,7 +61,7 @@ var loadScenarios = []expressionScenario{
|
||||
document: `{something: {file: "thing.yml"}, over: {here: [{file: "thing.yml"}]}}`,
|
||||
expression: `(.. | select(has("file"))) |= load("../../examples/" + .file)`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::{something: {a: apple is included, b: cool.}, over: {here: [{a: apple is included, b: cool.}]}}\n",
|
||||
"D0, P[], (!!map)::{something: {a: apple is included, b: cool.}, over: {here: [{a: apple is included, b: cool.}]}}\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -70,7 +70,7 @@ var loadScenarios = []expressionScenario{
|
||||
document: `{something: {file: "thing.yml"}}`,
|
||||
expression: `.something |= load_str("../../examples/" + .file)`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::{something: \"a: apple is included\\nb: cool.\"}\n",
|
||||
"D0, P[], (!!map)::{something: \"a: apple is included\\nb: cool.\"}\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -79,7 +79,7 @@ var loadScenarios = []expressionScenario{
|
||||
document: "cool: things",
|
||||
expression: `.more_stuff = load_xml("../../examples/small.xml")`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::cool: things\nmore_stuff:\n this: is some xml\n",
|
||||
"D0, P[], (!!map)::cool: things\nmore_stuff:\n this: is some xml\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -87,7 +87,7 @@ var loadScenarios = []expressionScenario{
|
||||
document: "cool: things",
|
||||
expression: `.more_stuff = load_props("../../examples/small.properties")`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::cool: things\nmore_stuff:\n this:\n is: a properties file\n",
|
||||
"D0, P[], (!!map)::cool: things\nmore_stuff:\n this:\n is: a properties file\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -104,7 +104,7 @@ var loadScenarios = []expressionScenario{
|
||||
document: "cool: things",
|
||||
expression: `.more_stuff = load_base64("../../examples/base64.txt")`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::cool: things\nmore_stuff: my secret chilli recipe is....\n",
|
||||
"D0, P[], (!!map)::cool: things\nmore_stuff: my secret chilli recipe is....\n",
|
||||
},
|
||||
},
|
||||
}
|
||||
|
@ -29,8 +29,8 @@ var mapOperatorScenarios = []expressionScenario{
|
||||
document2: `{x: 10, y: 20, z: 30}`,
|
||||
expression: `map_values(. + 1)`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::{a: 2, b: 3, c: 4}\n",
|
||||
"D0, P[], (doc)::{x: 11, y: 21, z: 31}\n",
|
||||
"D0, P[], (!!map)::{a: 2, b: 3, c: 4}\n",
|
||||
"D0, P[], (!!map)::{x: 11, y: 21, z: 31}\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -38,7 +38,7 @@ var mapOperatorScenarios = []expressionScenario{
|
||||
document: `{a: 1, b: 2, c: 3}`,
|
||||
expression: `map_values(. + 1)`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::{a: 2, b: 3, c: 4}\n",
|
||||
"D0, P[], (!!map)::{a: 2, b: 3, c: 4}\n",
|
||||
},
|
||||
},
|
||||
}
|
||||
|
@ -19,7 +19,7 @@ var moduloOperatorScenarios = []expressionScenario{
|
||||
document: `{}`,
|
||||
expression: "(.a / .b) as $x | .",
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::{}\n",
|
||||
"D0, P[], (!!map)::{}\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -28,7 +28,7 @@ var moduloOperatorScenarios = []expressionScenario{
|
||||
document: `{a: 13, b: 2}`,
|
||||
expression: `.a = .a % .b`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::{a: 1, b: 2}\n",
|
||||
"D0, P[], (!!map)::{a: 1, b: 2}\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -37,7 +37,7 @@ var moduloOperatorScenarios = []expressionScenario{
|
||||
document: `{a: 12, b: 2.5}`,
|
||||
expression: `.a = .a % .b`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::{a: !!float 2, b: 2.5}\n",
|
||||
"D0, P[], (!!map)::{a: !!float 2, b: 2.5}\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -53,7 +53,7 @@ var moduloOperatorScenarios = []expressionScenario{
|
||||
document: `{a: 1.1, b: 0}`,
|
||||
expression: `.a = .a % .b`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::{a: !!float NaN, b: 0}\n",
|
||||
"D0, P[], (!!map)::{a: !!float NaN, b: 0}\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -62,7 +62,7 @@ var moduloOperatorScenarios = []expressionScenario{
|
||||
document: "a: !horse 333.975\nb: !goat 299.2",
|
||||
expression: `.a = .a % .b`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::a: !horse 34.775000000000034\nb: !goat 299.2\n",
|
||||
"D0, P[], (!!map)::a: !horse 34.775000000000034\nb: !goat 299.2\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -70,7 +70,7 @@ var moduloOperatorScenarios = []expressionScenario{
|
||||
document: "a: 2\nb: !goat 2.3",
|
||||
expression: `.a = .a % .b`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::a: !!float 2\nb: !goat 2.3\n",
|
||||
"D0, P[], (!!map)::a: !!float 2\nb: !goat 2.3\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -79,7 +79,7 @@ var moduloOperatorScenarios = []expressionScenario{
|
||||
document: "a: &horse [1]",
|
||||
expression: `.a[1] = .a[0] % 2`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::a: &horse [1, 1]\n",
|
||||
"D0, P[], (!!map)::a: &horse [1, 1]\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
|
@ -171,7 +171,7 @@ var multiplyOperatorScenarios = []expressionScenario{
|
||||
document: "a: 3\nb: 4",
|
||||
expression: `.a *= .b`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::a: 12\nb: 4\n",
|
||||
"D0, P[], (!!map)::a: 12\nb: 4\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -435,7 +435,7 @@ var multiplyOperatorScenarios = []expressionScenario{
|
||||
environmentVariables: map[string]string{"originalPath": ".myArray", "otherPath": ".newArray", "idPath": ".a"},
|
||||
expression: mergeExpression,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::{myArray: [{a: apple, b: appleB2}, {a: kiwi, b: kiwiB}, {a: banana, b: bananaB, c: bananaC}, {a: dingo, c: dingoC}], something: else}\n",
|
||||
"D0, P[], (!!map)::{myArray: [{a: apple, b: appleB2}, {a: kiwi, b: kiwiB}, {a: banana, b: bananaB, c: bananaC}, {a: dingo, c: dingoC}], something: else}\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -484,7 +484,7 @@ var multiplyOperatorScenarios = []expressionScenario{
|
||||
document: "a: !horse 2\nb: !goat 3",
|
||||
expression: ".a = .a * .b",
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::a: !horse 6\nb: !goat 3\n",
|
||||
"D0, P[], (!!map)::a: !horse 6\nb: !goat 3\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -493,7 +493,7 @@ var multiplyOperatorScenarios = []expressionScenario{
|
||||
document: "a: !horse 2.5\nb: !goat 3.5",
|
||||
expression: ".a = .a * .b",
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::a: !horse 8.75\nb: !goat 3.5\n",
|
||||
"D0, P[], (!!map)::a: !horse 8.75\nb: !goat 3.5\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -502,7 +502,7 @@ var multiplyOperatorScenarios = []expressionScenario{
|
||||
document: "a: 2\nb: !goat 3.5",
|
||||
expression: ".a = .a * .b",
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::a: !!float 7\nb: !goat 3.5\n",
|
||||
"D0, P[], (!!map)::a: !!float 7\nb: !goat 3.5\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -511,7 +511,7 @@ var multiplyOperatorScenarios = []expressionScenario{
|
||||
document: "a: !horse [1,2]\nb: !goat [3]",
|
||||
expression: ".a = .a * .b",
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::a: !horse [3]\nb: !goat [3]\n",
|
||||
"D0, P[], (!!map)::a: !horse [3]\nb: !goat [3]\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -520,7 +520,7 @@ var multiplyOperatorScenarios = []expressionScenario{
|
||||
document: "a: !horse {cat: meow}\nb: !goat {dog: woof}",
|
||||
expression: ".a = .a * .b",
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::a: !horse {cat: meow, dog: woof}\nb: !goat {dog: woof}\n",
|
||||
"D0, P[], (!!map)::a: !horse {cat: meow, dog: woof}\nb: !goat {dog: woof}\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -529,7 +529,7 @@ var multiplyOperatorScenarios = []expressionScenario{
|
||||
document: "a: !horse {cat: meow}\nb: !goat {dog: woof}",
|
||||
expression: ".a *=c .b",
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::a: !goat {cat: meow, dog: woof}\nb: !goat {dog: woof}\n",
|
||||
"D0, P[], (!!map)::a: !goat {cat: meow, dog: woof}\nb: !goat {dog: woof}\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -539,7 +539,7 @@ var multiplyOperatorScenarios = []expressionScenario{
|
||||
document: "a: !horse {cat: meow}\nb: !goat {dog: woof}",
|
||||
expression: ".a =c .a *c .b",
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::a: !goat {cat: meow, dog: woof}\nb: !goat {dog: woof}\n",
|
||||
"D0, P[], (!!map)::a: !goat {cat: meow, dog: woof}\nb: !goat {dog: woof}\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -549,7 +549,7 @@ var multiplyOperatorScenarios = []expressionScenario{
|
||||
document: "a: !horse {cat: meow}\nb: !goat {dog: woof}",
|
||||
expression: ".a *= .b",
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::a: !horse {cat: meow, dog: woof}\nb: !goat {dog: woof}\n",
|
||||
"D0, P[], (!!map)::a: !horse {cat: meow, dog: woof}\nb: !goat {dog: woof}\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -558,7 +558,7 @@ var multiplyOperatorScenarios = []expressionScenario{
|
||||
document: "a: {cat: !horse meow}\nb: {cat: 5}",
|
||||
expression: ".a = .a * .b",
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::a: {cat: !horse 5}\nb: {cat: 5}\n",
|
||||
"D0, P[], (!!map)::a: {cat: !horse 5}\nb: {cat: 5}\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -567,7 +567,7 @@ var multiplyOperatorScenarios = []expressionScenario{
|
||||
document: "a: {a: original}\n",
|
||||
expression: `.a *=n load("../../examples/thing.yml")`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::a: {a: original, b: cool.}\n",
|
||||
"D0, P[], (!!map)::a: {a: original, b: cool.}\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -576,7 +576,7 @@ var multiplyOperatorScenarios = []expressionScenario{
|
||||
document: "a: {a: original}\n",
|
||||
expression: `.a *= load("../../examples/thing.yml")`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::a: {a: apple is included, b: cool.}\n",
|
||||
"D0, P[], (!!map)::a: {a: apple is included, b: cool.}\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
|
@ -78,7 +78,7 @@ var pathOperatorScenarios = []expressionScenario{
|
||||
document: `{a: {b: cat}}`,
|
||||
expression: `setpath(["a", "b"]; "things")`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::{a: {b: things}}\n",
|
||||
"D0, P[], (!!map)::{a: {b: things}}\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -102,7 +102,7 @@ var pathOperatorScenarios = []expressionScenario{
|
||||
document: `a: [cat, frog]`,
|
||||
expression: `setpath(["a", 0]; "things")`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::a: [things, frog]\n",
|
||||
"D0, P[], (!!map)::a: [things, frog]\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -118,7 +118,7 @@ var pathOperatorScenarios = []expressionScenario{
|
||||
document: `{a: {b: cat, c: dog, d: frog}}`,
|
||||
expression: `delpaths([["a", "c"], ["a", "d"]])`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::{a: {b: cat}}\n",
|
||||
"D0, P[], (!!map)::{a: {b: cat}}\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -126,7 +126,7 @@ var pathOperatorScenarios = []expressionScenario{
|
||||
document: `a: [cat, frog]`,
|
||||
expression: `delpaths([["a", 0]])`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::a: [frog]\n",
|
||||
"D0, P[], (!!map)::a: [frog]\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
|
@ -11,7 +11,7 @@ var pickOperatorScenarios = []expressionScenario{
|
||||
document: "myMap: {cat: meow, dog: bark, thing: hamster, hamster: squeek}\n",
|
||||
expression: `.myMap |= pick(["hamster", "cat", "goat"])`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::myMap: {hamster: squeek, cat: meow}\n",
|
||||
"D0, P[], (!!map)::myMap: {hamster: squeek, cat: meow}\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -20,7 +20,7 @@ var pickOperatorScenarios = []expressionScenario{
|
||||
document: "!things myMap: {cat: meow, dog: bark, thing: hamster, hamster: squeek}\n",
|
||||
expression: `.myMap |= pick(["hamster", "cat", "goat"])`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::!things myMap: {hamster: squeek, cat: meow}\n",
|
||||
"D0, P[], (!!map)::!things myMap: {hamster: squeek, cat: meow}\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -29,7 +29,7 @@ var pickOperatorScenarios = []expressionScenario{
|
||||
document: "# abc\nmyMap: {cat: meow, dog: bark, thing: hamster, hamster: squeek}\n# xyz\n",
|
||||
expression: `.myMap |= pick(["hamster", "cat", "goat"])`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::# abc\nmyMap: {hamster: squeek, cat: meow}\n# xyz\n",
|
||||
"D0, P[], (!!map)::# abc\nmyMap: {hamster: squeek, cat: meow}\n# xyz\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
|
@ -18,7 +18,7 @@ var pipeOperatorScenarios = []expressionScenario{
|
||||
document: `{a: cow, b: sheep, c: same}`,
|
||||
expression: `.a = "cat" | .b = "dog"`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::{a: cat, b: dog, c: same}\n",
|
||||
"D0, P[], (!!map)::{a: cat, b: dog, c: same}\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
|
@ -25,11 +25,6 @@ func recursiveDecent(results *list.List, context Context, preferences recursiveD
|
||||
for el := context.MatchingNodes.Front(); el != nil; el = el.Next() {
|
||||
candidate := el.Value.(*CandidateNode)
|
||||
|
||||
if candidate.Kind == DocumentNode {
|
||||
results.PushBack(candidate)
|
||||
candidate = candidate.unwrapDocument()
|
||||
}
|
||||
|
||||
log.Debugf("Recursive Decent, added %v", NodeToString(candidate))
|
||||
results.PushBack(candidate)
|
||||
|
||||
|
@ -10,7 +10,7 @@ var recursiveDescentOperatorScenarios = []expressionScenario{
|
||||
document: `{}`,
|
||||
expression: `..`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::{}\n",
|
||||
"D0, P[], (!!map)::{}\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -18,7 +18,7 @@ var recursiveDescentOperatorScenarios = []expressionScenario{
|
||||
document: `{}`,
|
||||
expression: `...`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::{}\n",
|
||||
"D0, P[], (!!map)::{}\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -26,7 +26,7 @@ var recursiveDescentOperatorScenarios = []expressionScenario{
|
||||
document: `[]`,
|
||||
expression: `..`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::[]\n",
|
||||
"D0, P[], (!!seq)::[]\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -34,7 +34,7 @@ var recursiveDescentOperatorScenarios = []expressionScenario{
|
||||
document: `[]`,
|
||||
expression: `...`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::[]\n",
|
||||
"D0, P[], (!!seq)::[]\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -42,7 +42,7 @@ var recursiveDescentOperatorScenarios = []expressionScenario{
|
||||
document: `cat`,
|
||||
expression: `..`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::cat\n",
|
||||
"D0, P[], (!!str)::cat\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -50,7 +50,7 @@ var recursiveDescentOperatorScenarios = []expressionScenario{
|
||||
document: `cat`,
|
||||
expression: `...`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::cat\n",
|
||||
"D0, P[], (!!str)::cat\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -58,7 +58,7 @@ var recursiveDescentOperatorScenarios = []expressionScenario{
|
||||
document: `{a: frog}`,
|
||||
expression: `..`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::{a: frog}\n",
|
||||
"D0, P[], (!!map)::{a: frog}\n",
|
||||
"D0, P[a], (!!str)::frog\n",
|
||||
},
|
||||
},
|
||||
@ -86,7 +86,7 @@ var recursiveDescentOperatorScenarios = []expressionScenario{
|
||||
document: `{a: frog}`,
|
||||
expression: `...`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::{a: frog}\n",
|
||||
"D0, P[], (!!map)::{a: frog}\n",
|
||||
"D0, P[a], (!!str)::a\n",
|
||||
"D0, P[a], (!!str)::frog\n",
|
||||
},
|
||||
@ -96,7 +96,7 @@ var recursiveDescentOperatorScenarios = []expressionScenario{
|
||||
document: `{a: {b: apple}}`,
|
||||
expression: `..`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::{a: {b: apple}}\n",
|
||||
"D0, P[], (!!map)::{a: {b: apple}}\n",
|
||||
"D0, P[a], (!!map)::{b: apple}\n",
|
||||
"D0, P[a b], (!!str)::apple\n",
|
||||
},
|
||||
@ -106,7 +106,7 @@ var recursiveDescentOperatorScenarios = []expressionScenario{
|
||||
document: `{a: {b: apple}}`,
|
||||
expression: `...`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::{a: {b: apple}}\n",
|
||||
"D0, P[], (!!map)::{a: {b: apple}}\n",
|
||||
"D0, P[a], (!!str)::a\n",
|
||||
"D0, P[a], (!!map)::{b: apple}\n",
|
||||
"D0, P[a b], (!!str)::b\n",
|
||||
@ -118,7 +118,7 @@ var recursiveDescentOperatorScenarios = []expressionScenario{
|
||||
document: `[1,2,3]`,
|
||||
expression: `..`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::[1, 2, 3]\n",
|
||||
"D0, P[], (!!seq)::[1, 2, 3]\n",
|
||||
"D0, P[0], (!!int)::1\n",
|
||||
"D0, P[1], (!!int)::2\n",
|
||||
"D0, P[2], (!!int)::3\n",
|
||||
@ -129,7 +129,7 @@ var recursiveDescentOperatorScenarios = []expressionScenario{
|
||||
document: `[1,2,3]`,
|
||||
expression: `...`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::[1, 2, 3]\n",
|
||||
"D0, P[], (!!seq)::[1, 2, 3]\n",
|
||||
"D0, P[0], (!!int)::1\n",
|
||||
"D0, P[1], (!!int)::2\n",
|
||||
"D0, P[2], (!!int)::3\n",
|
||||
@ -140,7 +140,7 @@ var recursiveDescentOperatorScenarios = []expressionScenario{
|
||||
document: `[{a: cat},2,true]`,
|
||||
expression: `..`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::[{a: cat}, 2, true]\n",
|
||||
"D0, P[], (!!seq)::[{a: cat}, 2, true]\n",
|
||||
"D0, P[0], (!!map)::{a: cat}\n",
|
||||
"D0, P[0 a], (!!str)::cat\n",
|
||||
"D0, P[1], (!!int)::2\n",
|
||||
@ -152,7 +152,7 @@ var recursiveDescentOperatorScenarios = []expressionScenario{
|
||||
document: `[{a: cat},2,true]`,
|
||||
expression: `...`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::[{a: cat}, 2, true]\n",
|
||||
"D0, P[], (!!seq)::[{a: cat}, 2, true]\n",
|
||||
"D0, P[0], (!!map)::{a: cat}\n",
|
||||
"D0, P[0 a], (!!str)::a\n",
|
||||
"D0, P[0 a], (!!str)::cat\n",
|
||||
@ -173,7 +173,7 @@ var recursiveDescentOperatorScenarios = []expressionScenario{
|
||||
document: `{a: &cat {c: frog}, b: *cat}`,
|
||||
expression: `...`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::{a: &cat {c: frog}, b: *cat}\n",
|
||||
"D0, P[], (!!map)::{a: &cat {c: frog}, b: *cat}\n",
|
||||
"D0, P[a], (!!str)::a\n",
|
||||
"D0, P[a], (!!map)::&cat {c: frog}\n",
|
||||
"D0, P[a c], (!!str)::c\n",
|
||||
|
@ -10,7 +10,7 @@ var selectOperatorScenarios = []expressionScenario{
|
||||
document: `cat`,
|
||||
expression: `select(false, true)`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::cat\n",
|
||||
"D0, P[], (!!str)::cat\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -18,7 +18,7 @@ var selectOperatorScenarios = []expressionScenario{
|
||||
document: `cat`,
|
||||
expression: `select(true, false)`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::cat\n",
|
||||
"D0, P[], (!!str)::cat\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -71,8 +71,8 @@ var selectOperatorScenarios = []expressionScenario{
|
||||
document2: "b: world",
|
||||
expression: `select(.a == "hello" or .b == "world")`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::a: hello\n",
|
||||
"D0, P[], (doc)::b: world\n",
|
||||
"D0, P[], (!!map)::a: hello\n",
|
||||
"D0, P[], (!!map)::b: world\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -81,7 +81,7 @@ var selectOperatorScenarios = []expressionScenario{
|
||||
document: `[{animal: cat, legs: {cool: true}}, {animal: fish}]`,
|
||||
expression: `(.[] | select(.legs.cool == true).canWalk) = true | (.[] | .alive.things) = "yes"`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::[{animal: cat, legs: {cool: true}, canWalk: true, alive: {things: yes}}, {animal: fish, alive: {things: yes}}]\n",
|
||||
"D0, P[], (!!seq)::[{animal: cat, legs: {cool: true}, canWalk: true, alive: {things: yes}}, {animal: fish, alive: {things: yes}}]\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -121,7 +121,7 @@ var selectOperatorScenarios = []expressionScenario{
|
||||
document: `a: { things: cat, bob: goat, horse: dog }`,
|
||||
expression: `(.a.[] | select(. == "cat" or . == "goat")) |= "rabbit"`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::a: {things: rabbit, bob: rabbit, horse: dog}\n",
|
||||
"D0, P[], (!!map)::a: {things: rabbit, bob: rabbit, horse: dog}\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
|
@ -17,7 +17,7 @@ var shuffleOperatorScenarios = []expressionScenario{
|
||||
document: "cool: [1, 2, 3, 4, 5]",
|
||||
expression: `.cool |= shuffle`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::cool: [5, 2, 4, 1, 3]\n",
|
||||
"D0, P[], (!!map)::cool: [5, 2, 4, 1, 3]\n",
|
||||
},
|
||||
},
|
||||
}
|
||||
|
@ -10,7 +10,7 @@ var sortKeysOperatorScenarios = []expressionScenario{
|
||||
document: `{c: frog, a: blah, b: bing}`,
|
||||
expression: `sort_keys(.)`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::{a: blah, b: bing, c: frog}\n",
|
||||
"D0, P[], (!!map)::{a: blah, b: bing, c: frog}\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -18,7 +18,7 @@ var sortKeysOperatorScenarios = []expressionScenario{
|
||||
document: `{c: frog}`,
|
||||
expression: `sort_keys(.d)`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::{c: frog}\n",
|
||||
"D0, P[], (!!map)::{c: frog}\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -27,7 +27,7 @@ var sortKeysOperatorScenarios = []expressionScenario{
|
||||
document: `{bParent: {c: dog, array: [3,1,2]}, aParent: {z: donkey, x: [{c: yum, b: delish}, {b: ew, a: apple}]}}`,
|
||||
expression: `sort_keys(..)`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::{aParent: {x: [{b: delish, c: yum}, {a: apple, b: ew}], z: donkey}, bParent: {array: [3, 1, 2], c: dog}}\n",
|
||||
"D0, P[], (!!map)::{aParent: {x: [{b: delish, c: yum}, {a: apple, b: ew}], z: donkey}, bParent: {array: [3, 1, 2], c: dog}}\n",
|
||||
},
|
||||
},
|
||||
}
|
||||
|
@ -51,7 +51,7 @@ var sortByOperatorScenarios = []expressionScenario{
|
||||
document: "cool: [{a: banana},{a: cat},{a: apple}]",
|
||||
expression: `.cool |= sort_by(.a)`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::cool: [{a: apple}, {a: banana}, {a: cat}]\n",
|
||||
"D0, P[], (!!map)::cool: [{a: apple}, {a: banana}, {a: cat}]\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -60,7 +60,7 @@ var sortByOperatorScenarios = []expressionScenario{
|
||||
document: "cool: [{b: banana},{a: banana},{c: banana}]",
|
||||
expression: `.cool |= sort_by(keys | .[0])`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::cool: [{a: banana}, {b: banana}, {c: banana}]\n",
|
||||
"D0, P[], (!!map)::cool: [{a: banana}, {b: banana}, {c: banana}]\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
|
@ -209,7 +209,7 @@ var stringsOperatorScenarios = []expressionScenario{
|
||||
document: `a: dogs are great`,
|
||||
expression: `.a |= sub("dogs", "cats")`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::a: cats are great\n",
|
||||
"D0, P[], (!!map)::a: cats are great\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -218,7 +218,7 @@ var stringsOperatorScenarios = []expressionScenario{
|
||||
document: "a: cat\nb: heat",
|
||||
expression: `.[] |= sub("(a)", "${1}r")`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::a: cart\nb: heart\n",
|
||||
"D0, P[], (!!map)::a: cart\nb: heart\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -227,7 +227,7 @@ var stringsOperatorScenarios = []expressionScenario{
|
||||
document: "a: !horse cat\nb: !goat heat",
|
||||
expression: `.[] |= sub("(a)", "${1}r")`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::a: !horse cart\nb: !goat heart\n",
|
||||
"D0, P[], (!!map)::a: !horse cart\nb: !goat heart\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
|
@ -10,7 +10,7 @@ var styleOperatorScenarios = []expressionScenario{
|
||||
document: `a: {b: thing, c: something}`,
|
||||
expression: `.a.b = "new" | .a.b style="double"`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::a: {b: \"new\", c: something}\n",
|
||||
"D0, P[], (!!map)::a: {b: \"new\", c: something}\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -18,7 +18,7 @@ var styleOperatorScenarios = []expressionScenario{
|
||||
document: `a: {b: thing, c: something}`,
|
||||
expression: `with(.a.b ; . = "new" | . style="double")`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::a: {b: \"new\", c: something}\n",
|
||||
"D0, P[], (!!map)::a: {b: \"new\", c: something}\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -26,7 +26,7 @@ var styleOperatorScenarios = []expressionScenario{
|
||||
document: `{a: cat, b: 5, c: 3.2, e: true}`,
|
||||
expression: `.. style="tagged"`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::!!map\na: !!str cat\nb: !!int 5\nc: !!float 3.2\ne: !!bool true\n",
|
||||
"D0, P[], (!!map)::!!map\na: !!str cat\nb: !!int 5\nc: !!float 3.2\ne: !!bool true\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -34,7 +34,7 @@ var styleOperatorScenarios = []expressionScenario{
|
||||
document: `{a: cat, b: 5, c: 3.2, e: true}`,
|
||||
expression: `.. style="double"`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::a: \"cat\"\nb: \"5\"\nc: \"3.2\"\ne: \"true\"\n",
|
||||
"D0, P[], (!!map)::a: \"cat\"\nb: \"5\"\nc: \"3.2\"\ne: \"true\"\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -42,7 +42,7 @@ var styleOperatorScenarios = []expressionScenario{
|
||||
document: `{a: cat, b: 5, c: 3.2, e: true}`,
|
||||
expression: `... style="double"`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::\"a\": \"cat\"\n\"b\": \"5\"\n\"c\": \"3.2\"\n\"e\": \"true\"\n",
|
||||
"D0, P[], (!!map)::\"a\": \"cat\"\n\"b\": \"5\"\n\"c\": \"3.2\"\n\"e\": \"true\"\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -50,7 +50,7 @@ var styleOperatorScenarios = []expressionScenario{
|
||||
document: "bing: &foo frog\na:\n c: cat\n <<: [*foo]",
|
||||
expression: `(... | select(tag=="!!str")) style="single"`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::'bing': &foo 'frog'\n'a':\n 'c': 'cat'\n !!merge <<: [*foo]\n",
|
||||
"D0, P[], (!!map)::'bing': &foo 'frog'\n'a':\n 'c': 'cat'\n !!merge <<: [*foo]\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -58,7 +58,7 @@ var styleOperatorScenarios = []expressionScenario{
|
||||
document: `{a: cat, b: 5, c: 3.2, e: true}`,
|
||||
expression: `.. style="single"`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::a: 'cat'\nb: '5'\nc: '3.2'\ne: 'true'\n",
|
||||
"D0, P[], (!!map)::a: 'cat'\nb: '5'\nc: '3.2'\ne: 'true'\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -66,7 +66,7 @@ var styleOperatorScenarios = []expressionScenario{
|
||||
document: `{a: cat, b: 5, c: 3.2, e: true}`,
|
||||
expression: `.. style="literal"`,
|
||||
expected: []string{
|
||||
`D0, P[], (doc)::a: |-
|
||||
`D0, P[], (!!map)::a: |-
|
||||
cat
|
||||
b: |-
|
||||
5
|
||||
@ -82,7 +82,7 @@ e: |-
|
||||
document: `{a: cat, b: 5, c: 3.2, e: true}`,
|
||||
expression: `.. style="folded"`,
|
||||
expected: []string{
|
||||
`D0, P[], (doc)::a: >-
|
||||
`D0, P[], (!!map)::a: >-
|
||||
cat
|
||||
b: >-
|
||||
5
|
||||
@ -98,7 +98,7 @@ e: >-
|
||||
document: `{a: cat, b: 5, c: 3.2, e: true}`,
|
||||
expression: `.. style="flow"`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::{a: cat, b: 5, c: 3.2, e: true}\n",
|
||||
"D0, P[], (!!map)::{a: cat, b: 5, c: 3.2, e: true}\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -107,7 +107,7 @@ e: >-
|
||||
document: `{a: cat, "b": 5, 'c': 3.2, "e": true}`,
|
||||
expression: `... style=""`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::a: cat\nb: 5\nc: 3.2\ne: true\n",
|
||||
"D0, P[], (!!map)::a: cat\nb: 5\nc: 3.2\ne: true\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -115,7 +115,7 @@ e: >-
|
||||
document: `{a: single, b: double}`,
|
||||
expression: `.[] style |= .`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::{a: 'single', b: \"double\"}\n",
|
||||
"D0, P[], (!!map)::{a: 'single', b: \"double\"}\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -123,7 +123,7 @@ e: >-
|
||||
document: `{a: cat, b: double}`,
|
||||
expression: `.a style=.b`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::{a: \"cat\", b: double}\n",
|
||||
"D0, P[], (!!map)::{a: \"cat\", b: double}\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
|
@ -10,7 +10,7 @@ var subtractOperatorScenarios = []expressionScenario{
|
||||
document: `{}`,
|
||||
expression: "(.a - .b) as $x | .",
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::{}\n",
|
||||
"D0, P[], (!!map)::{}\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -64,7 +64,7 @@ var subtractOperatorScenarios = []expressionScenario{
|
||||
document: `{a: 3, b: 4.5}`,
|
||||
expression: `.a = .a - .b`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::{a: -1.5, b: 4.5}\n",
|
||||
"D0, P[], (!!map)::{a: -1.5, b: 4.5}\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -73,7 +73,7 @@ var subtractOperatorScenarios = []expressionScenario{
|
||||
document: `{a: 3, b: 4}`,
|
||||
expression: `.a = .a - .b`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::{a: -1, b: 4}\n",
|
||||
"D0, P[], (!!map)::{a: -1, b: 4}\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -81,7 +81,7 @@ var subtractOperatorScenarios = []expressionScenario{
|
||||
document: `{a: 3, b: 5}`,
|
||||
expression: `.[] -= 1`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::{a: 2, b: 4}\n",
|
||||
"D0, P[], (!!map)::{a: 2, b: 4}\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -90,7 +90,7 @@ var subtractOperatorScenarios = []expressionScenario{
|
||||
document: `a: 2021-01-01T03:10:00Z`,
|
||||
expression: `.a -= "3h10m"`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::a: 2021-01-01T00:00:00Z\n",
|
||||
"D0, P[], (!!map)::a: 2021-01-01T00:00:00Z\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -99,7 +99,7 @@ var subtractOperatorScenarios = []expressionScenario{
|
||||
document: `a: 2021-01-01`,
|
||||
expression: `.a -= "24h"`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::a: 2020-12-31T00:00:00Z\n",
|
||||
"D0, P[], (!!map)::a: 2020-12-31T00:00:00Z\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -108,7 +108,7 @@ var subtractOperatorScenarios = []expressionScenario{
|
||||
document: `a: Saturday, 15-Dec-01 at 6:00AM GMT`,
|
||||
expression: `with_dtf("Monday, 02-Jan-06 at 3:04PM MST", .a -= "3h1m")`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::a: Saturday, 15-Dec-01 at 2:59AM GMT\n",
|
||||
"D0, P[], (!!map)::a: Saturday, 15-Dec-01 at 2:59AM GMT\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -118,7 +118,7 @@ var subtractOperatorScenarios = []expressionScenario{
|
||||
document: `a: !cat Saturday, 15-Dec-01 at 6:00AM GMT`,
|
||||
expression: `with_dtf("Monday, 02-Jan-06 at 3:04PM MST", .a -= "3h1m")`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::a: !cat Saturday, 15-Dec-01 at 2:59AM GMT\n",
|
||||
"D0, P[], (!!map)::a: !cat Saturday, 15-Dec-01 at 2:59AM GMT\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -127,7 +127,7 @@ var subtractOperatorScenarios = []expressionScenario{
|
||||
document: "a: !horse 2\nb: !goat 1",
|
||||
expression: `.a -= .b`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::a: !horse 1\nb: !goat 1\n",
|
||||
"D0, P[], (!!map)::a: !horse 1\nb: !goat 1\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
|
@ -54,7 +54,7 @@ var tagOperatorScenarios = []expressionScenario{
|
||||
document: `32`,
|
||||
expression: `. tag= "!!str"`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::\"32\"\n",
|
||||
"D0, P[], (!!str)::32\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -62,7 +62,7 @@ var tagOperatorScenarios = []expressionScenario{
|
||||
document: `{a: str}`,
|
||||
expression: `.a tag = "!!mikefarah"`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::{a: !!mikefarah str}\n",
|
||||
"D0, P[], (!!map)::{a: !!mikefarah str}\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -71,7 +71,7 @@ var tagOperatorScenarios = []expressionScenario{
|
||||
document: `{a: str}`,
|
||||
expression: `.a type = "!!mikefarah"`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::{a: !!mikefarah str}\n",
|
||||
"D0, P[], (!!map)::{a: !!mikefarah str}\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -79,7 +79,7 @@ var tagOperatorScenarios = []expressionScenario{
|
||||
document: `{a: cat, b: 5, c: 3.2, e: true}`,
|
||||
expression: `(.. | select(tag == "!!int")) tag= "!!str"`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::{a: cat, b: \"5\", c: 3.2, e: true}\n",
|
||||
"D0, P[], (!!map)::{a: cat, b: \"5\", c: 3.2, e: true}\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -87,7 +87,7 @@ var tagOperatorScenarios = []expressionScenario{
|
||||
document: `{a: "!!frog", b: "!!customTag"}`,
|
||||
expression: `.[] tag |= .`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::{a: !!frog \"!!frog\", b: !!customTag \"!!customTag\"}\n",
|
||||
"D0, P[], (!!map)::{a: !!frog \"!!frog\", b: !!customTag \"!!customTag\"}\n",
|
||||
},
|
||||
},
|
||||
}
|
||||
|
@ -64,10 +64,6 @@ func traverse(context Context, matchingNode *CandidateNode, operation *Operation
|
||||
log.Debug("its an alias!")
|
||||
matchingNode = matchingNode.Alias
|
||||
return traverse(context, matchingNode, operation)
|
||||
case DocumentNode:
|
||||
log.Debug("digging into doc node")
|
||||
|
||||
return traverse(context, matchingNode.Content[0], operation)
|
||||
default:
|
||||
return list.New(), nil
|
||||
}
|
||||
@ -146,8 +142,6 @@ func traverseArrayIndices(context Context, matchingNode *CandidateNode, indicesT
|
||||
return traverseArrayWithIndices(matchingNode, indicesToTraverse, prefs)
|
||||
} else if matchingNode.Kind == MappingNode {
|
||||
return traverseMapWithIndices(context, matchingNode, indicesToTraverse, prefs)
|
||||
} else if matchingNode.Kind == DocumentNode {
|
||||
return traverseArrayIndices(context, matchingNode.Content[0], indicesToTraverse, prefs)
|
||||
}
|
||||
log.Debugf("OperatorArrayTraverse skipping %v as its a %v", matchingNode, matchingNode.Tag)
|
||||
return list.New(), nil
|
||||
|
@ -86,7 +86,7 @@ var traversePathOperatorScenarios = []expressionScenario{
|
||||
document: `blah: {}`,
|
||||
expression: `.blah.cat = "cool"`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::blah:\n cat: cool\n",
|
||||
"D0, P[], (!!map)::blah:\n cat: cool\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -94,7 +94,7 @@ var traversePathOperatorScenarios = []expressionScenario{
|
||||
document: `blah: []`,
|
||||
expression: `.blah.0 = "cool"`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::blah:\n - cool\n",
|
||||
"D0, P[], (!!map)::blah:\n - cool\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -184,7 +184,7 @@ var traversePathOperatorScenarios = []expressionScenario{
|
||||
document: `c: dog`,
|
||||
expression: `.[.a.b] as $x | .`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::c: dog\n",
|
||||
"D0, P[], (!!map)::c: dog\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -302,15 +302,7 @@ var traversePathOperatorScenarios = []expressionScenario{
|
||||
document: `{a: &cat {c: frog}, b: *cat}`,
|
||||
expression: `.b[]`,
|
||||
expected: []string{
|
||||
"D0, P[b c], (!!str)::frog\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
skipDoc: true,
|
||||
document: `{a: &cat {c: frog}, b: *cat}`,
|
||||
expression: `.b[]`,
|
||||
expected: []string{
|
||||
"D0, P[b c], (!!str)::frog\n",
|
||||
"D0, P[a c], (!!str)::frog\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -318,7 +310,7 @@ var traversePathOperatorScenarios = []expressionScenario{
|
||||
document: `{a: &cat {c: frog}, b: *cat}`,
|
||||
expression: `.b.c`,
|
||||
expected: []string{
|
||||
"D0, P[b c], (!!str)::frog\n",
|
||||
"D0, P[a c], (!!str)::frog\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -367,7 +359,7 @@ var traversePathOperatorScenarios = []expressionScenario{
|
||||
document: mergeDocSample,
|
||||
expression: `.foobar.a`,
|
||||
expected: []string{
|
||||
"D0, P[foobar a], (!!str)::foo_a\n",
|
||||
"D0, P[foo a], (!!str)::foo_a\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -375,7 +367,7 @@ var traversePathOperatorScenarios = []expressionScenario{
|
||||
document: mergeDocSample,
|
||||
expression: `.foobar.c`,
|
||||
expected: []string{
|
||||
"D0, P[foobar c], (!!str)::foo_c\n",
|
||||
"D0, P[foo c], (!!str)::foo_c\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -391,18 +383,8 @@ var traversePathOperatorScenarios = []expressionScenario{
|
||||
document: mergeDocSample,
|
||||
expression: `.foobar[]`,
|
||||
expected: []string{
|
||||
"D0, P[foobar c], (!!str)::foo_c\n",
|
||||
"D0, P[foobar a], (!!str)::foo_a\n",
|
||||
"D0, P[foobar thing], (!!str)::foobar_thing\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
skipDoc: true,
|
||||
document: mergeDocSample,
|
||||
expression: `.foobar[]`,
|
||||
expected: []string{
|
||||
"D0, P[foobar c], (!!str)::foo_c\n",
|
||||
"D0, P[foobar a], (!!str)::foo_a\n",
|
||||
"D0, P[foo c], (!!str)::foo_c\n",
|
||||
"D0, P[foo a], (!!str)::foo_a\n",
|
||||
"D0, P[foobar thing], (!!str)::foobar_thing\n",
|
||||
},
|
||||
},
|
||||
@ -419,7 +401,7 @@ var traversePathOperatorScenarios = []expressionScenario{
|
||||
document: mergeDocSample,
|
||||
expression: `.foobarList.a`,
|
||||
expected: []string{
|
||||
"D0, P[foobarList a], (!!str)::foo_a\n",
|
||||
"D0, P[foo a], (!!str)::foo_a\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -428,7 +410,7 @@ var traversePathOperatorScenarios = []expressionScenario{
|
||||
document: mergeDocSample,
|
||||
expression: `.foobarList.thing`,
|
||||
expected: []string{
|
||||
"D0, P[foobarList thing], (!!str)::bar_thing\n",
|
||||
"D0, P[bar thing], (!!str)::bar_thing\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -444,7 +426,7 @@ var traversePathOperatorScenarios = []expressionScenario{
|
||||
document: mergeDocSample,
|
||||
expression: `.foobarList.b`,
|
||||
expected: []string{
|
||||
"D0, P[foobarList b], (!!str)::bar_b\n",
|
||||
"D0, P[bar b], (!!str)::bar_b\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -452,20 +434,9 @@ var traversePathOperatorScenarios = []expressionScenario{
|
||||
document: mergeDocSample,
|
||||
expression: `.foobarList[]`,
|
||||
expected: []string{
|
||||
"D0, P[foobarList b], (!!str)::bar_b\n",
|
||||
"D0, P[foobarList a], (!!str)::foo_a\n",
|
||||
"D0, P[foobarList thing], (!!str)::bar_thing\n",
|
||||
"D0, P[foobarList c], (!!str)::foobarList_c\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
skipDoc: true,
|
||||
document: mergeDocSample,
|
||||
expression: `.foobarList[]`,
|
||||
expected: []string{
|
||||
"D0, P[foobarList b], (!!str)::bar_b\n",
|
||||
"D0, P[foobarList a], (!!str)::foo_a\n",
|
||||
"D0, P[foobarList thing], (!!str)::bar_thing\n",
|
||||
"D0, P[bar b], (!!str)::bar_b\n",
|
||||
"D0, P[foo a], (!!str)::foo_a\n",
|
||||
"D0, P[bar thing], (!!str)::bar_thing\n",
|
||||
"D0, P[foobarList c], (!!str)::foobarList_c\n",
|
||||
},
|
||||
},
|
||||
@ -518,15 +489,7 @@ var traversePathOperatorScenarios = []expressionScenario{
|
||||
document: `{a: [a,b,c]}`,
|
||||
expression: `.a[-1]`,
|
||||
expected: []string{
|
||||
"D0, P[a -1], (!!str)::c\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
skipDoc: true,
|
||||
document: `{a: [a,b,c]}`,
|
||||
expression: `.a[-1]`,
|
||||
expected: []string{
|
||||
"D0, P[a -1], (!!str)::c\n",
|
||||
"D0, P[a 2], (!!str)::c\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -534,15 +497,7 @@ var traversePathOperatorScenarios = []expressionScenario{
|
||||
document: `{a: [a,b,c]}`,
|
||||
expression: `.a[-2]`,
|
||||
expected: []string{
|
||||
"D0, P[a -2], (!!str)::b\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
skipDoc: true,
|
||||
document: `{a: [a,b,c]}`,
|
||||
expression: `.a[-2]`,
|
||||
expected: []string{
|
||||
"D0, P[a -2], (!!str)::b\n",
|
||||
"D0, P[a 1], (!!str)::b\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
|
@ -10,7 +10,7 @@ var unionOperatorScenarios = []expressionScenario{
|
||||
document: "{}",
|
||||
expression: `(.a, .b.c) as $x | .`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::{}\n",
|
||||
"D0, P[], (!!map)::{}\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
|
@ -10,7 +10,7 @@ var variableOperatorScenarios = []expressionScenario{
|
||||
document: `{}`,
|
||||
expression: `.a.b as $foo | .`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::{}\n",
|
||||
"D0, P[], (!!map)::{}\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -76,7 +76,7 @@ var variableOperatorScenarios = []expressionScenario{
|
||||
document: "a: a_value\nb: b_value",
|
||||
expression: `.a as $x | .b as $y | .b = $x | .a = $y`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::a: b_value\nb: a_value\n",
|
||||
"D0, P[], (!!map)::a: b_value\nb: a_value\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -85,7 +85,7 @@ var variableOperatorScenarios = []expressionScenario{
|
||||
document: `a: {b: thing, c: something}`,
|
||||
expression: `.a.b ref $x | $x = "new" | $x style="double"`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::a: {b: \"new\", c: something}\n",
|
||||
"D0, P[], (!!map)::a: {b: \"new\", c: something}\n",
|
||||
},
|
||||
},
|
||||
}
|
||||
|
@ -8,7 +8,7 @@ var withOperatorScenarios = []expressionScenario{
|
||||
document: `a: {deeply: {nested: value}}`,
|
||||
expression: `with(.a.deeply.nested; . = "newValue" | . style="single")`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::a: {deeply: {nested: 'newValue'}}\n",
|
||||
"D0, P[], (!!map)::a: {deeply: {nested: 'newValue'}}\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -16,7 +16,7 @@ var withOperatorScenarios = []expressionScenario{
|
||||
document: `a: {deeply: {nested: value, other: thing}}`,
|
||||
expression: `with(.a.deeply; .nested = "newValue" | .other= "newThing")`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::a: {deeply: {nested: newValue, other: newThing}}\n",
|
||||
"D0, P[], (!!map)::a: {deeply: {nested: newValue, other: newThing}}\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -25,7 +25,7 @@ var withOperatorScenarios = []expressionScenario{
|
||||
document: `myArray: [{a: apple},{a: banana}]`,
|
||||
expression: `with(.myArray[]; .b = .a + " yum")`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::myArray: [{a: apple, b: apple yum}, {a: banana, b: banana yum}]\n",
|
||||
"D0, P[], (!!map)::myArray: [{a: apple, b: apple yum}, {a: banana, b: banana yum}]\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -35,7 +35,7 @@ var withOperatorScenarios = []expressionScenario{
|
||||
document: `myArray: [{a: apple},{a: banana}]`,
|
||||
expression: `with(.myArray[]; .a += .a)`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::myArray: [{a: appleapple}, {a: bananabanana}]\n",
|
||||
"D0, P[], (!!map)::myArray: [{a: appleapple}, {a: bananabanana}]\n",
|
||||
},
|
||||
},
|
||||
}
|
||||
|
@ -140,9 +140,7 @@ func resultToString(t *testing.T, n *CandidateNode) string {
|
||||
}
|
||||
|
||||
tag := n.Tag
|
||||
if n.Kind == DocumentNode {
|
||||
tag = "doc"
|
||||
} else if n.Kind == AliasNode {
|
||||
if n.Kind == AliasNode {
|
||||
tag = "alias"
|
||||
}
|
||||
return fmt.Sprintf(`D%v, P%v, (%v)::%v`, n.GetDocument(), n.GetPath(), tag, valueBuffer.String())
|
||||
|
@ -31,13 +31,7 @@ func (s *streamEvaluator) EvaluateNew(expression string, printer Printer) error
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
candidateNode := &CandidateNode{
|
||||
document: 0,
|
||||
filename: "",
|
||||
Kind: DocumentNode,
|
||||
Content: []*CandidateNode{createScalarNode(nil, "")},
|
||||
fileIndex: 0,
|
||||
}
|
||||
candidateNode := createScalarNode(nil, "")
|
||||
inputList := list.New()
|
||||
inputList.PushBack(candidateNode)
|
||||
|
||||
|
@ -61,7 +61,7 @@ var yamlParseScenarios = []expressionScenario{
|
||||
{
|
||||
document: `a: hello # things`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::a: hello # things\n",
|
||||
"D0, P[], (!!map)::a: hello # things\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -74,13 +74,13 @@ var yamlParseScenarios = []expressionScenario{
|
||||
{
|
||||
document: `a: [1,2]`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::a: [1, 2]\n",
|
||||
"D0, P[], (!!map)::a: [1, 2]\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
document: `a: !horse [a]`,
|
||||
expected: []string{
|
||||
"D0, P[], (doc)::a: !horse [a]\n",
|
||||
"D0, P[], (!!map)::a: !horse [a]\n",
|
||||
},
|
||||
},
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user