From 2296030d560d4620eb1773219686822eb9c322e3 Mon Sep 17 00:00:00 2001 From: Sindre Sorhus Date: Tue, 8 Nov 2016 22:53:09 +0700 Subject: [PATCH] ES2015ify and require Node.js 4 --- .editorconfig | 5 +-- .gitattributes | 1 + .travis.yml | 4 +-- index.js | 28 ++++++---------- package.json | 7 ++-- readme.md | 2 +- test.js | 90 +++++++++++++++++++++++++------------------------- 7 files changed, 65 insertions(+), 72 deletions(-) diff --git a/.editorconfig b/.editorconfig index 86c8f59..98a761d 100644 --- a/.editorconfig +++ b/.editorconfig @@ -7,9 +7,6 @@ charset = utf-8 trim_trailing_whitespace = true insert_final_newline = true -[package.json] +[{package.json,*.yml}] indent_style = space indent_size = 2 - -[*.md] -trim_trailing_whitespace = false diff --git a/.gitattributes b/.gitattributes index 176a458..391f0a4 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1 +1,2 @@ * text=auto +*.js text eol=lf diff --git a/.travis.yml b/.travis.yml index a78e23d..b18bae5 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,7 +1,5 @@ sudo: false language: node_js node_js: - - '5' + - '6' - '4' - - '0.12' - - '0.10' diff --git a/index.js b/index.js index bec0444..e3d2a45 100644 --- a/index.js +++ b/index.js @@ -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); if (isLastCharLower && (/[a-zA-Z]/).test(c) && c.toUpperCase() === c) { str = str.substr(0, i) + '-' + str.substr(i); @@ -20,9 +20,9 @@ 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; } } @@ -30,11 +30,7 @@ function preserveCamelCase(str) { } module.exports = function () { - 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('-'); 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()); }; diff --git a/package.json b/package.json index a404754..f0f30f9 100644 --- a/package.json +++ b/package.json @@ -7,10 +7,10 @@ "author": { "name": "Sindre Sorhus", "email": "sindresorhus@gmail.com", - "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 } } diff --git a/readme.md b/readme.md index 080b2a1..0610dc6 100644 --- a/readme.md +++ b/readme.md @@ -54,4 +54,4 @@ camelCase('__foo__', '--bar'); ## License -MIT © [Sindre Sorhus](http://sindresorhus.com) +MIT © [Sindre Sorhus](https://sindresorhus.com) diff --git a/test.js b/test.js index 892a41e..97461e4 100644 --- a/test.js +++ b/test.js @@ -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'); });