parse static method

StatsResult parse({
  1. required BuildConfig buildConfig,
  2. required NamespaceTranslationMap translationMap,
  3. bool showPluralHint = false,
})

Implementation

static StatsResult parse({
  required BuildConfig buildConfig,
  required NamespaceTranslationMap translationMap,
  bool showPluralHint = false,
}) {
  final List<I18nData> translationList =
      translationMap.getEntries().map((localeEntry) {
    final locale = localeEntry.key;
    final namespaces = localeEntry.value;
    return TranslationModelBuilder.build(
      buildConfig: buildConfig,
      locale: locale,
      map: buildConfig.namespaces ? namespaces : namespaces.values.first,
    );
  }).toList();

  // sort: base locale, then all other locales
  translationList.sort(I18nData.generationComparator);

  Map<I18nLocale, StatsLocaleResult> result = {};
  translationList.forEach((localeData) {
    final keyCount = _countKeys(localeData.root) - 1; // don't include root
    final translationCount = _countTranslations(localeData.root);
    final wordCount = _countWords(localeData.root);
    final characterCount = _countCharacters(localeData.root);
    result[localeData.locale] = StatsLocaleResult(
      keyCount: keyCount,
      translationCount: translationCount,
      wordCount: wordCount,
      characterCount: characterCount,
    );
  });

  return StatsResult(
    localeStats: result,
    globalStats: StatsLocaleResult(
      keyCount: result.values.fold(0, (prev, curr) => prev + curr.keyCount),
      translationCount:
          result.values.fold(0, (prev, curr) => prev + curr.translationCount),
      wordCount: result.values.fold(0, (prev, curr) => prev + curr.wordCount),
      characterCount:
          result.values.fold(0, (prev, curr) => prev + curr.characterCount),
    ),
  );
}