moltres-utils
Version:
Utils for Moltres apps
75 lines (60 loc) • 2.1 kB
JavaScript
require("core-js/modules/es6.object.define-property");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _castPath = _interopRequireDefault(require("./castPath"));
var _curry = _interopRequireDefault(require("../common/curry"));
var _defn = _interopRequireDefault(require("../common/defn"));
var _getParentPath = _interopRequireDefault(require("./getParentPath"));
var _isArray = _interopRequireDefault(require("../lang/isArray"));
var _isFunction = _interopRequireDefault(require("../lang/isFunction"));
var _isUndefined = _interopRequireDefault(require("../lang/isUndefined"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
/**
* Retrieve the parent value from a given path. The parent value is the value immediately before the last path part.
*
* Paths can be defined by a string an array. The path parameter also accepts a function that will be used as a selector against the data.
*
*
*
* @function
* @since v0.0.10
* @category data
* @param {Array|string|number|Function} path The path to use.
* @param {Object} value The value to retrieve the parent property value from.
* @returns {*} The data at `path`.
* @example
*
* getParent(['a', 'b'], {a: {b: 2}})
* //=> {b: 2}
*
* getParent(['a', 'b'], {c: {b: 2}})
* //=> undefined
*
* getParent('a', {a: {b: 2}})
* //=> {a: {b: 2}}
*
* getParent('a.b', {a: {b: 2}})
* //=> {b: 2}
*
* getParent('a[0]', {a: [ 1, 2 ]})
* //=> [ 1, 2 ]
*/
var getParent = (0, _curry.default)((0, _defn.default)('getParent', function (selector, value) {
if ((0, _isUndefined.default)(selector)) {
return undefined; // has no parent since there's no path parts
}
if ((0, _isFunction.default)(selector)) {
return selector(value);
}
var parts = selector;
if (!(0, _isArray.default)(selector)) {
parts = (0, _castPath.default)(selector, value);
}
return (0, _getParentPath.default)(parts, value);
}));
var _default = getParent;
exports.default = _default;
//# sourceMappingURL=getParent.js.map
;