generate method
{ "floss": "3713", "description": "Salmon Very Light", "r": 255, "g": 226, "b": 226, "hex": "FFE2E2", "row": "row 01-01" }
Implementation
@override
Future<String> generate(LibraryReader library, BuildStep _) async {
final Iterable<AnnotatedElement> dmc = library.annotatedWith(const TypeChecker.fromRuntime(DmcThreadsAnnotation));
if (dmc.isEmpty) {
return '';
}
final List<dynamic> dmcRawList = json.decode(DmcContent.rawData) as List<dynamic>;
final String data = dmcRawList.map((dynamic rawData) {
final Map<String, dynamic> dataMap = rawData as Map<String, dynamic>;
final String name = dataMap['description'].toString();
final String code = dataMap['floss'].toString();
final String r = dataMap['r'].toString();
final String g = dataMap['g'].toString();
final String b = dataMap['b'].toString();
final String? a = dataMap['a']?.toString();
final String hex = dataMap['hex'].toString();
final Lab lab = Utils.rgbaToLab(
r: int.parse(r),
g: int.parse(g),
b: int.parse(b),
a: a == null ? 255 : int.parse(a),
);
return '''
Dmc(
'$name',
'$code',
Rgba($r, $g, $b, a: ${a == null ? 255 : int.parse(a)}),
'$hex',
lab: Lab(${lab.l}, ${lab.a}, ${lab.b}),
),
''';
}).join();
final StringBuffer output = StringBuffer();
output.write('''
Iterable<Dmc> _dmc() {
return const <Dmc>[
$data
];
}
''');
return output.toString();
}