Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 7cc41c9

Browse files
Add vue/func-call-spacing rule (#1201)
* Add `vue/func-call-spacing` rule * fix * fixed
1 parent 3812d41 commit 7cc41c9

File tree

6 files changed

+124
-0
lines changed

6 files changed

+124
-0
lines changed

‎docs/rules/README.md‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -322,6 +322,7 @@ The following rules extend the rules provided by ESLint itself and apply them to
322322
| [vue/dot-location](./dot-location.md) | enforce consistent newlines before and after dots | :wrench: |
323323
| [vue/dot-notation](./dot-notation.md) | enforce dot notation whenever possible | :wrench: |
324324
| [vue/eqeqeq](./eqeqeq.md) | require the use of `===` and `!==` | :wrench: |
325+
| [vue/func-call-spacing](./func-call-spacing.md) | require or disallow spacing between function identifiers and their invocations | :wrench: |
325326
| [vue/key-spacing](./key-spacing.md) | enforce consistent spacing between keys and values in object literal properties | :wrench: |
326327
| [vue/keyword-spacing](./keyword-spacing.md) | enforce consistent spacing before and after keywords | :wrench: |
327328
| [vue/max-len](./max-len.md) | enforce a maximum line length | |

‎docs/rules/func-call-spacing.md‎

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
---
2+
pageClass: rule-details
3+
sidebarDepth: 0
4+
title: vue/func-call-spacing
5+
description: require or disallow spacing between function identifiers and their invocations
6+
---
7+
# vue/func-call-spacing
8+
> require or disallow spacing between function identifiers and their invocations
9+
10+
- :wrench: The `--fix` option on the [command line](https://eslint.org/docs/user-guide/command-line-interface#fixing-problems) can automatically fix some of the problems reported by this rule.
11+
12+
This rule is the same rule as core [func-call-spacing] rule but it applies to the expressions in `<template>`.
13+
14+
## :books: Further reading
15+
16+
- [func-call-spacing]
17+
18+
[func-call-spacing]: https://eslint.org/docs/rules/func-call-spacing
19+
20+
## :mag: Implementation
21+
22+
- [Rule source](https://github.com/vuejs/eslint-plugin-vue/blob/master/lib/rules/func-call-spacing.js)
23+
- [Test source](https://github.com/vuejs/eslint-plugin-vue/blob/master/tests/lib/rules/func-call-spacing.js)
24+
25+
<sup>Taken with ❤️ [from ESLint core](https://eslint.org/docs/rules/func-call-spacing)</sup>

‎lib/configs/no-layout-rules.js‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ module.exports = {
1313
'vue/comma-spacing': 'off',
1414
'vue/comma-style': 'off',
1515
'vue/dot-location': 'off',
16+
'vue/func-call-spacing': 'off',
1617
'vue/html-closing-bracket-newline': 'off',
1718
'vue/html-closing-bracket-spacing': 'off',
1819
'vue/html-comment-content-newline': 'off',

‎lib/index.js‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ module.exports = {
2525
'dot-location': require('./rules/dot-location'),
2626
'dot-notation': require('./rules/dot-notation'),
2727
eqeqeq: require('./rules/eqeqeq'),
28+
'func-call-spacing': require('./rules/func-call-spacing'),
2829
'html-closing-bracket-newline': require('./rules/html-closing-bracket-newline'),
2930
'html-closing-bracket-spacing': require('./rules/html-closing-bracket-spacing'),
3031
'html-comment-content-newline': require('./rules/html-comment-content-newline'),

‎lib/rules/func-call-spacing.js‎

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
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/func-call-spacing'), {
10+
skipDynamicArguments: true
11+
})

‎tests/lib/rules/func-call-spacing.js‎

Lines changed: 85 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,85 @@
1+
/**
2+
* @author Yosuke Ota
3+
*/
4+
'use strict'
5+
6+
const { RuleTester, CLIEngine } = require('eslint')
7+
const semver = require('semver')
8+
const rule = require('../../../lib/rules/func-call-spacing')
9+
10+
const tester = new RuleTester({
11+
parser: require.resolve('vue-eslint-parser'),
12+
parserOptions: { ecmaVersion: 2020 }
13+
})
14+
15+
tester.run('func-call-spacing', rule, {
16+
valid: [
17+
`
18+
<template>
19+
<div :foo="foo()" />
20+
</template>
21+
`,
22+
{
23+
code: `
24+
<template>
25+
<div :foo="foo ()" />
26+
</template>
27+
`,
28+
options: ['always']
29+
},
30+
`
31+
<template>
32+
<div :[foo()]="value" />
33+
</template>
34+
`,
35+
{
36+
code: `
37+
<template>
38+
<div :[foo()]="value" />
39+
</template>
40+
`,
41+
options: ['always']
42+
}
43+
],
44+
invalid: [
45+
{
46+
code: `
47+
<template>
48+
<div :foo="foo ()" />
49+
</template>
50+
`,
51+
output: `
52+
<template>
53+
<div :foo="foo()" />
54+
</template>
55+
`,
56+
errors: [
57+
{
58+
message: semver.lt(CLIEngine.version, '7.0.0')
59+
? 'Unexpected newline between function name and paren.'
60+
: 'Unexpected whitespace between function name and paren.',
61+
line: 3
62+
}
63+
]
64+
},
65+
{
66+
code: `
67+
<template>
68+
<div :foo="foo()" />
69+
</template>
70+
`,
71+
options: ['always'],
72+
output: `
73+
<template>
74+
<div :foo="foo ()" />
75+
</template>
76+
`,
77+
errors: [
78+
{
79+
message: 'Missing space between function name and paren.',
80+
line: 3
81+
}
82+
]
83+
}
84+
]
85+
})

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /