diff --git a/pkg/yqlib/doc/operators/group-by.md b/pkg/yqlib/doc/operators/group-by.md index 6fe9985b..cd5cc8c4 100644 --- a/pkg/yqlib/doc/operators/group-by.md +++ b/pkg/yqlib/doc/operators/group-by.md @@ -13,9 +13,9 @@ yq 'group_by(.foo)' sample.yml ``` will output ```yaml -- - [{foo: 1, bar: 10}, {foo: 3, bar: 100}, {foo: 1, bar: 1}] - - [{foo: 1, bar: 10}, {foo: 3, bar: 100}, {foo: 1, bar: 1}] -- - [{foo: 1, bar: 10}, {foo: 3, bar: 100}, {foo: 1, bar: 1}] +- - {foo: 1, bar: 10} + - {foo: 1, bar: 1} +- - {foo: 3, bar: 100} ``` ## Group by field, with nuls @@ -29,10 +29,10 @@ yq 'group_by(.foo)' sample.yml ``` will output ```yaml -- - [{cat: dog}, {foo: 1, bar: 10}, {foo: 3, bar: 100}, {no: foo for you}, {foo: 1, bar: 1}] - - [{cat: dog}, {foo: 1, bar: 10}, {foo: 3, bar: 100}, {no: foo for you}, {foo: 1, bar: 1}] -- - [{cat: dog}, {foo: 1, bar: 10}, {foo: 3, bar: 100}, {no: foo for you}, {foo: 1, bar: 1}] - - [{cat: dog}, {foo: 1, bar: 10}, {foo: 3, bar: 100}, {no: foo for you}, {foo: 1, bar: 1}] -- - [{cat: dog}, {foo: 1, bar: 10}, {foo: 3, bar: 100}, {no: foo for you}, {foo: 1, bar: 1}] +- - {cat: dog} + - {no: foo for you} +- - {foo: 1, bar: 10} + - {foo: 1, bar: 1} +- - {foo: 3, bar: 100} ``` diff --git a/pkg/yqlib/operator_group_by.go b/pkg/yqlib/operator_group_by.go index bfd9d7c9..e0d3bb45 100644 --- a/pkg/yqlib/operator_group_by.go +++ b/pkg/yqlib/operator_group_by.go @@ -30,7 +30,7 @@ func processIntoGroups(d *dataTreeNavigator, context Context, rhsExp *Expression groupList = list.New() newMatches.Set(keyValue, groupList) } - groupList.(*list.List).PushBack(node) + groupList.(*list.List).PushBack(child) } return newMatches, nil } diff --git a/pkg/yqlib/operator_group_by_test.go b/pkg/yqlib/operator_group_by_test.go index 2b086c02..2c7803da 100644 --- a/pkg/yqlib/operator_group_by_test.go +++ b/pkg/yqlib/operator_group_by_test.go @@ -13,19 +13,19 @@ var groupByOperatorScenarios = []expressionScenario{ "D0, P[], (!!seq)::- - {foo: 1, bar: 10}\n - {foo: 1, bar: 1}\n- - {foo: 3, bar: 100}\n", }, }, - // { - // description: "Group by field, with nuls", - // document: `[{cat: dog}, {foo: 1, bar: 10}, {foo: 3, bar: 100}, {no: foo for you}, {foo: 1, bar: 1}]`, - // expression: `group_by(.foo)`, - // expected: []string{ - // "D0, P[], (!!seq)::- - {cat: dog}\n - {no: foo for you}\n- - {foo: 1, bar: 10}\n - {foo: 1, bar: 1}\n- - {foo: 3, bar: 100}\n", - // }, - // }, + { + description: "Group by field, with nuls", + document: `[{cat: dog}, {foo: 1, bar: 10}, {foo: 3, bar: 100}, {no: foo for you}, {foo: 1, bar: 1}]`, + expression: `group_by(.foo)`, + expected: []string{ + "D0, P[], (!!seq)::- - {cat: dog}\n - {no: foo for you}\n- - {foo: 1, bar: 10}\n - {foo: 1, bar: 1}\n- - {foo: 3, bar: 100}\n", + }, + }, } func TestGroupByOperatorScenarios(t *testing.T) { for _, tt := range groupByOperatorScenarios { testScenario(t, &tt) } - // documentOperatorScenarios(t, "group-by", groupByOperatorScenarios) + documentOperatorScenarios(t, "group-by", groupByOperatorScenarios) }