buildReactor method
FutureOr<void>
buildReactor(
- List<SubjectDescriptor> descriptors,
- SubjectCodeContext code
)
Implementation
@override
FutureOr<void> buildReactor(
List<SubjectDescriptor> descriptors, SubjectCodeContext code) {
code.additionalImports
.add(AliasImport.root("package:dogs_core/dogs_core.dart"));
code.codeBuffer
.writeln(descriptors.map((e) => "export '${e.uri}';").join("\n"));
var converterNameArr =
"[${descriptors.expand((e) => (e.meta["converterNames"] as List).cast<String>()).map((e) => "$e()").join(", ")}]";
if (!isLibrary) {
code.codeBuffer.writeln("""
Future initialiseDogs() async {
var engine = DogEngine.hasValidInstance ? DogEngine.instance : DogEngine(false);
engine.registerAllConverters($converterNameArr);
engine.setSingleton();
}""");
} else {
var fieldName = ReCase("$packageName converters").camelCase;
var funcName = ReCase("install $packageName converters").camelCase;
code.codeBuffer.writeln("""
final $fieldName = <DogConverter>$converterNameArr;
void $funcName() {
if (!DogEngine.hasValidInstance) {
throw Exception("No valid global DogEngine instance present");
}
DogEngine.instance.registerAllConverters($fieldName);
}""");
}
}