text: /**
   * @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/weexteam/eslint-plugin-weex/blob/v1.1.9/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."
            })
          }
        }
      })
    }
  }
  