parseApps method
Implementation
Stream<MetaAppConfig> parseApps(Units units) async* {
final basename = path.basename(units.parsed.path);
// Accept `app.dart`, `*_app.dart`, and `*.app.dart`.
if (basename != 'app.dart' &&
!basename.contains(RegExp(r'[._]app\.dart$'))) {
return;
}
final resolved = await units.resolved();
final classVisitor = AppVisitor();
resolved.libraryElement.accept(classVisitor);
if (!classVisitor.hasApp) {
return;
}
for (final entry in classVisitor.entries) {
final element = entry.element;
yield MetaAppConfig(
className: element.displayName,
importPath: element.library.uri.toString(),
element: element,
constructor:
entry.constructor.name ??
(throw Exception('Constructor name is null')),
params: entry.params,
appAnnotation: entry.annotation,
isSecure: entry.isSecure,
annotationsFor:
({required List<OnMatch> onMatch, NonMatch? onNonMatch}) =>
getAnnotations(
element: element,
onMatch: onMatch,
onNonMatch: onNonMatch,
),
);
}
}