Skip to content

Latest commit

 

History

History
184 lines (120 loc) · 3.36 KB

multiline-ternary.md

File metadata and controls

184 lines (120 loc) · 3.36 KB
title layout edit_link rule_type related_rules
multiline-ternary
doc
layout
operator-linebreak

Enforces or disallows newlines between operands of ternary expressions.

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:

::: incorrect

/*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:

::: correct

/*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:

::: incorrect

/*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:

::: correct

/*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:

::: incorrect

/*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:

::: correct

/*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.

Compatibility