getExpString method
Implementation
String? getExpString(
Iterable<SyntacticEntity> ast,
String exportUri,
bool def,
) {
int ignoreCount = 0;
int exportCount = 0;
List<String> ignoreList = <String>[];
List<String> exportList = <String>[];
List<String> normalList = <String>[];
ast.whereType<NamedCompilationUnitMember>().forEach((e) {
Iterable<String> meta = e.metadata.map((e) => e.toString());
if (meta.contains('@internal')) {
ignoreCount++;
ignoreList.add(e.name.toString());
} else if (meta.contains('@external')) {
exportCount++;
exportList.add(e.name.toString());
} else {
normalList.add(e.name.toString());
}
});
ast.whereType<TopLevelVariableDeclaration>().forEach((e) {
Iterable<String> meta = e.metadata.map((e) => e.toString());
if (meta.contains('@internal')) {
ignoreCount++;
ignoreList.add(e.variables.variables.first.name.toString());
} else if (meta.contains('@external')) {
exportCount++;
exportList.add(e.variables.variables.first.name.toString());
} else {
normalList.add(e.variables.variables.first.name.toString());
}
});
if (def) {
if (ignoreCount == 0) {
return "export 'package:$exportUri';";
}
String toExpLst = [...normalList, ...exportList].join(', ');
if (toExpLst.isNotEmpty) {
return "export 'package:$exportUri' show $toExpLst;";
} else {
return null;
}
} else {
if (exportCount == 0) {
return null;
}
String toExpLst = exportList.join(',');
return "export 'package:$exportUri' show $toExpLst;";
}
}