all files / eslint-plugin-angular/rules/ typecheck-array.js

100% Statements 14/14
85% Branches 17/20
100% Functions 4/4
100% Lines 14/14
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                            18×   17×                        
/**
 * use `angular.isArray` instead of `typeof` comparisons
 *
 * You should use the angular.isArray method instead of the default JavaScript implementation (typeof [] === "[object Array]").
 *
 * @version 0.1.0
 * @category angularWrapper
 */
'use strict';
 
var utils = require('./utils/utils');
 
module.exports = function(context) {
    function recordError(node, origin) {
        Eif (node.type === 'Literal' && node.value === '[object Array]') {
            context.report(origin, 'You should use the angular.isArray method', {});
        }
    }
 
    return {
        MemberExpression: function(node) {
            if (node.object.name === 'Array' && node.property.name === 'isArray') {
                context.report(node, 'You should use the angular.isArray method', {});
            }
        },
        BinaryExpression: function(node) {
            Eif (node.operator === '===' || node.operator === '!==') {
                if (utils.isTypeOfStatement(node.left) || utils.isToStringStatement(node.left)) {
                    recordError(node.right, node);
                } else Eif (utils.isTypeOfStatement(node.right) || utils.isToStringStatement(node.right)) {
                    recordError(node.left, node);
                }
            }
        }
    };
};
 
module.exports.schema = [
    // JSON Schema for rule options goes here
];