-
Notifications
You must be signed in to change notification settings - Fork 65
/
preferred-alias.js
29 lines (25 loc) · 1.11 KB
/
preferred-alias.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
/**
* @fileoverview Rule to ensure consistency of aliases of lodash methods
*/
'use strict';
//------------------------------------------------------------------------------
// Rule Definition
//------------------------------------------------------------------------------
module.exports = function (context) {
var _ = require('lodash');
var aliasMap = require('../util/aliases');
var lodashUtil = require('../util/lodashUtil');
var astUtil = require('../util/astUtil');
var aliases = _.reduce(aliasMap.ALIASES, function (result, aliasesForKey, key) {
var mapToMainKey = _.zipObject(aliasesForKey, _.fill(new Array(aliasesForKey.length), key));
return _.assign(result, mapToMainKey);
}, {});
return {
CallExpression: lodashUtil.getLodashMethodVisitor(function (node) {
var methodName = astUtil.getMethodName(node);
if (_.has(aliases, methodName)) {
context.report(node.callee.property, "Method '{{old}}' is an alias, for consistency prefer using '{{new}}'", {old: methodName, new: aliases[methodName]});
}
})
};
};