in lib/src/chunk_builder.dart [347:401]
void _writeCommentText(SourceComment comment) {
if (!_formatter.fixes.contains(StyleFix.docComments)) {
_writeText(comment.text);
return;
}
// See if it's a JavaDoc comment.
var match = _javaDocComment.firstMatch(comment.text);
if (match == null) {
_writeText(comment.text);
return;
}
var lines = match[1]!.split('\n').toList();
var leastIndentation = comment.text.length;
for (var i = 0; i < lines.length; i++) {
// Trim trailing whitespace and turn any all-whitespace lines to "".
var line = lines[i].trimRight();
// Remove any leading "*" from the middle lines.
if (i > 0 && i < lines.length - 1) {
var match = _javaDocLine.firstMatch(line);
if (match != null) {
line = match[1]!;
}
}
// Find the line with the least indentation.
if (line.isNotEmpty) {
var indentation = _leadingIndentation.firstMatch(line)![1]!.length;
leastIndentation = math.min(leastIndentation, indentation);
}
lines[i] = line;
}
// Trim the first and last lines if empty.
if (lines.first.isEmpty) lines.removeAt(0);
if (lines.isNotEmpty && lines.last.isEmpty) lines.removeLast();
// Don't completely eliminate an empty block comment.
if (lines.isEmpty) lines.add('');
for (var line in lines) {
_writeText('///');
if (line.isNotEmpty) {
// Discard any indentation shared by all lines.
line = line.substring(leastIndentation);
_writeText(' $line');
}
_pendingWhitespace = Whitespace.newline;
_emitPendingWhitespace();
}
}