Файл: src/javascript/-merge.js
Строк: 32
<?php
/**
 * Update [old] object with [newer] values
 * @return {obj}
 */
function deepMerge(target, source) {
    if (typeof target !== 'object') {
        return false;
    }
    if (!source) {
        return target;
    }
    var src, val;
    Object.keys(source).forEach(function (k) {
        src = target[k]; // old val
        val = source[k]; // new val
        // prevent recursion
        if (val === target) {
            return;
        }
        // if new value isn't object then just overwrite by new value instead of extending.
        if (typeof val !== 'object' || val === null) {
            target[k] = val;
            return;
        }
        // overwrite by new value if source isn't object or array
        if (typeof src !== 'object' || src === null || Array.isArray(src)) {
            target[k] = deepMerge({}, val);
            return;
        }
        // source value and new value is objects both, extending...
        target[k] = deepMerge(src, val);
        return;
    });
    return target;
}
module.exports = deepMerge;
?>