Array.prototype augmentations, no complex
Array.prototype augmentations, no complex.
I know this is bad but _( _( _( this ).is ).ugly() while this.is.clean().
Furthemore, I promise to modify all .prototype invocations on modules that are becoming popular.
## Array.prototype ###
All helpers are atomised in AMD modules. You can use it for instance with require.js or almond.js.
You can require juste one, such as map ( define('myModule', ['Array.nocomplex/map']); ) or group exists, such as Array/basics, Array/math or Array.nocomplex/all
Array/basics provide the following :
* map
* collect
* first
* has
* last
* onEls
* remove
* removeOneValue
* except
* exceptFn
* uniq
* equals
#### map
``javascript`
[10,20].map(function(n) { return n * 2 }); // [20, 40]
#### collect
Such as map, but provide a useful tricks :
`javascript`
[{ name : 'cyril'}, { name : 'piercus'}].collect('name') // ['cyril', 'piercus']
#### send
Useful, allow you to call a method on each element of the array
`javascript`
[{ callMe : function(arg) { console.log(arg)}}, { callMe : function() { console.log('world')}}].send('callMe', 'hello'); // log 'hello' and then 'world'
#### where
Return a new array with all found occurences
#### find
Return the first found occurence wich evaluate to true
#### first
Return array[0]
#### has
Return true if instance has value
`javascript`
['cyril', 'piercus'].has('cyril'); // true
#### onEls
Replaces every element of this with f(element)
#### remove
If found, the argument is removed from the array
#### last
Return the last element of the array
#### except
Return a new array without the element that are the same at the argument
#### isIn
#### equals
#### each
Useful helpers when dealing with geometry.
Array/math provide the following :
* equals
* multiply
* divide
* minus
* add
* round
* norm
## Install ##
Array.nocomplex is coded as amd module but can be installed with npm, bower or old-fashioned src=".min.js".
#### With npm: ####
``
npm install array-nocomplex
and use it with nodejs:
``
var ArrayNocomplex = require('array-nocomplex')
#### With bower: ####
` `
bower install Array.nocomplex
and use it with requirejs
`javascript
require(['Array.nocomplex/Array.nocomplex'], function( ArrayNocomplex ){
})
`
#### With src=" .min.js" ####
Inside the dist folder, download latest standalone minified version or development version and include it in your html page:
`html`
The module is available via the scope
`javascript`
window.ArrayNocomplex
## Documentation ##
See jsdoc-generated documentation in /documentation
app -> development files
|- bower_components -> bower front-end packages
|- main.js -> main file for browser and node.js, handle AMD config
|- array.nocomplex -> main AMD module
test -> unit tests
|
tasks -> Grunt tasks, see generator-mangrove-module
|
dist -> distribution & build files
|
node_modules -> node packages
|
documentation -> jsdoc generated documentation
#### On the browser ####
Run grunt test:browser and open test/ on your browser.
#### On a headless browser ####
grunt test:headless will run your tests in a headless browser, with phantomjs and mocha
grunt test:node will run your tests with node and mocha.
Because of requirejs, the mocha command does not work.
This project uses Node.js, Grunt and Require.js for the build process. If for some reason you need to build a custom version install Node.js, npm install` and run:
grunt build
## Yeoman Mangrove module Generator ##
This module is based on a Yeoman generator: Generator-mangrove-module
Check it for task-related references such as build, deploy etc ..