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

Commit 310bf40

Browse files
joerideghzoo
authored andcommitted
validateNewlineAfterArrayElements: --fix now works for this rule
Fixes #2065 Closes gh-2072
1 parent a41d7c6 commit 310bf40

File tree

1 file changed

+35
-12
lines changed

1 file changed

+35
-12
lines changed

lib/rules/validate-newline-after-array-elements.js

Lines changed: 35 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -132,35 +132,58 @@ module.exports.prototype = {
132132

133133
file.iterateNodesByType(['ArrayExpression'], function(node) {
134134
var els = node.elements;
135+
var firstEl = els[0];
136+
var lastEl = els[els.length - 1];
137+
var bracket;
138+
var elToken;
139+
135140
if (els.length <= maximum && node.loc.start.line === node.loc.end.line) {
136141
return;
137142
}
138143

139144
if (!ignoreBrackets) {
140-
if (els[0] && els[0].loc.start.line === node.loc.start.line) {
141-
errors.add('First element should be placed on new line', els[0].loc.start);
145+
if (firstEl && firstEl.loc.start.line === node.loc.start.line) {
146+
bracket = file.getFirstNodeToken(node);
147+
elToken = file.getNextToken(bracket);
148+
149+
errors.assert.differentLine({
150+
token: bracket,
151+
nextToken: elToken,
152+
message: 'First element should be placed on new line'
153+
});
142154
}
143-
if (els[els.length - 1] && els[els.length - 1].loc.end.line === node.loc.end.line) {
144-
errors.add('Closing bracket should be placed on new line', node.loc.end);
155+
if (lastEl && lastEl.loc.end.line === node.loc.end.line) {
156+
bracket = file.getLastNodeToken(node);
157+
elToken = file.getPrevToken(bracket);
158+
159+
errors.assert.differentLine({
160+
token: elToken,
161+
nextToken: bracket,
162+
message: 'Closing bracket should be placed on new line'
163+
});
145164
}
146165
}
147166

148-
var prevLine = 0;
149167
els.forEach(function(elem) {
168+
var elToken;
169+
var comma;
170+
150171
if (!elem) {
151172
// skip holes
152173
return;
153174
}
154-
var line = elem.loc.start.line;
155-
if (prevLine === line) {
156-
errors.add('Multiple elements at a single line in multiline array', {
157-
line: line,
158-
column: elem.loc.start.column
175+
176+
if (firstEl !== elem) {
177+
elToken = file.getFirstNodeToken(elem);
178+
comma = file.getPrevToken(elToken);
179+
180+
errors.assert.differentLine({
181+
token: comma,
182+
nextToken: elToken,
183+
message: 'Multiple elements at a single line in multiline array'
159184
});
160185
}
161-
prevLine = line;
162186
});
163-
164187
});
165188
}
166189
};

0 commit comments

Comments
 (0)