Code coverage report for src/schema/schemautil.js

Statements: 93.33% (56 / 60)      Branches: 91.11% (41 / 45)      Functions: 83.33% (5 / 6)      Lines: 93.33% (56 / 60)      Ignored: none     

All files » src/schema/ » schemautil.js
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 921 1 5     1     1   1 26888 26888     26888 9495 9495   17393 2915 2915 26793 26793 11658     2915   14478 1   14477   1   1 8 8 19 19 19 15 5 5 4   10 10       8   1   1 836 836 946   836 946   836   1   1 946     946 2225     2225 44   2181 1456   725 338     387     946    
var util = require('../util');
function isEmpty(obj) {
    return Object.keys(obj).length === 0;
}
;
function extend(instance, schema) {
    return merge(instantiate(schema), instance);
}
exports.extend = extend;
;
function instantiate(schema) {
    var val;
    Iif (schema === undefined) {
        return undefined;
    }
    else if ('default' in schema) {
        val = schema.default;
        return util.isObject(val) ? util.duplicate(val) : val;
    }
    else if (schema.type === 'object') {
        var instance = {};
        for (var name in schema.properties) {
            val = instantiate(schema.properties[name]);
            if (val !== undefined) {
                instance[name] = val;
            }
        }
        return instance;
    }
    else if (schema.type === 'array') {
        return [];
    }
    return undefined;
}
exports.instantiate = instantiate;
;
function subtract(instance, defaults) {
    var changes = {};
    for (var prop in instance) {
        var def = defaults[prop];
        var ins = instance[prop];
        if (!defaults || def !== ins) {
            if (typeof ins === 'object' && !util.isArray(ins) && def) {
                var c = subtract(ins, def);
                if (!isEmpty(c))
                    changes[prop] = c;
            }
            else Eif (!util.isArray(ins) || ins.length > 0) {
                changes[prop] = ins;
            }
        }
    }
    return changes;
}
exports.subtract = subtract;
;
function merge(dest) {
    var src = [];
    for (var _i = 1; _i < arguments.length; _i++) {
        src[_i - 1] = arguments[_i];
    }
    for (var i = 0; i < src.length; i++) {
        dest = merge_(dest, src[i]);
    }
    return dest;
}
exports.merge = merge;
;
function merge_(dest, src) {
    Iif (typeof src !== 'object' || src === null) {
        return dest;
    }
    for (var p in src) {
        Iif (!src.hasOwnProperty(p)) {
            continue;
        }
        if (src[p] === undefined) {
            continue;
        }
        if (typeof src[p] !== 'object' || src[p] === null) {
            dest[p] = src[p];
        }
        else if (typeof dest[p] !== 'object' || dest[p] === null) {
            dest[p] = merge(src[p].constructor === Array ? [] : {}, src[p]);
        }
        else {
            merge(dest[p], src[p]);
        }
    }
    return dest;
}
//# sourceMappingURL=schemautil.js.map