From be4bea8058dfa46ec86733cc8e2c4b927da18c0c Mon Sep 17 00:00:00 2001 From: Anton Konev Date: Wed, 2 Nov 2016 13:41:45 +0500 Subject: [PATCH 1/2] Add support to compose only functions in utils/compose --- src/compose.js | 2 ++ test/compose.spec.js | 11 +++++++++++ 2 files changed, 13 insertions(+) diff --git a/src/compose.js b/src/compose.js index 06e37ce11c..fdd349eece 100644 --- a/src/compose.js +++ b/src/compose.js @@ -14,6 +14,8 @@ export default function compose(...funcs) { return arg => arg } + funcs = funcs.filter(func => (typeof func === 'function')) + if (funcs.length === 1) { return funcs[0] } diff --git a/test/compose.spec.js b/test/compose.spec.js index 49e4a2616f..263f1e5354 100644 --- a/test/compose.spec.js +++ b/test/compose.spec.js @@ -21,6 +21,17 @@ describe('Utils', () => { expect(compose(c, a, b)(final)('')).toBe('cab') }) + it('composes only functions', () => { + const square = x => x * x + const add = (x, y) => x + y + + expect(compose(square, add, false)(1, 2)).toBe(9) + expect(compose(square, add, undefined)(1, 2)).toBe(9) + expect(compose(square, add, true)(1, 2)).toBe(9) + expect(compose(square, add, NaN)(1, 2)).toBe(9) + expect(compose(square, add, '42')(1, 2)).toBe(9) + }) + it('can be seeded with multiple arguments', () => { const square = x => x * x const add = (x, y) => x + y From 69f7628b168050349464b60403bab502839b15e5 Mon Sep 17 00:00:00 2001 From: Tim Dorr Date: Wed, 2 Nov 2016 12:11:04 -0400 Subject: [PATCH 2/2] Remove some parens --- src/compose.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/compose.js b/src/compose.js index fdd349eece..df443a4904 100644 --- a/src/compose.js +++ b/src/compose.js @@ -14,7 +14,7 @@ export default function compose(...funcs) { return arg => arg } - funcs = funcs.filter(func => (typeof func === 'function')) + funcs = funcs.filter(func => typeof func === 'function') if (funcs.length === 1) { return funcs[0]