toPascalCase function
Converts a snake_case, kebab-case, or camelCase string to PascalCase e.g. product_card → ProductCard, myBanner → MyBanner
Implementation
String toPascalCase(String input) {
if (input.isEmpty) return '';
// First split on underscores/hyphens
final words = input.split(RegExp(r'[_-]'));
final expanded = <String>[];
for (final word in words) {
if (word.isEmpty) continue;
// Split on camelCase boundaries within each word
final parts = word
.splitMapJoin(
RegExp(r'(?<=[a-z])(?=[A-Z])'),
onMatch: (m) => '_',
onNonMatch: (s) => s,
)
.split('_');
expanded.addAll(parts.where((p) => p.isNotEmpty));
}
return expanded.map((w) {
if (w.isEmpty) return '';
return w.substring(0, 1).toUpperCase() + w.substring(1);
}).join('');
}