mirror of
https://github.com/mikefarah/yq.git
synced 2024-12-19 20:19:04 +00:00
Support env[] expression #2071
This commit is contained in:
parent
7bad2f4f06
commit
d9af2dd976
@ -406,7 +406,7 @@ func envOp(strenv bool) yqAction {
|
|||||||
envOperation.OperationType = envOpType
|
envOperation.OperationType = envOpType
|
||||||
envOperation.Preferences = preferences
|
envOperation.Preferences = preferences
|
||||||
|
|
||||||
return &token{TokenType: operationToken, Operation: envOperation}, nil
|
return &token{TokenType: operationToken, Operation: envOperation, CheckForPostTraverse: envOpType.CheckForPostTraverse}, nil
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -161,7 +161,7 @@ var stringInterpolationOpType = &operationType{Type: "STRING_INT", NumArgs: 0, P
|
|||||||
var loadOpType = &operationType{Type: "LOAD", NumArgs: 1, Precedence: 52, Handler: loadOperator}
|
var loadOpType = &operationType{Type: "LOAD", NumArgs: 1, Precedence: 52, Handler: loadOperator}
|
||||||
var loadStringOpType = &operationType{Type: "LOAD_STRING", NumArgs: 1, Precedence: 52, Handler: loadStringOperator}
|
var loadStringOpType = &operationType{Type: "LOAD_STRING", NumArgs: 1, Precedence: 52, Handler: loadStringOperator}
|
||||||
|
|
||||||
var keysOpType = &operationType{Type: "KEYS", NumArgs: 0, Precedence: 50, Handler: keysOperator}
|
var keysOpType = &operationType{Type: "KEYS", NumArgs: 0, Precedence: 52, Handler: keysOperator, CheckForPostTraverse: true}
|
||||||
|
|
||||||
var collectObjectOpType = &operationType{Type: "COLLECT_OBJECT", NumArgs: 0, Precedence: 50, Handler: collectObjectOperator}
|
var collectObjectOpType = &operationType{Type: "COLLECT_OBJECT", NumArgs: 0, Precedence: 50, Handler: collectObjectOperator}
|
||||||
|
|
||||||
@ -175,7 +175,7 @@ var traverseArrayOpType = &operationType{Type: "TRAVERSE_ARRAY", NumArgs: 2, Pre
|
|||||||
var selfReferenceOpType = &operationType{Type: "SELF", NumArgs: 0, Precedence: 55, Handler: selfOperator}
|
var selfReferenceOpType = &operationType{Type: "SELF", NumArgs: 0, Precedence: 55, Handler: selfOperator}
|
||||||
var valueOpType = &operationType{Type: "VALUE", NumArgs: 0, Precedence: 50, Handler: valueOperator, ToString: valueToStringFunc}
|
var valueOpType = &operationType{Type: "VALUE", NumArgs: 0, Precedence: 50, Handler: valueOperator, ToString: valueToStringFunc}
|
||||||
var referenceOpType = &operationType{Type: "REF", NumArgs: 0, Precedence: 50, Handler: referenceOperator}
|
var referenceOpType = &operationType{Type: "REF", NumArgs: 0, Precedence: 50, Handler: referenceOperator}
|
||||||
var envOpType = &operationType{Type: "ENV", NumArgs: 0, Precedence: 50, Handler: envOperator}
|
var envOpType = &operationType{Type: "ENV", NumArgs: 0, Precedence: 52, Handler: envOperator, CheckForPostTraverse: true}
|
||||||
var notOpType = &operationType{Type: "NOT", NumArgs: 0, Precedence: 50, Handler: notOperator}
|
var notOpType = &operationType{Type: "NOT", NumArgs: 0, Precedence: 50, Handler: notOperator}
|
||||||
var toNumberOpType = &operationType{Type: "TO_NUMBER", NumArgs: 0, Precedence: 50, Handler: toNumberOperator}
|
var toNumberOpType = &operationType{Type: "TO_NUMBER", NumArgs: 0, Precedence: 50, Handler: toNumberOperator}
|
||||||
var emptyOpType = &operationType{Type: "EMPTY", Precedence: 50, Handler: emptyOperator}
|
var emptyOpType = &operationType{Type: "EMPTY", Precedence: 50, Handler: emptyOperator}
|
||||||
|
@ -5,6 +5,16 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
var envOperatorScenarios = []expressionScenario{
|
var envOperatorScenarios = []expressionScenario{
|
||||||
|
{
|
||||||
|
description: "Read string environment variable",
|
||||||
|
skipDoc: true,
|
||||||
|
environmentVariables: map[string]string{"myenv": "[cat,dog]"},
|
||||||
|
expression: `env(myenv)[]`,
|
||||||
|
expected: []string{
|
||||||
|
"D0, P[0], (!!str)::cat\n",
|
||||||
|
"D0, P[1], (!!str)::dog\n",
|
||||||
|
},
|
||||||
|
},
|
||||||
{
|
{
|
||||||
description: "Read string environment variable",
|
description: "Read string environment variable",
|
||||||
environmentVariables: map[string]string{"myenv": "cat meow"},
|
environmentVariables: map[string]string{"myenv": "cat meow"},
|
||||||
|
@ -39,6 +39,16 @@ var keysOperatorScenarios = []expressionScenario{
|
|||||||
"D0, P[], (!!seq)::- dog\n- cat\n",
|
"D0, P[], (!!seq)::- dog\n- cat\n",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
description: "Map keys with splat",
|
||||||
|
skipDoc: true,
|
||||||
|
document: `{dog: woof, cat: meow}`,
|
||||||
|
expression: `keys[]`,
|
||||||
|
expected: []string{
|
||||||
|
"D0, P[dog], (!!str)::dog\n",
|
||||||
|
"D0, P[cat], (!!str)::cat\n",
|
||||||
|
},
|
||||||
|
},
|
||||||
{
|
{
|
||||||
skipDoc: true,
|
skipDoc: true,
|
||||||
document: `{}`,
|
document: `{}`,
|
||||||
|
Loading…
Reference in New Issue
Block a user