diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..176a458 --- /dev/null +++ b/.gitattributes @@ -0,0 +1 @@ +* text=auto diff --git a/.jshintignore b/.jshintignore new file mode 100644 index 0000000..3163c22 --- /dev/null +++ b/.jshintignore @@ -0,0 +1,14 @@ + +# Directories # +############### +build/ +reports/ +dist/ + +# Node.js # +########### +/node_modules/ + +# Git # +####### +.git* diff --git a/.npmignore b/.npmignore index cc43218..9db298d 100644 --- a/.npmignore +++ b/.npmignore @@ -13,6 +13,7 @@ examples/ reports/ support/ test/ +benchmark/ # Node.js # ########### @@ -46,5 +47,6 @@ Desktop.ini # Utilities # ############# .jshintrc +.jshintignore .travis.yml .editorconfig diff --git a/.travis.yml b/.travis.yml index 7c16620..29cff27 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,5 +1,12 @@ language: node_js node_js: - - "0.10" + - '0.12' + - '0.11' + - '0.10' + - '0.8' + - 'iojs' +before_install: + - npm update -g npm after_script: - - npm run coveralls \ No newline at end of file + - npm run coveralls + diff --git a/LICENSE b/LICENSE index 2fe3939..93cf2ea 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ The MIT License (MIT) -Copyright (c) 2014 Athan Reines. +Copyright (c) 2014-2015 The Compute.io Authors. All rights reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal @@ -18,4 +18,4 @@ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. \ No newline at end of file +SOFTWARE. diff --git a/Makefile b/Makefile index f5648d1..3234fbb 100644 --- a/Makefile +++ b/Makefile @@ -5,25 +5,29 @@ # Set the node.js environment to test: NODE_ENV ?= test +# Kernel name: +KERNEL ?= $(shell uname -s) + +ifeq ($(KERNEL), Darwin) + OPEN ?= open +else + OPEN ?= xdg-open +endif # NOTES # -NOTES ?= 'TODO|FIXME' +NOTES ?= 'TODO|FIXME|WARNING|HACK|NOTE' # MOCHA # -# Specify the test framework bin locations: MOCHA ?= ./node_modules/.bin/mocha _MOCHA ?= ./node_modules/.bin/_mocha - -# Specify the mocha reporter: MOCHA_REPORTER ?= spec # ISTANBUL # -# Istanbul configuration: ISTANBUL ?= ./node_modules/.bin/istanbul ISTANBUL_OUT ?= ./reports/coverage ISTANBUL_REPORT ?= lcov @@ -31,6 +35,12 @@ ISTANBUL_LCOV_INFO_PATH ?= $(ISTANBUL_OUT)/lcov.info ISTANBUL_HTML_REPORT_PATH ?= $(ISTANBUL_OUT)/lcov-report/index.html +# JSHINT # + +JSHINT ?= ./node_modules/.bin/jshint +JSHINT_REPORTER ?= ./node_modules/jshint-stylish/stylish.js + + # FILES # @@ -96,9 +106,20 @@ test-istanbul-mocha: node_modules view-cov: view-istanbul-report view-istanbul-report: - open $(ISTANBUL_HTML_REPORT_PATH) + $(OPEN) $(ISTANBUL_HTML_REPORT_PATH) +# LINT # + +.PHONY: lint lint-jshint + +lint: lint-jshint + +lint-jshint: node_modules + $(JSHINT) \ + --reporter $(JSHINT_REPORTER) \ + ./ + # NODE # @@ -117,7 +138,6 @@ clean-node: # CLEAN # - .PHONY: clean clean: diff --git a/README.md b/README.md index 83d7722..1d8b394 100644 --- a/README.md +++ b/README.md @@ -16,7 +16,6 @@ For use in the browser, use [browserify](https://github.com/substack/node-browse ## Usage -To use the module, ``` javascript var issorted = require( 'compute-issorted' ); @@ -45,7 +44,7 @@ var bool = issorted( [ 13, 6, 5, 2 ], comparator ); The `comparator` function should behave the same as a comparator provided to [`arr.sort()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort). -The comparator should take two arguments: `a` and `b`, where `a` and `b` are consecutive `array` elements. If the comparator returns a `numeric` value less than or equal to `0`, consecutive elements are considered sorted; otherwise, `issorted` returns `false`. +The comparator should take two arguments: `a` and `b`, where `a` and `b` are consecutive `array` elements. If the comparator returns a `numeric` value less than or equal to `0`, consecutive elements are considered sorted; otherwise, `issorted` returns `false`. ## Examples @@ -87,7 +86,7 @@ This function runs in linear time: `O(N)`, where `N` is the input `array` length ### Unit -Unit tests use the [Mocha](http://visionmedia.github.io/mocha) test framework with [Chai](http://chaijs.com) assertions. To run the tests, execute the following command in the top-level application directory: +Unit tests use the [Mocha](http://mochajs.org) test framework with [Chai](http://chaijs.com) assertions. To run the tests, execute the following command in the top-level application directory: ``` bash $ make test @@ -111,15 +110,15 @@ $ make view-cov ``` +--- ## License -[MIT license](http://opensource.org/licenses/MIT). +[MIT license](http://opensource.org/licenses/MIT). ---- ## Copyright -Copyright © 2014. Athan Reines. +Copyright © 2014-2015. The Compute.io Authors. [npm-image]: http://img.shields.io/npm/v/compute-issorted.svg diff --git a/lib/index.js b/lib/index.js index 2babc61..22c3e28 100644 --- a/lib/index.js +++ b/lib/index.js @@ -1,33 +1,10 @@ -/** -* -* COMPUTE: issorted -* -* -* DESCRIPTION: -* - Returns a boolean indicating if an input array is sorted. -* -* -* NOTES: -* [1] -* -* -* TODO: -* [1] -* -* -* LICENSE: -* MIT -* -* Copyright (c) 2014. Athan Reines. -* -* -* AUTHOR: -* Athan Reines. kgryte@gmail.com. 2014. -* -*/ - 'use strict'; +// MODULES // + +var isArray = require( 'validate.io-array' ), + isFunction = require( 'validate.io-function' ); + // ISSORTED // /** @@ -39,12 +16,12 @@ * @returns {Boolean} boolean indicating if array is sorted */ function issorted( arr, clbk ) { - if ( !Array.isArray( arr ) ) { - throw new TypeError( 'issorted()::invalid input argument. Must provide an array.' ); + if ( !isArray( arr ) ) { + throw new TypeError( 'issorted()::invalid input argument. Must provide an array. Value: `' + arr + '`.' ); } if ( arguments.length > 1 ) { - if ( typeof clbk !== 'function' ) { - throw new TypeError( 'issorted()::invalid input argument. Comparator must be a function.' ); + if ( !isFunction( clbk ) ) { + throw new TypeError( 'issorted()::invalid input argument. Comparator must be a function. Value: `' + clbk + '`.' ); } } var len = arr.length, diff --git a/package.json b/package.json index 7b7fbaa..45c1575 100644 --- a/package.json +++ b/package.json @@ -10,6 +10,10 @@ { "name": "Athan Reines", "email": "kgryte@gmail.com" + }, + { + "name": "Philipp Burckhardt", + "email": "pburckhardt@outlook.com" } ], "scripts": { @@ -37,18 +41,18 @@ "bugs": { "url": "https://github.com/compute-io/issorted/issues" }, - "dependencies": {}, + "dependencies": { + "validate.io-array": "^1.0.5", + "validate.io-function": "^1.0.2" + }, "devDependencies": { - "chai": "1.x.x", + "chai": "2.x.x", "compute-shuffle": "^1.0.0", "coveralls": "^2.11.1", "istanbul": "^0.3.0", - "mocha": "1.x.x" + "mocha": "2.x.x", + "jshint": "2.x.x", + "jshint-stylish": "^1.0.0" }, - "licenses": [ - { - "type": "MIT", - "url": "http://www.opensource.org/licenses/MIT" - } - ] + "license": "MIT" }