underscore function
Returns an underscored string.
Example: print(underscore("DartVM DartCore")); => dart_vm dart_core
Implementation
String underscore(String string) {
if (string.isEmpty) {
return string;
}
var sb = StringBuffer();
var separate = false;
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 (separate && flag & _UPPER != 0) {
sb.write('_');
sb.write(s.toLowerCase());
separate = true;
} else {
if (flag & _ALPHA_NUM != 0) {
separate = true;
} else if (flag & _UNDERSCORE != 0 && separate) {
separate = true;
} else {
separate = false;
}
sb.write(s.toLowerCase());
}
}
return sb.toString();
}