Implementation
@override
String get content {
final content = super.content;
final partDirectives = parts.map((part) {
final pathParts = p.split(part.fileName)..remove('lib');
return "part '${p.joinAll(pathParts)}';";
}).toList()..sort();
final partString = partDirectives.join('\n');
// inject part directives after all import statements
final directiveIndex = switch (content.contains('export')) {
true => content.lastIndexOf('export'),
false => content.lastIndexOf('import'),
};
var directiveStatements = '';
var contentWithoutDirectives = content;
if (directiveIndex != -1) {
final directiveEndIndex = content.indexOf(';', directiveIndex);
directiveStatements = content.substring(0, directiveEndIndex + 1);
contentWithoutDirectives = content.substring(directiveEndIndex + 1);
}
final trimmed =
'''
$directiveStatements
$partString
$contentWithoutDirectives'''
.trim();
return '$trimmed\n';
}