bifocal/node_modules/gscan/lib/ast-linter/rules/lint-no-unknown-globals.js

37 lines
1.3 KiB
JavaScript

const Rule = require('./base');
const {logNode} = require('../helpers');
module.exports = class NoUnknownGlobals extends Rule {
_checkMustacheForUnknownGlobal(node) {
if (node.path.data && !this.scope.isKnownVariable(node)) {
this.log({
message: `${logNode(node)} is not a known global`,
line: node.loc && node.loc.start.line,
column: node.loc && node.loc.start.column,
source: this.sourceForNode(node)
});
}
}
_checkBlockForUnknownGlobal(node) {
if (node.path.type === 'PathExpression') {
node.params.forEach((param) => {
if (param.data && !this.scope.isKnownVariable(param)) {
this.log({
message: `${logNode(param)} is not a known global`,
line: param.loc && param.loc.start.line,
column: param.loc && param.loc.start.column,
source: this.sourceForNode(param)
});
}
});
}
}
visitor() {
return {
MustacheStatement: this._checkMustacheForUnknownGlobal.bind(this),
BlockStatement: this._checkBlockForUnknownGlobal.bind(this)
};
}
};