toScreamingSnakeCase static method

String toScreamingSnakeCase({
  1. required String input,
})

ratingStar, rating_star and rating-star all become RATING_STAR. Callers build SCREAMING_SNAKE_CASE constant names from user input, which a plain toUpperCase() mangles for camelCase arguments (RATINGSTAR).

Implementation

static String toScreamingSnakeCase({
  required String input,
}) {
  final String spaced =
      input.replaceAll(RegExp(r'[^a-zA-Z0-9]+'), '_').replaceAllMapped(
            RegExp(r'([a-z0-9])([A-Z])'),
            (match) => '${match[1]}_${match[2]}',
          );
  final List<String> words = spaced.split('_')
    ..removeWhere((element) => element.isEmpty);
  return words.map((word) => word.toUpperCase()).join('_');
}