Skip to content

Latest commit

 

History

History
132 lines (85 loc) · 3.34 KB

generator-star-spacing.md

File metadata and controls

132 lines (85 loc) · 3.34 KB

Enforce spacing around the * in generator functions (generator-star-spacing)

(fixable) The --fix option on the command line automatically fixes problems reported by this rule.

Generators are a new type of function in ECMAScript 6 that can return multiple values over time. These special functions are indicated by placing an * after the function keyword.

Here is an example of a generator function:

/*eslint-env es6*/

function* generator() {
    yield "44";
    yield "55";
}

This is also valid:

/*eslint-env es6*/

function *generator() {
    yield "44";
    yield "55";
}

This is valid as well:

/*eslint-env es6*/

function * generator() {
    yield "44";
    yield "55";
}

To keep a sense of consistency when using generators this rule enforces a single position for the *.

Rule Details

This rule aims to enforce spacing around the * of generator functions.

The rule takes one option, an object, which has two keys before and after having boolean values true or false.

  • before enforces spacing between the * and the function keyword. If it is true, a space is required, otherwise spaces are disallowed.

    In object literal shorthand methods, spacing before the * is not checked, as they lack a function keyword.

  • after enforces spacing between the * and the function name (or the opening parenthesis for anonymous generator functions). If it is true, a space is required, otherwise spaces are disallowed.

The default is {"before": true, "after": false}.

"generator-star-spacing": ["error", {"before": false, "after": true}]

And the option has shorthand as a string keyword:

  • {"before": true, "after": false}"before"
  • {"before": false, "after": true}"after"
  • {"before": true, "after": true}"both"
  • {"before": false, "after": false}"neither"
"generator-star-spacing": ["error", "after"]

When using {"before": true, "after": false} this placement will be enforced:

/*eslint generator-star-spacing: ["error", {"before": true, "after": false}]*/
/*eslint-env es6*/

function *generator() {}

var anonymous = function *() {};

var shorthand = { *generator() {} };

When using {"before": false, "after": true} this placement will be enforced:

/*eslint generator-star-spacing: ["error", {"before": false, "after": true}]*/
/*eslint-env es6*/

function* generator() {}

var anonymous = function* () {};

var shorthand = { * generator() {} };

When using {"before": true, "after": true} this placement will be enforced:

/*eslint generator-star-spacing: ["error", {"before": true, "after": true}]*/
/*eslint-env es6*/

function * generator() {}

var anonymous = function * () {};

var shorthand = { * generator() {} };

When using {"before": false, "after": false} this placement will be enforced:

/*eslint generator-star-spacing: ["error", {"before": false, "after": false}]*/
/*eslint-env es6*/

function*generator() {}

var anonymous = function*() {};

var shorthand = { *generator() {} };

When Not To Use It

If your project will not be using generators or you are not concerned with spacing consistency, you do not need this rule.

Further Reading