Fix deleting commented empty list YAML output

This commit is contained in:
Dustin Persek 2026-06-27 16:50:18 -04:00
parent e95bb7e472
commit f53d561592
2 changed files with 37 additions and 0 deletions

View File

@ -71,6 +71,29 @@ func deleteFromMap(node *CandidateNode, childPath interface{}) {
node.Content = newContents
}
func normaliseEmptySequenceMapKeyComment(node *CandidateNode) {
if node.Kind != SequenceNode || len(node.Content) != 0 || node.LineComment != "" {
return
}
key := node.Key
if node.Parent != nil && node.Parent.Kind == MappingNode {
for index := 0; index < len(node.Parent.Content)-1; index += 2 {
if node.Parent.Content[index+1] == node {
key = node.Parent.Content[index]
break
}
}
}
if key == nil || key.LineComment == "" {
return
}
node.LineComment = key.LineComment
key.LineComment = ""
node.Style = FlowStyle
}
func deleteFromArray(node *CandidateNode, childPath interface{}) {
log.Debug("deleteFromArray")
contents := node.Content
@ -87,4 +110,5 @@ func deleteFromArray(node *CandidateNode, childPath interface{}) {
}
}
node.Content = newContents
normaliseEmptySequenceMapKeyComment(node)
}

View File

@ -119,6 +119,19 @@ var deleteOperatorScenarios = []expressionScenario{
"D0, P[], (!!map)::a: []\n",
},
},
{
skipDoc: true,
description: "Delete all entries from list with inline key comment",
document: `testList: # A comment
- name: test1
value: 123
- name: test2
value: 456`,
expression: `del(.testList[])`,
expected: []string{
"D0, P[], (!!map)::testList: [] # A comment\n",
},
},
{
skipDoc: true,
description: "Delete entry appended to an array",