writeGeneratedExtension method
void
writeGeneratedExtension(
- ClassElement element,
- StructurizeResult structurized,
- String constructorName,
- SubjectCodeContext codeContext,
Implementation
void writeGeneratedExtension(
ClassElement element,
StructurizeResult structurized,
String constructorName,
SubjectCodeContext codeContext) {
var emitter = DartEmitter();
var extensionName = "${element.name}DogsExtension";
var builderName = "${element.name}Builder";
var clazz = Extension((builder) {
builder.name = extensionName;
builder.on = Reference(element.name);
builder.methods.add(Method((builder) => builder
..name = "builder"
..returns = Reference(element.name)
..requiredParameters.add(Parameter((builder) => builder
..name = "func"
..type = Reference("Function($builderName builder)")))
..body = Code("""
var builder = $builderName(this);
func(builder);
return builder.build();
""")));
});
codeContext.codeBuffer.writeln(clazz.accept(emitter));
}