sass 3.4.22 → 3.4.24

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (46) hide show
  1. checksums.yaml +4 -4
  2. data/.yardopts +1 -1
  3. data/CONTRIBUTING.md +23 -0
  4. data/README.md +8 -8
  5. data/Rakefile +2 -10
  6. data/VERSION +1 -1
  7. data/VERSION_DATE +1 -1
  8. data/extra/sass-spec-ref.sh +32 -0
  9. data/lib/sass/cache_stores/filesystem.rb +1 -1
  10. data/lib/sass/engine.rb +3 -3
  11. data/lib/sass/error.rb +3 -3
  12. data/lib/sass/exec/base.rb +1 -1
  13. data/lib/sass/logger/base.rb +8 -2
  14. data/lib/sass/logger/delayed.rb +50 -0
  15. data/lib/sass/logger.rb +8 -3
  16. data/lib/sass/plugin/rack.rb +1 -1
  17. data/lib/sass/plugin/staleness_checker.rb +2 -2
  18. data/lib/sass/script/functions.rb +10 -7
  19. data/lib/sass/script/lexer.rb +5 -5
  20. data/lib/sass/script/parser.rb +17 -11
  21. data/lib/sass/script/tree/node.rb +1 -1
  22. data/lib/sass/script/value/base.rb +2 -2
  23. data/lib/sass/script/value/color.rb +10 -10
  24. data/lib/sass/script/value/number.rb +11 -9
  25. data/lib/sass/script.rb +2 -2
  26. data/lib/sass/scss/parser.rb +26 -8
  27. data/lib/sass/scss/rx.rb +1 -1
  28. data/lib/sass/selector/abstract_sequence.rb +5 -5
  29. data/lib/sass/selector/sequence.rb +2 -2
  30. data/lib/sass/selector/simple.rb +4 -4
  31. data/lib/sass/shared.rb +1 -1
  32. data/lib/sass/source/map.rb +5 -3
  33. data/lib/sass/source/position.rb +4 -4
  34. data/lib/sass/tree/comment_node.rb +1 -1
  35. data/lib/sass/tree/node.rb +1 -1
  36. data/lib/sass/tree/prop_node.rb +1 -1
  37. data/lib/sass/tree/rule_node.rb +1 -1
  38. data/lib/sass/tree/visitors/convert.rb +3 -1
  39. data/lib/sass/tree/visitors/to_css.rb +1 -1
  40. data/lib/sass/util.rb +33 -8
  41. data/lib/sass/version.rb +2 -2
  42. data/test/sass/conversion_test.rb +17 -0
  43. data/test/sass/extend_test.rb +38 -18
  44. data/test/sass/script_test.rb +3 -3
  45. data/test/sass/scss/scss_test.rb +33 -0
  46. metadata +28 -26
@@ -167,42 +167,52 @@ SCSS
167
167
  end
168
168
 
169
169
  def test_universal_unification_with_namespaceless_universal_target
170
+ assert_extend_doesnt_match('ns|*', '.foo', :failed_to_unify, 2) do
171
+ render_unification '*.foo', 'ns|* {@extend .foo}'
172
+ end
173
+
170
174
  assert_unification '*.foo', '* {@extend .foo}', '*'
171
175
  assert_unification '*.foo', '*|* {@extend .foo}', '*'
172
176
  assert_unification '*|*.foo', '* {@extend .foo}', '*|*.foo, *'
173
177
  assert_unification '*|*.foo', '*|* {@extend .foo}', '*|*'
174
- assert_unification '*.foo', 'ns|* {@extend .foo}', '*.foo, ns|*'
175
178
  assert_unification '*|*.foo', 'ns|* {@extend .foo}', '*|*.foo, ns|*'
176
179
  end
177
180
 
178
181
  def test_universal_unification_with_namespaced_universal_target
179
- assert_unification 'ns|*.foo', '* {@extend .foo}', 'ns|*'
180
- assert_unification 'ns|*.foo', '*|* {@extend .foo}', 'ns|*'
182
+ assert_extend_doesnt_match('*', '.foo', :failed_to_unify, 2) do
183
+ render_unification 'ns|*.foo', '* {@extend .foo}'
184
+ end
181
185
 
182
186
  assert_extend_doesnt_match('ns2|*', '.foo', :failed_to_unify, 2) do
183
187
  render_unification 'ns1|*.foo', 'ns2|* {@extend .foo}'
184
188
  end
185
189
 
190
+ assert_unification 'ns|*.foo', '*|* {@extend .foo}', 'ns|*'
186
191
  assert_unification 'ns|*.foo', 'ns|* {@extend .foo}', 'ns|*'
187
192
  end
188
193
 
189
194
  def test_universal_unification_with_namespaceless_element_target
195
+ assert_extend_doesnt_match('ns|*', '.foo', :failed_to_unify, 2) do
196
+ render_unification 'a.foo', 'ns|* {@extend .foo}'
197
+ end
198
+
190
199
  assert_unification 'a.foo', '* {@extend .foo}', 'a'
191
200
  assert_unification 'a.foo', '*|* {@extend .foo}', 'a'
192
201
  assert_unification '*|a.foo', '* {@extend .foo}', '*|a.foo, a'
193
202
  assert_unification '*|a.foo', '*|* {@extend .foo}', '*|a'
194
- assert_unification 'a.foo', 'ns|* {@extend .foo}', 'a.foo, ns|a'
195
203
  assert_unification '*|a.foo', 'ns|* {@extend .foo}', '*|a.foo, ns|a'
196
204
  end
197
205
 
198
206
  def test_universal_unification_with_namespaced_element_target
199
- assert_unification 'ns|a.foo', '* {@extend .foo}', 'ns|a'
200
- assert_unification 'ns|a.foo', '*|* {@extend .foo}', 'ns|a'
207
+ assert_extend_doesnt_match('*', '.foo', :failed_to_unify, 2) do
208
+ render_unification 'ns|a.foo', '* {@extend .foo}'
209
+ end
201
210
 
202
211
  assert_extend_doesnt_match('ns2|*', '.foo', :failed_to_unify, 2) do
203
212
  render_unification 'ns1|a.foo', 'ns2|* {@extend .foo}'
204
213
  end
205
214
 
215
+ assert_unification 'ns|a.foo', '*|* {@extend .foo}', 'ns|a'
206
216
  assert_unification 'ns|a.foo', 'ns|* {@extend .foo}', 'ns|a'
207
217
  end
208
218
 
@@ -214,46 +224,56 @@ SCSS
214
224
  end
215
225
 
216
226
  def test_element_unification_with_namespaceless_universal_target
227
+ assert_extend_doesnt_match('ns|a', '.foo', :failed_to_unify, 2) do
228
+ render_unification '*.foo', 'ns|a {@extend .foo}'
229
+ end
230
+
217
231
  assert_unification '*.foo', 'a {@extend .foo}', '*.foo, a'
218
232
  assert_unification '*.foo', '*|a {@extend .foo}', '*.foo, a'
219
233
  assert_unification '*|*.foo', 'a {@extend .foo}', '*|*.foo, a'
220
234
  assert_unification '*|*.foo', '*|a {@extend .foo}', '*|*.foo, *|a'
221
- assert_unification '*.foo', 'ns|a {@extend .foo}', '*.foo, ns|a'
222
235
  assert_unification '*|*.foo', 'ns|a {@extend .foo}', '*|*.foo, ns|a'
223
236
  end
224
237
 
225
238
  def test_element_unification_with_namespaced_universal_target
226
- assert_unification 'ns|*.foo', 'a {@extend .foo}', 'ns|*.foo, ns|a'
227
- assert_unification 'ns|*.foo', '*|a {@extend .foo}', 'ns|*.foo, ns|a'
239
+ assert_extend_doesnt_match('a', '.foo', :failed_to_unify, 2) do
240
+ render_unification 'ns|*.foo', 'a {@extend .foo}'
241
+ end
228
242
 
229
243
  assert_extend_doesnt_match('ns2|a', '.foo', :failed_to_unify, 2) do
230
244
  render_unification 'ns1|*.foo', 'ns2|a {@extend .foo}'
231
245
  end
232
246
 
247
+ assert_unification 'ns|*.foo', '*|a {@extend .foo}', 'ns|*.foo, ns|a'
233
248
  assert_unification 'ns|*.foo', 'ns|a {@extend .foo}', 'ns|*.foo, ns|a'
234
249
  end
235
250
 
236
251
  def test_element_unification_with_namespaceless_element_target
252
+ assert_extend_doesnt_match('ns|a', '.foo', :failed_to_unify, 2) do
253
+ render_unification 'a.foo', 'ns|a {@extend .foo}'
254
+ end
255
+
256
+ assert_extend_doesnt_match('h1', '.foo', :failed_to_unify, 2) do
257
+ render_unification 'a.foo', 'h1 {@extend .foo}'
258
+ end
259
+
237
260
  assert_unification 'a.foo', 'a {@extend .foo}', 'a'
238
261
  assert_unification 'a.foo', '*|a {@extend .foo}', 'a'
239
262
  assert_unification '*|a.foo', 'a {@extend .foo}', '*|a.foo, a'
240
263
  assert_unification '*|a.foo', '*|a {@extend .foo}', '*|a'
241
- assert_unification 'a.foo', 'ns|a {@extend .foo}', 'a.foo, ns|a'
242
264
  assert_unification '*|a.foo', 'ns|a {@extend .foo}', '*|a.foo, ns|a'
243
-
244
- assert_extend_doesnt_match('h1', '.foo', :failed_to_unify, 2) do
245
- render_unification 'a.foo', 'h1 {@extend .foo}'
246
- end
247
265
  end
248
266
 
249
267
  def test_element_unification_with_namespaced_element_target
250
- assert_unification 'ns|a.foo', 'a {@extend .foo}', 'ns|a'
251
- assert_unification 'ns|a.foo', '*|a {@extend .foo}', 'ns|a'
268
+ assert_extend_doesnt_match('a', '.foo', :failed_to_unify, 2) do
269
+ render_unification 'ns|a.foo', 'a {@extend .foo}'
270
+ end
252
271
 
253
272
  assert_extend_doesnt_match('ns2|a', '.foo', :failed_to_unify, 2) do
254
273
  render_unification 'ns1|a.foo', 'ns2|a {@extend .foo}'
255
274
  end
256
275
 
276
+ assert_unification 'ns|a.foo', '*|a {@extend .foo}', 'ns|a'
257
277
  assert_unification 'ns|a.foo', 'ns|a {@extend .foo}', 'ns|a'
258
278
  end
259
279
 
@@ -567,7 +587,7 @@ SCSS
567
587
  end
568
588
 
569
589
  def test_long_extendee_runs_unification
570
- assert_extends 'ns|*.foo.bar', 'a.baz {@extend .foo.bar}', 'ns|*.foo.bar, ns|a.baz'
590
+ assert_extends 'ns|*.foo.bar', '*|a.baz {@extend .foo.bar}', 'ns|*.foo.bar, ns|a.baz'
571
591
  end
572
592
 
573
593
  ## Long Extenders
@@ -577,7 +597,7 @@ SCSS
577
597
  end
578
598
 
579
599
  def test_long_extender_runs_unification
580
- assert_extends 'ns|*.foo.bar', 'a.baz {@extend .foo}', 'ns|*.foo.bar, ns|a.bar.baz'
600
+ assert_extends 'ns|*.foo.bar', '*|a.baz {@extend .foo}', 'ns|*.foo.bar, ns|a.bar.baz'
581
601
  end
582
602
 
583
603
  def test_long_extender_aborts_unification
@@ -558,9 +558,9 @@ WARNING
558
558
  end
559
559
 
560
560
  def test_resolution_units
561
- assert_equal "2.54", resolve("(1dpi/1dpcm)")
562
- assert_equal "37.79528", resolve("(1dpcm/1dppx)")
563
- assert_equal "0.01042", resolve("(1dppx/1dpi)")
561
+ assert_equal "0.3937", resolve("(1dpi/1dpcm)")
562
+ assert_equal "0.02646", resolve("(1dpcm/1dppx)")
563
+ assert_equal "96", resolve("(1dppx/1dpi)")
564
564
  end
565
565
 
566
566
  def test_operations_have_options
@@ -3649,6 +3649,39 @@ SCSS
3649
3649
 
3650
3650
  # Regression
3651
3651
 
3652
+ # Regression test for #2031.
3653
+ def test_no_interpolation_warning_in_nested_selector
3654
+ assert_no_warning {assert_equal(<<CSS, render(<<SCSS))}
3655
+ z a:b(n+1) {
3656
+ x: y; }
3657
+ CSS
3658
+ z {
3659
+ a:b(n+\#{1}) {
3660
+ x: y;
3661
+ }
3662
+ }
3663
+ SCSS
3664
+ end
3665
+
3666
+ # Ensures that the fix for #2031 doesn't hide legitimate warnings.
3667
+ def test_interpolation_warning_in_selector_like_property
3668
+ assert_warning(<<WARNING) {assert_equal(<<CSS, render(<<SCSS))}
3669
+ DEPRECATION WARNING on line 2 of #{filename_for_test :scss}: \#{} interpolation near operators will be simplified
3670
+ in a future version of Sass. To preserve the current behavior, use quotes:
3671
+
3672
+ unquote("n+1")
3673
+
3674
+ You can use the sass-convert command to automatically fix most cases.
3675
+ WARNING
3676
+ z {
3677
+ a: b(n+1); }
3678
+ CSS
3679
+ z {
3680
+ a:b(n+\#{1});
3681
+ }
3682
+ SCSS
3683
+ end
3684
+
3652
3685
  def test_escape_in_selector
3653
3686
  assert_equal(<<CSS, render(".\\!foo {a: b}"))
3654
3687
  .\\!foo {
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sass
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.4.22
4
+ version: 3.4.24
5
5
  platform: ruby
6
6
  authors:
7
7
  - Natalie Weizenbaum
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2016-03-28 00:00:00.000000000 Z
13
+ date: 2017-05-19 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: yard
@@ -18,28 +18,28 @@ dependencies:
18
18
  requirements:
19
19
  - - ">="
20
20
  - !ruby/object:Gem::Version
21
- version: 0.5.3
21
+ version: 0.9.8
22
22
  type: :development
23
23
  prerelease: false
24
24
  version_requirements: !ruby/object:Gem::Requirement
25
25
  requirements:
26
26
  - - ">="
27
27
  - !ruby/object:Gem::Version
28
- version: 0.5.3
28
+ version: 0.9.8
29
29
  - !ruby/object:Gem::Dependency
30
- name: maruku
30
+ name: redcarpet
31
31
  requirement: !ruby/object:Gem::Requirement
32
32
  requirements:
33
- - - ">="
33
+ - - "~>"
34
34
  - !ruby/object:Gem::Version
35
- version: 0.5.9
35
+ version: 2.3.0
36
36
  type: :development
37
37
  prerelease: false
38
38
  version_requirements: !ruby/object:Gem::Requirement
39
39
  requirements:
40
- - - ">="
40
+ - - "~>"
41
41
  - !ruby/object:Gem::Version
42
- version: 0.5.9
42
+ version: 2.3.0
43
43
  - !ruby/object:Gem::Dependency
44
44
  name: minitest
45
45
  requirement: !ruby/object:Gem::Requirement
@@ -80,6 +80,7 @@ files:
80
80
  - bin/sass
81
81
  - bin/sass-convert
82
82
  - bin/scss
83
+ - extra/sass-spec-ref.sh
83
84
  - extra/update_watch.rb
84
85
  - init.rb
85
86
  - lib/sass.rb
@@ -105,6 +106,7 @@ files:
105
106
  - lib/sass/importers/filesystem.rb
106
107
  - lib/sass/logger.rb
107
108
  - lib/sass/logger/base.rb
109
+ - lib/sass/logger/delayed.rb
108
110
  - lib/sass/logger/log_level.rb
109
111
  - lib/sass/media.rb
110
112
  - lib/sass/plugin.rb
@@ -394,34 +396,34 @@ required_rubygems_version: !ruby/object:Gem::Requirement
394
396
  version: '0'
395
397
  requirements: []
396
398
  rubyforge_project: sass
397
- rubygems_version: 2.5.1
399
+ rubygems_version: 2.6.11
398
400
  signing_key:
399
401
  specification_version: 4
400
402
  summary: A powerful but elegant CSS compiler that makes CSS fun again.
401
403
  test_files:
402
- - test/sass/cache_test.rb
403
- - test/sass/callbacks_test.rb
404
- - test/sass/compiler_test.rb
405
- - test/sass/conversion_test.rb
406
- - test/sass/css2sass_test.rb
407
- - test/sass/css_variable_test.rb
404
+ - test/sass/plugin_test.rb
408
405
  - test/sass/encoding_test.rb
409
- - test/sass/engine_test.rb
410
- - test/sass/exec_test.rb
411
- - test/sass/extend_test.rb
412
- - test/sass/functions_test.rb
413
406
  - test/sass/importer_test.rb
414
- - test/sass/logger_test.rb
415
- - test/sass/plugin_test.rb
416
- - test/sass/script_conversion_test.rb
417
- - test/sass/script_test.rb
407
+ - test/sass/callbacks_test.rb
418
408
  - test/sass/scss/css_test.rb
419
409
  - test/sass/scss/rx_test.rb
420
410
  - test/sass/scss/scss_test.rb
421
- - test/sass/source_map_test.rb
422
- - test/sass/superselector_test.rb
423
411
  - test/sass/util/multibyte_string_scanner_test.rb
424
412
  - test/sass/util/normalized_map_test.rb
425
413
  - test/sass/util/subset_map_test.rb
414
+ - test/sass/functions_test.rb
426
415
  - test/sass/util_test.rb
416
+ - test/sass/cache_test.rb
417
+ - test/sass/exec_test.rb
427
418
  - test/sass/value_helpers_test.rb
419
+ - test/sass/conversion_test.rb
420
+ - test/sass/script_test.rb
421
+ - test/sass/logger_test.rb
422
+ - test/sass/compiler_test.rb
423
+ - test/sass/engine_test.rb
424
+ - test/sass/css2sass_test.rb
425
+ - test/sass/superselector_test.rb
426
+ - test/sass/script_conversion_test.rb
427
+ - test/sass/css_variable_test.rb
428
+ - test/sass/source_map_test.rb
429
+ - test/sass/extend_test.rb