buildErrors method

List<String> buildErrors()

Implementation

List<String> buildErrors() {
  final res = <String>[];
  final grouped = failures
      .whereType<ParseError>()
      .where((e) => e.group.trim().isNotEmpty);
  for (final group in grouped.map((e) => e.group).toSet()) {
    final elements = grouped
        .where((e) => e.group == group)
        .map((e) => e.element)
        .toSet()
        .toList();
    elements.sort();
    res.add('$group: ${elements.join(', ')}');
  }

  final ungrouped =
      failures.whereType<ParseError>().where((e) => e.group.trim().isEmpty);
  for (final group in ungrouped.map((e) => e.group).toSet()) {
    final elements =
        grouped.where((e) => e.group == group).map((e) => e.element).toSet();
    res.addAll(elements);
  }

  if (res.isEmpty && failures.isNotEmpty) {
    res.add('Parse error');
  }

  return res;
}