scss_lint 0.56.0 → 0.57.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: b39b3c7b31dc17e24974910dfff9637038a5b773
4
- data.tar.gz: ed9774687c334aa87bbc4586c03ad93570c5bba7
3
+ metadata.gz: 0d1f5b2c584f66d7148053a525c0323e872fa08a
4
+ data.tar.gz: 8abdb50bcfff6c9b23fe3b01dacb66d602f565d2
5
5
  SHA512:
6
- metadata.gz: eb91473219f23fd58ceb69363b5b1f081bbc7bd04baaea668f60666a2ac2bdcfabeb24c50aacdfad823b374b873a2008652343a1518d1a85c4db561ac6ac70a7
7
- data.tar.gz: a05b44b216ee1060a788ebbcf44dd5cd5184d02286b292d357cb18ef1d7cac36f6072e71d198bae06b7e52fb3055ae49fd344251c2764ae93f6061fb0c630856
6
+ metadata.gz: 30822ae6faef50aa2d253cb88c2c7afce9e0e45fcaba3a9a4d5e4d3edbdaa5618c9f2d997121a61c96a280330f9bfb51918f14da0c53bff36dc400373f8a2015
7
+ data.tar.gz: 26fefc161597ed2f735e3315475c2cf70b3c780b2593ad6294ddbcee0fcad9834c2cb4e53897a0884926ffe4f756660b2fc6b1d043c7bef076a25de20dfc6603
@@ -445,6 +445,7 @@ text-combine
445
445
  text-decoration
446
446
  text-decoration-color
447
447
  text-decoration-line
448
+ text-decoration-skip
448
449
  text-decoration-style
449
450
  text-decorations-in-effect
450
451
  text-emphasis
@@ -20,6 +20,31 @@ left
20
20
 
21
21
  box-sizing
22
22
 
23
+ grid
24
+ grid-after
25
+ grid-area
26
+ grid-auto-columns
27
+ grid-auto-flow
28
+ grid-auto-rows
29
+ grid-before
30
+ grid-column
31
+ grid-column-end
32
+ grid-column-gap
33
+ grid-column-start
34
+ grid-columns
35
+ grid-end
36
+ grid-gap
37
+ grid-row
38
+ grid-row-end
39
+ grid-row-gap
40
+ grid-row-start
41
+ grid-rows
42
+ grid-start
43
+ grid-template
44
+ grid-template-areas
45
+ grid-template-columns
46
+ grid-template-rows
47
+
23
48
  flex
24
49
  flex-basis
25
50
  flex-direction
@@ -47,6 +47,7 @@
47
47
  -webkit-calendar-picker-indicator
48
48
  -webkit-color-swatch
49
49
  -webkit-color-swatch-wrapper
50
+ -webkit-contacts-auto-fill-button
50
51
  -webkit-datetime-edit
51
52
  -webkit-datetime-edit-day-field
52
53
  -webkit-datetime-edit-fields-wrapper
@@ -55,11 +55,13 @@ module SCSSLint
55
55
  def in_variable_declaration?(node)
56
56
  parent = node.node_parent
57
57
  parent.is_a?(Sass::Script::Tree::Literal) &&
58
- parent.node_parent.is_a?(Sass::Tree::VariableNode)
58
+ (parent.node_parent.is_a?(Sass::Tree::VariableNode) ||
59
+ parent.node_parent.node_parent.is_a?(Sass::Tree::VariableNode))
59
60
  end
60
61
 
61
62
  def function_in_variable_declaration?(node)
62
- node.node_parent.is_a?(Sass::Tree::VariableNode)
63
+ node.node_parent.is_a?(Sass::Tree::VariableNode) ||
64
+ node.node_parent.node_parent.is_a?(Sass::Tree::VariableNode)
63
65
  end
64
66
 
65
67
  def in_rgba_function_call?(node)
@@ -24,7 +24,7 @@ module SCSSLint
24
24
 
25
25
  def visit_root(node)
26
26
  # Register all top-level function, mixin, and variable definitions.
27
- node.children.each_with_object([]) do |child_node|
27
+ node.children.each do |child_node|
28
28
  if DEFINITIONS.key?(child_node.class)
29
29
  register_node child_node
30
30
  end
@@ -97,7 +97,7 @@ module SCSSLint
97
97
  def node_defined_earlier_in_branch?(node_to_look_in, looking_for)
98
98
  # Look at all of the children of this node and return true if we find a
99
99
  # defining node that matches in name and type.
100
- node_to_look_in.children.each_with_object([]) do |child_node|
100
+ node_to_look_in.children.each do |child_node|
101
101
  break unless before?(child_node, looking_for[:location])
102
102
  next unless child_node.class == looking_for[:defined_by]
103
103
  next unless child_node.name == looking_for[:node].name
@@ -36,9 +36,7 @@ module SCSSLint
36
36
  alias visit_media check_order
37
37
  alias visit_mixin check_order
38
38
  alias visit_rule check_order
39
- alias visit_prop check_order
40
39
 
41
- # rubocop:disable Lint/DuplicateMethods (FALSE POSITIVE v0.50.0)
42
40
  def visit_prop(node, &block)
43
41
  # Handle nested properties by appending the parent property they are
44
42
  # nested under to the name
@@ -46,7 +44,6 @@ module SCSSLint
46
44
  check_order(node, &block)
47
45
  @nested_under = nil
48
46
  end
49
- # rubocop:enable Lint/DuplicateMethods
50
47
 
51
48
  def visit_if(node, &block)
52
49
  check_order(node, &block)
@@ -1,4 +1,3 @@
1
- # rubocop:disable Metrics/CyclomaticComplexity
2
1
  module SCSSLint
3
2
  # Checks for the use of the shortest form for properties that can be written
4
3
  # in shorthand.
@@ -119,7 +118,7 @@ module SCSSLint
119
118
  # @param bottom [String]
120
119
  # @param left [String]
121
120
  # @return [Boolean]
122
- def condense_to_one_value?(top, right, bottom, left)
121
+ def condense_to_one_value?(top, right, bottom, left) # rubocop:disable Metrics/CyclomaticComplexity
123
122
  return unless allowed?(1)
124
123
  return unless top == right
125
124
 
@@ -24,6 +24,8 @@ module SCSSLint
24
24
  check_for_at_least_one_space(node, whitespace)
25
25
  when 'one_space_or_newline'
26
26
  check_for_one_space_or_newline(node, whitespace)
27
+ when 'at_least_one_space_or_newline'
28
+ check_for_at_least_one_space_or_newline(node, whitespace)
27
29
  end
28
30
 
29
31
  yield # Continue linting children
@@ -52,6 +54,12 @@ module SCSSLint
52
54
  add_lint(node, 'Colon after property should be followed by one space or a newline')
53
55
  end
54
56
 
57
+ def check_for_at_least_one_space_or_newline(node, whitespace)
58
+ return if [[' '], ["\n"]].include?(whitespace.uniq)
59
+ return if whitespace[0] == "\n" && whitespace[1..-1].uniq == [' ']
60
+ add_lint(node, 'Colon after property should be followed by at least one space or newline')
61
+ end
62
+
55
63
  def check_properties_alignment(rule_node)
56
64
  properties = rule_node.children.select { |node| node.is_a?(Sass::Tree::PropNode) }
57
65
 
@@ -1,6 +1,4 @@
1
1
  module SCSSLint
2
- # rubocop:disable Metrics/AbcSize
3
-
4
2
  # Checks for the presence of spaces between parentheses.
5
3
  class Linter::SpaceBetweenParens < Linter
6
4
  include LinterRegistry
@@ -33,7 +31,7 @@ module SCSSLint
33
31
 
34
32
  TRAILING_WHITESPACE = /\s*$/
35
33
 
36
- def check(node, source) # rubocop:disable Metrics/MethodLength
34
+ def check(node, source) # rubocop:disable Metrics/AbcSize, Metrics/MethodLength
37
35
  @spaces = config['spaces']
38
36
  source = trim_right_paren(source)
39
37
  return if source.count('(') != source.count(')')
@@ -71,7 +69,7 @@ module SCSSLint
71
69
  # An expression enclosed in parens will include or not include each paren, depending
72
70
  # on whitespace. Here we feel out for enclosing parens, and return them as the new
73
71
  # source for the node.
74
- def feel_for_enclosing_parens(node) # rubocop:disable Metrics/CyclomaticComplexity
72
+ def feel_for_enclosing_parens(node) # rubocop:disable Metrics/AbcSize, Metrics/CyclomaticComplexity
75
73
  range = node.source_range
76
74
  original_source = source_from_range(range)
77
75
  left_offset = -1
@@ -3,7 +3,7 @@ module SCSSLint
3
3
  class Reporter::CleanFilesReporter < Reporter
4
4
  def report_lints
5
5
  dirty_files = lints.map(&:filename).uniq
6
- clean_files = files - dirty_files
6
+ clean_files = files.map { |e| e['path'] } - dirty_files
7
7
  clean_files.sort.join("\n") + "\n" if clean_files.any?
8
8
  end
9
9
  end
@@ -22,7 +22,7 @@ module Sass::Script
22
22
  types.each do |type|
23
23
  node_name = type.downcase
24
24
 
25
- eval <<-DECL
25
+ eval <<-DECL, binding, __FILE__, __LINE__ + 1
26
26
  class #{namespace}::#{type}
27
27
  def self.node_name
28
28
  :script_#{node_name}
@@ -76,3 +76,5 @@ module Sass::Script
76
76
  end
77
77
  end
78
78
  end
79
+
80
+ # rubocop:enable Documentation
@@ -165,4 +165,6 @@ module Sass::Tree
165
165
  self.class == other.class && imported_filename == other.imported_filename && super
166
166
  end
167
167
  end
168
+
169
+ # rubocop:enable Documentation
168
170
  end
@@ -2,5 +2,5 @@
2
2
 
3
3
  # Defines the gem version.
4
4
  module SCSSLint
5
- VERSION = '0.56.0'.freeze
5
+ VERSION = '0.57.0'.freeze
6
6
  end
@@ -4,6 +4,7 @@ describe SCSSLint::Linter::ColorVariable do
4
4
  context 'when a color literal is used in a variable declaration' do
5
5
  let(:scss) { <<-SCSS }
6
6
  $my-color: #f00;
7
+ $my-shadow: 2px 2px 2px #f00;
7
8
  SCSS
8
9
 
9
10
  it { should_not report_lint }
@@ -12,6 +13,7 @@ describe SCSSLint::Linter::ColorVariable do
12
13
  context 'when a color function containing literals is used in a variable declaration' do
13
14
  let(:scss) { <<-SCSS }
14
15
  $my-color: rgba(0, 0, 0, 0.2);
16
+ $my-shadow: 2px 2px 2px rgba(0, 0, 0, 0.2);
15
17
  SCSS
16
18
 
17
19
  it { should_not report_lint }
@@ -266,6 +266,16 @@ describe SCSSLint::Linter::SpaceAfterPropertyColon do
266
266
  it { should_not report_lint }
267
267
  end
268
268
 
269
+ context 'when the colon after a property is followed by multiple spaces' do
270
+ let(:scss) { <<-SCSS }
271
+ p {
272
+ margin: bold;
273
+ }
274
+ SCSS
275
+
276
+ it { should report_lint line: 2 }
277
+ end
278
+
269
279
  context 'when the colon after a property is followed by a newline and spaces' do
270
280
  let(:scss) { <<-SCSS }
271
281
  p {
@@ -300,6 +310,93 @@ url(https://something.crazy.long/with/paths?and=queries)
300
310
  end
301
311
  end
302
312
 
313
+ context 'when at least one space or newline is preferred' do
314
+ let(:style) { 'at_least_one_space_or_newline' }
315
+
316
+ context 'when the colon after a property is not followed by space' do
317
+ let(:scss) { <<-SCSS }
318
+ p {
319
+ margin:0;
320
+ }
321
+ SCSS
322
+
323
+ it { should report_lint line: 2 }
324
+ end
325
+
326
+ context 'when the colon after a property is followed by a space' do
327
+ let(:scss) { <<-SCSS }
328
+ p {
329
+ margin: 0;
330
+ }
331
+ SCSS
332
+
333
+ it { should_not report_lint }
334
+ end
335
+
336
+ context 'when the colon after a property is surrounded by spaces' do
337
+ let(:scss) { <<-SCSS }
338
+ p {
339
+ margin : bold;
340
+ }
341
+ SCSS
342
+
343
+ it { should_not report_lint }
344
+ end
345
+
346
+ context 'when the colon after a property is followed by multiple spaces' do
347
+ let(:scss) { <<-SCSS }
348
+ p {
349
+ margin: bold;
350
+ }
351
+ SCSS
352
+
353
+ it { should_not report_lint }
354
+ end
355
+
356
+ context 'when the colon after a property is followed by multiple spaces and a tab' do
357
+ let(:scss) { <<-SCSS }
358
+ p {
359
+ margin: \tbold;
360
+ }
361
+ SCSS
362
+
363
+ it { should report_lint line: 2 }
364
+ end
365
+
366
+ context 'when the colon after a property is followed by a newline and spaces' do
367
+ let(:scss) { <<-SCSS }
368
+ p {
369
+ background-image:
370
+ url(https://something.crazy.long/with/paths?and=queries)
371
+ }
372
+ SCSS
373
+
374
+ it { should_not report_lint }
375
+ end
376
+
377
+ context 'when the colon after a property is followed by a newline and no spaces' do
378
+ let(:scss) { <<-SCSS }
379
+ p {
380
+ background-image:
381
+ url(https://something.crazy.long/with/paths?and=queries)
382
+ }
383
+ SCSS
384
+
385
+ it { should_not report_lint }
386
+ end
387
+
388
+ context 'when the colon after a property is followed by a space and then a newline' do
389
+ let(:scss) { <<-SCSS }
390
+ p {
391
+ background-image:\s
392
+ url(https://something.crazy.long/with/paths?and=queries)
393
+ }
394
+ SCSS
395
+
396
+ it { should report_lint line: 2 }
397
+ end
398
+ end
399
+
303
400
  context 'when aligned property values are preferred' do
304
401
  let(:style) { 'aligned' }
305
402
 
@@ -14,7 +14,7 @@ describe SCSSLint::Reporter::CleanFilesReporter do
14
14
  end
15
15
 
16
16
  context 'when there are no lints but some files were linted' do
17
- let(:files) { %w[c.scss b.scss a.scss] }
17
+ let(:files) { [{ 'path' => 'c.scss' }, { 'path' => 'b.scss' }, { 'path' => 'a.scss' }] }
18
18
  let(:lints) { [] }
19
19
 
20
20
  it 'prints each file on its own line' do
@@ -33,25 +33,25 @@ describe SCSSLint::Reporter::CleanFilesReporter do
33
33
  end
34
34
 
35
35
  context 'when there are lints in some files' do
36
- let(:dirty_files) { %w[a.scss b.scss] }
37
- let(:clean_files) { %w[c.scss d.scss] }
36
+ let(:dirty_files) { [{ 'path' => 'a.scss' }, { 'path' => 'b.scss' }] }
37
+ let(:clean_files) { [{ 'path' => 'c.scss' }, { 'path' => 'd.scss' }] }
38
38
  let(:files) { dirty_files + clean_files }
39
39
 
40
40
  let(:lints) do
41
41
  dirty_files.map do |file|
42
- SCSSLint::Lint.new(SCSSLint::Linter::Comment.new, file, SCSSLint::Location.new, '')
42
+ SCSSLint::Lint.new(SCSSLint::Linter::Comment.new, file['path'], SCSSLint::Location.new, '')
43
43
  end
44
44
  end
45
45
 
46
46
  it 'prints the file for each lint' do
47
47
  clean_files.each do |file|
48
- subject.report_lints.scan(file).count.should == 1
48
+ subject.report_lints.scan(file['path']).count.should == 1
49
49
  end
50
50
  end
51
51
 
52
52
  it 'does not print clean files' do
53
53
  dirty_files.each do |file|
54
- subject.report_lints.scan(file).count.should == 0
54
+ subject.report_lints.scan(file['path']).count.should == 0
55
55
  end
56
56
  end
57
57
  end
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.56.0
4
+ version: 0.57.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brigade Engineering
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2017-11-05 00:00:00.000000000 Z
12
+ date: 2018-02-26 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rake
@@ -37,14 +37,14 @@ dependencies:
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: 3.5.3
40
+ version: 3.5.5
41
41
  type: :runtime
42
42
  prerelease: false
43
43
  version_requirements: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: 3.5.3
47
+ version: 3.5.5
48
48
  description: Configurable tool for writing clean and consistent SCSS
49
49
  email:
50
50
  - eng@brigade.com
@@ -266,7 +266,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
266
266
  requirements:
267
267
  - - ">="
268
268
  - !ruby/object:Gem::Version
269
- version: '2'
269
+ version: '2.1'
270
270
  required_rubygems_version: !ruby/object:Gem::Requirement
271
271
  requirements:
272
272
  - - ">="
@@ -274,7 +274,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
274
274
  version: '0'
275
275
  requirements: []
276
276
  rubyforge_project:
277
- rubygems_version: 2.6.13
277
+ rubygems_version: 2.5.2
278
278
  signing_key:
279
279
  specification_version: 4
280
280
  summary: SCSS lint tool