emit method
void
emit(
- StringBuffer buffer, {
- required InspectionCache cache,
- required AppType appType,
- String moduleParentPrefix = "",
override
Emits a Dart source for this entry during interface generation.
Implementation
@override
void emit(
StringBuffer buffer, {
required InspectionCache cache,
required AppType appType,
String moduleParentPrefix = "",
}) {
buffer.writeln("/// ## $name");
emitDoc(buffer);
emitSource(buffer);
final String qualifiedName = this.qualifiedName;
final String fullyQualifiedImportName =
qualifiedName.startsWith(moduleParentPrefix)
? qualifiedName
: "$moduleParentPrefix$qualifiedName";
final String pythonFfiInstanceName = switch (appType) {
AppType.console => "PythonFfiDart.instance",
AppType.flutter => "PythonFfi.instance",
};
buffer.writeln("""
final class $sanitizedName extends PythonModule {
$sanitizedName.from(super.pythonModule) : super.from();
static $sanitizedName import() => $pythonFfiInstanceName
.importModule("$fullyQualifiedImportName", $sanitizedName.from,);
""");
final Set<String> memberNames = <String>{name};
_emitFunctionFields(
buffer,
memberNames: memberNames,
cache: cache,
appType: appType,
filter: _isMyChild,
);
for (final InstantiatedModule child
in _children.whereType<InstantiatedModule>().where(_isMyChild)) {
final String moduleName = child.sanitizedName;
final String fieldName = "\$${child.sanitizedName}";
if (memberNames.contains(fieldName)) {
continue;
}
memberNames.add(fieldName);
buffer.writeln("/// ## $moduleName");
child.emitDoc(buffer);
buffer.writeln("$moduleName get $fieldName => $moduleName.import();");
}
_emitGettersSetters(
buffer,
memberNames: memberNames,
cache: cache,
filter: _isMyChild,
);
buffer.writeln("}");
}