mirror of
https://github.com/mikefarah/yq.git
synced 2026-09-01 22:44:50 +08:00
Generic ast (#1829)
Remove dependency on yaml.Node for internal AST representation. Yaml decoder is now just another decoder.
This commit is contained in:
@@ -35,6 +35,30 @@ steps:
|
||||
`
|
||||
|
||||
var traversePathOperatorScenarios = []expressionScenario{
|
||||
{
|
||||
skipDoc: true,
|
||||
description: "dynamically set parent and key",
|
||||
expression: `.a.b.c = 3 | .a.b.c`,
|
||||
expected: []string{
|
||||
"D0, P[a b c], (!!int)::3\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
skipDoc: true,
|
||||
description: "dynamically set parent and key in array",
|
||||
expression: `.a.b[0] = 3 | .a.b[0]`,
|
||||
expected: []string{
|
||||
"D0, P[a b 0], (!!int)::3\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
skipDoc: true,
|
||||
description: "dynamically set parent and key",
|
||||
expression: `.a.b = ["x","y"] | .a.b[1]`,
|
||||
expected: []string{
|
||||
"D0, P[a b 1], (!!str)::y\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
skipDoc: true,
|
||||
description: "splat empty map",
|
||||
@@ -62,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",
|
||||
},
|
||||
},
|
||||
{
|
||||
@@ -70,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",
|
||||
},
|
||||
},
|
||||
{
|
||||
@@ -160,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",
|
||||
},
|
||||
},
|
||||
{
|
||||
@@ -278,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",
|
||||
},
|
||||
},
|
||||
{
|
||||
@@ -294,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",
|
||||
},
|
||||
},
|
||||
{
|
||||
@@ -343,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",
|
||||
},
|
||||
},
|
||||
{
|
||||
@@ -351,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",
|
||||
},
|
||||
},
|
||||
{
|
||||
@@ -367,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",
|
||||
},
|
||||
},
|
||||
@@ -395,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",
|
||||
},
|
||||
},
|
||||
{
|
||||
@@ -404,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",
|
||||
},
|
||||
},
|
||||
{
|
||||
@@ -420,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",
|
||||
},
|
||||
},
|
||||
{
|
||||
@@ -428,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",
|
||||
},
|
||||
},
|
||||
@@ -494,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",
|
||||
},
|
||||
},
|
||||
{
|
||||
@@ -510,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",
|
||||
},
|
||||
},
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user