in lib/src/utils.dart [209:237]
int getMapIndentation(String yaml, YamlMap map) {
if (map.style == CollectionStyle.FLOW) return 0;
/// An empty block map doesn't really exist.
if (map.isEmpty) {
throw UnsupportedError('Unable to get indentation for empty block map');
}
/// Use the number of spaces between the last key and the newline as
/// indentation.
final lastKey = map.nodes.keys.last as YamlNode;
final lastSpanOffset = lastKey.span.start.offset;
final lastNewLine = yaml.lastIndexOf('\n', lastSpanOffset);
final lastQuestionMark = yaml.lastIndexOf('?', lastSpanOffset);
if (lastQuestionMark == -1) {
if (lastNewLine == -1) return lastSpanOffset;
return lastSpanOffset - lastNewLine - 1;
}
/// If there is a question mark, it might be a complex key. Check if it
/// is on the same line as the key node to verify.
if (lastNewLine == -1) return lastQuestionMark;
if (lastQuestionMark > lastNewLine) {
return lastQuestionMark - lastNewLine - 1;
}
return lastSpanOffset - lastNewLine - 1;
}