UNPKG

ramda-extension

Version:

Helpful functions built on top of the mighty Ramda

40 lines (31 loc) 1.33 kB
"use strict"; 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;