in lib/src/list_mutations.dart [15:58]
SourceEdit updateInList(
YamlEditor yamlEdit, YamlList list, int index, YamlNode newValue) {
RangeError.checkValueInInterval(index, 0, list.length - 1);
final currValue = list.nodes[index];
var offset = currValue.span.start.offset;
final yaml = yamlEdit.toString();
String valueString;
/// We do not use [_formatNewBlock] since we want to only replace the contents
/// of this node while preserving comments/whitespace, while [_formatNewBlock]
/// produces a string representation of a new node.
if (list.style == CollectionStyle.BLOCK) {
final listIndentation = getListIndentation(yaml, list);
final indentation = listIndentation + getIndentation(yamlEdit);
final lineEnding = getLineEnding(yaml);
valueString = yamlEncodeBlockString(
wrapAsYamlNode(newValue), indentation, lineEnding);
/// We prefer the compact nested notation for collections.
///
/// By virtue of [yamlEncodeBlockString], collections automatically
/// have the necessary line endings.
if ((newValue is List && (newValue as List).isNotEmpty) ||
(newValue is Map && (newValue as Map).isNotEmpty)) {
valueString = valueString.substring(indentation);
} else if (isCollection(currValue) &&
getStyle(currValue) == CollectionStyle.BLOCK) {
valueString += lineEnding;
}
var end = getContentSensitiveEnd(currValue);
if (end <= offset) {
offset++;
end = offset;
valueString = ' ' + valueString;
}
return SourceEdit(offset, end - offset, valueString);
} else {
valueString = yamlEncodeFlowString(newValue);
return SourceEdit(offset, currValue.span.length, valueString);
}
}