From b2415f2ca5ded6a048b92d149b62594e8f812aaa Mon Sep 17 00:00:00 2001 From: Mike Farah Date: Mon, 5 Jun 2023 15:27:59 -0700 Subject: [PATCH] Drop document type --- pkg/yqlib/all_at_once_evaluator.go | 9 +-- pkg/yqlib/all_at_once_evaluator_test.go | 2 +- pkg/yqlib/candidate_node.go | 9 +-- pkg/yqlib/candidate_node_yaml.go | 50 ++++++------ pkg/yqlib/candidiate_node_json.go | 8 +- pkg/yqlib/decoder_csv_object.go | 5 +- pkg/yqlib/decoder_json.go | 5 +- pkg/yqlib/decoder_properties.go | 5 +- pkg/yqlib/decoder_toml.go | 5 +- pkg/yqlib/decoder_xml.go | 5 +- pkg/yqlib/decoder_yaml.go | 17 ++-- pkg/yqlib/doc/operators/comment-operators.md | 11 --- .../doc/operators/recursive-descent-glob.md | 5 -- pkg/yqlib/encoder_properties.go | 2 - pkg/yqlib/encoder_shellvariables.go | 2 - pkg/yqlib/encoder_xml.go | 17 ---- pkg/yqlib/json_test.go | 2 +- pkg/yqlib/lib.go | 6 +- pkg/yqlib/operator_add_test.go | 54 ++++++------- pkg/yqlib/operator_alternative_test.go | 6 +- pkg/yqlib/operator_anchors_aliases.go | 2 +- pkg/yqlib/operator_anchors_aliases_test.go | 30 +++---- pkg/yqlib/operator_array_to_map_test.go | 2 +- pkg/yqlib/operator_assign_test.go | 50 ++++++------ pkg/yqlib/operator_booleans_test.go | 14 ++-- pkg/yqlib/operator_collect_object_test.go | 2 +- pkg/yqlib/operator_comments.go | 2 +- pkg/yqlib/operator_comments_test.go | 34 ++++---- pkg/yqlib/operator_datetime_test.go | 22 +++--- pkg/yqlib/operator_delete.go | 15 +--- pkg/yqlib/operator_delete_test.go | 24 +++--- pkg/yqlib/operator_divide_test.go | 18 ++--- pkg/yqlib/operator_document_index_test.go | 4 +- pkg/yqlib/operator_encoder_decoder_test.go | 34 ++++---- pkg/yqlib/operator_env_test.go | 6 +- pkg/yqlib/operator_equals_test.go | 12 +-- pkg/yqlib/operator_error_test.go | 2 +- pkg/yqlib/operator_eval_test.go | 2 +- pkg/yqlib/operator_file_test.go | 2 +- pkg/yqlib/operator_flatten_test.go | 8 +- pkg/yqlib/operator_has_test.go | 2 +- pkg/yqlib/operator_keys_test.go | 2 +- pkg/yqlib/operator_load_test.go | 18 ++--- pkg/yqlib/operator_map_test.go | 6 +- pkg/yqlib/operator_modulo_test.go | 14 ++-- pkg/yqlib/operator_multiply_test.go | 26 +++--- pkg/yqlib/operator_path_test.go | 8 +- pkg/yqlib/operator_pick_test.go | 6 +- pkg/yqlib/operator_pipe_test.go | 2 +- pkg/yqlib/operator_recursive_descent.go | 5 -- pkg/yqlib/operator_recursive_descent_test.go | 30 +++---- pkg/yqlib/operator_select_test.go | 12 +-- pkg/yqlib/operator_shuffle_test.go | 2 +- pkg/yqlib/operator_sort_keys_test.go | 6 +- pkg/yqlib/operator_sort_test.go | 4 +- pkg/yqlib/operator_strings_test.go | 6 +- pkg/yqlib/operator_style_test.go | 26 +++--- pkg/yqlib/operator_subtract_test.go | 18 ++--- pkg/yqlib/operator_tag_test.go | 10 +-- pkg/yqlib/operator_traverse_path.go | 6 -- pkg/yqlib/operator_traverse_path_test.go | 79 ++++--------------- pkg/yqlib/operator_union_test.go | 2 +- pkg/yqlib/operator_variables_test.go | 6 +- pkg/yqlib/operator_with_test.go | 8 +- pkg/yqlib/operators_test.go | 4 +- pkg/yqlib/stream_evaluator.go | 8 +- pkg/yqlib/yaml_test.go | 6 +- 67 files changed, 346 insertions(+), 486 deletions(-) diff --git a/pkg/yqlib/all_at_once_evaluator.go b/pkg/yqlib/all_at_once_evaluator.go index 76fbdb9f..bdeddd20 100644 --- a/pkg/yqlib/all_at_once_evaluator.go +++ b/pkg/yqlib/all_at_once_evaluator.go @@ -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) } diff --git a/pkg/yqlib/all_at_once_evaluator_test.go b/pkg/yqlib/all_at_once_evaluator_test.go index 061019e1..c3e49c45 100644 --- a/pkg/yqlib/all_at_once_evaluator_test.go +++ b/pkg/yqlib/all_at_once_evaluator_test.go @@ -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", }, }, { diff --git a/pkg/yqlib/candidate_node.go b/pkg/yqlib/candidate_node.go index 0e70c389..c5b296ee 100644 --- a/pkg/yqlib/candidate_node.go +++ b/pkg/yqlib/candidate_node.go @@ -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 } diff --git a/pkg/yqlib/candidate_node_yaml.go b/pkg/yqlib/candidate_node_yaml.go index 574bd112..21db2257 100644 --- a/pkg/yqlib/candidate_node_yaml.go +++ b/pkg/yqlib/candidate_node_yaml.go @@ -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} diff --git a/pkg/yqlib/candidiate_node_json.go b/pkg/yqlib/candidiate_node_json.go index 049be16c..ef7f0b1a 100644 --- a/pkg/yqlib/candidiate_node_json.go +++ b/pkg/yqlib/candidiate_node_json.go @@ -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) diff --git a/pkg/yqlib/decoder_csv_object.go b/pkg/yqlib/decoder_csv_object.go index 33ab7bf9..644bbfa1 100644 --- a/pkg/yqlib/decoder_csv_object.go +++ b/pkg/yqlib/decoder_csv_object.go @@ -68,8 +68,5 @@ func (dec *csvObjectDecoder) Decode() (*CandidateNode, error) { return nil, err } - return &CandidateNode{ - Kind: DocumentNode, - Content: []*CandidateNode{rootArray}, - }, nil + return rootArray, nil } diff --git a/pkg/yqlib/decoder_json.go b/pkg/yqlib/decoder_json.go index 86762814..16a662a5 100644 --- a/pkg/yqlib/decoder_json.go +++ b/pkg/yqlib/decoder_json.go @@ -29,8 +29,5 @@ func (dec *jsonDecoder) Decode() (*CandidateNode, error) { return nil, err } - return &CandidateNode{ - Kind: DocumentNode, - Content: []*CandidateNode{&dataBucket}, - }, nil + return &dataBucket, nil } diff --git a/pkg/yqlib/decoder_properties.go b/pkg/yqlib/decoder_properties.go index 6c428be8..778ba7ea 100644 --- a/pkg/yqlib/decoder_properties.go +++ b/pkg/yqlib/decoder_properties.go @@ -124,9 +124,6 @@ func (dec *propertiesDecoder) Decode() (*CandidateNode, error) { } dec.finished = true - return &CandidateNode{ - Kind: DocumentNode, - Content: []*CandidateNode{rootMap}, - }, nil + return rootMap, nil } diff --git a/pkg/yqlib/decoder_toml.go b/pkg/yqlib/decoder_toml.go index 92614a1c..d94d1bf7 100644 --- a/pkg/yqlib/decoder_toml.go +++ b/pkg/yqlib/decoder_toml.go @@ -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 } diff --git a/pkg/yqlib/decoder_xml.go b/pkg/yqlib/decoder_xml.go index edd77c52..c34209e2 100644 --- a/pkg/yqlib/decoder_xml.go +++ b/pkg/yqlib/decoder_xml.go @@ -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 { diff --git a/pkg/yqlib/decoder_yaml.go b/pkg/yqlib/decoder_yaml.go index cc58def3..42cc3a4d 100644 --- a/pkg/yqlib/decoder_yaml.go +++ b/pkg/yqlib/decoder_yaml.go @@ -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 } diff --git a/pkg/yqlib/doc/operators/comment-operators.md b/pkg/yqlib/doc/operators/comment-operators.md index 08964e52..2c0e99e7 100644 --- a/pkg/yqlib/doc/operators/comment-operators.md +++ b/pkg/yqlib/doc/operators/comment-operators.md @@ -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 ``` diff --git a/pkg/yqlib/doc/operators/recursive-descent-glob.md b/pkg/yqlib/doc/operators/recursive-descent-glob.md index 3cfcf407..cfcb7dae 100644 --- a/pkg/yqlib/doc/operators/recursive-descent-glob.md +++ b/pkg/yqlib/doc/operators/recursive-descent-glob.md @@ -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 diff --git a/pkg/yqlib/encoder_properties.go b/pkg/yqlib/encoder_properties.go index ee50f03f..549358b5 100644 --- a/pkg/yqlib/encoder_properties.go +++ b/pkg/yqlib/encoder_properties.go @@ -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: diff --git a/pkg/yqlib/encoder_shellvariables.go b/pkg/yqlib/encoder_shellvariables.go index dae4f188..d725dae3 100644 --- a/pkg/yqlib/encoder_shellvariables.go +++ b/pkg/yqlib/encoder_shellvariables.go @@ -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)) diff --git a/pkg/yqlib/encoder_xml.go b/pkg/yqlib/encoder_xml.go index 85461344..5490e4e3 100644 --- a/pkg/yqlib/encoder_xml.go +++ b/pkg/yqlib/encoder_xml.go @@ -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) diff --git a/pkg/yqlib/json_test.go b/pkg/yqlib/json_test.go index fccb1b93..b49c7e28 100644 --- a/pkg/yqlib/json_test.go +++ b/pkg/yqlib/json_test.go @@ -239,7 +239,7 @@ var jsonScenarios = []formatScenario{ description: "empty string", skipDoc: true, input: `""`, - expected: "\"\"\n", + expected: "\n", scenarioType: "decode-ndjson", }, { diff --git a/pkg/yqlib/lib.go b/pkg/yqlib/lib.go index f24700b8..09394fab 100644 --- a/pkg/yqlib/lib.go +++ b/pkg/yqlib/lib.go @@ -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: diff --git a/pkg/yqlib/operator_add_test.go b/pkg/yqlib/operator_add_test.go index eeabffde..64013088 100644 --- a/pkg/yqlib/operator_add_test.go +++ b/pkg/yqlib/operator_add_test.go @@ -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", }, }, { diff --git a/pkg/yqlib/operator_alternative_test.go b/pkg/yqlib/operator_alternative_test.go index f3783311..24470e6c 100644 --- a/pkg/yqlib/operator_alternative_test.go +++ b/pkg/yqlib/operator_alternative_test.go @@ -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", }, }, } diff --git a/pkg/yqlib/operator_anchors_aliases.go b/pkg/yqlib/operator_anchors_aliases.go index 48df310d..d9d73754 100644 --- a/pkg/yqlib/operator_anchors_aliases.go +++ b/pkg/yqlib/operator_anchors_aliases.go @@ -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) diff --git a/pkg/yqlib/operator_anchors_aliases_test.go b/pkg/yqlib/operator_anchors_aliases_test.go index 563e57e6..befd7be9 100644 --- a/pkg/yqlib/operator_anchors_aliases_test.go +++ b/pkg/yqlib/operator_anchors_aliases_test.go @@ -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", }, }, { diff --git a/pkg/yqlib/operator_array_to_map_test.go b/pkg/yqlib/operator_array_to_map_test.go index 406fec1c..27259a5f 100644 --- a/pkg/yqlib/operator_array_to_map_test.go +++ b/pkg/yqlib/operator_array_to_map_test.go @@ -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", }, }, } diff --git a/pkg/yqlib/operator_assign_test.go b/pkg/yqlib/operator_assign_test.go index 4fdf6da8..601223ae 100644 --- a/pkg/yqlib/operator_assign_test.go +++ b/pkg/yqlib/operator_assign_test.go @@ -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", }, }, } diff --git a/pkg/yqlib/operator_booleans_test.go b/pkg/yqlib/operator_booleans_test.go index c48c5307..c999c635 100644 --- a/pkg/yqlib/operator_booleans_test.go +++ b/pkg/yqlib/operator_booleans_test.go @@ -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", }, }, { diff --git a/pkg/yqlib/operator_collect_object_test.go b/pkg/yqlib/operator_collect_object_test.go index 2b912025..ff82325b 100644 --- a/pkg/yqlib/operator_collect_object_test.go +++ b/pkg/yqlib/operator_collect_object_test.go @@ -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", }, }, { diff --git a/pkg/yqlib/operator_comments.go b/pkg/yqlib/operator_comments.go index 95327ead..b6aa135a 100644 --- a/pkg/yqlib/operator_comments.go +++ b/pkg/yqlib/operator_comments.go @@ -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 diff --git a/pkg/yqlib/operator_comments_test.go b/pkg/yqlib/operator_comments_test.go index 9d2dc678..8d32a309 100644 --- a/pkg/yqlib/operator_comments_test.go +++ b/pkg/yqlib/operator_comments_test.go @@ -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", }, }, { diff --git a/pkg/yqlib/operator_datetime_test.go b/pkg/yqlib/operator_datetime_test.go index a2d3ca17..f6616302 100644 --- a/pkg/yqlib/operator_datetime_test.go +++ b/pkg/yqlib/operator_datetime_test.go @@ -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", }, }, } diff --git a/pkg/yqlib/operator_delete.go b/pkg/yqlib/operator_delete.go index bc5ce856..4cce915b 100644 --- a/pkg/yqlib/operator_delete.go +++ b/pkg/yqlib/operator_delete.go @@ -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] diff --git a/pkg/yqlib/operator_delete_test.go b/pkg/yqlib/operator_delete_test.go index 6c5a9edc..473b329a 100644 --- a/pkg/yqlib/operator_delete_test.go +++ b/pkg/yqlib/operator_delete_test.go @@ -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", }, }, } diff --git a/pkg/yqlib/operator_divide_test.go b/pkg/yqlib/operator_divide_test.go index fc7297a3..c0c9cd96 100644 --- a/pkg/yqlib/operator_divide_test.go +++ b/pkg/yqlib/operator_divide_test.go @@ -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", }, }, { diff --git a/pkg/yqlib/operator_document_index_test.go b/pkg/yqlib/operator_document_index_test.go index 65161089..bd5962de 100644 --- a/pkg/yqlib/operator_document_index_test.go +++ b/pkg/yqlib/operator_document_index_test.go @@ -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", }, }, { diff --git a/pkg/yqlib/operator_encoder_decoder_test.go b/pkg/yqlib/operator_encoder_decoder_test.go index a6eaee89..6280f0cc 100644 --- a/pkg/yqlib/operator_encoder_decoder_test.go +++ b/pkg/yqlib/operator_encoder_decoder_test.go @@ -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: "bar"`, expression: `.b = (.a | from_xml)`, expected: []string{ - "D0, P[], (doc)::a: \"bar\"\nb:\n foo: bar\n", + "D0, P[], (!!map)::a: \"bar\"\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", }, }, { diff --git a/pkg/yqlib/operator_env_test.go b/pkg/yqlib/operator_env_test.go index 95e9b9c6..878c5bce 100644 --- a/pkg/yqlib/operator_env_test.go +++ b/pkg/yqlib/operator_env_test.go @@ -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", }, }, } diff --git a/pkg/yqlib/operator_equals_test.go b/pkg/yqlib/operator_equals_test.go index fc47939d..258567c3 100644 --- a/pkg/yqlib/operator_equals_test.go +++ b/pkg/yqlib/operator_equals_test.go @@ -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", // }, // }, } diff --git a/pkg/yqlib/operator_error_test.go b/pkg/yqlib/operator_error_test.go index 845686d6..3ccbbf20 100644 --- a/pkg/yqlib/operator_error_test.go +++ b/pkg/yqlib/operator_error_test.go @@ -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", }, }, } diff --git a/pkg/yqlib/operator_eval_test.go b/pkg/yqlib/operator_eval_test.go index 3bff5a12..6726b75a 100644 --- a/pkg/yqlib/operator_eval_test.go +++ b/pkg/yqlib/operator_eval_test.go @@ -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", }, }, } diff --git a/pkg/yqlib/operator_file_test.go b/pkg/yqlib/operator_file_test.go index 73f0f6b8..3ad72248 100644 --- a/pkg/yqlib/operator_file_test.go +++ b/pkg/yqlib/operator_file_test.go @@ -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", }, }, } diff --git a/pkg/yqlib/operator_flatten_test.go b/pkg/yqlib/operator_flatten_test.go index add71e1f..fc764d30 100644 --- a/pkg/yqlib/operator_flatten_test.go +++ b/pkg/yqlib/operator_flatten_test.go @@ -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", }, }, } diff --git a/pkg/yqlib/operator_has_test.go b/pkg/yqlib/operator_has_test.go index 47504048..bed11fcb 100644 --- a/pkg/yqlib/operator_has_test.go +++ b/pkg/yqlib/operator_has_test.go @@ -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", }, }, { diff --git a/pkg/yqlib/operator_keys_test.go b/pkg/yqlib/operator_keys_test.go index 3f821b51..b0936608 100644 --- a/pkg/yqlib/operator_keys_test.go +++ b/pkg/yqlib/operator_keys_test.go @@ -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", }, }, { diff --git a/pkg/yqlib/operator_load_test.go b/pkg/yqlib/operator_load_test.go index 04710605..934ecf1f 100644 --- a/pkg/yqlib/operator_load_test.go +++ b/pkg/yqlib/operator_load_test.go @@ -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", }, }, } diff --git a/pkg/yqlib/operator_map_test.go b/pkg/yqlib/operator_map_test.go index 715df336..7ba25b3c 100644 --- a/pkg/yqlib/operator_map_test.go +++ b/pkg/yqlib/operator_map_test.go @@ -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", }, }, } diff --git a/pkg/yqlib/operator_modulo_test.go b/pkg/yqlib/operator_modulo_test.go index ee1c9101..246db233 100644 --- a/pkg/yqlib/operator_modulo_test.go +++ b/pkg/yqlib/operator_modulo_test.go @@ -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", }, }, { diff --git a/pkg/yqlib/operator_multiply_test.go b/pkg/yqlib/operator_multiply_test.go index 0844c7c7..c099ddb0 100644 --- a/pkg/yqlib/operator_multiply_test.go +++ b/pkg/yqlib/operator_multiply_test.go @@ -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", }, }, { diff --git a/pkg/yqlib/operator_path_test.go b/pkg/yqlib/operator_path_test.go index 87638daf..bb575aac 100644 --- a/pkg/yqlib/operator_path_test.go +++ b/pkg/yqlib/operator_path_test.go @@ -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", }, }, { diff --git a/pkg/yqlib/operator_pick_test.go b/pkg/yqlib/operator_pick_test.go index 25542385..e417a342 100644 --- a/pkg/yqlib/operator_pick_test.go +++ b/pkg/yqlib/operator_pick_test.go @@ -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", }, }, { diff --git a/pkg/yqlib/operator_pipe_test.go b/pkg/yqlib/operator_pipe_test.go index 8d884689..6196d658 100644 --- a/pkg/yqlib/operator_pipe_test.go +++ b/pkg/yqlib/operator_pipe_test.go @@ -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", }, }, { diff --git a/pkg/yqlib/operator_recursive_descent.go b/pkg/yqlib/operator_recursive_descent.go index 2da709da..775bd2a6 100644 --- a/pkg/yqlib/operator_recursive_descent.go +++ b/pkg/yqlib/operator_recursive_descent.go @@ -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) diff --git a/pkg/yqlib/operator_recursive_descent_test.go b/pkg/yqlib/operator_recursive_descent_test.go index 62b9159e..45e63cfd 100644 --- a/pkg/yqlib/operator_recursive_descent_test.go +++ b/pkg/yqlib/operator_recursive_descent_test.go @@ -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", diff --git a/pkg/yqlib/operator_select_test.go b/pkg/yqlib/operator_select_test.go index 02357c2e..249e54b4 100644 --- a/pkg/yqlib/operator_select_test.go +++ b/pkg/yqlib/operator_select_test.go @@ -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", }, }, { diff --git a/pkg/yqlib/operator_shuffle_test.go b/pkg/yqlib/operator_shuffle_test.go index 23a3748b..c6c30f5f 100644 --- a/pkg/yqlib/operator_shuffle_test.go +++ b/pkg/yqlib/operator_shuffle_test.go @@ -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", }, }, } diff --git a/pkg/yqlib/operator_sort_keys_test.go b/pkg/yqlib/operator_sort_keys_test.go index 110629ed..586a1ce8 100644 --- a/pkg/yqlib/operator_sort_keys_test.go +++ b/pkg/yqlib/operator_sort_keys_test.go @@ -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", }, }, } diff --git a/pkg/yqlib/operator_sort_test.go b/pkg/yqlib/operator_sort_test.go index 9a8bc84a..0b60545e 100644 --- a/pkg/yqlib/operator_sort_test.go +++ b/pkg/yqlib/operator_sort_test.go @@ -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", }, }, { diff --git a/pkg/yqlib/operator_strings_test.go b/pkg/yqlib/operator_strings_test.go index 481ab473..169bc047 100644 --- a/pkg/yqlib/operator_strings_test.go +++ b/pkg/yqlib/operator_strings_test.go @@ -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", }, }, { diff --git a/pkg/yqlib/operator_style_test.go b/pkg/yqlib/operator_style_test.go index 43adec36..9077f9a2 100644 --- a/pkg/yqlib/operator_style_test.go +++ b/pkg/yqlib/operator_style_test.go @@ -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", }, }, { diff --git a/pkg/yqlib/operator_subtract_test.go b/pkg/yqlib/operator_subtract_test.go index b24474e9..2b365b4d 100644 --- a/pkg/yqlib/operator_subtract_test.go +++ b/pkg/yqlib/operator_subtract_test.go @@ -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", }, }, { diff --git a/pkg/yqlib/operator_tag_test.go b/pkg/yqlib/operator_tag_test.go index eebcc9fb..e000cd88 100644 --- a/pkg/yqlib/operator_tag_test.go +++ b/pkg/yqlib/operator_tag_test.go @@ -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", }, }, } diff --git a/pkg/yqlib/operator_traverse_path.go b/pkg/yqlib/operator_traverse_path.go index 0a10690c..f6ef4597 100644 --- a/pkg/yqlib/operator_traverse_path.go +++ b/pkg/yqlib/operator_traverse_path.go @@ -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 diff --git a/pkg/yqlib/operator_traverse_path_test.go b/pkg/yqlib/operator_traverse_path_test.go index 3ccf6634..55887ee7 100644 --- a/pkg/yqlib/operator_traverse_path_test.go +++ b/pkg/yqlib/operator_traverse_path_test.go @@ -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", }, }, { diff --git a/pkg/yqlib/operator_union_test.go b/pkg/yqlib/operator_union_test.go index 4b98ac06..87247862 100644 --- a/pkg/yqlib/operator_union_test.go +++ b/pkg/yqlib/operator_union_test.go @@ -10,7 +10,7 @@ var unionOperatorScenarios = []expressionScenario{ document: "{}", expression: `(.a, .b.c) as $x | .`, expected: []string{ - "D0, P[], (doc)::{}\n", + "D0, P[], (!!map)::{}\n", }, }, { diff --git a/pkg/yqlib/operator_variables_test.go b/pkg/yqlib/operator_variables_test.go index f1555f28..bc84f604 100644 --- a/pkg/yqlib/operator_variables_test.go +++ b/pkg/yqlib/operator_variables_test.go @@ -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", }, }, } diff --git a/pkg/yqlib/operator_with_test.go b/pkg/yqlib/operator_with_test.go index 04f184c2..36855df1 100644 --- a/pkg/yqlib/operator_with_test.go +++ b/pkg/yqlib/operator_with_test.go @@ -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", }, }, } diff --git a/pkg/yqlib/operators_test.go b/pkg/yqlib/operators_test.go index 09d775e5..fda41bb8 100644 --- a/pkg/yqlib/operators_test.go +++ b/pkg/yqlib/operators_test.go @@ -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()) diff --git a/pkg/yqlib/stream_evaluator.go b/pkg/yqlib/stream_evaluator.go index c11dadbd..0c9ad6dd 100644 --- a/pkg/yqlib/stream_evaluator.go +++ b/pkg/yqlib/stream_evaluator.go @@ -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) diff --git a/pkg/yqlib/yaml_test.go b/pkg/yqlib/yaml_test.go index d3010852..d58f0e68 100644 --- a/pkg/yqlib/yaml_test.go +++ b/pkg/yqlib/yaml_test.go @@ -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", }, }, }