in lib/src/map_mutations.dart [167:210]
SourceEdit _removeFromBlockMap(
YamlEditor yamlEdit, YamlMap map, YamlNode keyNode, YamlNode valueNode) {
final keySpan = keyNode.span;
var end = getContentSensitiveEnd(valueNode);
final yaml = yamlEdit.toString();
if (map.length == 1) {
final start = map.span.start.offset;
return SourceEdit(start, end - start, '{}');
}
var start = keySpan.start.offset;
/// Adjust the end to clear the new line after the end too.
///
/// We do this because we suspect that our users will want the inline
/// comments to disappear too.
final nextNewLine = yaml.indexOf('\n', end);
if (nextNewLine != -1) {
end = nextNewLine + 1;
}
final nextNode = getNextKeyNode(map, keyNode);
if (start > 0) {
final lastHyphen = yaml.lastIndexOf('-', start - 1);
final lastNewLine = yaml.lastIndexOf('\n', start - 1);
if (lastHyphen > lastNewLine) {
start = lastHyphen + 2;
/// If there is a `-` before the node, and the end is on the same line
/// as the next node, we need to add the necessary offset to the end to
/// make sure the next node has the correct indentation.
if (nextNode != null &&
nextNode.span.start.offset - end <= nextNode.span.start.column) {
end += nextNode.span.start.column;
}
} else if (lastNewLine > lastHyphen) {
start = lastNewLine + 1;
}
}
return SourceEdit(start, end - start, '');
}