Code coverage report for jsot-bh/utils.js

Statements: 100% (65 / 65)      Branches: 97.83% (45 / 46)      Functions: 100% (10 / 10)      Lines: 100% (64 / 64)      Ignored: none     

All files » jsot-bh/ » utils.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 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 1101   1 133 20 15 15 22   15       1 122 10 10 2 2     8 7 3   4     7     1       1 618 74 74 66 51   66     8       1 171 71 71   71 66 5 61 49   66     5       1 6 1     6 6 6 6 7         6     1 151   151   151 151 151 7 7     151 19 19 19 3 3       151     1  
var Utils = {};
 
Utils.setPropertyKeyValueObject = function (name) {
    return function scopedSPKVO(values, force) {
        if (!values) { return this._context.get('object')[name] || {}; }
        var f = Utils.setPropertyKeyValue(name);
        for (var key in values) {
            f.call(this, key, values[key], force);
        }
        return this._context.get('object');
    };
};
 
Utils.setPropertyArray = function setPropertyArray(name) {
    return function scopedSPA(value, force) {
        var object = this._context.get('object');
        if (force) {
            object[name] = value;
            return this;
        }
 
        if (value !== undefined) {
            if (object.hasOwnProperty(name)) {
                object[name] = Array.isArray(object[name]) ? object[name].concat(value) : [object[name]].concat(value);
            } else {
                object[name] = Array.isArray(value) ? value : [value];
            }
 
            return this;
        }
 
        return object[name];
    };
};
 
Utils.setPropertyValue = function setPropertyValue(name) {
    return function scopedSPV(value, force) {
        var object = this._context.get('object');
        if (arguments.length > 0) {
            if (force || !object.hasOwnProperty(name)) {
                object[name] = value;
            }
            return this;
        }
 
        return object[name];
    }.bind(this);
};
 
Utils.setPropertyKeyValue = function setPropertyKeyValue(name) {
    return function scopedSPKV(key, value, force) {
        var object = this._context.get('object');
        var property = (object[name] = object[name] || {});
 
        if (arguments.length > 1) {
            if (value === undefined) {
                delete property[key];
            } else if (force || !property.hasOwnProperty(key)) {
                property[key] = value;
            }
            return this;
        }
 
        return property[key];
    };
};
 
Utils.extend = function extend(target) {
    if (!target || typeof target !== 'object') {
        target = {};
    }
 
    for (var i = 1, len = arguments.length; i < len; i++) {
        var obj = arguments[i];
        Eif (typeof obj === 'object') {
            for (var key in obj) {
                target[key] = obj[key];
            }
        }
    }
 
    return target;
};
 
Utils.parseBhIdentifier = function parseBhIdentifier(pattern) {
    var result = {};
 
    var blockElement = pattern.split('__');
 
    var blockArray = blockElement[0].split('_');
    result.block = blockArray[0];
    if (blockArray.length > 1) {
        result.mods = {};
        result.mods[blockArray[1]] = blockArray[2] || true;
    }
 
    if (blockElement.length > 1) {
        var elementArray = blockElement[1].split('_');
        result.elem = elementArray[0];
        if (elementArray.length > 1) {
            result.elemMods = {};
            result.elemMods[elementArray[1]] = elementArray[2] || true;
        }
    }
 
    return result;
};
 
module.exports = Utils;