Skip to content
This repository has been archived by the owner on Mar 23, 2024. It is now read-only.

Commit

Permalink
validateNewlineAfterArrayElements: --fix now works for this rule
Browse files Browse the repository at this point in the history
Fixes #2065
Closes gh-2072
  • Loading branch information
joerideg authored and hzoo committed Jan 23, 2016
1 parent a41d7c6 commit 310bf40
Showing 1 changed file with 35 additions and 12 deletions.
47 changes: 35 additions & 12 deletions lib/rules/validate-newline-after-array-elements.js
Original file line number Diff line number Diff line change
Expand Up @@ -132,35 +132,58 @@ module.exports.prototype = {

file.iterateNodesByType(['ArrayExpression'], function(node) {
var els = node.elements;
var firstEl = els[0];
var lastEl = els[els.length - 1];
var bracket;
var elToken;

if (els.length <= maximum && node.loc.start.line === node.loc.end.line) {
return;
}

if (!ignoreBrackets) {
if (els[0] && els[0].loc.start.line === node.loc.start.line) {
errors.add('First element should be placed on new line', els[0].loc.start);
if (firstEl && firstEl.loc.start.line === node.loc.start.line) {
bracket = file.getFirstNodeToken(node);
elToken = file.getNextToken(bracket);

errors.assert.differentLine({
token: bracket,
nextToken: elToken,
message: 'First element should be placed on new line'
});
}
if (els[els.length - 1] && els[els.length - 1].loc.end.line === node.loc.end.line) {
errors.add('Closing bracket should be placed on new line', node.loc.end);
if (lastEl && lastEl.loc.end.line === node.loc.end.line) {
bracket = file.getLastNodeToken(node);
elToken = file.getPrevToken(bracket);

errors.assert.differentLine({
token: elToken,
nextToken: bracket,
message: 'Closing bracket should be placed on new line'
});
}
}

var prevLine = 0;
els.forEach(function(elem) {
var elToken;
var comma;

if (!elem) {
// skip holes
return;
}
var line = elem.loc.start.line;
if (prevLine === line) {
errors.add('Multiple elements at a single line in multiline array', {
line: line,
column: elem.loc.start.column

if (firstEl !== elem) {
elToken = file.getFirstNodeToken(elem);
comma = file.getPrevToken(elToken);

errors.assert.differentLine({
token: comma,
nextToken: elToken,
message: 'Multiple elements at a single line in multiline array'
});
}
prevLine = line;
});

});
}
};

0 comments on commit 310bf40

Please sign in to comment.