scss-lint 0.26.2 → 0.27.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/scss_lint/linter/hex_validation.rb +1 -1
- data/lib/scss_lint/linter/property_sort_order.rb +10 -2
- data/lib/scss_lint/linter/unnecessary_parent_reference.rb +6 -0
- data/lib/scss_lint/version.rb +1 -1
- data/spec/scss_lint/linter/hex_validation_spec.rb +4 -0
- data/spec/scss_lint/linter/property_sort_order_spec.rb +83 -4
- data/spec/scss_lint/linter/unnecessary_parent_reference_spec.rb +11 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 09f5144a404feb287b0142ae57abdc1fba664079
|
4
|
+
data.tar.gz: 8d199cc76993c5b93a99e0ece1e91e929b052d2f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 85c7e8f492803782ea48d4da4ed4981c1ed516e3dce5dfb2b7baef837986b7b27804b8294f10b4d640fd6898d64394ce8a8f2b30625b988e991b5d23417f22e0
|
7
|
+
data.tar.gz: e45e2bf8e0ec689a8b1561afc560ac9c5a960a560e3a8d4f40abe5b0f0a27669ed1eb9af3344a5d36912c2d1d3bc559fb19ebd06e50af3776b3d9828d2e5821d
|
@@ -8,7 +8,7 @@ module SCSSLint
|
|
8
8
|
yield
|
9
9
|
end
|
10
10
|
|
11
|
-
def
|
11
|
+
def check_sort_order(node)
|
12
12
|
sortable_props = node.children.select do |child|
|
13
13
|
child.is_a?(Sass::Tree::PropNode) && !ignore_property?(child)
|
14
14
|
end
|
@@ -33,6 +33,14 @@ module SCSSLint
|
|
33
33
|
yield # Continue linting children
|
34
34
|
end
|
35
35
|
|
36
|
+
alias_method :visit_rule, :check_sort_order
|
37
|
+
alias_method :visit_mixin, :check_sort_order
|
38
|
+
|
39
|
+
def visit_if(node, &block)
|
40
|
+
check_sort_order(node, &block)
|
41
|
+
visit(node.else) if node.else
|
42
|
+
end
|
43
|
+
|
36
44
|
private
|
37
45
|
|
38
46
|
# Compares two properties which can contain a vendor prefix. It allows for a
|
@@ -109,7 +117,7 @@ module SCSSLint
|
|
109
117
|
def ignore_property?(prop_node)
|
110
118
|
return true if prop_node.name.any? { |part| !part.is_a?(String) }
|
111
119
|
|
112
|
-
config['
|
120
|
+
config['ignore_unspecified'] &&
|
113
121
|
@preferred_order &&
|
114
122
|
!@preferred_order.include?(prop_node.name.join)
|
115
123
|
end
|
@@ -12,6 +12,12 @@ module SCSSLint
|
|
12
12
|
def visit_sequence(sequence)
|
13
13
|
return unless sequence_starts_with_parent?(sequence.members.first)
|
14
14
|
|
15
|
+
# Allow sequences that contain multiple parent references, e.g.
|
16
|
+
# element {
|
17
|
+
# & + & { ... }
|
18
|
+
# }
|
19
|
+
return if sequence.members[1..-1].any? { |ss| sequence_starts_with_parent?(ss) }
|
20
|
+
|
15
21
|
# Special case: allow an isolated parent to appear if it is part of a
|
16
22
|
# comma sequence of more than one sequence, as this could be used to DRY
|
17
23
|
# up code.
|
data/lib/scss_lint/version.rb
CHANGED
@@ -11,11 +11,15 @@ describe SCSSLint::Linter::HexValidation do
|
|
11
11
|
end
|
12
12
|
|
13
13
|
context 'when rule contains valid hex codes or color keyword' do
|
14
|
+
gradient_css = 'progid:DXImageTransform.Microsoft.gradient' \
|
15
|
+
'(startColorstr=#99000000, endColorstr=#99000000)'
|
16
|
+
|
14
17
|
let(:css) { <<-CSS }
|
15
18
|
p {
|
16
19
|
background: #000;
|
17
20
|
color: #FFFFFF;
|
18
21
|
border-color: red;
|
22
|
+
filter: #{gradient_css};
|
19
23
|
}
|
20
24
|
CSS
|
21
25
|
|
@@ -160,6 +160,85 @@ describe SCSSLint::Linter::PropertySortOrder do
|
|
160
160
|
it { should report_lint line: 3 }
|
161
161
|
end
|
162
162
|
|
163
|
+
context 'when include block contains properties in sorted order' do
|
164
|
+
let(:css) { <<-CSS }
|
165
|
+
@include some-mixin {
|
166
|
+
background: #000;
|
167
|
+
display: none;
|
168
|
+
margin: 5px;
|
169
|
+
padding: 10px;
|
170
|
+
}
|
171
|
+
CSS
|
172
|
+
|
173
|
+
it { should_not report_lint }
|
174
|
+
end
|
175
|
+
|
176
|
+
context 'when include block contains properties not in sorted order' do
|
177
|
+
let(:css) { <<-CSS }
|
178
|
+
@include some-mixin {
|
179
|
+
background: #000;
|
180
|
+
margin: 5px;
|
181
|
+
display: none;
|
182
|
+
}
|
183
|
+
CSS
|
184
|
+
|
185
|
+
it { should report_lint line: 3 }
|
186
|
+
end
|
187
|
+
|
188
|
+
context 'when if block contains properties in sorted order' do
|
189
|
+
let(:css) { <<-CSS }
|
190
|
+
@if $var {
|
191
|
+
background: #000;
|
192
|
+
display: none;
|
193
|
+
margin: 5px;
|
194
|
+
padding: 10px;
|
195
|
+
}
|
196
|
+
CSS
|
197
|
+
|
198
|
+
it { should_not report_lint }
|
199
|
+
end
|
200
|
+
|
201
|
+
context 'when if block contains properties not in sorted order' do
|
202
|
+
let(:css) { <<-CSS }
|
203
|
+
@if $var {
|
204
|
+
background: #000;
|
205
|
+
margin: 5px;
|
206
|
+
display: none;
|
207
|
+
}
|
208
|
+
CSS
|
209
|
+
|
210
|
+
it { should report_lint line: 3 }
|
211
|
+
end
|
212
|
+
|
213
|
+
context 'when if block contains properties in sorted order' do
|
214
|
+
let(:css) { <<-CSS }
|
215
|
+
@if $var {
|
216
|
+
// Content
|
217
|
+
} @else {
|
218
|
+
background: #000;
|
219
|
+
display: none;
|
220
|
+
margin: 5px;
|
221
|
+
padding: 10px;
|
222
|
+
}
|
223
|
+
CSS
|
224
|
+
|
225
|
+
it { should_not report_lint }
|
226
|
+
end
|
227
|
+
|
228
|
+
context 'when else block contains properties not in sorted order' do
|
229
|
+
let(:css) { <<-CSS }
|
230
|
+
@if $var {
|
231
|
+
// Content
|
232
|
+
} @else {
|
233
|
+
background: #000;
|
234
|
+
margin: 5px;
|
235
|
+
display: none;
|
236
|
+
}
|
237
|
+
CSS
|
238
|
+
|
239
|
+
it { should report_lint line: 5 }
|
240
|
+
end
|
241
|
+
|
163
242
|
context 'when the order has been explicitly set' do
|
164
243
|
let(:linter_config) { { 'order' => %w[position display padding margin width] } }
|
165
244
|
|
@@ -200,14 +279,14 @@ describe SCSSLint::Linter::PropertySortOrder do
|
|
200
279
|
}
|
201
280
|
CSS
|
202
281
|
|
203
|
-
context 'and the
|
204
|
-
let(:linter_config) { super().merge('
|
282
|
+
context 'and the ignore_unspecified option is enabled' do
|
283
|
+
let(:linter_config) { super().merge('ignore_unspecified' => true) }
|
205
284
|
|
206
285
|
it { should_not report_lint }
|
207
286
|
end
|
208
287
|
|
209
|
-
context 'and the
|
210
|
-
let(:linter_config) { super().merge('
|
288
|
+
context 'and the ignore_unspecified option is disabled' do
|
289
|
+
let(:linter_config) { super().merge('ignore_unspecified' => false) }
|
211
290
|
|
212
291
|
it { should report_lint }
|
213
292
|
end
|
@@ -41,6 +41,17 @@ describe SCSSLint::Linter::UnnecessaryParentReference do
|
|
41
41
|
it { should_not report_lint }
|
42
42
|
end
|
43
43
|
|
44
|
+
context 'when an ampersand precedes a sibling operator' do
|
45
|
+
let(:css) { <<-CSS }
|
46
|
+
p {
|
47
|
+
& + & {}
|
48
|
+
& ~ & {}
|
49
|
+
}
|
50
|
+
CSS
|
51
|
+
|
52
|
+
it { should_not report_lint }
|
53
|
+
end
|
54
|
+
|
44
55
|
context 'when an amperand is used in a comma sequence to DRY up code' do
|
45
56
|
let(:css) { <<-CSS }
|
46
57
|
p {
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: scss-lint
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.27.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Causes Engineering
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2014-
|
12
|
+
date: 2014-08-19 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rainbow
|