toSnakeCase method
Converts camelCase or PascalCase to snake_case
Implementation
String toSnakeCase() {
var parts = <String>[];
var i = 0;
var wordStarts = _toSnakeCaseRegExp.allMatches(this);
for (var RegExpMatch(:start) in wordStarts) {
if (i < start) {
parts.add(substring(i, start).toLowerCase());
i = start;
}
if (this[i] == '_' && parts.isNotEmpty) {
// Avoid doubling up the `_`. This handles strings that are already in
// snake case like `foo_Bar` (which translates to `foo_bar`).
i++;
}
}
if (i < length) {
parts.add(substring(i).toLowerCase());
}
return parts.join('_');
}