in lib/src/editor.dart [400:434]
YamlNode remove(Iterable<Object?> path) {
late SourceEdit edit;
late YamlNode expectedNode;
final nodeToRemove = _traverse(path, checkAlias: true);
if (path.isEmpty) {
edit = SourceEdit(0, _yaml.length, '');
expectedNode = wrapAsYamlNode(null);
/// Parsing an empty YAML document returns YamlScalar with value `null`.
_performEdit(edit, path, expectedNode);
return nodeToRemove;
}
final pathAsList = path.toList();
final collectionPath = pathAsList.take(path.length - 1);
final keyOrIndex = pathAsList.last;
final parentNode = _traverse(collectionPath);
if (parentNode is YamlList) {
edit = removeInList(this, parentNode, keyOrIndex as int);
expectedNode = wrapAsYamlNode(
[...parentNode.nodes]..removeAt(keyOrIndex),
);
} else if (parentNode is YamlMap) {
edit = removeInMap(this, parentNode, keyOrIndex);
expectedNode =
updatedYamlMap(parentNode, (nodes) => nodes.remove(keyOrIndex));
}
_performEdit(edit, collectionPath, expectedNode);
return nodeToRemove;
}