1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 |
- 'use strict'
- const { defineTemplateBodyVisitor } = require('../utils')
- function countObjectExpression(node) {
- return node.value.expression.elements.filter(
- (element) => element && element.type === 'ObjectExpression'
- ).length
- }
- module.exports = {
- meta: {
- type: 'suggestion',
- docs: {
- description: 'disallow to pass multiple objects into array to class',
- categories: undefined,
- url: 'https://eslint.vuejs.org/rules/no-multiple-objects-in-class.html'
- },
- fixable: null,
- schema: [],
- messages: {
- unexpected: 'Unexpected multiple objects. Merge objects.'
- }
- },
-
- create(context) {
- return defineTemplateBodyVisitor(context, {
-
- 'VAttribute[directive=true][key.argument.name="class"][key.name.name="bind"][value.expression.type="ArrayExpression"]'(
- node
- ) {
- if (countObjectExpression(node) > 1) {
- context.report({
- node,
- loc: node.loc,
- messageId: 'unexpected'
- })
- }
- }
- })
- }
- }
|