reduce method
Tries to simplify the Filter structure to avoid redundancy.
Implementation
@override
Filter reduce() {
final reduced = filters
.map((f) => f.reduce())
.where((element) => !element.isEmpty)
.toList(growable: false);
if (reduced.isEmpty) {
return Filter.empty;
} else if (reduced.length == 1) {
return reduced.single;
} else {
// TODO solve unnecessarily nested groups
return FilterGroup(reduced, type);
}
}