create: angularRule()

in rules/di-order.js [28:67]


    create: angularRule(function(context) {
        var stripUnderscores = context.options[0] !== false;
        var caseSensitiveOpt = (context.options[1] || caseSensitive) === caseSensitive;

        function checkOrder(callee, fn) {
            if (!fn || !fn.params) {
                return;
            }
            var args = fn.params.map(function(arg) {
                var formattedArg = arg.name;
                if (stripUnderscores) {
                    formattedArg = formattedArg.replace(/^_(.+)_$/, '$1');
                }
                return caseSensitiveOpt ? formattedArg : formattedArg.toLowerCase();
            });
            var sortedArgs = args.slice().sort();
            sortedArgs.some(function(value, index) {
                if (args.indexOf(value) !== index) {
                    context.report(fn, 'Injected values should be sorted alphabetically');
                    return true;
                }
            });
        }

        return {
            'angular?animation': checkOrder,
            'angular?config': checkOrder,
            'angular?controller': checkOrder,
            'angular?directive': checkOrder,
            'angular?factory': checkOrder,
            'angular?filter': checkOrder,
            'angular?inject': checkOrder,
            'angular?run': checkOrder,
            'angular?service': checkOrder,
            'angular?provider': function(callee, providerFn, $get) {
                checkOrder(null, providerFn);
                checkOrder(null, $get);
            }
        };
    })