sugar
Version:
A Javascript utility library for working with native objects.
20 lines (17 loc) • 525 B
JavaScript
;
var Inflections = require('../../common/var/Inflections');
function stringUnderscore(str) {
var areg = Inflections.acronyms && Inflections.acronyms.reg;
// istanbul ignore if
if (areg) {
str = str.replace(areg, function(acronym, index) {
return (index > 0 ? '_' : '') + acronym.toLowerCase();
})
}
return str
.replace(/[-\s]+/g, '_')
.replace(/([A-Z\d]+)([A-Z][a-z])/g,'$1_$2')
.replace(/([a-z\d])([A-Z])/g,'$1_$2')
.toLowerCase();
}
module.exports = stringUnderscore;