closestTargetIds function
Ids from known similar to typo (distance ≤ maxDistance), sorted by
ascending distance then alphabetically; at most limit results.
Implementation
List<String> closestTargetIds(
String typo,
Set<String> known, {
int maxDistance = 2,
int limit = 3,
}) {
final scored = <(int, String)>[];
for (final id in known) {
final d = editDistance(typo, id);
if (d <= maxDistance) scored.add((d, id));
}
scored.sort((x, y) {
final byDistance = x.$1.compareTo(y.$1);
return byDistance != 0 ? byDistance : x.$2.compareTo(y.$2);
});
return scored.take(limit).map((e) => e.$2).toList();
}