| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 | /** * @author Toru Nagashima * @copyright 2017 Toru Nagashima. All rights reserved. * See LICENSE file in root directory for full license. */'use strict'// ------------------------------------------------------------------------------// Requirements// ------------------------------------------------------------------------------const utils = require('../utils')// ------------------------------------------------------------------------------// Rule Definition// ------------------------------------------------------------------------------module.exports = {  meta: {    docs: {      description: 'enforce valid `v-else` directives',      category: 'essential',      url: 'https://github.com/vuejs/eslint-plugin-vue/blob/v4.7.1/docs/rules/valid-v-else.md'    },    fixable: null,    schema: []  },  create (context) {    return utils.defineTemplateBodyVisitor(context, {      "VAttribute[directive=true][key.name='else']" (node) {        const element = node.parent.parent        if (!utils.prevElementHasIf(element)) {          context.report({            node,            loc: node.loc,            message: "'v-else' directives require being preceded by the element which has a 'v-if' or 'v-else' directive."          })        }        if (utils.hasDirective(element, 'if')) {          context.report({            node,            loc: node.loc,            message: "'v-else' and 'v-if' directives can't exist on the same element. You may want 'v-else-if' directives."          })        }        if (utils.hasDirective(element, 'else-if')) {          context.report({            node,            loc: node.loc,            message: "'v-else' and 'v-else-if' directives can't exist on the same element."          })        }        if (node.key.argument) {          context.report({            node,            loc: node.loc,            message: "'v-else' directives require no argument."          })        }        if (node.key.modifiers.length > 0) {          context.report({            node,            loc: node.loc,            message: "'v-else' directives require no modifier."          })        }        if (utils.hasAttributeValue(node)) {          context.report({            node,            loc: node.loc,            message: "'v-else' directives require no attribute value."          })        }      }    })  }}
 |