generate method Null safety
- LibraryReader library,
- BuildStep step
override
Generates Dart code for an input Dart library.
May create additional outputs through the buildStep
, but the 'primary'
output is Dart code returned through the Future. If there is nothing to
generate for this library may return null, or a Future that resolves to
null or the empty string.
Implementation
@override
Future<String> generate(LibraryReader library, BuildStep step) async {
var f = File('./lib/src/currencies.json');
var raw = f.readAsStringSync();
List<dynamic> currencies = jsonDecode(raw);
final outputEnum = <String>[
'''enum CurrencyCode {
'''
];
final outputClass = <String>[
'''class PaylikeCurrencyCollection {
static final Map<CurrencyCode, PaylikeCurrency> currencies = {
'''
];
for (var currency in currencies) {
var parsed = PaylikeCurrency.fromJSON(currency);
outputEnum.add('''
${parsed.code},
''');
outputClass.add('''
CurrencyCode.${parsed.code}: PaylikeCurrency('${parsed.code}', '${parsed.currency}', ${parsed.numeric}, ${parsed.exponent}),
''');
}
outputEnum.add('}');
outputClass.add('};}');
return '''
import 'package:paylike_currencies/paylike_currencies.dart';
${outputEnum.join('')}
${outputClass.join('')}
''';
}