writeGeneratedBuilder method
void
writeGeneratedBuilder(
- ClassElement element,
- StructurizeResult structurized,
- String constructorName,
- SubjectCodeContext codeContext,
Implementation
void writeGeneratedBuilder(
ClassElement element,
StructurizeResult structurized,
String constructorName,
SubjectCodeContext codeContext) {
var emitter = DartEmitter();
var builderName = "${element.name}Builder";
var clazz = Class((builder) {
builder.name = builderName;
builder.extend =
Reference("$genAlias.Builder<${codeContext.className(element)}>");
builder.constructors.add(Constructor((builder) => builder
..requiredParameters.add(Parameter((builder) => builder
..toSuper = true
..name = "\$src"))));
for (var element in structurized.structure.fields) {
builder.methods.add(Method((builder) => builder
..name = element.accessor
..type = MethodType.setter
..requiredParameters.add(Parameter((builder) => builder
..name = "value"
..type = Reference(element.type)))
..body = Code("\$overrides['${element.name}'] = value;")));
}
});
codeContext.codeBuffer.writeln(clazz.accept(emitter));
}