diff options
Diffstat (limited to 'node_modules/camelcase/index.js')
-rw-r--r-- | node_modules/camelcase/index.js | 37 |
1 files changed, 33 insertions, 4 deletions
diff --git a/node_modules/camelcase/index.js b/node_modules/camelcase/index.js index b46e10094..5670f73f2 100644 --- a/node_modules/camelcase/index.js +++ b/node_modules/camelcase/index.js @@ -1,4 +1,23 @@ 'use strict'; + +function preserveCamelCase(str) { + var isLastCharLower = false; + + for (var i = 0; i < str.length; i++) { + var c = str.charAt(i); + + if (isLastCharLower && (/[a-zA-Z]/).test(c) && c.toUpperCase() === c) { + str = str.substr(0, i) + '-' + str.substr(i); + isLastCharLower = false; + i++; + } else { + isLastCharLower = (c.toLowerCase() === c); + } + } + + return str; +} + module.exports = function () { var str = [].map.call(arguments, function (str) { return str.trim(); @@ -10,14 +29,24 @@ module.exports = function () { return ''; } - if (str.length === 1 || !(/[_.\- ]+/).test(str) ) { - if (str[0] === str[0].toLowerCase() && str.slice(1) !== str.slice(1).toLowerCase()) { - return str; + if (str.length === 1) { + return str.toLowerCase(); + } + + if (!(/[_.\- ]+/).test(str)) { + if (str === str.toUpperCase()) { + return str.toLowerCase(); } - return str.toLowerCase(); + if (str[0] !== str[0].toLowerCase()) { + return str[0].toLowerCase() + str.slice(1); + } + + return str; } + str = preserveCamelCase(str); + return str .replace(/^[_.\- ]+/, '') .toLowerCase() |