diff options
Diffstat (limited to 'node_modules/camelcase')
-rw-r--r-- | node_modules/camelcase/index.js | 37 | ||||
-rw-r--r-- | node_modules/camelcase/package.json | 7 | ||||
-rw-r--r-- | node_modules/camelcase/readme.md | 27 |
3 files changed, 51 insertions, 20 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() diff --git a/node_modules/camelcase/package.json b/node_modules/camelcase/package.json index 34f75e745..a404754ee 100644 --- a/node_modules/camelcase/package.json +++ b/node_modules/camelcase/package.json @@ -1,6 +1,6 @@ { "name": "camelcase", - "version": "1.2.1", + "version": "3.0.0", "description": "Convert a dash/dot/underscore/space separated string to camelCase: foo-bar → fooBar", "license": "MIT", "repository": "sindresorhus/camelcase", @@ -13,7 +13,7 @@ "node": ">=0.10.0" }, "scripts": { - "test": "node test.js" + "test": "xo && ava" }, "files": [ "index.js" @@ -33,6 +33,7 @@ "convert" ], "devDependencies": { - "ava": "0.0.4" + "ava": "*", + "xo": "*" } } diff --git a/node_modules/camelcase/readme.md b/node_modules/camelcase/readme.md index 516dc3984..080b2a103 100644 --- a/node_modules/camelcase/readme.md +++ b/node_modules/camelcase/readme.md @@ -5,7 +5,7 @@ ## Install -```sh +``` $ npm install --save camelcase ``` @@ -13,42 +13,43 @@ $ npm install --save camelcase ## Usage ```js -var camelCase = require('camelcase'); +const camelCase = require('camelcase'); camelCase('foo-bar'); -//=> fooBar +//=> 'fooBar' camelCase('foo_bar'); -//=> fooBar +//=> 'fooBar' camelCase('Foo-Bar'); -//=> fooBar +//=> 'fooBar' camelCase('--foo.bar'); -//=> fooBar +//=> 'fooBar' camelCase('__foo__bar__'); -//=> fooBar +//=> 'fooBar' camelCase('foo bar'); -//=> fooBar +//=> 'fooBar' console.log(process.argv[3]); -//=> --foo-bar +//=> '--foo-bar' camelCase(process.argv[3]); -//=> fooBar +//=> 'fooBar' camelCase('foo', 'bar'); -//=> fooBar +//=> 'fooBar' camelCase('__foo__', '--bar'); -//=> fooBar +//=> 'fooBar' ``` ## Related -See [`decamelize`](https://github.com/sindresorhus/decamelize) for the inverse. +- [decamelize](https://github.com/sindresorhus/decamelize) - The inverse of this module +- [uppercamelcase](https://github.com/SamVerschueren/uppercamelcase) - Like this module, but to PascalCase instead of camelCase ## License |