convertMixedToSnake static method
Implementation
static String convertMixedToSnake(String convert) {
final tokens = <String>[];
final currentToken = StringBuffer();
for(var i = 0; i < convert.length; i++) {
final currentChar = convert[i];
final isUpper = int.tryParse(currentChar) == null && currentChar == currentChar.toUpperCase();
if(isUpper && i > 0) {
final prevChar = convert[i-1];
final prevIsUpper = prevChar == prevChar.toUpperCase();
final nextChar = (i+1 < convert.length) ? convert[i+1] : prevChar;
final nextIsUpper = nextChar == nextChar.toUpperCase();
if(!prevIsUpper || !nextIsUpper) {
tokens.add(currentToken.toString());
currentToken.clear();
}
}
currentToken.write(currentChar);
}
if(currentToken.isNotEmpty) {
tokens.add(currentToken.toString());
}
final allLower = tokens.map((x) => x.toLowerCase());
return allLower.join("_");
}