diff --git a/snippets/checkProp.md b/snippets/checkProp.md new file mode 100644 index 000000000..a0e59858d --- /dev/null +++ b/snippets/checkProp.md @@ -0,0 +1,29 @@ +### checkProp + +Given a `predicate` function and a `prop` string this curried function will then take an `object` to inspect by calling the property and passing it to the predicate. + +It summons `prop` on `obj` and passes it to a provided `predicate` function and returns a masked boolean + +```js +const checkProp = (predicate, prop) => obj => !!predicate(obj[prop]) +``` + +```js +const lengthIs4 = checkProp(l => l === 4, 'length') +lengthIs4([]) // false +lengthIs4([1,2,3,4]) // true +lengthIs4(new Set([1,2,3,4])) // false (Set uses Size, not length) + +const session = { user: {} } +const validUserSession = checkProps(u => u.active && !u.disabled, 'user') + +validUserSession(session) // false + +session.user.active = true +validUserSession(session) // true + +const noLength(l => l === undefined, 'length') +noLength([]) // false +noLength({}) // true +noLength(new Set()) // true +``` diff --git a/tag_database b/tag_database index 7d248af61..a1938487c 100644 --- a/tag_database +++ b/tag_database @@ -23,6 +23,7 @@ capitalize:string,array,intermediate capitalizeEveryWord:string,regexp,intermediate castArray:utility,array,type,beginner chainAsync:function,intermediate +checkProp:function,object,utility,beginner chunk:array,intermediate clampNumber:math,beginner cloneRegExp:utility,regexp,intermediate