Coder Social home page Coder Social logo

allthethings.js's Introduction

Build Status

ALLTHETHINGS.JS

ALLTHETHINGS.JS

Let your array iterations read like actual sentences:

var things = ['all', 'the', 'things'];

function log(thing) {
	console.log(thing);
}

log.allThe(things);

For no extra cost, you also get the 'fromThe' and 'inThe' aliases, for your grammatical needs:

var proHackers = filterNoobs.fromThe(hackers);
containsProHackers.inThe(hackers); // true

And all for less than 1KB, with no dependencies*. Delicious.

*Unless your browser is an antique. Then you need es5-shim.

ALLTHETHINGS.JS allows you to sentencify the following array methods:

Gimme gimme

Node.js

Install with: npm install allthethings

require('allthethings');

Browser

Download the production version or the development version.

forEach / map

By default, 'allThe' performs a map on the array, which doubles as a forEach:

forEach

var things = ['all', 'the', 'things'];

function log(thing) {
	console.log(thing);
}

log.allThe(things);

map

var numbers = [1,2,3];

function triple(number) {
	return number * 3;
}

var multiplesOfThree = triple.allThe(numbers); // [3,6,9]

filter

If your named function starts with 'filter' or 'is', then a filter is performed.

When filtering, it's idiomatic to use 'fromThe' instead of 'allThe':

var numbers = [-2,-1,0,1,2];

function filterNegatives(number) {
	return number >= 0;
}

filterNegatives.fromThe(numbers); // [0,1,2]
var numbers = [-2,-1,0,1,2];

function isPositive(number) {
	return number > 0;
}

isPositive.fromThe(numbers); // [1,2]

reduce / reduceRight

If your named function starts with 'reduce', 'calculate' or 'add', then a reduce is performed.

If you add 'Right' to any of these, then a reduceRight is performed instead.

When reducing, it's idiomatic to use 'fromThe' instead of 'allThe':

Given the 'numbers' array:

var numbers = [1,2,3];

Any of these will work identically:

function reduceTotal(a, b) {
	return a + b;
}

var total = reduceTotal.fromThe(numbers); // 6
function calculateTotal(a, b) {
	return a + b;
}

var total = calculateTotal.fromThe(numbers); // 6
function addTotal(a, b) {
	return a + b;
}

var total = addTotal.fromThe(numbers); // 6

some

If your named function starts with 'some', 'contains' or 'has', then a some is performed.

When using 'some', it's idiomatic to use 'inThe' instead of 'allThe':

var numbers = [-2,-1,0,1,2];

function someNegatives(number) {
	return number < 0;
}

someNegatives.inThe(numbers); // true
var numbers = [-2,-1,0,1,2];

function containsNegatives(number) {
	return number < 0;
}

containsNegatives.inThe(numbers); // true
var numbers = [-2,-1,0,1,2];

function hasNegatives(number) {
	return number < 0;
}

hasNegatives.inThe(numbers); // true

every

If your named function starts with 'every' or 'all', then an every is performed.

When using 'every', it's idiomatic to use 'inThe' instead of 'allThe':

var numbers = [1,2,3,4,5];

function everyNumberIsPositive(number) {
	return number > 0;
}

everyNumberIsPositive.inThe(numbers); // true
var numbers = [1,2,3,4,5];

function allPositive(number) {
	return number > 0;
}

allPositive.inThe(numbers); // true

Elite hacker tips

Aliased functions

Assign a named function expression to a variable of a different name:

var things = [false, true, false];

var myAliasedFunction = function filter(thing) {
	return thing === true;
};

myAliasedFunction.allThe(things); // [true]

Custom function name rules

You can create new rules or override existing ones:

In Node.js

var allthethings = require('allthethings');

allthethings.rules.filter = /foobar/;

In the browser

window.allthethings.rules.filter = /foobar/;

Which allows:

var numbers = [1,2,3,4];

function foobar(number) {
	return number % 2 === 0;
}

// This now performs a filter:
foobar.allThe(numbers); // [2,4]

Contributing

In lieu of a formal styleguide, take care to maintain the existing coding style. Add unit tests for any new or changed functionality. Lint and test your code using grunt.

License

Copyright (c) 2012 Mark Dalgleish
Licensed under the MIT license.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.