closestShellJobIds function

List<String> closestShellJobIds(
  1. String requested,
  2. Iterable<String> retainedIds, {
  3. int limit = 3,
})

The retained ids closest to requested, closest first, at most limit. Ties break by id so the order is deterministic.

Implementation

List<String> closestShellJobIds(
  String requested,
  Iterable<String> retainedIds, {
  int limit = 3,
}) {
  final ranked = retainedIds.toList()
    ..sort((a, b) {
      final byCloseness = shellJobIdCloseness(
        requested,
        a,
      ).compareTo(shellJobIdCloseness(requested, b));
      return byCloseness != 0 ? byCloseness : a.compareTo(b);
    });
  if (ranked.length > limit) return ranked.sublist(0, limit);
  return ranked;
}