scss_lint 0.42.1 → 0.42.2

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: 1f22ef7a1e5735cdd001ff93b7fe1dff595dc609
4
- data.tar.gz: 1af1a879ec132f70a04fc3b9cc794e0f8dd9a94b
3
+ metadata.gz: 5bb29e6e4cef4d98cce3e61248d11f2dde2315a1
4
+ data.tar.gz: 52c5cdfb7895f10c883188633a75c32b3e77267a
5
5
  SHA512:
6
- metadata.gz: 23cb255d2401258655eb94a88c41a7c639ec1d45bc3dae0a413e3fdd68fe2f7bc8d900066673a60c35e4a862c5e3499354328b1547f2a445b0abdbb6acfe8c00
7
- data.tar.gz: 0ccd62fd3f715cf3ce291e240e22be5bdbfb4ef5d483cf52c4339ff3baa0296cb625182d48abefbef557e37f2a13e7381cdb6f6e17aab591469cbd7865e9994b
6
+ metadata.gz: 5e68b7e8d5afa4970b42da268f4fb2085c2ee81ab5f4eb0d020a67b97af286ec629ccad33429d542723bf0dd851e9c8ae31a93c464d203609c0b0c4c26db7c5b
7
+ data.tar.gz: 5cc833524095ed48bd5a01e3aebd2a4919ec4c79149b7d0f7c006552bdeb5d6fd42512109fdb6994ee78b50461cb144c3a7283703726d99b71a5cca2d4b691f7
@@ -33,7 +33,7 @@ module SCSSLint
33
33
  end
34
34
 
35
35
  def visit_script_funcall(node)
36
- if color_function?(node) && all_arguments_are_literals?(node)
36
+ if literal_color_function?(node)
37
37
  record_lint node, node.to_sass
38
38
  else
39
39
  yield
@@ -63,6 +63,10 @@ module SCSSLint
63
63
  parent.node_parent.is_a?(Sass::Tree::VariableNode)
64
64
  end
65
65
 
66
+ def function_in_variable_declaration?(node)
67
+ node.node_parent.is_a?(Sass::Tree::VariableNode)
68
+ end
69
+
66
70
  def in_rgba_function_call?(node)
67
71
  grandparent = node_ancestor(node, 2)
68
72
 
@@ -83,5 +87,11 @@ module SCSSLint
83
87
  def color_function?(node)
84
88
  COLOR_FUNCTIONS.include?(node.name)
85
89
  end
90
+
91
+ def literal_color_function?(node)
92
+ color_function?(node) &&
93
+ all_arguments_are_literals?(node) &&
94
+ !function_in_variable_declaration?(node)
95
+ end
86
96
  end
87
97
  end
@@ -6,7 +6,7 @@ module SCSSLint
6
6
  def visit_script_string(node)
7
7
  return unless node.type == :identifier
8
8
 
9
- node.value.scan(/(#\h+)/) do |match|
9
+ node.value.scan(/(?:\W|^)(#\h+)(?:\W|$)/) do |match|
10
10
  check_hex(match.first, node)
11
11
  end
12
12
  end
@@ -21,24 +21,33 @@ module SCSSLint
21
21
  yield
22
22
  end
23
23
 
24
+ # Making a public version of #source_from_range, a private method.
24
25
  def source_fm_range(range)
25
26
  source_from_range(range)
26
27
  end
27
28
 
28
29
  private
29
30
 
30
- def check(node, operation_sources)
31
+ def check(node, operation_sources) # rubocop:disable Metrics/AbcSize, Metrics/CyclomaticComplexity, Metrics/PerceivedComplexity, Metrics/LineLength
31
32
  match = operation_sources.operator_source.match(/
32
33
  (?<left_space>\s*)
33
34
  (?<operator>\S+)
34
35
  (?<right_space>\s*)
35
36
  /x)
36
37
 
38
+ # We forgive spacing with newlines. In the case of a newline occurring on
39
+ # one side or another, we don't care about indentation, and the
40
+ # TrailingWhitespace linter will worry about trailing whitespace, so we
41
+ # just don't worry about space with a newline.
42
+ left_newline = match[:left_space].include?("\n")
43
+ right_newline = match[:right_space].include?("\n")
37
44
  if config['style'] == 'one_space'
38
- if match[:left_space] != ' ' || match[:right_space] != ' '
45
+ if (match[:left_space] != ' ' && !left_newline) ||
46
+ (match[:right_space] != ' ' && !right_newline)
39
47
  add_lint(node, operation_sources.space_msg(match[:operator]))
40
48
  end
41
- elsif match[:left_space] != '' || match[:right_space] != ''
49
+ elsif (match[:left_space] != '' && !left_newline) ||
50
+ (match[:right_space] != '' && !right_newline)
42
51
  add_lint(node, operation_sources.no_space_msg(match[:operator]))
43
52
  end
44
53
  end
@@ -1,4 +1,4 @@
1
1
  # Defines the gem version.
2
2
  module SCSSLint
3
- VERSION = '0.42.1'
3
+ VERSION = '0.42.2'
4
4
  end
@@ -9,6 +9,14 @@ describe SCSSLint::Linter::ColorVariable do
9
9
  it { should_not report_lint }
10
10
  end
11
11
 
12
+ context 'when a color function containing literals is used in a variable declaration' do
13
+ let(:scss) { <<-SCSS }
14
+ $my-color: rgba(0, 0, 0, 0.2);
15
+ SCSS
16
+
17
+ it { should_not report_lint }
18
+ end
19
+
12
20
  context 'when a color literal is used in a property' do
13
21
  let(:scss) { <<-SCSS }
14
22
  p {
@@ -37,4 +37,15 @@ describe SCSSLint::Linter::HexValidation do
37
37
  it { should report_lint line: 2 }
38
38
  it { should report_lint line: 3 }
39
39
  end
40
+
41
+ context 'when rule contains hex codes in a longer string' do
42
+ let(:scss) { <<-SCSS }
43
+ p {
44
+ content: 'foo#bad';
45
+ content: 'foo #ba';
46
+ }
47
+ SCSS
48
+
49
+ it { should report_lint line: 3 }
50
+ end
40
51
  end
@@ -60,18 +60,28 @@ describe SCSSLint::Linter::SpaceAroundOperator do
60
60
  it { should report_lint line: 10 }
61
61
  end
62
62
 
63
- context 'when numeric values with infix operators and newlines exist' do
63
+ context 'when infix operators and newlines exist' do
64
64
  let(:scss) { <<-SCSS }
65
65
  p {
66
66
  margin: 7px+
67
67
  7px;
68
+ }
69
+ SCSS
70
+
71
+ it { should report_lint line: 2 }
72
+ end
73
+
74
+ context 'when infix operators and newlines exist, but otherwise correct spacing' do
75
+ let(:scss) { <<-SCSS }
76
+ p {
77
+ margin: 7px +
78
+ 7px;
68
79
  padding: 9px
69
80
  + 9px;
70
81
  }
71
82
  SCSS
72
83
 
73
- it { should report_lint line: 2 }
74
- it { should report_lint line: 4 }
84
+ it { should_not report_lint }
75
85
  end
76
86
 
77
87
  context 'when numeric values with multiple infix operators exist' do
@@ -232,7 +242,7 @@ describe SCSSLint::Linter::SpaceAroundOperator do
232
242
  end
233
243
  end
234
244
 
235
- context 'when one space is preferred' do
245
+ context 'when no space is preferred' do
236
246
  let(:style) { 'no_space' }
237
247
 
238
248
  context 'when values with single-spaced infix operators exist' do
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.42.1
4
+ version: 0.42.2
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: 2015-09-25 00:00:00.000000000 Z
12
+ date: 2015-10-02 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rainbow