functional.js
Advanced tools
Comparing version 0.3.0 to 0.3.1
@@ -7,3 +7,3 @@ { | ||
"homepage": "http://ilee.co.uk", | ||
"version": "0.3.0", | ||
"version": "0.3.1", | ||
"keywords": [ | ||
@@ -15,2 +15,6 @@ "functional", | ||
"lambda", | ||
"collection", | ||
"iterator", | ||
"each", | ||
"map", | ||
"λ", | ||
@@ -17,0 +21,0 @@ "array", |
@@ -155,2 +155,6 @@ var λ = (function () { | ||
λ.isArray = function (obj) { | ||
return Object.prototype.toString.call(obj) === "[object Array]"; | ||
}; | ||
λ.toArray = function (obj) { | ||
@@ -162,10 +166,11 @@ return λ.map(function (key) { | ||
λ.identity = function (val) { | ||
return function() { | ||
return val; | ||
}; | ||
}; | ||
λ.maybe = λ.curry(function (func, val) { | ||
return (typeof(val) === "undefined" || val === null || !val) ? null : func(λ.identity(val)()); | ||
λ.apply = λ.curry(function (func, items) { | ||
var args = []; | ||
if (λ.isArray(func)) { | ||
args = [].slice.call(func, 1); | ||
func = func[0]; | ||
} | ||
return λ.map(function (item) { | ||
return item[func].apply(item, args); | ||
}, items); | ||
}); | ||
@@ -172,0 +177,0 @@ |
/*! | ||
functional.js (v0.3.0) 01-02-2014 | ||
functional.js (v0.3.1) 11-02-2014 | ||
(c) Lee Crossley <leee@hotmail.co.uk> (http://ilee.co.uk/) | ||
*/ | ||
var lambda=function(){"use strict";var a={},b="hardReturn;",c=function(a){return a.length>0?[].slice.call(a,0):[]},d=function(a){if(!a||"function"!=typeof a)throw"lambda Error: Invalid function"};return a.curry=function(b){return d(b),function e(){var d=c(arguments);if(d.length===b.length)return b.apply(null,d);if(d.length>b.length){var f=b.apply(null,d);return a.reduce(b,f,d.slice(b.length))}return function(){var a=c(arguments);return e.apply(null,d.concat(a))}}},a.each=a.curry(function(a,c){d(a);for(var e=0;e<c.length;e++)if(a.call(null,c[e],e)===b)return}),a.map=a.curry(function(b,c){d(b);var e,f=[];return e=a.each(function(){f.push(b.apply(null,arguments))}),e(c),f}),a.reduce=a.reducel=a.curry(function(b,c,e){d(b);var f,g=c;return f=a.each(function(a){g=b.call(null,g,a)}),f(e),g}),a.clone=function(b){var c=[];return a.each(function(a){c.push(a)},b),c},a.first=a.curry(function(c,e){d(c);var f;return a.each(function(a){return c.call(null,a)?(f=a,b):void 0},e),f}),a.last=a.curry(function(b,c){var d=a.clone(c);return a.first(b,d.reverse())}),a.every=a.all=a.curry(function(b,c){d(b);var e=!0;return a.each(function(a){b.call(null,a)||(e=!1)},c),e}),a.any=a.contains=a.curry(function(c,e){d(c);var f=!1;return a.each(function(a){return c.call(null,a)?(f=!0,b):void 0},e),f}),a.select=a.curry(function(b,c){d(b);var e,f=[];return e=a.each(function(a){b.call(null,a)&&f.push(a)}),e(c),f}),a.compose=function(b){var d=a.any(function(a){return"function"!=typeof a});if(b=c(arguments),d(b))throw"lambda Error: Invalid function to compose";return function(){var c=arguments,d=a.each(function(a){c=[a.apply(null,c)]});return d(b.reverse()),c[0]}},a.partition=a.curry(function(b,c){d(b);var e,f=[],g=[];return e=a.each(function(a){(b.call(null,a)?f:g).push(a)}),e(c),[f,g]}),a.toArray=function(b){return a.map(function(a){return[a,b[a]]},Object.keys(b))},a.identity=function(a){return function(){return a}},a.maybe=a.curry(function(b,c){return"undefined"!=typeof c&&null!==c&&c?b(a.identity(c)()):null}),a}();"undefined"!=typeof exports&&("undefined"!=typeof module&&module.exports&&(exports=module.exports=lambda),exports.lambda=lambda); | ||
var lambda=function(){"use strict";var a={},b="hardReturn;",c=function(a){return a.length>0?[].slice.call(a,0):[]},d=function(a){if(!a||"function"!=typeof a)throw"lambda Error: Invalid function"};return a.curry=function(b){return d(b),function e(){var d=c(arguments);if(d.length===b.length)return b.apply(null,d);if(d.length>b.length){var f=b.apply(null,d);return a.reduce(b,f,d.slice(b.length))}return function(){var a=c(arguments);return e.apply(null,d.concat(a))}}},a.each=a.curry(function(a,c){d(a);for(var e=0;e<c.length;e++)if(a.call(null,c[e],e)===b)return}),a.map=a.curry(function(b,c){d(b);var e,f=[];return e=a.each(function(){f.push(b.apply(null,arguments))}),e(c),f}),a.reduce=a.reducel=a.curry(function(b,c,e){d(b);var f,g=c;return f=a.each(function(a){g=b.call(null,g,a)}),f(e),g}),a.clone=function(b){var c=[];return a.each(function(a){c.push(a)},b),c},a.first=a.curry(function(c,e){d(c);var f;return a.each(function(a){return c.call(null,a)?(f=a,b):void 0},e),f}),a.last=a.curry(function(b,c){var d=a.clone(c);return a.first(b,d.reverse())}),a.every=a.all=a.curry(function(b,c){d(b);var e=!0;return a.each(function(a){b.call(null,a)||(e=!1)},c),e}),a.any=a.contains=a.curry(function(c,e){d(c);var f=!1;return a.each(function(a){return c.call(null,a)?(f=!0,b):void 0},e),f}),a.select=a.curry(function(b,c){d(b);var e,f=[];return e=a.each(function(a){b.call(null,a)&&f.push(a)}),e(c),f}),a.compose=function(b){var d=a.any(function(a){return"function"!=typeof a});if(b=c(arguments),d(b))throw"lambda Error: Invalid function to compose";return function(){var c=arguments,d=a.each(function(a){c=[a.apply(null,c)]});return d(b.reverse()),c[0]}},a.partition=a.curry(function(b,c){d(b);var e,f=[],g=[];return e=a.each(function(a){(b.call(null,a)?f:g).push(a)}),e(c),[f,g]}),a.isArray=function(a){return"[object Array]"===Object.prototype.toString.call(a)},a.toArray=function(b){return a.map(function(a){return[a,b[a]]},Object.keys(b))},a.apply=a.curry(function(b,c){var d=[];return a.isArray(b)&&(d=[].slice.call(b,1),b=b[0]),a.map(function(a){return a[b].apply(a,d)},c)}),a}();"undefined"!=typeof exports&&("undefined"!=typeof module&&module.exports&&(exports=module.exports=lambda),exports.lambda=lambda); |
/*! | ||
functional.js (v0.3.0) 01-02-2014 | ||
functional.js (v0.3.1) 11-02-2014 | ||
(c) Lee Crossley <leee@hotmail.co.uk> (http://ilee.co.uk/) | ||
*/ | ||
var λ=function(){"use strict";var a={},b="hardReturn;",c=function(a){return a.length>0?[].slice.call(a,0):[]},d=function(a){if(!a||"function"!=typeof a)throw"λ Error: Invalid function"};return a.curry=function(b){return d(b),function e(){var d=c(arguments);if(d.length===b.length)return b.apply(null,d);if(d.length>b.length){var f=b.apply(null,d);return a.reduce(b,f,d.slice(b.length))}return function(){var a=c(arguments);return e.apply(null,d.concat(a))}}},a.each=a.curry(function(a,c){d(a);for(var e=0;e<c.length;e++)if(a.call(null,c[e],e)===b)return}),a.map=a.curry(function(b,c){d(b);var e,f=[];return e=a.each(function(){f.push(b.apply(null,arguments))}),e(c),f}),a.reduce=a.reducel=a.curry(function(b,c,e){d(b);var f,g=c;return f=a.each(function(a){g=b.call(null,g,a)}),f(e),g}),a.clone=function(b){var c=[];return a.each(function(a){c.push(a)},b),c},a.first=a.curry(function(c,e){d(c);var f;return a.each(function(a){return c.call(null,a)?(f=a,b):void 0},e),f}),a.last=a.curry(function(b,c){var d=a.clone(c);return a.first(b,d.reverse())}),a.every=a.all=a.curry(function(b,c){d(b);var e=!0;return a.each(function(a){b.call(null,a)||(e=!1)},c),e}),a.any=a.contains=a.curry(function(c,e){d(c);var f=!1;return a.each(function(a){return c.call(null,a)?(f=!0,b):void 0},e),f}),a.select=a.curry(function(b,c){d(b);var e,f=[];return e=a.each(function(a){b.call(null,a)&&f.push(a)}),e(c),f}),a.compose=function(b){var d=a.any(function(a){return"function"!=typeof a});if(b=c(arguments),d(b))throw"λ Error: Invalid function to compose";return function(){var c=arguments,d=a.each(function(a){c=[a.apply(null,c)]});return d(b.reverse()),c[0]}},a.partition=a.curry(function(b,c){d(b);var e,f=[],g=[];return e=a.each(function(a){(b.call(null,a)?f:g).push(a)}),e(c),[f,g]}),a.toArray=function(b){return a.map(function(a){return[a,b[a]]},Object.keys(b))},a.identity=function(a){return function(){return a}},a.maybe=a.curry(function(b,c){return"undefined"!=typeof c&&null!==c&&c?b(a.identity(c)()):null}),a}();"undefined"!=typeof exports&&("undefined"!=typeof module&&module.exports&&(exports=module.exports=λ),exports.λ=λ); | ||
var λ=function(){"use strict";var a={},b="hardReturn;",c=function(a){return a.length>0?[].slice.call(a,0):[]},d=function(a){if(!a||"function"!=typeof a)throw"λ Error: Invalid function"};return a.curry=function(b){return d(b),function e(){var d=c(arguments);if(d.length===b.length)return b.apply(null,d);if(d.length>b.length){var f=b.apply(null,d);return a.reduce(b,f,d.slice(b.length))}return function(){var a=c(arguments);return e.apply(null,d.concat(a))}}},a.each=a.curry(function(a,c){d(a);for(var e=0;e<c.length;e++)if(a.call(null,c[e],e)===b)return}),a.map=a.curry(function(b,c){d(b);var e,f=[];return e=a.each(function(){f.push(b.apply(null,arguments))}),e(c),f}),a.reduce=a.reducel=a.curry(function(b,c,e){d(b);var f,g=c;return f=a.each(function(a){g=b.call(null,g,a)}),f(e),g}),a.clone=function(b){var c=[];return a.each(function(a){c.push(a)},b),c},a.first=a.curry(function(c,e){d(c);var f;return a.each(function(a){return c.call(null,a)?(f=a,b):void 0},e),f}),a.last=a.curry(function(b,c){var d=a.clone(c);return a.first(b,d.reverse())}),a.every=a.all=a.curry(function(b,c){d(b);var e=!0;return a.each(function(a){b.call(null,a)||(e=!1)},c),e}),a.any=a.contains=a.curry(function(c,e){d(c);var f=!1;return a.each(function(a){return c.call(null,a)?(f=!0,b):void 0},e),f}),a.select=a.curry(function(b,c){d(b);var e,f=[];return e=a.each(function(a){b.call(null,a)&&f.push(a)}),e(c),f}),a.compose=function(b){var d=a.any(function(a){return"function"!=typeof a});if(b=c(arguments),d(b))throw"λ Error: Invalid function to compose";return function(){var c=arguments,d=a.each(function(a){c=[a.apply(null,c)]});return d(b.reverse()),c[0]}},a.partition=a.curry(function(b,c){d(b);var e,f=[],g=[];return e=a.each(function(a){(b.call(null,a)?f:g).push(a)}),e(c),[f,g]}),a.isArray=function(a){return"[object Array]"===Object.prototype.toString.call(a)},a.toArray=function(b){return a.map(function(a){return[a,b[a]]},Object.keys(b))},a.apply=a.curry(function(b,c){var d=[];return a.isArray(b)&&(d=[].slice.call(b,1),b=b[0]),a.map(function(a){return a[b].apply(a,d)},c)}),a}();"undefined"!=typeof exports&&("undefined"!=typeof module&&module.exports&&(exports=module.exports=λ),exports.λ=λ); |
@@ -6,3 +6,3 @@ { | ||
"homepage": "http://ilee.co.uk", | ||
"version": "0.3.0", | ||
"version": "0.3.1", | ||
"main": "functional.min.js", | ||
@@ -15,2 +15,6 @@ "keywords": [ | ||
"lambda", | ||
"collection", | ||
"iterator", | ||
"each", | ||
"map", | ||
"λ", | ||
@@ -17,0 +21,0 @@ "array", |
@@ -246,3 +246,3 @@ # functional.js (λ) [![Build Status](https://travis-ci.org/leecrossley/functional-js.png?branch=master)](https://travis-ci.org/leecrossley/functional-js) [![npm version](https://badge.fury.io/js/functional.js.png)](https://npmjs.org/package/functional.js) [![devDependency Status](https://david-dm.org/leecrossley/functional-js/dev-status.png)](https://david-dm.org/leecrossley/functional-js#info=devDependencies) | ||
### λ.toArray example | ||
### λ.toArray example (featuring λ.isArray) | ||
@@ -259,6 +259,32 @@ ```javascript | ||
expect(result).toEqual([["p1", "abc"], ["p2", false], ["p3", null]]); | ||
expect(λ.isArray(obj)).toBeFalsy(); | ||
expect(λ.isArray(result)).toBeTruthy(); | ||
``` | ||
### λ.apply example | ||
```javascript | ||
var items = ["Hello", "World"]; | ||
var applyCase = λ.apply("toUpperCase"); | ||
var result = applyCase(items); | ||
expect(result).toEqual(["HELLO", "WORLD"]); | ||
``` | ||
### λ.apply (multiple argument) example | ||
```javascript | ||
var items = ["Hello", "World"]; | ||
var applyIndexOf = λ.apply(["substring", "1", "4"]); | ||
var result = applyIndexOf(items); | ||
expect(result).toEqual(["ell", "orl"]); | ||
``` | ||
## License | ||
[MIT License](http://ilee.mit-license.org) |
32
spec.js
@@ -328,4 +328,36 @@ describe("functional", function() { | ||
expect(result).toEqual([["p1", "abc"], ["p2", false], ["p3", null]]); | ||
expect(λ.isArray(obj)).toBeFalsy(); | ||
expect(λ.isArray(result)).toBeTruthy(); | ||
}); | ||
it("should be able to λ.curry λ.apply", function() { | ||
var items = ["Hello", "World"]; | ||
var applyCase = λ.apply("toUpperCase"); | ||
var result = applyCase(items); | ||
expect(result).toEqual(["HELLO", "WORLD"]); | ||
}); | ||
it("should be able to λ.curry λ.apply with additional argument", function() { | ||
var items = ["Hello", "World"]; | ||
var applyIndexOf = λ.apply(["indexOf", "o"]); | ||
var result = applyIndexOf(items); | ||
expect(result).toEqual([4, 1]); | ||
}); | ||
it("should be able to λ.curry λ.apply with multiple arguments", function() { | ||
var items = ["Hello", "World"]; | ||
var applyIndexOf = λ.apply(["substring", "1", "4"]); | ||
var result = applyIndexOf(items); | ||
expect(result).toEqual(["ell", "orl"]); | ||
}); | ||
}); |
30340
535
289