moltres-utils
Version:
Utils for Moltres apps
63 lines (48 loc) • 1.67 kB
JavaScript
require("core-js/modules/es6.object.define-property");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _compact = _interopRequireDefault(require("./compact"));
var _curry = _interopRequireDefault(require("../common/curry"));
var _defn = _interopRequireDefault(require("../common/defn"));
var _getProp = _interopRequireDefault(require("./getProp"));
var _isArray = _interopRequireDefault(require("../lang/isArray"));
var _isUndefined = _interopRequireDefault(require("../lang/isUndefined"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
/**
* Retrieve the value at a given path.
*
* @function
* @since v0.0.3
* @category data
* @typedefn Idx = String | Int
* @sig [Idx] -> {a} -> a | Undefined
* @param {Array} path The path to use.
* @param {Object} obj The object to retrieve the nested property from.
* @returns {*} The data at `path`.
* @example
*
* getPath(['a', 'b'], {a: {b: 2}}); //=> 2
* getPath(['a', 'b'], {c: {b: 2}}); //=> undefined
*/
var getPath = (0, _curry.default)((0, _defn.default)('getPath', function (path, obj) {
if (!(0, _isArray.default)(path)) {
throw new TypeError("getPath expected path to be an Array. Instead received ".concat(path));
}
var pathParts = (0, _compact.default)(path);
var val = obj;
var idx = 0;
while (idx < pathParts.length) {
val = (0, _getProp.default)(pathParts[idx], val);
if ((0, _isUndefined.default)(val)) {
return val;
}
idx += 1;
}
return val;
}));
var _default = getPath;
exports.default = _default;
//# sourceMappingURL=getPath.js.map
;