UNPKG

jscs

Version:
59 lines (47 loc) 2.03 kB
var assert = require('assert'); module.exports = function() {}; module.exports.prototype = { configure: function(mode) { var modes = { 'all': true, 'allButNested': true }; assert( typeof mode === 'string' && modes[mode], 'requireSpacesInsideObjectBrackets option requires string value \'all\' or \'allButNested\'' ); this._mode = mode; }, getOptionName: function() { return 'requireSpacesInsideObjectBrackets'; }, check: function(file, errors) { var mode = this._mode; file.iterateNodesByType('ObjectExpression', function(node) { var tokens = file.getTokens(); var openingBracketPos = file.getTokenPosByRangeStart(node.range[0]); var openingBracket = tokens[openingBracketPos]; var nextToken = tokens[openingBracketPos + 1]; if (nextToken.type === 'Punctuator' && nextToken.value === '}') { return; } if (openingBracket.range[1] === nextToken.range[0]) { errors.add('Missing space after opening curly brace', nextToken.loc.start); } var closingBracketPos = file.getTokenPosByRangeStart(node.range[1] - 1); var closingBracket = tokens[closingBracketPos]; var prevToken = tokens[closingBracketPos - 1]; var isNested = mode === 'allButNested' && prevToken.type === 'Punctuator' && prevToken.value === '}'; if (closingBracket.range[0] === prevToken.range[1]) { if (!isNested) { errors.add('Missing space before closing curly brace', closingBracket.loc.start); } } else if (isNested && closingBracket.loc.start.line === prevToken.loc.start.line) { errors.add('Illegal space between closing curly braces', prevToken.loc.end); } }); } };