Code coverage report for saguaro/lib/is.js

Statements: 95% (38 / 40)      Branches: 96.15% (25 / 26)      Functions: 100% (4 / 4)      Lines: 95% (38 / 40)      Ignored: none     

All files » saguaro/lib/ » is.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  1     1   539 2   537                         537 537   4165 214   4165 214       4165 561 561         537   559 559 559 210 210     559   559 8 8     559   559 8   559     537         1   540         540 539   1     1   1 51     1  
 
var checkers = require('./checkers'),
    utils = require('./utils');
 
function parseIs(data, filters) {
    
    if (typeof filters == 'function')
        return filters(data) == true;
    
    var 
        result = false,
        isNegate = false,
        filter,
        argsFilter,
        arrFilters = [];
        /*arrFilters = String(filters || '')
                    .split(/\b([a-z_!]+(?:\([a-z0-9_\-+\.,\(\)\[\]\{\}\?:*\\\/ ]+\)|)?)/i)
                    .filter(function (element) {
                        return String(element).trim() !== '' && String(element).trim() !== ',';
                    });
        */
    
    var lastPos = 0, nbOpenedBrackets = 0;
    for (var i = 0, strLength = filters.length; i < strLength; i++) {
 
        if (filters.charAt(i) === '(')
            ++nbOpenedBrackets;
        
        if (filters.charAt(i) === ')' && i > 1 && filters.charAt(i - 1) !== '\\') {
            --nbOpenedBrackets;
 
        }
 
        if ((filters.charAt(i + 1) === ',' && nbOpenedBrackets === 0) || i == strLength - 1) {
            arrFilters.push(filters.substring(lastPos, i + 1));
            lastPos = i + 2;
        }
 
    }
 
    arrFilters.some(function (v) {
 
        filter = v.trim().toLowerCase();
        argsFilter = [];
        if (v.indexOf('(') > -1) {
            filter = v.substring(0, v.indexOf('(')).trim();
            argsFilter = v.substring(v.indexOf('(') + 1, v.length - 1).trim().split(',');
        }
        
        isNegate = false;
        
        if (filter.charAt(0) === '!') {
            isNegate = true;
            filter = filter.substr(1);
        }
        
        result = typeof checkers[filter] != 'undefined' && checkers[filter].apply(this, [data, argsFilter]);
 
        if (isNegate)
            result = !result;
        
        return result === false;
    });
    
    return result;
};
 
 
 
function is(data, filters) {
    
    Iif (this instanceof is) {
        this._data = data;
        return this;
    }
 
    if (typeof filters != 'undefined')
        return parseIs(data, filters);
 
    return true;
}
    
is.prototype = checkers;
 
Object.keys(checkers).forEach(function (key) {
    is[key] = checkers[key];
});
 
module.exports = is;