sanitize method

String sanitize(
  1. String name
)

Sanitizes an arbitrary string into a valid, lowercase Dart package name.

Ensures:

  • Only lowercase ASCII letters, numbers, and underscores.
  • Does not start with a number.
  • Collapses consecutive underscores and trims leading/trailing underscores.
  • Avoids reserved Dart language keywords.
  • Falls back to 'app' if the result is empty or invalid.

Implementation

String sanitize(String name) {
  var result = name
      .toLowerCase()
      .trim()
      .replaceAll(RegExp(r'[^a-z0-9_]'), '_')
      .replaceAll(RegExp(r'_+'), '_');

  // Remove leading numbers and leading underscores
  result = result.replaceFirst(RegExp(r'^[^a-z]+'), '');

  // Remove trailing underscores
  result = result.replaceFirst(RegExp(r'_+$'), '');

  if (result.isEmpty || reservedKeywords.contains(result)) {
    return 'app';
  }

  return result;
}