moltres-utils
Version:
Utils for Moltres apps
66 lines (53 loc) • 1.79 kB
JavaScript
require("core-js/modules/es6.object.define-property");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _curry = _interopRequireDefault(require("../common/curry"));
var _defn = _interopRequireDefault(require("../common/defn"));
var _isFunction = _interopRequireDefault(require("../lang/isFunction"));
var _isNil = _interopRequireDefault(require("../lang/isNil"));
var _isUndefined = _interopRequireDefault(require("../lang/isUndefined"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
/**
* Returns a function that when supplied an object returns the indicated property of that object, if it exists.
*
* @function
* @since v0.0.3
* @alias prop
* @category data
* @sig s -> {s: a} -> a | Undefined
* @param {string|number|Function} prop The property name or property selector
* @param {Object} value The value to query
* @returns {*} The value at the given property
* @example
*
* getProp('x', {x: 100}) //=> 100
* getProp('x', {}) //=> undefined
* getProp(undefined, {}) //=> {}
* getProp(1, ['foo', 'bar']) //=> 'bar'
* getProp((value) => value[0], ['foo', 'bar']) //=> 'foo'
* getProp('foo', {
* foo: 'bar',
* get(prop) { return this[prop] }
* }) //=> 'bar'
*/
var getProp = (0, _curry.default)((0, _defn.default)('getProp', function (prop, value) {
if ((0, _isUndefined.default)(prop)) {
return value;
}
if ((0, _isFunction.default)(prop)) {
return prop(value);
}
if ((0, _isNil.default)(value)) {
return undefined;
}
if ((0, _isFunction.default)(value.get)) {
return value.get(prop);
}
return value[prop];
}));
var _default = getProp;
exports.default = _default;
//# sourceMappingURL=getProp.js.map
;