makeEnumValueName function
Converts an UPPER_SNAKE_CASED name to a proper Dart enum camelCasedName.
Implementation
String makeEnumValueName(
String value,
String? classname,
Set<String> usedNames,
Iterable<String> suffixes,
) {
final underscoreAvoided = avoidInitialUnderscore(value);
int underscores = 0;
for (int i = underscoreAvoided.length - 1; i >= 0; i--) {
if (underscoreAvoided[i] != '_') {
break;
}
underscores++;
}
final prefix = classname?.toLowerCase();
final camelCased = underscoreAvoided.camelCase;
// final constantCased = camelCased.constantCase;
final lowerCased = camelCased.toLowerCase();
final removePrefix =
prefix != null && prefix != lowerCased && lowerCased.startsWith(prefix);
// stderr.write('----------------------------\n');
// stderr.write('underscoreAvoided: $underscoreAvoided\n');
// stderr.write('constantCased: $constantCased\n');
// stderr.write('prefix: $prefix\n');
// stderr.write('camelCased: $camelCased\n');
// stderr.write('removePrefix: $removePrefix\n');
final prefixRemoved =
removePrefix ? camelCased.substring(prefix.length).camelCase : camelCased;
// stderr.write('prefixRemoved: $prefixRemoved\n');
final underscored = prefixRemoved + '_' * underscores;
final disambiguated = disambiguateName(underscored, usedNames, suffixes);
// stderr.write('$value -> $disambiguated\n');
return disambiguated;
}