analyze method
Analyze the _data
so you can know which ones are missing what text.
The results will be print in the console log with the below format:
Result: LanguageCodes.en: some thing 1 some thing 2 LanguageCodes.vi: some thing 3 some thing 4
Implementation
///
/// Result:
/// LanguageCodes.en:
/// some thing 1
/// some thing 2
/// LanguageCodes.vi:
/// some thing 3
/// some thing 4
String analyze() {
final List<String> keys = [];
StringBuffer buffer = StringBuffer('');
buffer.write('\n\n');
buffer.write('==================================================');
buffer.write('\n');
buffer.write('Analyze all languages...');
buffer.write('\n');
// Add all keys to [keys]
for (final code in codes) {
if (!_data.containsKey(code)) {
return 'Can analyze the data from `LanguageDataProvider.data` only';
}
for (final key in _data[code]!.keys) {
if (!keys.contains(key)) keys.add(key);
}
}
final List<String> missedKeys = [];
final List<String> removedKeys = [];
if (_analysisKeys.isNotEmpty) {
// Analyze which keys are in [analysisKeys] but not in [data].
for (final key in _analysisKeys) {
if (!keys.contains(key)) {
missedKeys.add(key);
}
}
// Analyze which keys are in [data] but not in [analysisKeys]
for (final key in keys) {
if (!_analysisKeys.contains(key)) {
removedKeys.add(key);
}
}
}
if (missedKeys.isNotEmpty) {
buffer.write(
'The below keys were missing ([analysisKeys]: yes, [data]: no):\n');
for (final key in missedKeys) {
buffer.write(' >> ${_removeNewline(key)}\n');
}
buffer.write('\n');
}
if (removedKeys.isNotEmpty) {
buffer.write(
'The below keys were deprecated ([analysisKeys]: no, [data]: yes):\n');
for (final key in removedKeys) {
buffer.write(' >> ${_removeNewline(key)}\n');
}
buffer.write('\n');
}
buffer.write('Specific text missing results:\n');
// Analyze the results
for (final code in codes) {
buffer.write(' >> $code:\n');
for (final key in keys) {
if (!_data[code]!.keys.contains(key)) {
buffer.write(' >> ${_removeNewline(key)}\n');
}
}
// Don't need to add \n for the last element
if (code != codes.last) buffer.write('\n');
}
buffer.write('==================================================');
buffer.write('\n');
printDebug(buffer.toString());
return buffer.toString();
}