toScreamingSnakeCase static method
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('_');
}