generateSerializers method
String
generateSerializers(
- Map serializers
)
Implementation
String generateSerializers(Map serializers) {
final library = Library((b) {
for (final key in serializers.keys) {
final class_ = Class((b) {
final typeName = '$key';
final reader = MapReader(serializers);
final className = reader.read<String>('$typeName.type');
b.name = className;
b.methods.add(Method((b) {
b.static = true;
b.name = 'deserialize';
b.returns = Reference('$key');
b.requiredParameters.add(Parameter((b) {
b.name = 'value';
b.type = Reference('Object?');
}));
final body = reader.read<String>('$typeName.deserialize');
b.body = Code(body);
}));
b.methods.add(Method((b) {
b.static = true;
b.name = 'serialize';
b.returns = Reference('Object?');
b.requiredParameters.add(Parameter((b) {
b.name = 'value';
b.type = Reference('$key');
}));
final body = reader.read<String>('$typeName.serialize');
b.body = Code(body);
}));
});
b.body.add(class_);
}
});
final emitter = DartEmitter();
final result = library.accept(emitter).toString();
return result;
}