codeBlockNewlineSuffix function
({int consumedColumns, String text})?
codeBlockNewlineSuffix(
{ - required String beforeCursor,
- required String afterCursor,
- required String baseIndent,
})
Implementation
({String text, int consumedColumns})? codeBlockNewlineSuffix({
required String beforeCursor,
required String afterCursor,
required String baseIndent,
}) {
if (beforeCursor.isEmpty || afterCursor.isEmpty) {
return null;
}
final opening = beforeCursor[beforeCursor.length - 1];
final expectedClosing = switch (opening) {
'{' => '}',
'[' => ']',
'(' => ')',
_ => null,
};
if (expectedClosing == null) {
return null;
}
final leadingWhitespace = afterCursor.length - afterCursor.trimLeft().length;
if (leadingWhitespace >= afterCursor.length) {
return null;
}
if (afterCursor[leadingWhitespace] != expectedClosing) {
return null;
}
return (text: '\n$baseIndent', consumedColumns: leadingWhitespace);
}