summaryrefslogtreecommitdiff
path: root/node_modules/camelcase/index.js
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/camelcase/index.js')
-rw-r--r--node_modules/camelcase/index.js37
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()