Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Clone in Desktop Download ZIP
Fetching contributors…

Cannot retrieve contributors at this time

104 lines (90 sloc) 2.96 KB
/**
* Disallows space before `()` or `{}` in function declarations.
*
* Type: `Object`
*
* Values: `"beforeOpeningRoundBrace"` and `"beforeOpeningCurlyBrace"` as child properties.
* Child properties must be set to `true`.
*
* #### Example
*
* ```js
* "disallowSpacesInFunctionDeclaration": {
* "beforeOpeningRoundBrace": true,
* "beforeOpeningCurlyBrace": true
* }
* ```
*
* ##### Valid
*
* ```js
* function a(){}
* ```
*
* ##### Invalid
*
* ```js
* function a() {}
* function a (){}
* function a () {}
* ```
*/
var assert = require('assert');
module.exports = function() {};
module.exports.prototype = {
configure: function(options) {
assert(
typeof options === 'object',
this.getOptionName() + ' option must be the object'
);
if ('beforeOpeningRoundBrace' in options) {
assert(
options.beforeOpeningRoundBrace === true,
this.getOptionName() + '.beforeOpeningRoundBrace ' +
'property requires true value or should be removed'
);
}
if ('beforeOpeningCurlyBrace' in options) {
assert(
options.beforeOpeningCurlyBrace === true,
this.getOptionName() + '.beforeOpeningCurlyBrace ' +
'property requires true value or should be removed'
);
}
assert(
options.beforeOpeningCurlyBrace || options.beforeOpeningRoundBrace,
this.getOptionName() + ' must have beforeOpeningCurlyBrace or beforeOpeningRoundBrace property'
);
this._beforeOpeningRoundBrace = Boolean(options.beforeOpeningRoundBrace);
this._beforeOpeningCurlyBrace = Boolean(options.beforeOpeningCurlyBrace);
},
getOptionName: function() {
return 'disallowSpacesInFunctionDeclaration';
},
check: function(file, errors) {
var beforeOpeningRoundBrace = this._beforeOpeningRoundBrace;
var beforeOpeningCurlyBrace = this._beforeOpeningCurlyBrace;
file.iterateNodesByType(['FunctionDeclaration'], function(node) {
// Exception for `export default function` #1376
if (!node.id) {
return;
}
if (beforeOpeningRoundBrace) {
var functionToken = file.getFirstNodeToken(node.id);
errors.assert.noWhitespaceBetween({
token: functionToken,
nextToken: file.getNextToken(functionToken),
message: 'Illegal space before opening round brace'
});
}
if (beforeOpeningCurlyBrace) {
var bodyToken = file.getFirstNodeToken(node.body);
errors.assert.noWhitespaceBetween({
token: file.getPrevToken(bodyToken),
nextToken: bodyToken,
message: 'Illegal space before opening curly brace'
});
}
});
}
};
Jump to Line
Something went wrong with that request. Please try again.