ramda-extension
Version:
Helpful functions built on top of the mighty Ramda
40 lines (31 loc) • 1.33 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _ramda = require("ramda");
var _dotPath = _interopRequireDefault(require("./dotPath"));
var _assocDotPath = _interopRequireDefault(require("./assocDotPath"));
var _headArg = _interopRequireDefault(require("./headArg"));
var _lastArg = _interopRequireDefault(require("./lastArg"));
var resolveDotPath = (0, _ramda.converge)(_dotPath.default, [_headArg.default, _lastArg.default]);
var performMerge = (0, _ramda.converge)(_ramda.call, [(0, _ramda.nthArg)(1), resolveDotPath, (0, _ramda.nthArg)(2)]);
/**
* Merge data in object using custom merge fn.
*
* @func
* @category Object
*
* @param {String} path The dot path to the value
* @param {Function} mergeFn The merging function
* @param {*} value Value to merge
* @param {Object} obj The object to clone
* @return {Object} A new object with merge data
* @example
*
* R_.mergeWithDotPath('a.b', R.mergeRight, { d: 30 }, {a: {b: { c: 20 }}}); //=> {a: {b: { c: 20, d: 30 }}}
*/
var mergeWithDotPath = (0, _ramda.converge)(_assocDotPath.default, [_headArg.default, performMerge, _lastArg.default]);
var _default = mergeWithDotPath;
exports.default = _default;