scss_lint 0.57.0 → 0.60.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/MIT-LICENSE +1 -2
- data/data/properties.txt +28 -0
- data/data/property-sort-orders/smacss.txt +5 -0
- data/data/pseudo-elements.txt +2 -0
- data/lib/scss_lint/cli.rb +4 -4
- data/lib/scss_lint/config.rb +2 -5
- data/lib/scss_lint/constants.rb +1 -1
- data/lib/scss_lint/engine.rb +5 -5
- data/lib/scss_lint/linter/chained_classes.rb +1 -1
- data/lib/scss_lint/linter/color_variable.rb +0 -3
- data/lib/scss_lint/linter/disable_linter_reason.rb +3 -3
- data/lib/scss_lint/linter/hex_length.rb +1 -1
- data/lib/scss_lint/linter/hex_notation.rb +1 -1
- data/lib/scss_lint/linter/hex_validation.rb +2 -2
- data/lib/scss_lint/linter/indentation.rb +1 -1
- data/lib/scss_lint/linter/leading_zero.rb +1 -1
- data/lib/scss_lint/linter/length_variable.rb +1 -1
- data/lib/scss_lint/linter/property_units.rb +1 -1
- data/lib/scss_lint/linter/selector_depth.rb +1 -1
- data/lib/scss_lint/linter/shorthand.rb +1 -1
- data/lib/scss_lint/linter/space_around_operator.rb +1 -1
- data/lib/scss_lint/linter/space_between_parens.rb +2 -2
- data/lib/scss_lint/linter/string_quotes.rb +2 -2
- data/lib/scss_lint/linter/trailing_semicolon.rb +1 -1
- data/lib/scss_lint/linter/trailing_whitespace.rb +1 -1
- data/lib/scss_lint/linter/trailing_zero.rb +1 -1
- data/lib/scss_lint/linter/unnecessary_mantissa.rb +2 -2
- data/lib/scss_lint/linter/url_format.rb +2 -2
- data/lib/scss_lint/linter/url_quotes.rb +2 -2
- data/lib/scss_lint/linter/vendor_prefix.rb +1 -1
- data/lib/scss_lint/linter/zero_unit.rb +1 -1
- data/lib/scss_lint/linter.rb +1 -1
- data/lib/scss_lint/options.rb +3 -3
- data/lib/scss_lint/rake_task.rb +1 -1
- data/lib/scss_lint/runner.rb +8 -8
- data/lib/scss_lint/utils.rb +1 -1
- data/lib/scss_lint/version.rb +1 -1
- data/spec/scss_lint/linter/duplicate_property_spec.rb +1 -1
- data/spec/scss_lint/linter/length_variable_spec.rb +1 -1
- data/spec/scss_lint/plugins/linter_dir_spec.rb +1 -1
- metadata +83 -100
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 570475ca333090a33a54d608ce015b5164c56b4b195d775cb96d4e01178a5c24
|
4
|
+
data.tar.gz: 02da18b960f297a62eb8f84736452bfd2aa0107cbac27ea532fbda399dfe0300
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ed25ade8dbb9e0f16674924ecd7751a2a4d843ee08d1870e713623c569832c702f6a5308c31c069e71d5e8fa1e061d3469dce6995547d634a5294cb9061369a4
|
7
|
+
data.tar.gz: 5558c11fccfac36b82a6b2d20c741b9a7d2869893315da8957cde5168aa5c284ff1e2f7ad06ebcb838ef6b0d088afa1f533c5d93a5e27734379e6bfbe8192d56
|
data/MIT-LICENSE
CHANGED
data/data/properties.txt
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
@keyframes
|
2
|
+
accent-color
|
2
3
|
align-content
|
3
4
|
align-items
|
4
5
|
align-self
|
@@ -125,6 +126,7 @@ break-before
|
|
125
126
|
break-inside
|
126
127
|
buffered-rendering
|
127
128
|
caption-side
|
129
|
+
caret-color
|
128
130
|
clear
|
129
131
|
clip
|
130
132
|
clip-path
|
@@ -155,6 +157,8 @@ counter-increment
|
|
155
157
|
counter-reset
|
156
158
|
crop
|
157
159
|
cursor
|
160
|
+
cx
|
161
|
+
cy
|
158
162
|
direction
|
159
163
|
display
|
160
164
|
dominant-baseline
|
@@ -198,7 +202,9 @@ font-stretch
|
|
198
202
|
font-style
|
199
203
|
font-variant
|
200
204
|
font-variant-ligatures
|
205
|
+
font-variant-numeric
|
201
206
|
font-weight
|
207
|
+
gap
|
202
208
|
glyph-orientation-horizontal
|
203
209
|
glyph-orientation-vertical
|
204
210
|
grid
|
@@ -363,6 +369,9 @@ overflow-style
|
|
363
369
|
overflow-wrap
|
364
370
|
overflow-x
|
365
371
|
overflow-y
|
372
|
+
overscroll-behavior
|
373
|
+
overscroll-behavior-x
|
374
|
+
overscroll-behavior-y
|
366
375
|
padding
|
367
376
|
padding-after
|
368
377
|
padding-before
|
@@ -387,11 +396,14 @@ perspective-origin
|
|
387
396
|
perspective-origin-x
|
388
397
|
perspective-origin-y
|
389
398
|
phonemes
|
399
|
+
place-content
|
400
|
+
place-items
|
390
401
|
pointer-events
|
391
402
|
position
|
392
403
|
print-color-adjust
|
393
404
|
punctuation-trim
|
394
405
|
quotes
|
406
|
+
r
|
395
407
|
region-break-after
|
396
408
|
region-break-before
|
397
409
|
region-break-inside
|
@@ -409,7 +421,20 @@ ruby-align
|
|
409
421
|
ruby-overhang
|
410
422
|
ruby-position
|
411
423
|
ruby-span
|
424
|
+
rx
|
425
|
+
ry
|
412
426
|
scroll-behavior
|
427
|
+
scroll-margin
|
428
|
+
scroll-margin-bottom
|
429
|
+
scroll-margin-left
|
430
|
+
scroll-margin-right
|
431
|
+
scroll-margin-top
|
432
|
+
scroll-padding
|
433
|
+
scroll-padding-bottom
|
434
|
+
scroll-padding-left
|
435
|
+
scroll-padding-right
|
436
|
+
scroll-padding-top
|
437
|
+
scrollbar-width
|
413
438
|
shape-image-threshold
|
414
439
|
shape-inside
|
415
440
|
shape-margin
|
@@ -477,6 +502,7 @@ text-stroke-width
|
|
477
502
|
text-transform
|
478
503
|
text-underline-color
|
479
504
|
text-underline-mode
|
505
|
+
text-underline-offset
|
480
506
|
text-underline-position
|
481
507
|
text-underline-style
|
482
508
|
text-underline-width
|
@@ -521,5 +547,7 @@ word-wrap
|
|
521
547
|
wrap-flow
|
522
548
|
wrap-through
|
523
549
|
writing-mode
|
550
|
+
x
|
551
|
+
y
|
524
552
|
z-index
|
525
553
|
zoom
|
@@ -58,6 +58,10 @@ align-self
|
|
58
58
|
justify-content
|
59
59
|
order
|
60
60
|
|
61
|
+
gap
|
62
|
+
row-gap
|
63
|
+
column-gap
|
64
|
+
|
61
65
|
width
|
62
66
|
min-width
|
63
67
|
max-width
|
@@ -222,6 +226,7 @@ text-shadow
|
|
222
226
|
text-transform
|
223
227
|
text-wrap
|
224
228
|
word-wrap
|
229
|
+
overflow-wrap
|
225
230
|
word-break
|
226
231
|
|
227
232
|
text-emphasis
|
data/data/pseudo-elements.txt
CHANGED
@@ -29,6 +29,7 @@
|
|
29
29
|
-moz-viewport
|
30
30
|
-moz-viewport-scroll
|
31
31
|
-moz-xul-anonymous-block
|
32
|
+
-ms-backdrop
|
32
33
|
-ms-browse
|
33
34
|
-ms-check
|
34
35
|
-ms-clear
|
@@ -54,6 +55,7 @@
|
|
54
55
|
-webkit-datetime-edit-month-field
|
55
56
|
-webkit-datetime-edit-text
|
56
57
|
-webkit-datetime-edit-year-field
|
58
|
+
-webkit-details-marker
|
57
59
|
-webkit-file-upload-button
|
58
60
|
-webkit-full-page-media
|
59
61
|
-webkit-inner-spin-button
|
data/lib/scss_lint/cli.rb
CHANGED
@@ -31,8 +31,8 @@ module SCSSLint
|
|
31
31
|
def run(args)
|
32
32
|
options = SCSSLint::Options.new.parse(args)
|
33
33
|
act_on_options(options)
|
34
|
-
rescue StandardError =>
|
35
|
-
handle_runtime_exception(
|
34
|
+
rescue StandardError => e
|
35
|
+
handle_runtime_exception(e, options)
|
36
36
|
end
|
37
37
|
|
38
38
|
private
|
@@ -205,9 +205,9 @@ module SCSSLint
|
|
205
205
|
Array(options[:required_paths]).each do |path|
|
206
206
|
require path
|
207
207
|
end
|
208
|
-
rescue LoadError =>
|
208
|
+
rescue LoadError => e
|
209
209
|
raise SCSSLint::Exceptions::RequiredLibraryMissingError,
|
210
|
-
"Required library not found: #{
|
210
|
+
"Required library not found: #{e.message}"
|
211
211
|
end
|
212
212
|
|
213
213
|
def load_reporters(options)
|
data/lib/scss_lint/config.rb
CHANGED
@@ -64,9 +64,9 @@ module SCSSLint
|
|
64
64
|
else
|
65
65
|
{}
|
66
66
|
end
|
67
|
-
rescue StandardError =>
|
67
|
+
rescue StandardError => e
|
68
68
|
raise SCSSLint::Exceptions::InvalidConfiguration,
|
69
|
-
"Invalid configuration: #{
|
69
|
+
"Invalid configuration: #{e.message}"
|
70
70
|
end
|
71
71
|
|
72
72
|
options = convert_single_options_to_arrays(options)
|
@@ -94,8 +94,6 @@ module SCSSLint
|
|
94
94
|
# Merge options from wildcard linters into individual linter configs
|
95
95
|
def merge_wildcard_linter_options(options)
|
96
96
|
options = options.dup
|
97
|
-
|
98
|
-
# rubocop:disable Performance/HashEachMethods (FALSE POSITIVE)
|
99
97
|
# Cannot use `each_key` because the cycle adds new keys during iteration
|
100
98
|
options.fetch('linters', {}).keys.each do |class_name|
|
101
99
|
next unless class_name.include?('*')
|
@@ -103,7 +101,6 @@ module SCSSLint
|
|
103
101
|
wildcard_options = options['linters'].delete(class_name)
|
104
102
|
apply_options_to_matching_linters(class_name, options, wildcard_options)
|
105
103
|
end
|
106
|
-
# rubocop:enable Performance/HashEachMethods
|
107
104
|
|
108
105
|
options
|
109
106
|
end
|
data/lib/scss_lint/constants.rb
CHANGED
@@ -5,6 +5,6 @@ module SCSSLint
|
|
5
5
|
SCSS_LINT_HOME = File.realpath(File.join(File.dirname(__FILE__), '..', '..')).freeze
|
6
6
|
SCSS_LINT_DATA = File.join(SCSS_LINT_HOME, 'data').freeze
|
7
7
|
|
8
|
-
REPO_URL = 'https://github.com/
|
8
|
+
REPO_URL = 'https://github.com/sds/scss-lint'.freeze
|
9
9
|
BUG_REPORT_URL = "#{REPO_URL}/issues".freeze
|
10
10
|
end
|
data/lib/scss_lint/engine.rb
CHANGED
@@ -34,12 +34,12 @@ module SCSSLint
|
|
34
34
|
.lines
|
35
35
|
@tree = @engine.to_tree
|
36
36
|
find_any_control_commands
|
37
|
-
rescue Encoding::UndefinedConversionError, Sass::SyntaxError, ArgumentError =>
|
38
|
-
if
|
39
|
-
|
37
|
+
rescue Encoding::UndefinedConversionError, Sass::SyntaxError, ArgumentError => e
|
38
|
+
if e.is_a?(Encoding::UndefinedConversionError) ||
|
39
|
+
e.message.match(/invalid.*(byte sequence|character)/i)
|
40
40
|
raise FileEncodingError,
|
41
|
-
"Unable to parse SCSS file: #{
|
42
|
-
|
41
|
+
"Unable to parse SCSS file: #{e}",
|
42
|
+
e.backtrace
|
43
43
|
else
|
44
44
|
raise
|
45
45
|
end
|
@@ -6,7 +6,7 @@ module SCSSLint
|
|
6
6
|
def visit_sequence(sequence)
|
7
7
|
line_offset = 0
|
8
8
|
sequence.members.each do |member|
|
9
|
-
line_offset += 1 if member =~ /\n/
|
9
|
+
line_offset += 1 if member.to_s =~ /\n/
|
10
10
|
next unless chained_class?(member)
|
11
11
|
add_lint(member.line + line_offset,
|
12
12
|
'Prefer using a distinct class over chained classes ' \
|
@@ -18,13 +18,10 @@ module SCSSLint
|
|
18
18
|
|
19
19
|
def visit_script_string(node)
|
20
20
|
return if literal_string?(node)
|
21
|
-
|
22
|
-
# rubocop:disable Performance/HashEachMethods (FALSE POSITIVE v0.50.0)
|
23
21
|
remove_quoted_strings(node.value)
|
24
22
|
.scan(/(^|\s)(#[a-f0-9]+|[a-z]+)(?=\s|$)/i)
|
25
23
|
.select { |_, word| color?(word) }
|
26
24
|
.each { |_, color| record_lint(node, color) }
|
27
|
-
# rubocop:enable Performance/HashEachMethods
|
28
25
|
end
|
29
26
|
|
30
27
|
def visit_script_funcall(node)
|
@@ -7,7 +7,7 @@ module SCSSLint
|
|
7
7
|
# No lint if the first line of the comment is not a command (because then
|
8
8
|
# either this comment has no commands, or the first line serves as a the
|
9
9
|
# reason for a command on a later line).
|
10
|
-
if comment_lines(node).first.match(COMMAND_REGEX)
|
10
|
+
if comment_lines(node).first.match?(COMMAND_REGEX)
|
11
11
|
visit_command_comment(node)
|
12
12
|
else
|
13
13
|
@previous_comment = node
|
@@ -21,7 +21,7 @@ module SCSSLint
|
|
21
21
|
end
|
22
22
|
|
23
23
|
# Not a "disable linter reason" if the last line of the previous comment is a command.
|
24
|
-
if comment_lines(@previous_comment).last.match(COMMAND_REGEX)
|
24
|
+
if comment_lines(@previous_comment).last.match?(COMMAND_REGEX)
|
25
25
|
report_lint(node)
|
26
26
|
return
|
27
27
|
end
|
@@ -48,7 +48,7 @@ module SCSSLint
|
|
48
48
|
(?<action>disable)\s+
|
49
49
|
(?<linters>.*?)
|
50
50
|
\s*(?:\*/|\n) # Comment end marker or end of line
|
51
|
-
}x
|
51
|
+
}x.freeze
|
52
52
|
|
53
53
|
def comment_lines(node)
|
54
54
|
node.value.join.split("\n")
|
@@ -4,7 +4,7 @@ module SCSSLint
|
|
4
4
|
class Linter::HexLength < Linter
|
5
5
|
include LinterRegistry
|
6
6
|
|
7
|
-
HEX_REGEX = /(#(\h{3}|\h{6}))(?!\h)
|
7
|
+
HEX_REGEX = /(#(\h{3}|\h{6}))(?!\h)/.freeze
|
8
8
|
|
9
9
|
def visit_script_color(node)
|
10
10
|
return unless hex = source_from_range(node.source_range)[HEX_REGEX, 1]
|
@@ -3,7 +3,7 @@ module SCSSLint
|
|
3
3
|
class Linter::HexNotation < Linter
|
4
4
|
include LinterRegistry
|
5
5
|
|
6
|
-
HEX_REGEX = /(#(\h{3}|\h{6}))(?!\h)
|
6
|
+
HEX_REGEX = /(#(\h{3}|\h{6}))(?!\h)/.freeze
|
7
7
|
|
8
8
|
def visit_script_color(node)
|
9
9
|
return unless hex = source_from_range(node.source_range)[HEX_REGEX, 1]
|
@@ -13,10 +13,10 @@ module SCSSLint
|
|
13
13
|
|
14
14
|
private
|
15
15
|
|
16
|
-
HEX_REGEX = /(#(\h{3}|\h{6}|\h{8}))(?!\h)
|
16
|
+
HEX_REGEX = /(#(\h{3}|\h{6}|\h{8}))(?!\h)/.freeze
|
17
17
|
|
18
18
|
def check_hex(hex, node)
|
19
|
-
return if HEX_REGEX.match(hex)
|
19
|
+
return if HEX_REGEX.match?(hex)
|
20
20
|
add_lint(node, "Colors must have either three or six digits: `#{hex}`")
|
21
21
|
end
|
22
22
|
end
|
@@ -47,7 +47,7 @@ module SCSSLint
|
|
47
47
|
# combinator, as these "combine" simple sequences such that they do not
|
48
48
|
# increase depth.
|
49
49
|
depth = simple_sequences.size -
|
50
|
-
separators.count { |item|
|
50
|
+
separators.count { |item| %w[~ +].include?(item) }
|
51
51
|
|
52
52
|
depth +=
|
53
53
|
if parent_selectors > 0
|
@@ -13,7 +13,7 @@ module SCSSLint
|
|
13
13
|
# (only selectors?), the source ranges are offset by two (probably not
|
14
14
|
# accounting for the `#{`. Slide everything to the left by 2, and maybe
|
15
15
|
# things will look sane this time.
|
16
|
-
unless operation_sources.operator_source
|
16
|
+
unless operation_sources.operator_source.match?(Sass::Script::Lexer::REGULAR_EXPRESSIONS[:op])
|
17
17
|
operation_sources.adjust_for_interpolation
|
18
18
|
operation_sources.adjust_sources
|
19
19
|
end
|
@@ -29,7 +29,7 @@ module SCSSLint
|
|
29
29
|
|
30
30
|
private
|
31
31
|
|
32
|
-
TRAILING_WHITESPACE = /\s
|
32
|
+
TRAILING_WHITESPACE = /\s*$/.freeze
|
33
33
|
|
34
34
|
def check(node, source) # rubocop:disable Metrics/AbcSize, Metrics/MethodLength
|
35
35
|
@spaces = config['spaces']
|
@@ -90,7 +90,7 @@ module SCSSLint
|
|
90
90
|
# those parens may be part of a parent function call. We don't care about
|
91
91
|
# such parens. This depends on whether the preceding character is part of
|
92
92
|
# a function name.
|
93
|
-
return original_source if character_at(range.start_pos, left_offset - 1)
|
93
|
+
return original_source if character_at(range.start_pos, left_offset - 1).match?(/[A-Za-z0-9_]/)
|
94
94
|
|
95
95
|
range.start_pos.offset += left_offset
|
96
96
|
range.end_pos.offset += right_offset
|
@@ -45,7 +45,7 @@ module SCSSLint
|
|
45
45
|
\s*\)?\s*;?\s* # Sometimes the Sass parser includes a trailing ) or ;
|
46
46
|
(//.*)? # Exclude any trailing comments that might have snuck in
|
47
47
|
\z
|
48
|
-
}x
|
48
|
+
}x.freeze
|
49
49
|
|
50
50
|
def extract_string_without_quotes(source)
|
51
51
|
return unless match = STRING_WITHOUT_QUOTES_REGEX.match(source)
|
@@ -66,7 +66,7 @@ module SCSSLint
|
|
66
66
|
if string =~ /(?<! \\) \\'/x && string !~ /"/
|
67
67
|
add_lint(node, 'Use double-quoted strings when writing single ' \
|
68
68
|
'quotes to avoid having to escape the single quotes')
|
69
|
-
elsif string
|
69
|
+
elsif string.match?(/(?<! \\) \\"/x)
|
70
70
|
add_lint(node, "Don't escape double quotes in single-quoted strings")
|
71
71
|
end
|
72
72
|
elsif string !~ /"/
|
@@ -45,7 +45,7 @@ module SCSSLint
|
|
45
45
|
|
46
46
|
def visit_import(node)
|
47
47
|
# Ignore all but the last import for comma-separated @imports
|
48
|
-
return if source_from_range(node.source_range)
|
48
|
+
return if source_from_range(node.source_range).match?(/,\s*$/)
|
49
49
|
check_semicolon(node)
|
50
50
|
end
|
51
51
|
|
@@ -22,7 +22,7 @@ module SCSSLint
|
|
22
22
|
|
23
23
|
private
|
24
24
|
|
25
|
-
FRACTIONAL_DIGIT_REGEX = /^-?(\d*\.\d+)
|
25
|
+
FRACTIONAL_DIGIT_REGEX = /^-?(\d*\.\d+)/.freeze
|
26
26
|
|
27
27
|
def check_for_trailing_zeros(node, original_number)
|
28
28
|
return unless match = /^(\d*\.(?:[0-9]*[1-9]|[1-9])*)0+$/.match(original_number)
|
@@ -8,7 +8,7 @@ module SCSSLint
|
|
8
8
|
|
9
9
|
def visit_script_string(node)
|
10
10
|
return unless node.type == :identifier
|
11
|
-
return if node.value
|
11
|
+
return if node.value.match?(/^'|"/)
|
12
12
|
return if url_literal?(node)
|
13
13
|
|
14
14
|
node.value.scan(REAL_NUMBER_REGEX) do |number, integer, mantissa, units|
|
@@ -35,7 +35,7 @@ module SCSSLint
|
|
35
35
|
(?<mantissa>\d+)
|
36
36
|
(?<units>\w*)
|
37
37
|
)\b
|
38
|
-
/ix
|
38
|
+
/ix.freeze
|
39
39
|
|
40
40
|
MESSAGE_FORMAT = '`%s` should be written without the mantissa as `%s%s`'.freeze
|
41
41
|
|
@@ -49,8 +49,8 @@ module SCSSLint
|
|
49
49
|
if uri.scheme || uri.host
|
50
50
|
add_lint(node, "URL `#{url}` should not contain protocol or domain")
|
51
51
|
end
|
52
|
-
rescue URI::Error =>
|
53
|
-
add_lint(node, "Invalid URL `#{url}`: #{
|
52
|
+
rescue URI::Error => e
|
53
|
+
add_lint(node, "Invalid URL `#{url}`: #{e}")
|
54
54
|
end
|
55
55
|
end
|
56
56
|
end
|
@@ -20,8 +20,8 @@ module SCSSLint
|
|
20
20
|
private
|
21
21
|
|
22
22
|
def check(node, string)
|
23
|
-
return unless string
|
24
|
-
return if string
|
23
|
+
return unless string.match?(/^\s*url\(\s*[^"']/)
|
24
|
+
return if string.match?(/^\s*url\(\s*data:/) # Ignore data URIs
|
25
25
|
|
26
26
|
add_lint(node, 'URLs should be enclosed in quotes')
|
27
27
|
end
|
@@ -27,7 +27,7 @@ module SCSSLint
|
|
27
27
|
private
|
28
28
|
|
29
29
|
def check_identifier(node, identifier)
|
30
|
-
return unless identifier
|
30
|
+
return unless identifier.match?(/^[_-]/)
|
31
31
|
|
32
32
|
# Strip vendor prefix to check against identifiers.
|
33
33
|
# (Also strip closing parentheticals from values like linear-gradient.)
|
@@ -35,7 +35,7 @@ module SCSSLint
|
|
35
35
|
(?<!\.|\#) # Ignore zeroes following `#` (colors) or `.` (decimals)
|
36
36
|
(0[a-z]+) # Zero followed by letters indicating some sort of unit
|
37
37
|
\b
|
38
|
-
/ix
|
38
|
+
/ix.freeze
|
39
39
|
|
40
40
|
MESSAGE_FORMAT = '`%s` should be written without units as `0`'.freeze
|
41
41
|
|
data/lib/scss_lint/linter.rb
CHANGED
@@ -75,7 +75,7 @@ module SCSSLint
|
|
75
75
|
line_source.length - range.start_pos.offset + 1
|
76
76
|
end
|
77
77
|
|
78
|
-
# Workaround for https://github.com/
|
78
|
+
# Workaround for https://github.com/sds/scss-lint/issues/887 to acount for
|
79
79
|
# https://github.com/sass/sass/issues/2284.
|
80
80
|
length = 1 if length < 1
|
81
81
|
|
data/lib/scss_lint/options.rb
CHANGED
@@ -27,10 +27,10 @@ module SCSSLint
|
|
27
27
|
@options[:files] = args
|
28
28
|
|
29
29
|
@options
|
30
|
-
rescue OptionParser::InvalidOption =>
|
30
|
+
rescue OptionParser::InvalidOption => e
|
31
31
|
raise SCSSLint::Exceptions::InvalidCLIOption,
|
32
|
-
|
33
|
-
|
32
|
+
e.message,
|
33
|
+
e.backtrace
|
34
34
|
end
|
35
35
|
|
36
36
|
private
|
data/lib/scss_lint/rake_task.rb
CHANGED
data/lib/scss_lint/runner.rb
CHANGED
@@ -33,18 +33,18 @@ module SCSSLint
|
|
33
33
|
@linters.each do |linter|
|
34
34
|
begin
|
35
35
|
run_linter(linter, engine, file[:path])
|
36
|
-
rescue StandardError =>
|
36
|
+
rescue StandardError => e
|
37
37
|
raise SCSSLint::Exceptions::LinterError,
|
38
38
|
"#{linter.class} raised unexpected error linting file #{file[:path]}: " \
|
39
|
-
"'#{
|
40
|
-
|
39
|
+
"'#{e.message}'",
|
40
|
+
e.backtrace
|
41
41
|
end
|
42
42
|
end
|
43
|
-
rescue Sass::SyntaxError =>
|
44
|
-
@lints << Lint.new(Linter::Syntax.new,
|
45
|
-
"Syntax Error: #{
|
46
|
-
rescue FileEncodingError =>
|
47
|
-
@lints << Lint.new(Linter::Encoding.new, file[:path], Location.new,
|
43
|
+
rescue Sass::SyntaxError => e
|
44
|
+
@lints << Lint.new(Linter::Syntax.new, e.sass_filename, Location.new(e.sass_line),
|
45
|
+
"Syntax Error: #{e}", :error)
|
46
|
+
rescue FileEncodingError => e
|
47
|
+
@lints << Lint.new(Linter::Encoding.new, file[:path], Location.new, e.to_s, :error)
|
48
48
|
end
|
49
49
|
|
50
50
|
# For stubbing in tests.
|
data/lib/scss_lint/utils.rb
CHANGED
data/lib/scss_lint/version.rb
CHANGED
@@ -217,7 +217,7 @@ describe SCSSLint::Linter::DuplicateProperty do
|
|
217
217
|
end
|
218
218
|
|
219
219
|
context 'when specific consecutive duplicate properties are allowed' do
|
220
|
-
let(:linter_config) { { 'ignore_consecutive' => [
|
220
|
+
let(:linter_config) { { 'ignore_consecutive' => %w[background-color transition] } }
|
221
221
|
|
222
222
|
context 'when rule set contains consecutive duplicates in whitelist' do
|
223
223
|
let(:scss) { <<-SCSS }
|
@@ -348,7 +348,7 @@ describe SCSSLint::Linter::LengthVariable do
|
|
348
348
|
end
|
349
349
|
|
350
350
|
context 'when using a length with an allowed property' do
|
351
|
-
let(:linter_config) { { 'allowed_properties' => [
|
351
|
+
let(:linter_config) { { 'allowed_properties' => %w[text-shadow box-shadow] } }
|
352
352
|
let(:scss) { <<-SCSS }
|
353
353
|
p {
|
354
354
|
text-shadow: 10px 10px 5px blue;
|
@@ -1,7 +1,7 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe SCSSLint::Plugins::LinterDir do
|
4
|
-
let(:plugin_directory) { File.expand_path('
|
4
|
+
let(:plugin_directory) { File.expand_path('../fixtures/plugins', __dir__) }
|
5
5
|
let(:subject) { described_class.new(plugin_directory) }
|
6
6
|
|
7
7
|
describe '#load' do
|
metadata
CHANGED
@@ -1,41 +1,23 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: scss_lint
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.60.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
|
-
- Brigade Engineering
|
8
7
|
- Shane da Silva
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date:
|
11
|
+
date: 2023-01-27 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
|
-
- !ruby/object:Gem::Dependency
|
15
|
-
name: rake
|
16
|
-
requirement: !ruby/object:Gem::Requirement
|
17
|
-
requirements:
|
18
|
-
- - ">="
|
19
|
-
- !ruby/object:Gem::Version
|
20
|
-
version: '0.9'
|
21
|
-
- - "<"
|
22
|
-
- !ruby/object:Gem::Version
|
23
|
-
version: '13'
|
24
|
-
type: :runtime
|
25
|
-
prerelease: false
|
26
|
-
version_requirements: !ruby/object:Gem::Requirement
|
27
|
-
requirements:
|
28
|
-
- - ">="
|
29
|
-
- !ruby/object:Gem::Version
|
30
|
-
version: '0.9'
|
31
|
-
- - "<"
|
32
|
-
- !ruby/object:Gem::Version
|
33
|
-
version: '13'
|
34
13
|
- !ruby/object:Gem::Dependency
|
35
14
|
name: sass
|
36
15
|
requirement: !ruby/object:Gem::Requirement
|
37
16
|
requirements:
|
38
17
|
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '3.5'
|
20
|
+
- - ">="
|
39
21
|
- !ruby/object:Gem::Version
|
40
22
|
version: 3.5.5
|
41
23
|
type: :runtime
|
@@ -43,11 +25,13 @@ dependencies:
|
|
43
25
|
version_requirements: !ruby/object:Gem::Requirement
|
44
26
|
requirements:
|
45
27
|
- - "~>"
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '3.5'
|
30
|
+
- - ">="
|
46
31
|
- !ruby/object:Gem::Version
|
47
32
|
version: 3.5.5
|
48
33
|
description: Configurable tool for writing clean and consistent SCSS
|
49
34
|
email:
|
50
|
-
- eng@brigade.com
|
51
35
|
- shane@dasilva.io
|
52
36
|
executables:
|
53
37
|
- scss-lint
|
@@ -254,7 +238,7 @@ files:
|
|
254
238
|
- spec/spec_helper.rb
|
255
239
|
- spec/support/isolated_environment.rb
|
256
240
|
- spec/support/matchers/report_lint.rb
|
257
|
-
homepage: https://github.com/
|
241
|
+
homepage: https://github.com/sds/scss-lint
|
258
242
|
licenses:
|
259
243
|
- MIT
|
260
244
|
metadata: {}
|
@@ -266,108 +250,107 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
266
250
|
requirements:
|
267
251
|
- - ">="
|
268
252
|
- !ruby/object:Gem::Version
|
269
|
-
version: '2.
|
253
|
+
version: '2.4'
|
270
254
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
271
255
|
requirements:
|
272
256
|
- - ">="
|
273
257
|
- !ruby/object:Gem::Version
|
274
258
|
version: '0'
|
275
259
|
requirements: []
|
276
|
-
|
277
|
-
rubygems_version: 2.5.2
|
260
|
+
rubygems_version: 3.1.6
|
278
261
|
signing_key:
|
279
262
|
specification_version: 4
|
280
263
|
summary: SCSS lint tool
|
281
264
|
test_files:
|
282
|
-
- spec/
|
265
|
+
- spec/spec_helper.rb
|
266
|
+
- spec/scss_lint/runner_spec.rb
|
283
267
|
- spec/scss_lint/config_spec.rb
|
284
|
-
- spec/scss_lint/
|
285
|
-
- spec/scss_lint/
|
286
|
-
- spec/scss_lint/
|
287
|
-
- spec/scss_lint/linter/
|
288
|
-
- spec/scss_lint/linter/bem_depth_spec.rb
|
289
|
-
- spec/scss_lint/linter/border_zero_spec.rb
|
290
|
-
- spec/scss_lint/linter/chained_classes_spec.rb
|
291
|
-
- spec/scss_lint/linter/color_keyword_spec.rb
|
292
|
-
- spec/scss_lint/linter/color_variable_spec.rb
|
293
|
-
- spec/scss_lint/linter/comment_spec.rb
|
294
|
-
- spec/scss_lint/linter/compass/property_with_mixin_spec.rb
|
295
|
-
- spec/scss_lint/linter/debug_statement_spec.rb
|
296
|
-
- spec/scss_lint/linter/declaration_order_spec.rb
|
297
|
-
- spec/scss_lint/linter/disable_linter_reason_spec.rb
|
298
|
-
- spec/scss_lint/linter/duplicate_property_spec.rb
|
299
|
-
- spec/scss_lint/linter/else_placement_spec.rb
|
300
|
-
- spec/scss_lint/linter/empty_line_between_blocks_spec.rb
|
301
|
-
- spec/scss_lint/linter/empty_rule_spec.rb
|
302
|
-
- spec/scss_lint/linter/extend_directive_spec.rb
|
303
|
-
- spec/scss_lint/linter/final_newline_spec.rb
|
304
|
-
- spec/scss_lint/linter/hex_length_spec.rb
|
305
|
-
- spec/scss_lint/linter/hex_notation_spec.rb
|
306
|
-
- spec/scss_lint/linter/hex_validation_spec.rb
|
268
|
+
- spec/scss_lint/rake_task_spec.rb
|
269
|
+
- spec/scss_lint/cli_spec.rb
|
270
|
+
- spec/scss_lint/logger_spec.rb
|
271
|
+
- spec/scss_lint/linter/trailing_whitespace_spec.rb
|
307
272
|
- spec/scss_lint/linter/id_selector_spec.rb
|
273
|
+
- spec/scss_lint/linter/single_line_per_selector_spec.rb
|
274
|
+
- spec/scss_lint/linter/declaration_order_spec.rb
|
308
275
|
- spec/scss_lint/linter/import_path_spec.rb
|
309
|
-
- spec/scss_lint/linter/
|
310
|
-
- spec/scss_lint/linter/
|
276
|
+
- spec/scss_lint/linter/url_quotes_spec.rb
|
277
|
+
- spec/scss_lint/linter/chained_classes_spec.rb
|
278
|
+
- spec/scss_lint/linter/space_around_operator_spec.rb
|
311
279
|
- spec/scss_lint/linter/leading_zero_spec.rb
|
312
|
-
- spec/scss_lint/linter/
|
313
|
-
- spec/scss_lint/linter/
|
314
|
-
- spec/scss_lint/linter/
|
315
|
-
- spec/scss_lint/linter/
|
316
|
-
- spec/scss_lint/linter/placeholder_in_extend_spec.rb
|
317
|
-
- spec/scss_lint/linter/private_naming_convention_spec.rb
|
318
|
-
- spec/scss_lint/linter/property_count_spec.rb
|
319
|
-
- spec/scss_lint/linter/property_sort_order_spec.rb
|
320
|
-
- spec/scss_lint/linter/property_spelling_spec.rb
|
321
|
-
- spec/scss_lint/linter/property_units_spec.rb
|
280
|
+
- spec/scss_lint/linter/unnecessary_mantissa_spec.rb
|
281
|
+
- spec/scss_lint/linter/important_rule_spec.rb
|
282
|
+
- spec/scss_lint/linter/zero_unit_spec.rb
|
283
|
+
- spec/scss_lint/linter/space_after_property_name_spec.rb
|
322
284
|
- spec/scss_lint/linter/pseudo_element_spec.rb
|
285
|
+
- spec/scss_lint/linter/else_placement_spec.rb
|
286
|
+
- spec/scss_lint/linter/vendor_prefix_spec.rb
|
287
|
+
- spec/scss_lint/linter/space_after_comment_spec.rb
|
288
|
+
- spec/scss_lint/linter/trailing_semicolon_spec.rb
|
289
|
+
- spec/scss_lint/linter/length_variable_spec.rb
|
290
|
+
- spec/scss_lint/linter/space_after_comma_spec.rb
|
291
|
+
- spec/scss_lint/linter/single_line_per_property_spec.rb
|
292
|
+
- spec/scss_lint/linter/border_zero_spec.rb
|
293
|
+
- spec/scss_lint/linter/url_format_spec.rb
|
323
294
|
- spec/scss_lint/linter/qualifying_element_spec.rb
|
324
|
-
- spec/scss_lint/linter/
|
295
|
+
- spec/scss_lint/linter/empty_line_between_blocks_spec.rb
|
296
|
+
- spec/scss_lint/linter/hex_validation_spec.rb
|
297
|
+
- spec/scss_lint/linter/empty_rule_spec.rb
|
298
|
+
- spec/scss_lint/linter/variable_for_property_spec.rb
|
299
|
+
- spec/scss_lint/linter/duplicate_property_spec.rb
|
300
|
+
- spec/scss_lint/linter/property_spelling_spec.rb
|
325
301
|
- spec/scss_lint/linter/selector_format_spec.rb
|
326
|
-
- spec/scss_lint/linter/shorthand_spec.rb
|
327
|
-
- spec/scss_lint/linter/single_line_per_property_spec.rb
|
328
|
-
- spec/scss_lint/linter/single_line_per_selector_spec.rb
|
329
|
-
- spec/scss_lint/linter/space_after_comma_spec.rb
|
330
|
-
- spec/scss_lint/linter/space_after_comment_spec.rb
|
331
|
-
- spec/scss_lint/linter/space_after_property_colon_spec.rb
|
332
|
-
- spec/scss_lint/linter/space_after_property_name_spec.rb
|
333
|
-
- spec/scss_lint/linter/space_after_variable_colon_spec.rb
|
334
|
-
- spec/scss_lint/linter/space_after_variable_name_spec.rb
|
335
|
-
- spec/scss_lint/linter/space_around_operator_spec.rb
|
336
|
-
- spec/scss_lint/linter/space_before_brace_spec.rb
|
337
302
|
- spec/scss_lint/linter/space_between_parens_spec.rb
|
303
|
+
- spec/scss_lint/linter/space_after_variable_colon_spec.rb
|
304
|
+
- spec/scss_lint/linter/indentation_spec.rb
|
305
|
+
- spec/scss_lint/linter/placeholder_in_extend_spec.rb
|
306
|
+
- spec/scss_lint/linter/extend_directive_spec.rb
|
338
307
|
- spec/scss_lint/linter/string_quotes_spec.rb
|
339
|
-
- spec/scss_lint/linter/trailing_semicolon_spec.rb
|
340
|
-
- spec/scss_lint/linter/trailing_whitespace_spec.rb
|
341
308
|
- spec/scss_lint/linter/trailing_zero_spec.rb
|
309
|
+
- spec/scss_lint/linter/space_after_property_colon_spec.rb
|
310
|
+
- spec/scss_lint/linter/debug_statement_spec.rb
|
311
|
+
- spec/scss_lint/linter/property_count_spec.rb
|
312
|
+
- spec/scss_lint/linter/private_naming_convention_spec.rb
|
313
|
+
- spec/scss_lint/linter/color_variable_spec.rb
|
314
|
+
- spec/scss_lint/linter/property_sort_order_spec.rb
|
315
|
+
- spec/scss_lint/linter/space_before_brace_spec.rb
|
316
|
+
- spec/scss_lint/linter/mergeable_selector_spec.rb
|
317
|
+
- spec/scss_lint/linter/final_newline_spec.rb
|
318
|
+
- spec/scss_lint/linter/hex_notation_spec.rb
|
319
|
+
- spec/scss_lint/linter/compass/property_with_mixin_spec.rb
|
320
|
+
- spec/scss_lint/linter/space_after_variable_name_spec.rb
|
321
|
+
- spec/scss_lint/linter/hex_length_spec.rb
|
322
|
+
- spec/scss_lint/linter/shorthand_spec.rb
|
323
|
+
- spec/scss_lint/linter/selector_depth_spec.rb
|
324
|
+
- spec/scss_lint/linter/bem_depth_spec.rb
|
325
|
+
- spec/scss_lint/linter/nesting_depth_spec.rb
|
326
|
+
- spec/scss_lint/linter/name_format_spec.rb
|
327
|
+
- spec/scss_lint/linter/comment_spec.rb
|
342
328
|
- spec/scss_lint/linter/transition_all_spec.rb
|
343
|
-
- spec/scss_lint/linter/
|
329
|
+
- spec/scss_lint/linter/bang_format_spec.rb
|
330
|
+
- spec/scss_lint/linter/property_units_spec.rb
|
344
331
|
- spec/scss_lint/linter/unnecessary_parent_reference_spec.rb
|
345
|
-
- spec/scss_lint/linter/
|
346
|
-
- spec/scss_lint/linter/
|
347
|
-
- spec/scss_lint/
|
348
|
-
- spec/scss_lint/
|
349
|
-
- spec/scss_lint/
|
350
|
-
- spec/scss_lint/
|
351
|
-
- spec/scss_lint/
|
352
|
-
- spec/scss_lint/
|
353
|
-
- spec/scss_lint/
|
354
|
-
- spec/scss_lint/options_spec.rb
|
332
|
+
- spec/scss_lint/linter/disable_linter_reason_spec.rb
|
333
|
+
- spec/scss_lint/linter/color_keyword_spec.rb
|
334
|
+
- spec/scss_lint/reporter/stats_reporter_spec.rb
|
335
|
+
- spec/scss_lint/reporter/json_reporter_spec.rb
|
336
|
+
- spec/scss_lint/reporter/tap_reporter_spec.rb
|
337
|
+
- spec/scss_lint/reporter/files_reporter_spec.rb
|
338
|
+
- spec/scss_lint/reporter/config_reporter_spec.rb
|
339
|
+
- spec/scss_lint/reporter/default_reporter_spec.rb
|
340
|
+
- spec/scss_lint/reporter/clean_files_reporter_spec.rb
|
355
341
|
- spec/scss_lint/plugins/linter_dir_spec.rb
|
356
342
|
- spec/scss_lint/plugins/linter_gem_spec.rb
|
357
|
-
- spec/scss_lint/
|
343
|
+
- spec/scss_lint/options_spec.rb
|
344
|
+
- spec/scss_lint/file_finder_spec.rb
|
358
345
|
- spec/scss_lint/preprocess_spec.rb
|
359
|
-
- spec/scss_lint/
|
346
|
+
- spec/scss_lint/plugins_spec.rb
|
347
|
+
- spec/scss_lint/linter_registry_spec.rb
|
348
|
+
- spec/scss_lint/engine_spec.rb
|
349
|
+
- spec/scss_lint/location_spec.rb
|
360
350
|
- spec/scss_lint/report_lint_spec.rb
|
361
|
-
- spec/scss_lint/
|
362
|
-
- spec/scss_lint/
|
363
|
-
- spec/scss_lint/reporter/default_reporter_spec.rb
|
364
|
-
- spec/scss_lint/reporter/files_reporter_spec.rb
|
365
|
-
- spec/scss_lint/reporter/json_reporter_spec.rb
|
366
|
-
- spec/scss_lint/reporter/stats_reporter_spec.rb
|
367
|
-
- spec/scss_lint/reporter/tap_reporter_spec.rb
|
351
|
+
- spec/scss_lint/fixtures/plugins/linter_plugin.rb
|
352
|
+
- spec/scss_lint/linter_spec.rb
|
368
353
|
- spec/scss_lint/reporter_spec.rb
|
369
|
-
- spec/scss_lint/runner_spec.rb
|
370
354
|
- spec/scss_lint/selector_visitor_spec.rb
|
371
|
-
- spec/spec_helper.rb
|
372
355
|
- spec/support/isolated_environment.rb
|
373
356
|
- spec/support/matchers/report_lint.rb
|