diff --git a/pkg/yqlib/operator_tag.go b/pkg/yqlib/operator_tag.go index 8b9c515b..3a4037ec 100644 --- a/pkg/yqlib/operator_tag.go +++ b/pkg/yqlib/operator_tag.go @@ -42,7 +42,7 @@ func GetTagOperator(d *dataTreeNavigator, matchingNodes *list.List, pathNode *Pa for el := matchingNodes.Front(); el != nil; el = el.Next() { candidate := el.Value.(*CandidateNode) - node := &yaml.Node{Kind: yaml.ScalarNode, Value: candidate.Node.Tag, Tag: "!!str"} + node := &yaml.Node{Kind: yaml.ScalarNode, Value: UnwrapDoc(candidate.Node).Tag, Tag: "!!str"} lengthCand := &CandidateNode{Node: node, Document: candidate.Document, Path: candidate.Path} results.PushBack(lengthCand) } diff --git a/pkg/yqlib/operator_tag_test.go b/pkg/yqlib/operator_tag_test.go index e918c73f..df47335b 100644 --- a/pkg/yqlib/operator_tag_test.go +++ b/pkg/yqlib/operator_tag_test.go @@ -18,6 +18,14 @@ var tagOperatorScenarios = []expressionScenario{ "D0, P[f], (!!str)::'!!seq'\n", }, }, + { + skipDoc: true, + document: `{a: cat, b: 5, c: 3.2, e: true, f: []}`, + expression: `tag`, + expected: []string{ + "D0, P[], (!!str)::'!!map'\n", + }, + }, { description: "Convert numbers to strings", document: `{a: cat, b: 5, c: 3.2, e: true}`,