genClassFromKeys function
Implementation
String genClassFromKeys(
Map<String, Map<String, String>> keys, {
String className = 'AppLocalization',
}) {
var keysMap = keys.isEmpty ? {} : keys.values.first;
String localization = '';
keysMap.forEach((key, value) {
List<String> keyName = key.split(RegExp(r'[._-]'));
String name = '';
if (keyName.isNotEmpty) {
name = keyName.first;
keyName.removeAt(0);
for (var element in keyName) {
name += _capitalize(element);
}
}
var matches = RegExp(r'@(\w+)').allMatches(value);
var results = matches.map((match) => match.group(1)).toSet().toList();
if (localization.contains(' $name ')) {
throw Exception(
'\n\n*** Generator found duplicate name `$name`, key `$key`. ***\n\n');
}
if (results.isEmpty) {
localization += ' static String get $name => \'$key\'.tr;\n';
} else {
String variable = '';
String params = '';
for (var result in results) {
variable += 'required String $result,\n';
params += '\'$result\': $result,\n';
}
localization += ''' static String $name ({
$variable
}) => '$key'.tr.trParams({
$params
});\n''';
}
});
return '''class $className {
$localization
}
''';
}