UNPKG

eslint-plugin-san

Version:

Official ESLint plugin for San

74 lines (64 loc) 2.39 kB
/** * @author Toru Nagashima * @copyright 2017 Toru Nagashima. All rights reserved. * See LICENSE file in root directory for full license. */ 'use strict'; /* eslint-disable */ // ------------------------------------------------------------------------------ // Requirements // ------------------------------------------------------------------------------ const utils = require('../utils'); // ------------------------------------------------------------------------------ // Rule Definition // ------------------------------------------------------------------------------ module.exports = { meta: { type: 'problem', docs: { description: 'enforce valid template root', categories: ['essential'], url: 'https://ecomfe.github.io/eslint-plugin-san/rules/valid-template-root.html' }, fixable: null, schema: [] }, /** @param {RuleContext} context */ create(context) { if (!utils.isSanFile(context.getFilename())) { return {}; } const sourceCode = context.getSourceCode(); return { /** @param {Program} program */ Program(program) { const element = program.templateBody; if (element == null) { return; } const hasSrc = utils.hasAttribute(element, 'src'); const rootElements = []; for (const child of element.children) { if (sourceCode.getText(child).trim() !== '') { rootElements.push(child); } } if (hasSrc && rootElements.length) { for (const element of rootElements) { context.report({ node: element, loc: element.loc, message: "The template root with 'src' attribute is required to be empty." }); } } else if (rootElements.length === 0 && !hasSrc) { context.report({ node: element, loc: element.loc, message: 'The template requires child element.' }); } } }; } };