foop
Version:
interfaces that describe their intentions.
29 lines (27 loc) • 2.54 kB
JavaScript
var hasOwnProperty = require('../util/hasOwnProperty')
var curry = require('../fp/curry')
/**
* @desc if it has own property, call fnIs(value), else false
* @curried 3
* @name ownPropertyIs
* @alias ownPropertySatisfies
*
* @param {string|Array<string>} propertyPath (@TODO later, lensish)
* @param {Function} fnIs (obj[path]): boolean
* @param {Object} obj object to check
* @return {boolean} hasOwnProperty && fnIs
*
* @see util/hasOwnProperty
* @see fp/curry
* @see is/_core
*
* @TODO add just getting the value of the property, as a param option
* @TODO example
* @TODO use path here too when needed
*/
module.exports = curry(3, function ownPropertyIs(propertyPath, fnIs, obj) {
return hasOwnProperty(obj, propertyPath)
? fnIs(obj[propertyPath])
: false
})
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3duUHJvcGVydHlJcy5qcyIsInNvdXJjZXMiOlsib3duUHJvcGVydHlJcy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBoYXNPd25Qcm9wZXJ0eSA9IHJlcXVpcmUoJy4uL3V0aWwvaGFzT3duUHJvcGVydHknKVxuY29uc3QgY3VycnkgPSByZXF1aXJlKCcuLi9mcC9jdXJyeScpXG5cbi8qKlxuICogQGRlc2MgaWYgaXQgaGFzIG93biBwcm9wZXJ0eSwgY2FsbCBmbklzKHZhbHVlKSwgZWxzZSBmYWxzZVxuICogQGN1cnJpZWQgM1xuICogQG5hbWUgb3duUHJvcGVydHlJc1xuICogQGFsaWFzIG93blByb3BlcnR5U2F0aXNmaWVzXG4gKlxuICogQHBhcmFtICB7c3RyaW5nfEFycmF5PHN0cmluZz59IHByb3BlcnR5UGF0aCAoQFRPRE8gbGF0ZXIsIGxlbnNpc2gpXG4gKiBAcGFyYW0gIHtGdW5jdGlvbn0gZm5JcyAob2JqW3BhdGhdKTogYm9vbGVhblxuICogQHBhcmFtICB7T2JqZWN0fSBvYmogb2JqZWN0IHRvIGNoZWNrXG4gKiBAcmV0dXJuIHtib29sZWFufSBoYXNPd25Qcm9wZXJ0eSAmJiBmbklzXG4gKlxuICogQHNlZSB1dGlsL2hhc093blByb3BlcnR5XG4gKiBAc2VlIGZwL2N1cnJ5XG4gKiBAc2VlIGlzL19jb3JlXG4gKlxuICogQFRPRE8gYWRkIGp1c3QgZ2V0dGluZyB0aGUgdmFsdWUgb2YgdGhlIHByb3BlcnR5LCBhcyBhIHBhcmFtIG9wdGlvblxuICogQFRPRE8gZXhhbXBsZVxuICogQFRPRE8gdXNlIHBhdGggaGVyZSB0b28gd2hlbiBuZWVkZWRcbiAqL1xubW9kdWxlLmV4cG9ydHMgPSBjdXJyeSgzLCBmdW5jdGlvbiBvd25Qcm9wZXJ0eUlzKHByb3BlcnR5UGF0aCwgZm5Jcywgb2JqKSB7XG4gIHJldHVybiBoYXNPd25Qcm9wZXJ0eShvYmosIHByb3BlcnR5UGF0aClcbiAgICA/IGZuSXMob2JqW3Byb3BlcnR5UGF0aF0pXG4gICAgOiBmYWxzZVxufSlcbiJdLCJuYW1lcyI6WyJjb25zdCJdLCJtYXBwaW5ncyI6IkFBQUFBLEdBQUssQ0FBQyxjQUFjLEdBQUcsT0FBTyxDQUFDLHdCQUF3QixDQUFDO0FBQ3hEQSxHQUFLLENBQUMsS0FBSyxHQUFHLE9BQU8sQ0FBQyxhQUFhLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQXFCcEMsTUFBTSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUMsQ0FBQyxFQUFFLFNBQVMsYUFBYSxDQUFDLFlBQVksRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFO0VBQ3hFLE9BQU8sY0FBYyxDQUFDLEdBQUcsRUFBRSxZQUFZLENBQUM7TUFDcEMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsQ0FBQztNQUN2QixLQUFLO0NBQ1YsQ0FBQzsifQ==