Skip to content

Commit 5d63d76

Browse files
committed
Fix regression in 1.6.0 that broke @include media(">=desk") sorting
1 parent 094656d commit 5d63d76

8 files changed

+52
-8
lines changed

CHANGELOG.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,9 @@
22
All notable changes to this project will be documented in this file.
33
This project adheres to [Semantic Versioning](http://semver.org/).
44

5+
## 1.6.1
6+
* Fixed a regression in 1.6.0. Sort order with item like `@include media` didn't found rules like `@include media(">=desk") {}`.
7+
58
## 1.6.0
69
* Add special comments to disable processing for some part in style sheet
710
* Support custom properties as $variable #27

index.js

Lines changed: 18 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -77,16 +77,29 @@ function createLineBreaks(lineBreaksCount) {
7777

7878
function getAtruleSortName(node, order) {
7979
var atruleName = '@' + node.name;
80+
var sortNameExtended;
81+
var atruleParameter;
8082

81-
// If atRule has a parameter like @mixin name or @include name, sort by this parameter
82-
var atruleParameter = (/^[\w-\(\)]+/).exec(node.params);
83-
84-
if (atruleParameter && atruleParameter.length) {
85-
var sortNameExtended = atruleName + ' ' + atruleParameter[0];
83+
// If atRule has a parameter like `@mixin name` or `@include name`, sort by this parameter
84+
if (node.params) {
85+
atruleParameter = node.params;
86+
sortNameExtended = atruleName + ' ' + atruleParameter;
8687

88+
// check if there is a whole parameter in the config, e. g. `media("<=desk")`
8789
if (order[sortNameExtended]) {
8890
return sortNameExtended;
8991
}
92+
93+
// check if there is a part of parameter in the config, e. g. `media` from `media("<=desk")`
94+
atruleParameter = (/^[\w-]+/).exec(atruleParameter);
95+
96+
if (atruleParameter && atruleParameter.length) {
97+
sortNameExtended = atruleName + ' ' + atruleParameter[0];
98+
99+
if (order[sortNameExtended]) {
100+
return sortNameExtended;
101+
}
102+
}
90103
}
91104

92105
// If atrule with name is in order use the name

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "postcss-sorting",
3-
"version": "1.6.0",
3+
"version": "1.6.1",
44
"description": "PostCSS plugin to sort rules content with specified order.",
55
"keywords": [
66
"postcss",

test/fixtures/at-rules-by-parameter-with-arg.css

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,5 +3,9 @@
33
@include mwp(3);
44
border: none;
55
@include mwp(2);
6+
@include mwp(some-name);
67
@include mwp(1);
8+
@include media("<=desk") {
9+
display: none;
10+
}
711
}

test/fixtures/at-rules-by-parameter-with-arg.expected.css

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,10 @@
22
@mixin clearfix;
33
border: none;
44
@include mwp(1);
5+
@include media("<=desk") {
6+
display: none;
7+
}
58
@include mwp(2);
69
@include mwp(3);
10+
@include mwp(some-name)
711
}

test/fixtures/at-rules-by-parameter.css

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,7 @@
11
.block {
2+
@include media(">=palm") {
3+
border: 1px solid #000;
4+
}
25
@some-rule hello;
36
border: none;
47
@mixin clearfix;

test/fixtures/at-rules-by-parameter.expected.css

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,5 +2,8 @@
22
@mixin island;
33
border: none;
44
@some-rule hello;
5+
@include media(">=palm") {
6+
border: 1px solid #000;
7+
}
58
@mixin clearfix;
69
}

test/test.js

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -159,13 +159,27 @@ test('Should sort complex case with leftovers', t => {
159159

160160
test('Should sort at-rules by their parameter name', t => {
161161
return run(t, 'at-rules-by-parameter', { 'sort-order': [
162-
['@mixin', 'border', '@some-rule hello', '@mixin clearfix']
162+
[
163+
'@mixin',
164+
'border',
165+
'@some-rule hello',
166+
'@include media(">=palm")',
167+
'@mixin clearfix'
168+
]
163169
] });
164170
});
165171

166172
test('Should sort at-rules by their parameter name and argument', t => {
167173
return run(t, 'at-rules-by-parameter-with-arg', { 'sort-order': [
168-
['@mixin', 'border', '@include mwp(1)', '@include mwp(2)', '@include mwp(3)']
174+
[
175+
'@mixin',
176+
'border',
177+
'@include mwp(1)',
178+
'@include media("<=desk")',
179+
'@include mwp(2)',
180+
'@include mwp(3)',
181+
'@include mwp(some-name)'
182+
]
169183
] });
170184
});
171185

0 commit comments

Comments
 (0)