Can now retrieve the alias names of merge anchors #1942

This commit is contained in:
Mike Farah 2024-02-09 17:24:59 +11:00
parent b55f52f377
commit 8cde0c837c
3 changed files with 11 additions and 1 deletions

View File

@ -12,6 +12,7 @@ func TestDeepMatch(t *testing.T) {
ok bool ok bool
}{ }{
{"", "", true}, {"", "", true},
{"<<", "<<", true},
{"", "x", false}, {"", "x", false},
{"x", "", false}, {"x", "", false},
{"abc", "abc", true}, {"abc", "abc", true},

View File

@ -269,7 +269,7 @@ func doTraverseMap(newMatches *orderedmap.OrderedMap, node *CandidateNode, wante
value := contents[index+1] value := contents[index+1]
//skip the 'merge' tag, find a direct match first //skip the 'merge' tag, find a direct match first
if key.Tag == "!!merge" && !prefs.DontFollowAlias { if key.Tag == "!!merge" && !prefs.DontFollowAlias && wantedKey != "<<" {
log.Debug("Merge anchor") log.Debug("Merge anchor")
err := traverseMergeAnchor(newMatches, value, wantedKey, prefs, splat) err := traverseMergeAnchor(newMatches, value, wantedKey, prefs, splat)
if err != nil { if err != nil {

View File

@ -35,6 +35,15 @@ steps:
` `
var traversePathOperatorScenarios = []expressionScenario{ var traversePathOperatorScenarios = []expressionScenario{
{
skipDoc: true,
description: "access merge anchors",
document: "foo: &foo {x: y}\nbar:\n <<: *foo\n",
expression: `.bar["<<"] | alias`,
expected: []string{
"D0, P[bar <<], (!!str)::foo\n",
},
},
{ {
skipDoc: true, skipDoc: true,
description: "dynamically set parent and key", description: "dynamically set parent and key",