@@ -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