| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 | /** * @fileoverview This rule warns about the usage of extra whitespaces between attributes * @author Armano */'use strict'// ------------------------------------------------------------------------------// Rule Definition// ------------------------------------------------------------------------------module.exports = {  meta: {    docs: {      description: 'disallow multiple spaces',      category: 'strongly-recommended',      url: 'https://github.com/vuejs/eslint-plugin-vue/blob/v4.7.1/docs/rules/no-multi-spaces.md'    },    fixable: 'whitespace', // or "code" or "whitespace"    schema: []  },  /**   * @param {RuleContext} context - The rule context.   * @returns {Object} AST event handlers.   */  create (context) {    // ----------------------------------------------------------------------    // Public    // ----------------------------------------------------------------------    return {      Program (node) {        if (context.parserServices.getTemplateBodyTokenStore == null) {          context.report({            loc: { line: 1, column: 0 },            message: 'Use the latest vue-eslint-parser. See also https://github.com/vuejs/eslint-plugin-vue#what-is-the-use-the-latest-vue-eslint-parser-error.'          })          return        }        if (!node.templateBody) {          return        }        const sourceCode = context.getSourceCode()        const tokenStore = context.parserServices.getTemplateBodyTokenStore()        const tokens = tokenStore.getTokens(node.templateBody, { includeComments: true })        let prevToken = tokens.shift()        for (const token of tokens) {          const spaces = token.range[0] - prevToken.range[1]          if (spaces > 1 && token.loc.start.line === prevToken.loc.start.line) {            context.report({              node: token,              loc: {                start: prevToken.loc.end,                end: token.loc.start              },              message: "Multiple spaces found before '{{displayValue}}'.",              fix: (fixer) => fixer.replaceTextRange([prevToken.range[1], token.range[0]], ' '),              data: {                displayValue: sourceCode.getText(token)              }            })          }          prevToken = token        }      }    }  }}
 |