UNPKG

moltres-utils

Version:
75 lines (60 loc) 2.1 kB
"use strict"; 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