pve-eslint/eslint/docs/rules/function-paren-newline.md
Dominik Csapak eb39fafa4f first commit
includes a (minimal) working wrapper

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
2020-04-06 15:06:03 +02:00

329 lines
5.0 KiB
Markdown

# enforce consistent line breaks inside function parentheses (function-paren-newline)
Many style guides require or disallow newlines inside of function parentheses.
## Rule Details
This rule enforces consistent line breaks inside parentheses of function parameters or arguments.
### Options
This rule has a single option, which can either be a string or an object.
* `"always"` requires line breaks inside all function parentheses.
* `"never"` disallows line breaks inside all function parentheses.
* `"multiline"` (default) requires linebreaks inside function parentheses if any of the parameters/arguments have a line break between them. Otherwise, it disallows linebreaks.
* `"multiline-arguments"` works like `multiline` but allows linebreaks inside function parentheses if there is only one parameter/argument.
* `"consistent"` requires consistent usage of linebreaks for each pair of parentheses. It reports an error if one parenthesis in the pair has a linebreak inside it and the other parenthesis does not.
* `{ "minItems": value }` requires linebreaks inside function parentheses if the number of parameters/arguments is at least `value`. Otherwise, it disallows linebreaks.
Example configurations:
```json
{
"rules": {
"function-paren-newline": ["error", "never"]
}
}
```
```json
{
"rules": {
"function-paren-newline": ["error", { "minItems": 3 }]
}
}
```
Examples of **incorrect** code for this rule with the `"always"` option:
```js
/* eslint function-paren-newline: ["error", "always"] */
function foo(bar, baz) {}
var foo = function(bar, baz) {};
var foo = (bar, baz) => {};
foo(bar, baz);
```
Examples of **correct** code for this rule with the `"always"` option:
```js
/* eslint function-paren-newline: ["error", "always"] */
function foo(
bar,
baz
) {}
var foo = function(
bar, baz
) {};
var foo = (
bar,
baz
) => {};
foo(
bar,
baz
);
```
Examples of **incorrect** code for this rule with the `"never"` option:
```js
/* eslint function-paren-newline: ["error", "never"] */
function foo(
bar,
baz
) {}
var foo = function(
bar, baz
) {};
var foo = (
bar,
baz
) => {};
foo(
bar,
baz
);
```
Examples of **correct** code for this rule with the `"never"` option:
```js
/* eslint function-paren-newline: ["error", "never"] */
function foo(bar, baz) {}
function foo(bar,
baz) {}
var foo = function(bar, baz) {};
var foo = (bar, baz) => {};
foo(bar, baz);
foo(bar,
baz);
```
Examples of **incorrect** code for this rule with the default `"multiline"` option:
```js
/* eslint function-paren-newline: ["error", "multiline"] */
function foo(bar,
baz
) {}
var foo = function(
bar, baz
) {};
var foo = (
bar,
baz) => {};
foo(bar,
baz);
foo(
function() {
return baz;
}
);
```
Examples of **correct** code for this rule with the default `"multiline"` option:
```js
/* eslint function-paren-newline: ["error", "multiline"] */
function foo(bar, baz) {}
var foo = function(
bar,
baz
) {};
var foo = (bar, baz) => {};
foo(bar, baz, qux);
foo(
bar,
baz,
qux
);
foo(function() {
return baz;
});
```
Examples of **incorrect** code for this rule with the `"consistent"` option:
```js
/* eslint function-paren-newline: ["error", "consistent"] */
function foo(bar,
baz
) {}
var foo = function(bar,
baz
) {};
var foo = (
bar,
baz) => {};
foo(
bar,
baz);
foo(
function() {
return baz;
});
```
Examples of **correct** code for this rule with the `"consistent"` option:
```js
/* eslint function-paren-newline: ["error", "consistent"] */
function foo(bar,
baz) {}
var foo = function(bar, baz) {};
var foo = (
bar,
baz
) => {};
foo(
bar, baz
);
foo(
function() {
return baz;
}
);
```
Examples of **incorrect** code for this rule with the `"multiline-arguments"` option:
```js
/* eslint function-paren-newline: ["error", "multiline-arguments"] */
function foo(bar,
baz
) {}
var foo = function(bar,
baz
) {};
var foo = (
bar,
baz) => {};
foo(
bar,
baz);
foo(
bar, qux,
baz
);
```
Examples of **correct** code for this rule with the consistent `"multiline-arguments"` option:
```js
/* eslint function-paren-newline: ["error", "multiline-arguments"] */
function foo(
bar,
baz
) {}
var foo = function(bar, baz) {};
var foo = (
bar
) => {};
foo(
function() {
return baz;
}
);
```
Examples of **incorrect** code for this rule with the `{ "minItems": 3 }` option:
```js
/* eslint function-paren-newline: ["error", { "minItems": 3 }] */
function foo(
bar,
baz
) {}
function foo(bar, baz, qux) {}
var foo = function(
bar, baz
) {};
var foo = (bar,
baz) => {};
foo(bar,
baz);
```
Examples of **correct** code for this rule with the `{ "minItems": 3 }` option:
```js
/* eslint function-paren-newline: ["error", { "minItems": 3 }] */
function foo(bar, baz) {}
var foo = function(
bar,
baz,
qux
) {};
var foo = (
bar, baz, qux
) => {};
foo(bar, baz);
foo(
bar, baz, qux
);
```
## When Not To Use It
If don't want to enforce consistent linebreaks inside function parentheses, do not turn on this rule.