Skip to content
This repository has been archived by the owner on Nov 7, 2023. It is now read-only.

Commit

Permalink
Merged hotfix/fix_deepmerge_integration into master
Browse files Browse the repository at this point in the history
  • Loading branch information
Kocal committed Jun 1, 2016
2 parents 13aa631 + 730590f commit 3f2f7a5
Showing 1 changed file with 52 additions and 1 deletion.
1 change: 0 additions & 1 deletion src/lib/deepmerge.js

This file was deleted.

52 changes: 52 additions & 0 deletions src/lib/deepmerge.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
(function (root, factory) {
if (typeof define === 'function' && define.amd) {
define(factory);
} else if (typeof exports === 'object') {
module.exports = factory();
} else {
root.deepmerge = factory();
}
}(this, function () {

return function deepmerge(target, src) {
var array = Array.isArray(src);
var dst = array && [] || {};

if (array) {
target = target || [];
dst = dst.concat(target);
src.forEach(function(e, i) {
if (typeof dst[i] === 'undefined') {
dst[i] = e;
} else if (typeof e === 'object') {
dst[i] = deepmerge(target[i], e);
} else {
if (target.indexOf(e) === -1) {
dst.push(e);
}
}
});
} else {
if (target && typeof target === 'object') {
Object.keys(target).forEach(function (key) {
dst[key] = target[key];
})
}
Object.keys(src).forEach(function (key) {
if (typeof src[key] !== 'object' || !src[key]) {
dst[key] = src[key];
}
else {
if (!target[key]) {
dst[key] = src[key];
} else {
dst[key] = deepmerge(target[key], src[key]);
}
}
});
}

return dst;
}

}));

0 comments on commit 3f2f7a5

Please sign in to comment.