getParts method

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

Implementation

@visibleForTesting
List<String> getParts(ParsedUnitResult parsed) {
  Iterable<String> parts() sync* {
    final lines = parsed.content.split('\n');

    const avoid = ['export', 'import', 'library', 'as', 'show', 'hide', '//'];

    for (final line in lines) {
      final trimmed = line.trim();
      if (trimmed.isEmpty) continue;
      if (avoid.any(trimmed.startsWith)) continue;

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

      if (trimmed.split("'") case [_, final String part, ...]) {
        yield fs.path.normalize(
          fs.path.join(fs.path.dirname(parsed.path), part),
        );
      }
    }
  }

  return parts().toList();
}