ember-template-lint
Version:
Linter for Ember or Handlebars templates.
37 lines (32 loc) • 883 B
JavaScript
import Rule from './_base.js';
export default class NoQuotelessAttributes extends Rule {
/**
* @returns {import('./types.js').VisitorReturnType<NoQuotelessAttributes>}
*/
visitor() {
return {
AttrNode(node) {
let { isValueless, name, quoteType, value } = node;
if (isValueless) {
return;
}
if (value.type !== 'TextNode') {
return;
}
if (quoteType === null) {
let type = name.startsWith('@') ? 'Argument' : 'Attribute';
if (this.mode === 'fix') {
node.quoteType = '"';
} else {
this.log({
message: `${type} ${name} should be either quoted or wrapped in mustaches`,
node,
source: this.sourceForNode(node),
isFixable: true,
});
}
}
},
};
}
}