UNPKG

jscs

Version:
61 lines (48 loc) 1.96 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], 'requireSpacesInsideArrayBrackets option requires string value \'all\' or \'allButNested\'' ); this._mode = mode; }, getOptionName: function() { return 'requireSpacesInsideArrayBrackets'; }, check: function(file, errors) { var mode = this._mode; file.iterateNodesByType('ArrayExpression', 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 (mode === 'allButNested' && nextToken.type === 'Punctuator' && nextToken.value === '[') { return; } if (openingBracket.range[1] === nextToken.range[0]) { errors.add('Missing space after opening square bracket', nextToken.loc.start); } var closingBracketPos = file.getTokenPosByRangeStart(node.range[1] - 1); var closingBracket = tokens[closingBracketPos]; var prevToken = tokens[closingBracketPos - 1]; if (closingBracket.range[0] === prevToken.range[1]) { if (!(mode === 'allButNested' && prevToken.type === 'Punctuator' && prevToken.value === ']' )) { errors.add('Missing space before closing square bracket', closingBracket.loc.start); } } }); } };