From f62921c1b6d0eddb221cf6f8382a7d1c8961f872 Mon Sep 17 00:00:00 2001 From: jonschlinkert Date: Thu, 21 Apr 2016 02:06:06 -0400 Subject: [PATCH] run update, verb --- .editorconfig | 4 +- .eslintrc.json | 122 +++++++++++++++++++++++++++++++++++++++++++++++++ .jshintrc | 18 -------- .travis.yml | 11 +++-- .verb.md | 33 ------------- LICENSE | 2 +- README.md | 68 +++++++++++++-------------- package.json | 27 ++++++++--- test.js | 46 +++++++++---------- 9 files changed, 209 insertions(+), 122 deletions(-) create mode 100644 .eslintrc.json delete mode 100644 .jshintrc diff --git a/.editorconfig b/.editorconfig index 1ff40e6..408d870 100644 --- a/.editorconfig +++ b/.editorconfig @@ -13,10 +13,10 @@ insert_final_newline = true trim_trailing_whitespace = false insert_final_newline = false -[{,test/}{actual,fixtures}/**] +[**/{actual,fixtures,expected}/**] trim_trailing_whitespace = false insert_final_newline = false -[templates/**] +[**/templates/**] trim_trailing_whitespace = false insert_final_newline = false diff --git a/.eslintrc.json b/.eslintrc.json new file mode 100644 index 0000000..948dbdb --- /dev/null +++ b/.eslintrc.json @@ -0,0 +1,122 @@ +{ + "ecmaFeatures": { + "modules": true, + "experimentalObjectRestSpread": true + }, + + "env": { + "browser": false, + "es6": true, + "node": true, + "mocha": true + }, + + "globals": { + "document": false, + "navigator": false, + "window": false + }, + + "rules": { + "accessor-pairs": 2, + "arrow-spacing": [2, { "before": true, "after": true }], + "block-spacing": [2, "always"], + "brace-style": [2, "1tbs", { "allowSingleLine": true }], + "comma-dangle": [2, "never"], + "comma-spacing": [2, { "before": false, "after": true }], + "comma-style": [2, "last"], + "constructor-super": 2, + "curly": [2, "multi-line"], + "dot-location": [2, "property"], + "eol-last": 2, + "eqeqeq": [2, "allow-null"], + "generator-star-spacing": [2, { "before": true, "after": true }], + "handle-callback-err": [2, "^(err|error)$" ], + "indent": [2, 2, { "SwitchCase": 1 }], + "key-spacing": [2, { "beforeColon": false, "afterColon": true }], + "keyword-spacing": [2, { "before": true, "after": true }], + "new-cap": [2, { "newIsCap": true, "capIsNew": false }], + "new-parens": 2, + "no-array-constructor": 2, + "no-caller": 2, + "no-class-assign": 2, + "no-cond-assign": 2, + "no-const-assign": 2, + "no-control-regex": 2, + "no-debugger": 2, + "no-delete-var": 2, + "no-dupe-args": 2, + "no-dupe-class-members": 2, + "no-dupe-keys": 2, + "no-duplicate-case": 2, + "no-empty-character-class": 2, + "no-eval": 2, + "no-ex-assign": 2, + "no-extend-native": 2, + "no-extra-bind": 2, + "no-extra-boolean-cast": 2, + "no-extra-parens": [2, "functions"], + "no-fallthrough": 2, + "no-floating-decimal": 2, + "no-func-assign": 2, + "no-implied-eval": 2, + "no-inner-declarations": [2, "functions"], + "no-invalid-regexp": 2, + "no-irregular-whitespace": 2, + "no-iterator": 2, + "no-label-var": 2, + "no-labels": 2, + "no-lone-blocks": 2, + "no-mixed-spaces-and-tabs": 2, + "no-multi-spaces": 2, + "no-multi-str": 2, + "no-multiple-empty-lines": [2, { "max": 1 }], + "no-native-reassign": 0, + "no-negated-in-lhs": 2, + "no-new": 2, + "no-new-func": 2, + "no-new-object": 2, + "no-new-require": 2, + "no-new-wrappers": 2, + "no-obj-calls": 2, + "no-octal": 2, + "no-octal-escape": 2, + "no-proto": 0, + "no-redeclare": 2, + "no-regex-spaces": 2, + "no-return-assign": 2, + "no-self-compare": 2, + "no-sequences": 2, + "no-shadow-restricted-names": 2, + "no-spaced-func": 2, + "no-sparse-arrays": 2, + "no-this-before-super": 2, + "no-throw-literal": 2, + "no-trailing-spaces": 0, + "no-undef": 2, + "no-undef-init": 2, + "no-unexpected-multiline": 2, + "no-unneeded-ternary": [2, { "defaultAssignment": false }], + "no-unreachable": 2, + "no-unused-vars": [2, { "vars": "all", "args": "none" }], + "no-useless-call": 0, + "no-with": 2, + "one-var": [0, { "initialized": "never" }], + "operator-linebreak": [0, "after", { "overrides": { "?": "before", ":": "before" } }], + "padded-blocks": [0, "never"], + "quotes": [2, "single", "avoid-escape"], + "radix": 2, + "semi": [2, "always"], + "semi-spacing": [2, { "before": false, "after": true }], + "space-before-blocks": [2, "always"], + "space-before-function-paren": [2, "never"], + "space-in-parens": [2, "never"], + "space-infix-ops": 2, + "space-unary-ops": [2, { "words": true, "nonwords": false }], + "spaced-comment": [0, "always", { "markers": ["global", "globals", "eslint", "eslint-disable", "*package", "!", ","] }], + "use-isnan": 2, + "valid-typeof": 2, + "wrap-iife": [2, "any"], + "yoda": [2, "never"] + } +} diff --git a/.jshintrc b/.jshintrc deleted file mode 100644 index 1a2f7b9..0000000 --- a/.jshintrc +++ /dev/null @@ -1,18 +0,0 @@ -{ - "asi": false, - "boss": true, - "curly": true, - "eqeqeq": true, - "eqnull": true, - "esnext": true, - "immed": true, - "latedef": false, - "laxcomma": false, - "mocha": true, - "newcap": true, - "noarg": true, - "node": true, - "sub": true, - "undef": true, - "unused": true -} diff --git a/.travis.yml b/.travis.yml index 0fc9381..cb1d261 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,11 +1,12 @@ sudo: false language: node_js node_js: - - "0.10" - - "0.12" - - "0.13" - - "iojs" + - '5' + - '4' + - '0.12' + - '0.10' matrix: fast_finish: true allow_failures: - - node_js: "0.13" + - node_js: '0.10' + - node_js: '0.12' diff --git a/.verb.md b/.verb.md index 27fdde6..9b5df34 100644 --- a/.verb.md +++ b/.verb.md @@ -1,10 +1,3 @@ -# {%= name %} {%= badge("fury") %} - -> {%= description %} - -## Install -{%= include("install-npm", {save: true}) %} - ## Usage Sort an array by the given object property: @@ -23,10 +16,6 @@ arraySort([{foo: 'y'}, {foo: 'z'}, {foo: 'x'}], 'foo', {reverse: true}); //=> [{foo: 'z'}, {foo: 'y'}, {foo: 'x'}] ``` -## Table of contents - - - ## Params ```js @@ -139,26 +128,4 @@ console.log(result); // { foo: 'x', bar: 'y', baz: 'z' } ] ``` -## Related projects -{%= related(verb.related.list, {remove: name}) %} - -## Running tests -{%= include("tests") %} - -## Contributing -{%= include("contributing") %} - -## Author -{%= include("author") %} - -## License -{%= copyright() %} -{%= license() %} - -*** - -{%= include("footer") %} - [mozilla]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort - -{%= reflinks(['verb']) %} \ No newline at end of file diff --git a/LICENSE b/LICENSE index 65f90ac..1e49edf 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ The MIT License (MIT) -Copyright (c) 2015, Jon Schlinkert. +Copyright (c) 2015-2016, Jon Schlinkert. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/README.md b/README.md index fe3777a..64aed82 100644 --- a/README.md +++ b/README.md @@ -1,13 +1,13 @@ -# array-sort [![NPM version](https://badge.fury.io/js/array-sort.svg)](http://badge.fury.io/js/array-sort) +# array-sort [![NPM version](https://img.shields.io/npm/v/array-sort.svg?style=flat)](https://www.npmjs.com/package/array-sort) [![NPM downloads](https://img.shields.io/npm/dm/array-sort.svg?style=flat)](https://npmjs.org/package/array-sort) [![Build Status](https://img.shields.io/travis/jonschlinkert/array-sort.svg?style=flat)](https://travis-ci.org/jonschlinkert/array-sort) > Fast and powerful array sorting. Sort an array of objects by one or more properties. Any number of nested properties or custom comparison functions may be used. ## Install -Install with [npm](https://www.npmjs.com/) +Install with [npm](https://www.npmjs.com/): ```sh -$ npm i array-sort --save +$ npm install array-sort --save ``` ## Usage @@ -28,22 +28,6 @@ arraySort([{foo: 'y'}, {foo: 'z'}, {foo: 'x'}], 'foo', {reverse: true}); //=> [{foo: 'z'}, {foo: 'y'}, {foo: 'x'}] ``` -## Table of contents - - - -* [Params](#params) -* [Examples](#examples) -* [Related projects](#related-projects) -* [Running tests](#running-tests) -* [Contributing](#contributing) -* [Author](#author) -* [License](#license) - -_(Table of contents generated by [verb](https://github.com/assemble/verb))_ - - - ## Params ```js @@ -157,36 +141,52 @@ console.log(result); ## Related projects -* [get-value](https://github.com/jonschlinkert/get-value): Use property paths (` a.b.c`) to get a nested value from an object. -* [sort-asc](https://github.com/jonschlinkert/sort-asc): Sort array elements in ascending order. -* [sort-desc](https://github.com/jonschlinkert/sort-desc): Sort array elements in descending order. -* [set-value](https://github.com/jonschlinkert/set-value): Create nested values and any intermediaries using dot notation (`'a.b.c'`) paths. -* [sort-object](https://github.com/doowb/sort-object): Sort the keys in an object. +You might also be interested in these projects: -## Running tests +* [get-value](https://www.npmjs.com/package/get-value): Use property paths (`a.b.c`) to get a nested value from an object. | [homepage](https://github.com/jonschlinkert/get-value) +* [set-value](https://www.npmjs.com/package/set-value): Create nested values and any intermediaries using dot notation (`'a.b.c'`) paths. | [homepage](https://github.com/jonschlinkert/set-value) +* [sort-asc](https://www.npmjs.com/package/sort-asc): Sort array elements in ascending order. | [homepage](https://github.com/jonschlinkert/sort-asc) +* [sort-desc](https://www.npmjs.com/package/sort-desc): Sort array elements in descending order. | [homepage](https://github.com/jonschlinkert/sort-desc) +* [sort-object](https://www.npmjs.com/package/sort-object): Sort the keys in an object. | [homepage](https://github.com/doowb/sort-object) -Install dev dependencies: +## Contributing + +Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](https://github.com/jonschlinkert/array-sort/issues/new). + +## Building docs + +Generate readme and API documentation with [verb](https://github.com/verbose/verb): ```sh -$ npm i -d && npm test +$ npm install verb && npm run docs ``` -## Contributing +Or, if [verb](https://github.com/verbose/verb) is installed globally: + +```sh +$ verb +``` + +## Running tests + +Install dev dependencies: -Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](https://github.com/jonschlinkert/array-sort/issues/new) +```sh +$ npm install -d && npm test +``` ## Author **Jon Schlinkert** -+ [github/jonschlinkert](https://github.com/jonschlinkert) -+ [twitter/jonschlinkert](http://twitter.com/jonschlinkert) +* [github/jonschlinkert](https://github.com/jonschlinkert) +* [twitter/jonschlinkert](http://twitter.com/jonschlinkert) ## License -Copyright © 2015 Jon Schlinkert -Released under the MIT license. +Copyright © 2016, [Jon Schlinkert](https://github.com/jonschlinkert). +Released under the [MIT license](https://github.com/jonschlinkert/array-sort/blob/master/LICENSE). *** -_This file was generated by [verb-cli](https://github.com/assemble/verb-cli) on July 18, 2015._ \ No newline at end of file +_This file was generated by [verb](https://github.com/verbose/verb), v0.9.0, on April 21, 2016._ \ No newline at end of file diff --git a/package.json b/package.json index 9d661e0..17d4cd7 100644 --- a/package.json +++ b/package.json @@ -25,11 +25,12 @@ }, "devDependencies": { "ansi-bold": "^0.1.1", - "benchmarked": "^0.1.4", - "glob": "^5.0.14", + "benchmarked": "^0.1.5", + "glob": "^7.0.3", + "gulp-format-md": "^0.1.8", "lodash.sortbyorder": "^3.4.4", - "mocha": "*", - "should": "*" + "mocha": "^2.4.5", + "should": "^8.3.1" }, "keywords": [ "arr", @@ -59,14 +60,28 @@ "sorting" ], "verb": { + "reflinks": [ + "verb" + ], "related": { "list": [ - "sort-asc", - "sort-desc", "get-value", "set-value", + "sort-asc", + "sort-desc", "sort-object" ] + }, + "toc": false, + "layout": "default", + "tasks": [ + "readme" + ], + "plugins": [ + "gulp-format-md" + ], + "lint": { + "reflinks": true } } } diff --git a/test.js b/test.js index e7c5faf..f1e43f2 100644 --- a/test.js +++ b/test.js @@ -1,34 +1,34 @@ 'use strict'; -/* deps: mocha */ +require('mocha'); var should = require('should'); var get = require('get-value'); var arraySort = require('./'); -describe('errors', function () { - it('should throw an error when invalid args are passed:', function () { - (function () { +describe('errors', function() { + it('should throw an error when invalid args are passed:', function() { + (function() { arraySort({}); }).should.throw('array-sort expects an array.'); }); }); -describe('empty array', function () { - it('should return an empty array when null or undefined is passed', function () { +describe('empty array', function() { + it('should return an empty array when null or undefined is passed', function() { arraySort().should.eql([]); arraySort(undefined).should.eql([]); arraySort(null).should.eql([]); }) }); -describe('basic sort', function () { - it('should sort an array of primitives', function () { +describe('basic sort', function() { + it('should sort an array of primitives', function() { var arr = ['d', 3, 'b', 'a', 'd', 1, 0, 'z']; arraySort(arr).should.eql([ 0, 1, 3, 'a', 'b', 'd', 'd', 'z' ]); }) }); -describe('arraySort', function () { +describe('arraySort', function() { var posts = [ { path: 'a.md', locals: { date: '2014-01-09' } }, { path: 'f.md', locals: { date: '2014-01-02' } }, @@ -40,7 +40,7 @@ describe('arraySort', function () { { path: 'g.md', locals: { date: '2014-02-02' } }, ]; - it('should sort by a property:', function () { + it('should sort by a property:', function() { var arr = [{key: 'y'}, {key: 'z'}, {key: 'x'}]; arraySort(arr, 'key').should.eql([ {key: 'x'}, @@ -60,7 +60,7 @@ describe('arraySort', function () { ]); }); - it('should sort by a nested property:', function () { + it('should sort by a nested property:', function() { var res = arraySort(posts, 'locals.date'); res.should.eql([ { path: 'b.md', locals: { date: '2012-01-02' } }, @@ -74,7 +74,7 @@ describe('arraySort', function () { ]); }); - it('should do nothing when the specified property is not a string:', function () { + it('should do nothing when the specified property is not a string:', function() { var arr = [ {a: {b: {c: 'c'}}}, {a: {b: {z: 'z'}}}, @@ -90,7 +90,7 @@ describe('arraySort', function () { ]); }); - it('should sort by multiple properties:', function () { + it('should sort by multiple properties:', function() { var posts = [ { foo: 'bbb', locals: { date: '2013-05-06' } }, { foo: 'aaa', locals: { date: '2012-01-02' } }, @@ -116,10 +116,10 @@ describe('arraySort', function () { ]); }); - it('should sort with a function:', function () { + it('should sort with a function:', function() { var arr = [{key: 'y'}, {key: 'z'}, {key: 'x'}]; - var actual = arraySort(arr, function (a, b) { + var actual = arraySort(arr, function(a, b) { return a.key > b.key; }); @@ -130,7 +130,7 @@ describe('arraySort', function () { ]); }); - it('should support sorting with a list of function:', function () { + it('should support sorting with a list of function:', function() { var arr = [ {foo: 'w', bar: 'y', baz: 'w', quux: 'a'}, {foo: 'x', bar: 'y', baz: 'w', quux: 'b'}, @@ -139,7 +139,7 @@ describe('arraySort', function () { ]; var compare = function(prop) { - return function (a, b) { + return function(a, b) { return a[prop].localeCompare(b[prop]); }; }; @@ -158,7 +158,7 @@ describe('arraySort', function () { ]); }); - it('should support sorting with an array of function:', function () { + it('should support sorting with an array of function:', function() { var arr = [ {foo: 'w', bar: 'y', baz: 'w', quux: 'a'}, {foo: 'x', bar: 'y', baz: 'w', quux: 'b'}, @@ -167,7 +167,7 @@ describe('arraySort', function () { ]; var compare = function(prop) { - return function (a, b) { + return function(a, b) { return a[prop].localeCompare(b[prop]); }; }; @@ -187,7 +187,7 @@ describe('arraySort', function () { ]); }); - it('should support sorting with any combination of functions and properties:', function () { + it('should support sorting with any combination of functions and properties:', function() { var posts = [ { path: 'a.md', locals: { date: '2014-01-01', foo: 'zzz', bar: 1 } }, { path: 'f.md', locals: { date: '2014-01-01', foo: 'mmm', bar: 2 } }, @@ -205,7 +205,7 @@ describe('arraySort', function () { ]; var compare = function(prop) { - return function (a, b, fn) { + return function(a, b, fn) { var valA = get(a, prop); var valB = get(b, prop); return fn(valA, valB); @@ -233,7 +233,7 @@ describe('arraySort', function () { ]); }); - it('should support reverse sorting with any combination of functions and properties:', function () { + it('should support reverse sorting with any combination of functions and properties:', function() { var posts = [ { path: 'a.md', locals: { date: '2014-01-01', foo: 'zzz', bar: 1 } }, { path: 'f.md', locals: { date: '2014-01-01', foo: 'mmm', bar: 2 } }, @@ -251,7 +251,7 @@ describe('arraySort', function () { ]; var compare = function(prop) { - return function (a, b, fn) { + return function(a, b, fn) { var valA = get(a, prop); var valB = get(b, prop); return fn(valA, valB);