-
-
Notifications
You must be signed in to change notification settings - Fork 94
Commit
- Loading branch information
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1 +1,2 @@ | ||
* text=auto | ||
*.js text eol=lf |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,7 +1,5 @@ | ||
sudo: false | ||
language: node_js | ||
node_js: | ||
- '5' | ||
- '6' | ||
- '4' | ||
- '0.12' | ||
- '0.10' |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,12 +1,12 @@ | ||
'use strict'; | ||
|
||
function preserveCamelCase(str) { | ||
var isLastCharLower = false; | ||
var isLastCharUpper = false; | ||
var isLastLastCharUpper = false; | ||
let isLastCharLower = false; | ||
let isLastCharUpper = false; | ||
let isLastLastCharUpper = false; | ||
|
||
for (var i = 0; i < str.length; i++) { | ||
var c = str.charAt(i); | ||
for (let i = 0; i < str.length; i++) { | ||
const c = str.charAt(i); | ||
This comment has been minimized.
Sorry, something went wrong.
This comment has been minimized.
Sorry, something went wrong.
sindresorhus
Author
Owner
|
||
|
||
if (isLastCharLower && (/[a-zA-Z]/).test(c) && c.toUpperCase() === c) { | ||
str = str.substr(0, i) + '-' + str.substr(i); | ||
This comment has been minimized.
Sorry, something went wrong.
jdalton
|
||
|
@@ -20,21 +20,17 @@ function preserveCamelCase(str) { | |
isLastCharUpper = false; | ||
isLastCharLower = true; | ||
} else { | ||
isLastCharLower = (c.toLowerCase() === c); | ||
isLastCharLower = c.toLowerCase() === c; | ||
isLastLastCharUpper = isLastCharUpper; | ||
isLastCharUpper = (c.toUpperCase() === c); | ||
isLastCharUpper = c.toUpperCase() === c; | ||
} | ||
} | ||
|
||
return str; | ||
} | ||
|
||
module.exports = function () { | ||
This comment has been minimized.
Sorry, something went wrong.
This comment has been minimized.
Sorry, something went wrong.
sindresorhus
Author
Owner
|
||
var str = [].map.call(arguments, function (str) { | ||
return str.trim(); | ||
}).filter(function (str) { | ||
return str.length; | ||
}).join('-'); | ||
let str = [].map.call(arguments, x => x.trim()).filter(x => x.length).join('-'); | ||
This comment has been minimized.
Sorry, something went wrong. |
||
|
||
if (str.length === 0) { | ||
return ''; | ||
|
@@ -47,9 +43,7 @@ module.exports = function () { | |
str = preserveCamelCase(str); | ||
|
||
return str | ||
.replace(/^[_.\- ]+/, '') | ||
.toLowerCase() | ||
.replace(/[_.\- ]+(\w|$)/g, function (m, p1) { | ||
return p1.toUpperCase(); | ||
}); | ||
.replace(/^[_.\- ]+/, '') | ||
.toLowerCase() | ||
.replace(/[_.\- ]+(\w|$)/g, (m, p1) => p1.toUpperCase()); | ||
}; |
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -7,10 +7,10 @@ | |
"author": { | ||
"name": "Sindre Sorhus", | ||
"email": "[email protected]", | ||
"url": "http://sindresorhus.com" | ||
"url": "sindresorhus.com" | ||
}, | ||
"engines": { | ||
"node": ">=0.10.0" | ||
"node": ">=4" | ||
}, | ||
"scripts": { | ||
"test": "xo && ava" | ||
|
@@ -35,5 +35,8 @@ | |
"devDependencies": { | ||
"ava": "*", | ||
"xo": "*" | ||
}, | ||
"xo": { | ||
"esnext": true | ||
} | ||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,49 +1,49 @@ | ||
import test from 'ava'; | ||
import fn from './'; | ||
import m from './'; | ||
|
||
test('camelCase', t => { | ||
t.is(fn('foo'), 'foo'); | ||
t.is(fn('foo-bar'), 'fooBar'); | ||
t.is(fn('foo-bar-baz'), 'fooBarBaz'); | ||
t.is(fn('foo--bar'), 'fooBar'); | ||
t.is(fn('--foo-bar'), 'fooBar'); | ||
t.is(fn('--foo--bar'), 'fooBar'); | ||
t.is(fn('FOO-BAR'), 'fooBar'); | ||
t.is(fn('FOÈ-BAR'), 'foèBar'); | ||
t.is(fn('-foo-bar-'), 'fooBar'); | ||
t.is(fn('--foo--bar--'), 'fooBar'); | ||
t.is(fn('foo.bar'), 'fooBar'); | ||
t.is(fn('foo..bar'), 'fooBar'); | ||
t.is(fn('..foo..bar..'), 'fooBar'); | ||
t.is(fn('foo_bar'), 'fooBar'); | ||
t.is(fn('__foo__bar__'), 'fooBar'); | ||
t.is(fn('__foo__bar__'), 'fooBar'); | ||
t.is(fn('foo bar'), 'fooBar'); | ||
t.is(fn(' foo bar '), 'fooBar'); | ||
t.is(fn('-'), '-'); | ||
t.is(fn(' - '), '-'); | ||
t.is(fn('fooBar'), 'fooBar'); | ||
t.is(fn('fooBar-baz'), 'fooBarBaz'); | ||
t.is(fn('foìBar-baz'), 'foìBarBaz'); | ||
t.is(fn('fooBarBaz-bazzy'), 'fooBarBazBazzy'); | ||
t.is(fn('FBBazzy'), 'fbBazzy'); | ||
t.is(fn('F'), 'f'); | ||
t.is(fn('FooBar'), 'fooBar'); | ||
t.is(fn('Foo'), 'foo'); | ||
t.is(fn('FOO'), 'foo'); | ||
t.is(fn('foo', 'bar'), 'fooBar'); | ||
t.is(fn('foo', '-bar'), 'fooBar'); | ||
t.is(fn('foo', '-bar', 'baz'), 'fooBarBaz'); | ||
t.is(fn('', ''), ''); | ||
t.is(fn('--'), ''); | ||
t.is(fn(''), ''); | ||
t.is(fn('--__--_--_'), ''); | ||
t.is(fn('---_', '--', '', '-_- '), ''); | ||
t.is(fn('foo bar?'), 'fooBar?'); | ||
t.is(fn('foo bar!'), 'fooBar!'); | ||
t.is(fn('foo bar$'), 'fooBar$'); | ||
t.is(fn('foo-bar#'), 'fooBar#'); | ||
t.is(fn('XMLHttpRequest'), 'xmlHttpRequest'); | ||
t.is(fn('AjaxXMLHttpRequest'), 'ajaxXmlHttpRequest'); | ||
t.is(fn('Ajax-XMLHttpRequest'), 'ajaxXmlHttpRequest'); | ||
t.is(m('foo'), 'foo'); | ||
t.is(m('foo-bar'), 'fooBar'); | ||
t.is(m('foo-bar-baz'), 'fooBarBaz'); | ||
t.is(m('foo--bar'), 'fooBar'); | ||
t.is(m('--foo-bar'), 'fooBar'); | ||
t.is(m('--foo--bar'), 'fooBar'); | ||
t.is(m('FOO-BAR'), 'fooBar'); | ||
t.is(m('FOÈ-BAR'), 'foèBar'); | ||
t.is(m('-foo-bar-'), 'fooBar'); | ||
t.is(m('--foo--bar--'), 'fooBar'); | ||
t.is(m('foo.bar'), 'fooBar'); | ||
t.is(m('foo..bar'), 'fooBar'); | ||
t.is(m('..foo..bar..'), 'fooBar'); | ||
t.is(m('foo_bar'), 'fooBar'); | ||
t.is(m('__foo__bar__'), 'fooBar'); | ||
t.is(m('__foo__bar__'), 'fooBar'); | ||
t.is(m('foo bar'), 'fooBar'); | ||
t.is(m(' foo bar '), 'fooBar'); | ||
t.is(m('-'), '-'); | ||
t.is(m(' - '), '-'); | ||
t.is(m('fooBar'), 'fooBar'); | ||
t.is(m('fooBar-baz'), 'fooBarBaz'); | ||
t.is(m('foìBar-baz'), 'foìBarBaz'); | ||
t.is(m('fooBarBaz-bazzy'), 'fooBarBazBazzy'); | ||
t.is(m('FBBazzy'), 'fbBazzy'); | ||
t.is(m('F'), 'f'); | ||
t.is(m('FooBar'), 'fooBar'); | ||
t.is(m('Foo'), 'foo'); | ||
t.is(m('FOO'), 'foo'); | ||
t.is(m('foo', 'bar'), 'fooBar'); | ||
t.is(m('foo', '-bar'), 'fooBar'); | ||
t.is(m('foo', '-bar', 'baz'), 'fooBarBaz'); | ||
t.is(m('', ''), ''); | ||
t.is(m('--'), ''); | ||
t.is(m(''), ''); | ||
t.is(m('--__--_--_'), ''); | ||
t.is(m('---_', '--', '', '-_- '), ''); | ||
t.is(m('foo bar?'), 'fooBar?'); | ||
t.is(m('foo bar!'), 'fooBar!'); | ||
t.is(m('foo bar$'), 'fooBar$'); | ||
t.is(m('foo-bar#'), 'fooBar#'); | ||
t.is(m('XMLHttpRequest'), 'xmlHttpRequest'); | ||
t.is(m('AjaxXMLHttpRequest'), 'ajaxXmlHttpRequest'); | ||
t.is(m('Ajax-XMLHttpRequest'), 'ajaxXmlHttpRequest'); | ||
}); |
since it's all modern, not worrying about IE8, you can use
str[i]
instead ofcharAt
.