@@ -132,35 +132,58 @@ module.exports.prototype = {
132
132
133
133
file . iterateNodesByType ( [ 'ArrayExpression' ] , function ( node ) {
134
134
var els = node . elements ;
135
+ var firstEl = els [ 0 ] ;
136
+ var lastEl = els [ els . length - 1 ] ;
137
+ var bracket ;
138
+ var elToken ;
139
+
135
140
if ( els . length <= maximum && node . loc . start . line === node . loc . end . line ) {
136
141
return ;
137
142
}
138
143
139
144
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
+ } ) ;
142
154
}
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
+ } ) ;
145
164
}
146
165
}
147
166
148
- var prevLine = 0 ;
149
167
els . forEach ( function ( elem ) {
168
+ var elToken ;
169
+ var comma ;
170
+
150
171
if ( ! elem ) {
151
172
// skip holes
152
173
return ;
153
174
}
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'
159
184
} ) ;
160
185
}
161
- prevLine = line ;
162
186
} ) ;
163
-
164
187
} ) ;
165
188
}
166
189
} ;
0 commit comments