Skip to content

Commit 4cd7734

Browse files
authored
Add vue/no-useless-concat rule (#1171)
1 parent 4991cd6 commit 4cd7734

File tree

5 files changed

+62
-0
lines changed

5 files changed

+62
-0
lines changed

Diff for: docs/rules/README.md

+1
Original file line numberDiff line numberDiff line change
@@ -304,6 +304,7 @@ For example:
304304
| [vue/no-unregistered-components](./no-unregistered-components.md) | disallow using components that are not registered inside templates | |
305305
| [vue/no-unsupported-features](./no-unsupported-features.md) | disallow unsupported Vue.js syntax on the specified version | :wrench: |
306306
| [vue/no-unused-properties](./no-unused-properties.md) | disallow unused properties | |
307+
| [vue/no-useless-concat](./no-useless-concat.md) | disallow unnecessary concatenation of literals or template literals | |
307308
| [vue/object-curly-spacing](./object-curly-spacing.md) | enforce consistent spacing inside braces | :wrench: |
308309
| [vue/padding-line-between-blocks](./padding-line-between-blocks.md) | require or disallow padding lines between blocks | :wrench: |
309310
| [vue/prefer-template](./prefer-template.md) | require template literals instead of string concatenation | :wrench: |

Diff for: docs/rules/no-useless-concat.md

+21
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
---
2+
pageClass: rule-details
3+
sidebarDepth: 0
4+
title: vue/no-useless-concat
5+
description: disallow unnecessary concatenation of literals or template literals
6+
---
7+
# vue/no-useless-concat
8+
> disallow unnecessary concatenation of literals or template literals
9+
10+
This rule is the same rule as core [no-useless-concat] rule but it applies to the expressions in `<template>`.
11+
12+
## :books: Further reading
13+
14+
- [no-useless-concat]
15+
16+
[no-useless-concat]: https://eslint.org/docs/rules/no-useless-concat
17+
18+
## :mag: Implementation
19+
20+
- [Rule source](https://github.com/vuejs/eslint-plugin-vue/blob/master/lib/rules/no-useless-concat.js)
21+
- [Test source](https://github.com/vuejs/eslint-plugin-vue/blob/master/tests/lib/rules/no-useless-concat.js)

Diff for: lib/index.js

+1
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,7 @@ module.exports = {
9292
'no-unused-properties': require('./rules/no-unused-properties'),
9393
'no-unused-vars': require('./rules/no-unused-vars'),
9494
'no-use-v-if-with-v-for': require('./rules/no-use-v-if-with-v-for'),
95+
'no-useless-concat': require('./rules/no-useless-concat'),
9596
'no-v-html': require('./rules/no-v-html'),
9697
'no-v-model-argument': require('./rules/no-v-model-argument'),
9798
'no-watch-after-await': require('./rules/no-watch-after-await'),

Diff for: lib/rules/no-useless-concat.js

+9
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
/**
2+
* @author Yosuke Ota
3+
*/
4+
'use strict'
5+
6+
const { wrapCoreRule } = require('../utils')
7+
8+
// eslint-disable-next-line no-invalid-meta, no-invalid-meta-docs-categories
9+
module.exports = wrapCoreRule(require('eslint/lib/rules/no-useless-concat'))

Diff for: tests/lib/rules/no-useless-concat.js

+30
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
/**
2+
* @author Yosuke Ota
3+
*/
4+
'use strict'
5+
6+
const RuleTester = require('eslint').RuleTester
7+
const rule = require('../../../lib/rules/no-useless-concat')
8+
9+
const tester = new RuleTester({
10+
parser: require.resolve('vue-eslint-parser'),
11+
parserOptions: { ecmaVersion: 2015 }
12+
})
13+
14+
tester.run('no-useless-concat', rule, {
15+
valid: [
16+
`<template><div :attr="'foo-bar'" /></template>`,
17+
'<template><div attr="foo-bar" /></template>',
18+
`<template><div :[\`foo-bar\`]="a" /></template>`
19+
],
20+
invalid: [
21+
{
22+
code: `<template><div :attr="'foo'+'bar'" /></template>`,
23+
errors: ['Unexpected string concatenation of literals.']
24+
},
25+
{
26+
code: `<template><div :[\`foo\`+\`bar\`]="a" /></template>`,
27+
errors: ['Unexpected string concatenation of literals.']
28+
}
29+
]
30+
})

0 commit comments

Comments
 (0)