From 48f11812bd0076064d022e56f73e06be985f9cc0 Mon Sep 17 00:00:00 2001 From: xaveyaguarez Date: Sun, 17 Dec 2017 00:08:55 -0800 Subject: [PATCH 1/5] coalesce snippet --- snippets/coalesce.md | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 snippets/coalesce.md diff --git a/snippets/coalesce.md b/snippets/coalesce.md new file mode 100644 index 000000000..d740b14c0 --- /dev/null +++ b/snippets/coalesce.md @@ -0,0 +1,11 @@ +### Coalesce a set of arguments + +Use `find()` to return the first non excluded argument. + +```js +const coalesce = (...args) => args.find(_ => ![undefined, null].includes(_)) +// coalesce(null,undefined,"",NaN, "Waldo") -> "" + +const coalesceFactory = (excludes = [null, undefined]) => (...args) => args.find(_ => !excludes.includes(_)) +// coalesceFactory([null, undefined, "", NaN])(undefined, null, NaN, "", "Waldo") -> "Waldo" +``` From 021df91849aad8d1d43db0c8735b40952de45a1e Mon Sep 17 00:00:00 2001 From: xaveyaguarez Date: Sun, 17 Dec 2017 11:39:24 -0800 Subject: [PATCH 2/5] split coalesce into 2 functions --- snippets/coalesce-factory.md | 9 +++++++++ snippets/coalesce.md | 5 +---- 2 files changed, 10 insertions(+), 4 deletions(-) create mode 100644 snippets/coalesce-factory.md diff --git a/snippets/coalesce-factory.md b/snippets/coalesce-factory.md new file mode 100644 index 000000000..45f2a4cfb --- /dev/null +++ b/snippets/coalesce-factory.md @@ -0,0 +1,9 @@ +### Coalesce factory + +Returns a function which provides a customized coalesce function + +```js +const coalesceFactory = (excludes = [null, undefined]) => (...args) => args.find(_ => !excludes.includes(_)) +// const customCoalesce = coalesceFactory([null, undefined, "", NaN]) +// customCoalesce(undefined, null, NaN, "", "Waldo") -> "Waldo" +``` diff --git a/snippets/coalesce.md b/snippets/coalesce.md index d740b14c0..c8a59d5e0 100644 --- a/snippets/coalesce.md +++ b/snippets/coalesce.md @@ -1,11 +1,8 @@ ### Coalesce a set of arguments -Use `find()` to return the first non excluded argument. +Use `find()` to return the first non null/undefined argument. ```js const coalesce = (...args) => args.find(_ => ![undefined, null].includes(_)) // coalesce(null,undefined,"",NaN, "Waldo") -> "" - -const coalesceFactory = (excludes = [null, undefined]) => (...args) => args.find(_ => !excludes.includes(_)) -// coalesceFactory([null, undefined, "", NaN])(undefined, null, NaN, "", "Waldo") -> "Waldo" ``` From 245e7442d841a1a7487ba81b4d69658051d0351c Mon Sep 17 00:00:00 2001 From: xaveyaguarez Date: Sun, 17 Dec 2017 14:09:04 -0800 Subject: [PATCH 3/5] use function in coalesce factory --- snippets/coalesce-factory.md | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/snippets/coalesce-factory.md b/snippets/coalesce-factory.md index 45f2a4cfb..cad3a8f21 100644 --- a/snippets/coalesce-factory.md +++ b/snippets/coalesce-factory.md @@ -1,9 +1,11 @@ ### Coalesce factory -Returns a function which provides a customized coalesce function +Returns a customized coalesce function that returns the first argument +that returns true from the provided argument validation function. ```js -const coalesceFactory = (excludes = [null, undefined]) => (...args) => args.find(_ => !excludes.includes(_)) -// const customCoalesce = coalesceFactory([null, undefined, "", NaN]) -// customCoalesce(undefined, null, NaN, "", "Waldo") -> "Waldo" +const coalesceFactory = valid => (...args) => args.find(valid) + +// const customCoalesce = coalesceFactory(_ => ![null, undefined, "", NaN].includes(_)) +// customCoalesce(undefined, null, NaN, "", "Waldo") //-> "Waldo" ``` From d7be9d908462f0f30bfa35d7442b1656dc9a5b2b Mon Sep 17 00:00:00 2001 From: Angelos Chalaris Date: Mon, 18 Dec 2017 12:15:36 +0200 Subject: [PATCH 4/5] Update and rename coalesce-factory.md to coalesceFactory.md --- snippets/coalesce-factory.md | 11 ----------- snippets/coalesceFactory.md | 11 +++++++++++ 2 files changed, 11 insertions(+), 11 deletions(-) delete mode 100644 snippets/coalesce-factory.md create mode 100644 snippets/coalesceFactory.md diff --git a/snippets/coalesce-factory.md b/snippets/coalesce-factory.md deleted file mode 100644 index cad3a8f21..000000000 --- a/snippets/coalesce-factory.md +++ /dev/null @@ -1,11 +0,0 @@ -### Coalesce factory - -Returns a customized coalesce function that returns the first argument -that returns true from the provided argument validation function. - -```js -const coalesceFactory = valid => (...args) => args.find(valid) - -// const customCoalesce = coalesceFactory(_ => ![null, undefined, "", NaN].includes(_)) -// customCoalesce(undefined, null, NaN, "", "Waldo") //-> "Waldo" -``` diff --git a/snippets/coalesceFactory.md b/snippets/coalesceFactory.md new file mode 100644 index 000000000..4b9a78924 --- /dev/null +++ b/snippets/coalesceFactory.md @@ -0,0 +1,11 @@ +### coalesceFactory + +Returns a customized coalesce function that returns the first argument that returns `true` from the provided argument validation function. + +Use `Array.find()` to return the first argument that returns `true` from the provided argument validation function. + +```js +const coalesceFactory = valid => (...args) => args.find(valid); +// const customCoalesce = coalesceFactory(_ => ![null, undefined, "", NaN].includes(_)) +// customCoalesce(undefined, null, NaN, "", "Waldo") //-> "Waldo" +``` From 1657b6141777f0d490abdca6dd1d9e7299f94a24 Mon Sep 17 00:00:00 2001 From: Angelos Chalaris Date: Mon, 18 Dec 2017 12:16:18 +0200 Subject: [PATCH 5/5] Update coalesce.md --- snippets/coalesce.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/snippets/coalesce.md b/snippets/coalesce.md index c8a59d5e0..22271dc68 100644 --- a/snippets/coalesce.md +++ b/snippets/coalesce.md @@ -1,6 +1,8 @@ -### Coalesce a set of arguments +### coalesce -Use `find()` to return the first non null/undefined argument. +Returns the first non-null/undefined argument. + +Use `Array.find()` to return the first non `null`/`undefined` argument. ```js const coalesce = (...args) => args.find(_ => ![undefined, null].includes(_))