all files / eslint-plugin-angular/rules/utils/ rulesConfiguration.js

100% Statements 25/25
100% Branches 0/0
100% Functions 10/10
100% Lines 25/25
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    54× 54× 54×       54×     54×   54× 54×     54×                   54×             54×   54× 54×   54× 54×        
'use strict';
 
function Rule(name, config) {
    this.name = name;
    this.config = config;
    this._requireRule = require('../' + this.name);  // eslint-disable-line global-require
}
 
Rule.prototype = {
    requireRule: function() {
        return this._requireRule;
    },
    requireLegacyRule: function() {
        var self = this;
        function legacyRule(context) {
            self.logWarningOnce(context);
            return self._requireRule(context);
        }
        legacyRule.schema = self._requireRule.schema;
        return legacyRule;
    },
    getLegacyName: function() {
        return 'ng_' + this.name.replace(/-/g, '_');
    },
    logWarningOnce: function(context) {
        /* eslint-disable no-console */
        console.warn('WARNING: Deprecated rule name ' + context.id + ' use angular/' + this.name + ' instead (will be removed in v1.0).');
        /* eslint-enable no-console */
        this.logWarningOnce = function() { };
    }
};
 
module.exports = {
    rules: [],
    addRule: function(name, config) {
        this.rules.push(new Rule(name, config));
    },
    moduleExports: function() {
        var exportObject = {
            rules: {},
            rulesConfig: {}
        };
 
        this.rules.forEach(function(rule) {
            var legacyName = rule.getLegacyName();
 
            exportObject.rules[rule.name] = rule.requireRule();
            exportObject.rulesConfig[rule.name] = rule.config;
 
            exportObject.rules[legacyName] = rule.requireLegacyRule();
            exportObject.rulesConfig[legacyName] = 0;
        });
        return exportObject;
    }
};