UNPKG

foop

Version:

interfaces that describe their intentions.

36 lines (33 loc) 2.94 kB
var curry = require('../fp/curry') var hasIn = require('../is/in') /** * @desc isIn + hasIn ...and also allows a predicate/matcher/specification * @memberOf is * @memberOf fp * @since 5.0.0-beta.4 * * @param {Object} predicate predicate match the property against this * @param {Object} obj object to check * @param {any} prop property to check in object * @return {boolean} obj[prop] hasIn & satisfies * * @TODO surely would be better with focusing on a prop, then applying predicate, lense? :s * @TODO is it better in fp/ or is/ ? needs some definitions * * @see https://github.com/ramda/ramda/blob/master/src/propOr.js * @extends hasIn * @extends isNull * @extends isIn * * @example * * hasIn({}, 'eh') //=> false * hasIn(null, 'eh') //=> false * hasIn({eh: true}, 'eh') //=> true * */ function hasInMatching(predicate, obj, prop) { return hasIn(obj, prop) && predicate(obj[prop]) } module.exports = curry(3, hasInMatching) //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGFzSW5NYXRjaGluZy5qcyIsInNvdXJjZXMiOlsiaGFzSW5NYXRjaGluZy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBjdXJyeSA9IHJlcXVpcmUoJy4uL2ZwL2N1cnJ5JylcbmNvbnN0IGhhc0luID0gcmVxdWlyZSgnLi4vaXMvaW4nKVxuXG4vKipcbiAqIEBkZXNjIGlzSW4gKyBoYXNJbiAuLi5hbmQgYWxzbyBhbGxvd3MgYSBwcmVkaWNhdGUvbWF0Y2hlci9zcGVjaWZpY2F0aW9uXG4gKiBAbWVtYmVyT2YgaXNcbiAqIEBtZW1iZXJPZiBmcFxuICogQHNpbmNlIDUuMC4wLWJldGEuNFxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBwcmVkaWNhdGUgcHJlZGljYXRlIG1hdGNoIHRoZSBwcm9wZXJ0eSBhZ2FpbnN0IHRoaXNcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmogb2JqZWN0IHRvIGNoZWNrXG4gKiBAcGFyYW0ge2FueX0gcHJvcCBwcm9wZXJ0eSB0byBjaGVjayBpbiBvYmplY3RcbiAqIEByZXR1cm4ge2Jvb2xlYW59IG9ialtwcm9wXSBoYXNJbiAmIHNhdGlzZmllc1xuICpcbiAqIEBUT0RPIHN1cmVseSB3b3VsZCBiZSBiZXR0ZXIgd2l0aCBmb2N1c2luZyBvbiBhIHByb3AsIHRoZW4gYXBwbHlpbmcgcHJlZGljYXRlLCBsZW5zZT8gOnNcbiAqIEBUT0RPIGlzIGl0IGJldHRlciBpbiBmcC8gb3IgaXMvID8gbmVlZHMgc29tZSBkZWZpbml0aW9uc1xuICpcbiAqIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL3JhbWRhL3JhbWRhL2Jsb2IvbWFzdGVyL3NyYy9wcm9wT3IuanNcbiAqIEBleHRlbmRzIGhhc0luXG4gKiBAZXh0ZW5kcyBpc051bGxcbiAqIEBleHRlbmRzIGlzSW5cbiAqXG4gKiBAZXhhbXBsZVxuICpcbiAqICBoYXNJbih7fSwgJ2VoJykgLy89PiBmYWxzZVxuICogIGhhc0luKG51bGwsICdlaCcpIC8vPT4gZmFsc2VcbiAqICBoYXNJbih7ZWg6IHRydWV9LCAnZWgnKSAvLz0+IHRydWVcbiAqXG4gKi9cbmZ1bmN0aW9uIGhhc0luTWF0Y2hpbmcocHJlZGljYXRlLCBvYmosIHByb3ApIHtcbiAgcmV0dXJuIGhhc0luKG9iaiwgcHJvcCkgJiYgcHJlZGljYXRlKG9ialtwcm9wXSlcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBjdXJyeSgzLCBoYXNJbk1hdGNoaW5nKVxuIl0sIm5hbWVzIjpbImNvbnN0Il0sIm1hcHBpbmdzIjoiQUFBQUEsR0FBSyxDQUFDLEtBQUssR0FBRyxPQUFPLENBQUMsYUFBYSxDQUFDO0FBQ3BDQSxHQUFLLENBQUMsS0FBSyxHQUFHLE9BQU8sQ0FBQyxVQUFVLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUE0QmpDLFNBQVMsYUFBYSxDQUFDLFNBQVMsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFO0VBQzNDLE9BQU8sS0FBSyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsSUFBSSxTQUFTLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO0NBQ2hEOztBQUVELE1BQU0sQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDLENBQUMsRUFBRSxhQUFhLENBQUM7In0=