Enforce or disallow newlines between operands of ternary expressions (multiline-ternary)
The --fix
option on the command line can automatically fix some of the problems reported by this rule.
JavaScript allows operands of ternary expressions to be separated by newlines, which can improve the readability of your program.
For example:
var foo = bar > baz ? value1 : value2;
The above can be rewritten as the following to improve readability and more clearly delineate the operands:
var foo = bar > baz ? value1 : value2;
Rule Details
This rule enforces or disallows newlines between operands of a ternary expression. Note: The location of the operators is not enforced by this rule. Please see the operator-linebreak rule if you are interested in enforcing the location of the operators themselves.
Options
This rule has a string option:
-
"always"
(default) enforces newlines between the operands of a ternary expression. -
"always-multiline"
enforces newlines between the operands of a ternary expression if the expression spans multiple lines. -
"never"
disallows newlines between the operands of a ternary expression.
always
This is the default option.
Examples of incorrect code for this rule with the "always"
option:
/*eslint multiline-ternary: ["error", "always"]*/ foo > bar ? value1 : value2; foo > bar ? value : value2; foo > bar ? value : value2;
Examples of correct code for this rule with the "always"
option:
/*eslint multiline-ternary: ["error", "always"]*/ foo > bar ? value1 : value2; foo > bar ? (baz > qux ? value1 : value2) : value3;
always-multiline
Examples of incorrect code for this rule with the "always-multiline"
option:
/*eslint multiline-ternary: ["error", "always-multiline"]*/ foo > bar ? value1 : value2; foo > bar ? value1 : value2; foo > bar && bar > baz ? value1 : value2;
Examples of correct code for this rule with the "always-multiline"
option:
/*eslint multiline-ternary: ["error", "always-multiline"]*/ foo > bar ? value1 : value2; foo > bar ? value1 : value2; foo > bar ? (baz > qux ? value1 : value2) : value3; foo > bar ? (baz > qux ? value1 : value2) : value3; foo > bar && bar > baz ? value1 : value2;
never
Examples of incorrect code for this rule with the "never"
option:
/*eslint multiline-ternary: ["error", "never"]*/ foo > bar ? value : value2; foo > bar ? value : value2; foo > bar ? value1 : value2;
Examples of correct code for this rule with the "never"
option:
/*eslint multiline-ternary: ["error", "never"]*/ foo > bar ? value1 : value2; foo > bar ? (baz > qux ? value1 : value2) : value3; foo > bar ? ( baz > qux ? value1 : value2 ) : value3;
When Not To Use It
You can safely disable this rule if you do not have any strict conventions about whether the operands of a ternary expression should be separated by newlines.
Related Rules
Compatibility
- JSCS: requireMultiLineTernary
Version
This rule was introduced in ESLint 3.1.0.
Resources
© OpenJS Foundation and other contributors
Licensed under the MIT License.
https://eslint.org/docs/rules/multiline-ternary