deduplicateSlug function

String deduplicateSlug(
  1. String baseSlug,
  2. Set<String> takenSlugs
)

Returns a slug that is not in takenSlugs. If baseSlug is not in takenSlugs, returns it as-is. Otherwise tries baseSlug-1, baseSlug-2, ... until one is free.

Implementation

String deduplicateSlug(String baseSlug, Set<String> takenSlugs) {
  final String trimmed = baseSlug.trim();
  if (trimmed.isEmpty) {
    int i = 1;
    while (takenSlugs.contains('-$i')) {
      i++;
    }
    return '-$i';
  }
  if (!takenSlugs.contains(trimmed)) return trimmed;
  int suffix = 1;
  while (takenSlugs.contains('$trimmed-$suffix')) {
    suffix++;
  }
  return '$trimmed-$suffix';
}