getParts method

  1. @visibleForTesting
List<String> getParts(
  1. ParsedUnitResult parsed
)

Implementation

@visibleForTesting
List<String> getParts(ParsedUnitResult parsed) {
  final lines = parsed.content.split('\n');
  final result = findImportBlockIndices(lines);
  final startIndex = result.importEnd ?? 0;

  final quote = RegExp(
    "'|"
    '"',
  );

  final parts = <String>[];
  for (var i = startIndex; i < lines.length; i++) {
    final trimmed = lines[i].trim();
    if (trimmed.isEmpty) continue;
    if (trimmed.startsWith('//')) continue;

    if (!trimmed.startsWith('part')) break;

    final split = trimmed.split(quote);
    final partPath = split.length >= 2 ? split[1] : null;

    if (partPath != null && partPath.isNotEmpty) {
      parts.add(
        fs.path.normalize(
          fs.path.join(fs.path.dirname(parsed.path), partPath),
        ),
      );
    }
  }

  return parts;
}