2020-05-19 11:43:42 +03:00

39 lines
1.1 KiB
JavaScript

/**
* Avoid mistakes when naming methods defined on the scope object
*
* For example, you want to use $scope.$watch instead of $scope.watch
*
* @version 2.3.0
* @category possibleError
* @sinceAngularVersion 1.x
*/
'use strict';
const bad = ['new', 'watch', 'watchGroup', 'watchCollection',
'digest', 'destroy', 'eval', 'evalAsync', 'apply',
'applyAsync', 'on', 'emit', 'broadcast'];
const scope = ['scope', '$scope', '$rootScope'];
module.exports = {
meta: {
docs: {
url: 'https://github.com/Gillespie59/eslint-plugin-angular/blob/master/docs/rules/avoid-scope-typos.md'
},
schema: [ ]
},
create: function(context) {
function check(node, name) {
if (bad.indexOf(name) >= 0 && node && node.parent && node.parent.object && scope.indexOf(node.parent.object.name) >= 0) {
context.report(node, `The ${name} method should be replaced by $${name}, or you should rename it in order to avoid confusions`, {});
}
}
return {
Identifier: function(node) {
check(node, node.name);
}
};
}
};