camelize function
Returns a string in the form "UpperCamelCase" or "lowerCamelCase".
Example: print(camelize("dart_vm")); => DartVm
Implementation
String camelize(String string, [bool lower = false]) {
if (string.isEmpty) {
return string;
}
string = string.toLowerCase();
var capitlize = true;
var position = 0;
var remove = false;
var sb = StringBuffer();
final characters = Characters(string);
for (final s in characters) {
final runes = s.runes;
var flag = 0;
if (runes.length == 1) {
var c = runes.first;
if (c <= _ASCII_END) {
flag = _ascii[c];
}
}
if (capitlize && flag & _ALPHA != 0) {
if (lower && position == 0) {
sb.write(s);
} else {
sb.write(s.toUpperCase());
}
capitlize = false;
remove = true;
position++;
} else {
if (flag & _UNDERSCORE != 0) {
if (!remove) {
sb.write(s);
remove = true;
}
capitlize = true;
} else {
if (flag & _ALPHA_NUM != 0) {
capitlize = false;
remove = true;
} else {
capitlize = true;
remove = false;
position = 0;
}
sb.write(s);
}
}
}
return sb.toString();
}