@@ -120,31 +120,45 @@ module.exports = postcss.plugin('postcss-sorting', function (opts) {
120
120
node . initialIndex = index ;
121
121
122
122
// If comment on separate line before node, use node's indexes for comment
123
- if ( node . prev ( ) && node . prev ( ) . type === 'comment' ) {
124
- var previousNode = node . prev ( ) ;
123
+ var commentsBefore = [ ] ;
124
+ var previousNode = node . prev ( ) ;
125
125
126
+ while ( previousNode && previousNode . type === 'comment' ) {
126
127
if ( previousNode . raws . before && previousNode . raws . before . indexOf ( '\n' ) > - 1 ) {
127
128
previousNode . groupIndex = node . groupIndex ;
128
129
previousNode . propertyIndex = node . propertyIndex ;
129
130
previousNode . initialIndex = index - 1 ;
130
131
131
132
var previousNodeClone = cleanLineBreaks ( previousNode ) ;
132
133
133
- processed . push ( previousNodeClone ) ;
134
+ commentsBefore . unshift ( previousNodeClone ) ;
135
+
136
+ previousNode = previousNode . prev ( ) ;
137
+ } else {
138
+ break ;
134
139
}
135
140
}
136
141
142
+ if ( commentsBefore . length ) {
143
+ processed = processed . concat ( commentsBefore ) ;
144
+ }
145
+
146
+ // Add node itself
137
147
processed . push ( node ) ;
138
148
139
149
// If comment on same line with the node and node, use node's indexes for comment
140
- if ( node . next ( ) && node . next ( ) . type === 'comment' ) {
141
- var nextNode = node . next ( ) ;
150
+ var nextNode = node . next ( ) ;
142
151
152
+ while ( nextNode && nextNode . type === 'comment' ) {
143
153
if ( nextNode . raws . before && nextNode . raws . before . indexOf ( '\n' ) < 0 ) {
144
154
nextNode . groupIndex = node . groupIndex ;
145
155
nextNode . propertyIndex = node . propertyIndex ;
146
156
nextNode . initialIndex = index + 1 ;
157
+
147
158
processed . push ( nextNode ) ;
159
+ nextNode = nextNode . next ( ) ;
160
+ } else {
161
+ break ;
148
162
}
149
163
}
150
164
} ) ;
0 commit comments