diff options
Diffstat (limited to 'deps/npm/node_modules/cli-table2/node_modules/lodash/internal/baseMerge.js')
-rw-r--r-- | deps/npm/node_modules/cli-table2/node_modules/lodash/internal/baseMerge.js | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/deps/npm/node_modules/cli-table2/node_modules/lodash/internal/baseMerge.js b/deps/npm/node_modules/cli-table2/node_modules/lodash/internal/baseMerge.js new file mode 100644 index 0000000000..ab81900869 --- /dev/null +++ b/deps/npm/node_modules/cli-table2/node_modules/lodash/internal/baseMerge.js @@ -0,0 +1,56 @@ +var arrayEach = require('./arrayEach'), + baseMergeDeep = require('./baseMergeDeep'), + isArray = require('../lang/isArray'), + isArrayLike = require('./isArrayLike'), + isObject = require('../lang/isObject'), + isObjectLike = require('./isObjectLike'), + isTypedArray = require('../lang/isTypedArray'), + keys = require('../object/keys'); + +/** + * The base implementation of `_.merge` without support for argument juggling, + * multiple sources, and `this` binding `customizer` functions. + * + * @private + * @param {Object} object The destination object. + * @param {Object} source The source object. + * @param {Function} [customizer] The function to customize merged values. + * @param {Array} [stackA=[]] Tracks traversed source objects. + * @param {Array} [stackB=[]] Associates values with source counterparts. + * @returns {Object} Returns `object`. + */ +function baseMerge(object, source, customizer, stackA, stackB) { + if (!isObject(object)) { + return object; + } + var isSrcArr = isArrayLike(source) && (isArray(source) || isTypedArray(source)), + props = isSrcArr ? undefined : keys(source); + + arrayEach(props || source, function(srcValue, key) { + if (props) { + key = srcValue; + srcValue = source[key]; + } + if (isObjectLike(srcValue)) { + stackA || (stackA = []); + stackB || (stackB = []); + baseMergeDeep(object, source, key, baseMerge, customizer, stackA, stackB); + } + else { + var value = object[key], + result = customizer ? customizer(value, srcValue, key, object, source) : undefined, + isCommon = result === undefined; + + if (isCommon) { + result = srcValue; + } + if ((result !== undefined || (isSrcArr && !(key in object))) && + (isCommon || (result === result ? (result !== value) : (value === value)))) { + object[key] = result; + } + } + }); + return object; +} + +module.exports = baseMerge; |