defaultFilter function
Default fuzzy filter implementation.
Implementation
List<Rank> defaultFilter(String term, List<String> targets) {
if (term.isEmpty) {
return List.generate(targets.length, (i) => Rank(index: i));
}
final results = <Rank>[];
final termLower = term.toLowerCase();
for (var i = 0; i < targets.length; i++) {
final target = targets[i].toLowerCase();
final matches = <int>[];
var termIdx = 0;
for (var j = 0; j < target.length && termIdx < termLower.length; j++) {
if (target[j] == termLower[termIdx]) {
matches.add(j);
termIdx++;
}
}
if (termIdx == termLower.length) {
results.add(Rank(index: i, matchedIndexes: matches));
}
}
// Sort by number of matches and position
results.sort((a, b) {
final aScore = _scoreRank(a, targets[a.index]);
final bScore = _scoreRank(b, targets[b.index]);
return aScore.compareTo(bScore);
});
return results;
}