README
Array.nocomplex
Introduction
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
Basics
Array/basics provide the following :
- map
- collect
- first
- has
- last
- onEls
- remove
- removeOneValue * except
- exceptFn
- uniq
- equals
map
[10,20].map(function(n) { return n * 2 }); // [20, 40]
collect
Such as map, but provide a useful tricks :
[{ name : 'cyril'}, { name : 'piercus'}].collect('name') // ['cyril', 'piercus']
send
Useful, allow you to call a method on each element of the array
[{ 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
['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
Math
Useful helpers when dealing with geometry.
Array/math
provide the following :
- equals
- multiply
- divide
- minus
- add
- round
- norm
Demo
See cagosta.github.io/Array.nocomplex
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
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:
<script src="[path_to_source]/Array.nocomplex-latest-standalone-min.js%>"></script>
The module is available via the scope
window.ArrayNocomplex
Documentation
See jsdoc-generated documentation in /documentation
Folder Structure
app -> development files
|- bower_components -> [bower](https://github.com/bower/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](http://gruntjs.com/) tasks, see [generator-mangrove-module](https://github.com/cagosta/generator-mangrove-module)
|
dist -> distribution & build files
|
node_modules -> node packages
|
documentation -> [jsdoc](http://usejsdoc.org/about-jsdoc3.html) generated documentation
Run unit tests
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
On node
grunt test:node
will run your tests with node and mocha.
Because of requirejs, the mocha
command does not work.
To do
- check future default implementations
- base all naming on lodash
Build your own
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 ..