blob: db526b1158b49248333405065ee427825063a647 [file] [log] [blame]
// Copyright (c) 2025, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
extension StringExtension on String {
/// Converts `SCREAMING_SNAKE_CASE` or `snake_case` to `camelCase`.
String toCamelCase() {
var parts = toLowerCase().split('_');
var buffer = StringBuffer();
var i = 0;
// Preserve initial '_'s
while (i < parts.length - 1 && parts[i].isEmpty) {
buffer.write('_');
++i;
}
if (i < parts.length) {
// Convert first word to lower case
buffer.write(parts[i].toLowerCase());
++i;
// Convert remaining words to initial upper case
while (i < parts.length) {
var part = parts[i];
if (part.isNotEmpty) {
buffer.write(part[0].toUpperCase());
buffer.write(part.substring(1));
}
++i;
}
}
return buffer.toString();
}
/// Converts `SCREAMING_SNAKE_CASE` or `snake_case` to `PascalCase`.
String toPascalCase() {
var parts = toLowerCase().split('_');
var buffer = StringBuffer();
var i = 0;
// Preserve initial '_'s
while (i < parts.length - 1 && parts[i].isEmpty) {
buffer.write('_');
++i;
}
// Convert words to initial upper case
while (i < parts.length) {
var part = parts[i];
if (part.isNotEmpty) {
buffer.write(part[0].toUpperCase());
buffer.write(part.substring(1));
}
++i;
}
return buffer.toString();
}
}