sass 3.3.0 → 3.4.25
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.yardopts +3 -1
- data/CODE_OF_CONDUCT.md +10 -0
- data/CONTRIBUTING.md +148 -0
- data/MIT-LICENSE +1 -1
- data/README.md +76 -62
- data/Rakefile +104 -24
- data/VERSION +1 -1
- data/VERSION_DATE +1 -1
- data/VERSION_NAME +1 -1
- data/bin/sass +1 -1
- data/bin/scss +1 -1
- data/extra/sass-spec-ref.sh +32 -0
- data/extra/update_watch.rb +1 -1
- data/lib/sass/cache_stores/filesystem.rb +9 -5
- data/lib/sass/cache_stores/memory.rb +4 -5
- data/lib/sass/callbacks.rb +2 -2
- data/lib/sass/css.rb +12 -13
- data/lib/sass/deprecation.rb +55 -0
- data/lib/sass/engine.rb +106 -70
- data/lib/sass/environment.rb +39 -19
- data/lib/sass/error.rb +17 -20
- data/lib/sass/exec/base.rb +199 -0
- data/lib/sass/exec/sass_convert.rb +283 -0
- data/lib/sass/exec/sass_scss.rb +440 -0
- data/lib/sass/exec.rb +5 -771
- data/lib/sass/features.rb +9 -2
- data/lib/sass/importers/base.rb +8 -3
- data/lib/sass/importers/filesystem.rb +30 -38
- data/lib/sass/logger/base.rb +8 -2
- data/lib/sass/logger/delayed.rb +50 -0
- data/lib/sass/logger.rb +8 -3
- data/lib/sass/media.rb +1 -4
- data/lib/sass/plugin/compiler.rb +224 -90
- data/lib/sass/plugin/configuration.rb +38 -22
- data/lib/sass/plugin/merb.rb +2 -2
- data/lib/sass/plugin/rack.rb +3 -3
- data/lib/sass/plugin/rails.rb +1 -1
- data/lib/sass/plugin/staleness_checker.rb +4 -4
- data/lib/sass/plugin.rb +6 -5
- data/lib/sass/script/css_lexer.rb +1 -1
- data/lib/sass/script/css_parser.rb +2 -3
- data/lib/sass/script/css_variable_warning.rb +52 -0
- data/lib/sass/script/functions.rb +739 -318
- data/lib/sass/script/lexer.rb +134 -54
- data/lib/sass/script/parser.rb +252 -56
- data/lib/sass/script/tree/funcall.rb +13 -6
- data/lib/sass/script/tree/interpolation.rb +127 -4
- data/lib/sass/script/tree/list_literal.rb +31 -4
- data/lib/sass/script/tree/literal.rb +4 -0
- data/lib/sass/script/tree/node.rb +21 -3
- data/lib/sass/script/tree/operation.rb +54 -1
- data/lib/sass/script/tree/selector.rb +26 -0
- data/lib/sass/script/tree/string_interpolation.rb +59 -38
- data/lib/sass/script/tree/variable.rb +1 -1
- data/lib/sass/script/tree.rb +1 -0
- data/lib/sass/script/value/base.rb +17 -14
- data/lib/sass/script/value/bool.rb +0 -5
- data/lib/sass/script/value/color.rb +78 -42
- data/lib/sass/script/value/helpers.rb +119 -2
- data/lib/sass/script/value/list.rb +0 -15
- data/lib/sass/script/value/map.rb +1 -1
- data/lib/sass/script/value/null.rb +0 -5
- data/lib/sass/script/value/number.rb +112 -31
- data/lib/sass/script/value/string.rb +102 -13
- data/lib/sass/script/value.rb +0 -1
- data/lib/sass/script.rb +3 -3
- data/lib/sass/scss/css_parser.rb +24 -4
- data/lib/sass/scss/parser.rb +290 -383
- data/lib/sass/scss/rx.rb +17 -9
- data/lib/sass/scss/static_parser.rb +306 -4
- data/lib/sass/scss.rb +0 -2
- data/lib/sass/selector/abstract_sequence.rb +35 -18
- data/lib/sass/selector/comma_sequence.rb +114 -19
- data/lib/sass/selector/pseudo.rb +266 -0
- data/lib/sass/selector/sequence.rb +146 -40
- data/lib/sass/selector/simple.rb +22 -33
- data/lib/sass/selector/simple_sequence.rb +122 -39
- data/lib/sass/selector.rb +57 -197
- data/lib/sass/shared.rb +2 -2
- data/lib/sass/source/map.rb +31 -14
- data/lib/sass/source/position.rb +4 -4
- data/lib/sass/stack.rb +2 -8
- data/lib/sass/supports.rb +10 -13
- data/lib/sass/tree/at_root_node.rb +1 -0
- data/lib/sass/tree/charset_node.rb +1 -1
- data/lib/sass/tree/comment_node.rb +1 -1
- data/lib/sass/tree/css_import_node.rb +9 -1
- data/lib/sass/tree/directive_node.rb +8 -2
- data/lib/sass/tree/error_node.rb +18 -0
- data/lib/sass/tree/extend_node.rb +1 -1
- data/lib/sass/tree/function_node.rb +9 -0
- data/lib/sass/tree/import_node.rb +6 -5
- data/lib/sass/tree/keyframe_rule_node.rb +15 -0
- data/lib/sass/tree/node.rb +5 -3
- data/lib/sass/tree/prop_node.rb +6 -7
- data/lib/sass/tree/rule_node.rb +26 -11
- data/lib/sass/tree/visitors/check_nesting.rb +56 -32
- data/lib/sass/tree/visitors/convert.rb +59 -44
- data/lib/sass/tree/visitors/cssize.rb +34 -30
- data/lib/sass/tree/visitors/deep_copy.rb +6 -1
- data/lib/sass/tree/visitors/extend.rb +15 -13
- data/lib/sass/tree/visitors/perform.rb +87 -50
- data/lib/sass/tree/visitors/set_options.rb +15 -1
- data/lib/sass/tree/visitors/to_css.rb +72 -43
- data/lib/sass/util/multibyte_string_scanner.rb +0 -2
- data/lib/sass/util/normalized_map.rb +0 -1
- data/lib/sass/util/subset_map.rb +2 -3
- data/lib/sass/util.rb +334 -154
- data/lib/sass/version.rb +7 -7
- data/lib/sass.rb +10 -8
- data/test/sass/cache_test.rb +62 -20
- data/test/sass/callbacks_test.rb +1 -1
- data/test/sass/compiler_test.rb +24 -11
- data/test/sass/conversion_test.rb +241 -50
- data/test/sass/css2sass_test.rb +73 -5
- data/test/sass/css_variable_test.rb +132 -0
- data/test/sass/encoding_test.rb +219 -0
- data/test/sass/engine_test.rb +343 -260
- data/test/sass/exec_test.rb +12 -2
- data/test/sass/extend_test.rb +333 -44
- data/test/sass/functions_test.rb +353 -260
- data/test/sass/importer_test.rb +40 -21
- data/test/sass/logger_test.rb +1 -1
- data/test/sass/more_results/more_import.css +1 -1
- data/test/sass/more_templates/more1.sass +10 -10
- data/test/sass/more_templates/more_import.sass +2 -2
- data/test/sass/plugin_test.rb +24 -21
- data/test/sass/results/compact.css +1 -1
- data/test/sass/results/complex.css +4 -4
- data/test/sass/results/expanded.css +1 -1
- data/test/sass/results/import.css +1 -1
- data/test/sass/results/import_charset_ibm866.css +2 -2
- data/test/sass/results/mixins.css +17 -17
- data/test/sass/results/nested.css +1 -1
- data/test/sass/results/parent_ref.css +2 -2
- data/test/sass/results/script.css +5 -5
- data/test/sass/results/scss_import.css +1 -1
- data/test/sass/script_conversion_test.rb +71 -39
- data/test/sass/script_test.rb +714 -123
- data/test/sass/scss/css_test.rb +213 -30
- data/test/sass/scss/rx_test.rb +8 -4
- data/test/sass/scss/scss_test.rb +766 -22
- data/test/sass/source_map_test.rb +263 -95
- data/test/sass/superselector_test.rb +210 -0
- data/test/sass/templates/_partial.sass +1 -1
- data/test/sass/templates/basic.sass +10 -10
- data/test/sass/templates/bork1.sass +1 -1
- data/test/sass/templates/bork5.sass +1 -1
- data/test/sass/templates/compact.sass +10 -10
- data/test/sass/templates/complex.sass +187 -187
- data/test/sass/templates/compressed.sass +10 -10
- data/test/sass/templates/expanded.sass +10 -10
- data/test/sass/templates/import.sass +2 -2
- data/test/sass/templates/importee.sass +3 -3
- data/test/sass/templates/mixins.sass +22 -22
- data/test/sass/templates/multiline.sass +4 -4
- data/test/sass/templates/nested.sass +13 -13
- data/test/sass/templates/parent_ref.sass +12 -12
- data/test/sass/templates/script.sass +70 -70
- data/test/sass/templates/scss_import.scss +2 -1
- data/test/sass/templates/subdir/nested_subdir/_nested_partial.sass +1 -1
- data/test/sass/templates/subdir/nested_subdir/nested_subdir.sass +2 -2
- data/test/sass/templates/subdir/subdir.sass +3 -3
- data/test/sass/templates/units.sass +10 -10
- data/test/sass/test_helper.rb +1 -1
- data/test/sass/util/multibyte_string_scanner_test.rb +11 -3
- data/test/sass/util/normalized_map_test.rb +1 -1
- data/test/sass/util/subset_map_test.rb +2 -2
- data/test/sass/util_test.rb +46 -45
- data/test/sass/value_helpers_test.rb +5 -7
- data/test/sass-spec.yml +3 -0
- data/test/test_helper.rb +7 -6
- data/vendor/listen/CHANGELOG.md +1 -228
- data/vendor/listen/Gemfile +5 -15
- data/vendor/listen/README.md +111 -77
- data/vendor/listen/Rakefile +0 -42
- data/vendor/listen/lib/listen/adapter.rb +195 -82
- data/vendor/listen/lib/listen/adapters/bsd.rb +27 -64
- data/vendor/listen/lib/listen/adapters/darwin.rb +21 -58
- data/vendor/listen/lib/listen/adapters/linux.rb +23 -55
- data/vendor/listen/lib/listen/adapters/polling.rb +25 -34
- data/vendor/listen/lib/listen/adapters/windows.rb +50 -46
- data/vendor/listen/lib/listen/directory_record.rb +96 -61
- data/vendor/listen/lib/listen/listener.rb +135 -37
- data/vendor/listen/lib/listen/turnstile.rb +9 -5
- data/vendor/listen/lib/listen/version.rb +1 -1
- data/vendor/listen/lib/listen.rb +33 -19
- data/vendor/listen/listen.gemspec +6 -0
- data/vendor/listen/spec/listen/adapter_spec.rb +43 -77
- data/vendor/listen/spec/listen/adapters/polling_spec.rb +8 -8
- data/vendor/listen/spec/listen/directory_record_spec.rb +81 -56
- data/vendor/listen/spec/listen/listener_spec.rb +128 -39
- data/vendor/listen/spec/listen_spec.rb +15 -21
- data/vendor/listen/spec/spec_helper.rb +4 -0
- data/vendor/listen/spec/support/adapter_helper.rb +52 -15
- data/vendor/listen/spec/support/directory_record_helper.rb +7 -5
- data/vendor/listen/spec/support/listeners_helper.rb +30 -7
- metadata +310 -300
- data/CONTRIBUTING +0 -3
- data/ext/mkrf_conf.rb +0 -27
- data/lib/sass/script/value/deprecated_false.rb +0 -55
- data/lib/sass/scss/script_lexer.rb +0 -15
- data/lib/sass/scss/script_parser.rb +0 -25
- data/vendor/listen/lib/listen/dependency_manager.rb +0 -126
- data/vendor/listen/lib/listen/multi_listener.rb +0 -143
- data/vendor/listen/spec/listen/dependency_manager_spec.rb +0 -107
- data/vendor/listen/spec/listen/multi_listener_spec.rb +0 -174
@@ -1,7 +1,7 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
require File.dirname(__FILE__) + '/../test_helper'
|
3
3
|
|
4
|
-
class ConversionTest < Test
|
4
|
+
class ConversionTest < MiniTest::Test
|
5
5
|
def test_basic
|
6
6
|
assert_renders <<SASS, <<SCSS
|
7
7
|
foo bar
|
@@ -13,7 +13,7 @@ foo bar {
|
|
13
13
|
bip: bop;
|
14
14
|
}
|
15
15
|
SCSS
|
16
|
-
assert_renders <<SASS, <<SCSS, :old => true
|
16
|
+
silence_warnings {assert_renders <<SASS, <<SCSS, :old => true}
|
17
17
|
foo bar
|
18
18
|
:baz bang
|
19
19
|
:bip bop
|
@@ -30,8 +30,7 @@ SCSS
|
|
30
30
|
end
|
31
31
|
|
32
32
|
def test_empty_directive
|
33
|
-
|
34
|
-
assert_scss_to_scss "@media screen {}"
|
33
|
+
assert_renders "@media screen", "@media screen {}"
|
35
34
|
end
|
36
35
|
|
37
36
|
def test_empty_control_directive
|
@@ -44,6 +43,7 @@ foo bar
|
|
44
43
|
baz bang
|
45
44
|
baz: bang
|
46
45
|
bip: bop
|
46
|
+
|
47
47
|
blat: boo
|
48
48
|
SASS
|
49
49
|
foo bar {
|
@@ -51,6 +51,7 @@ foo bar {
|
|
51
51
|
baz: bang;
|
52
52
|
bip: bop;
|
53
53
|
}
|
54
|
+
|
54
55
|
blat: boo;
|
55
56
|
}
|
56
57
|
SCSS
|
@@ -182,7 +183,7 @@ SCSS
|
|
182
183
|
end
|
183
184
|
|
184
185
|
def test_dynamic_properties_with_old
|
185
|
-
assert_renders <<SASS, <<SCSS, :old => true
|
186
|
+
silence_warnings {assert_renders <<SASS, <<SCSS, :old => true}
|
186
187
|
foo bar
|
187
188
|
:baz 12 $bang "bip"
|
188
189
|
SASS
|
@@ -287,41 +288,45 @@ foo bar {
|
|
287
288
|
}
|
288
289
|
SCSS
|
289
290
|
|
290
|
-
|
291
|
+
assert_renders <<SASS, <<SCSS
|
291
292
|
// foo
|
292
293
|
// bar
|
293
294
|
// baz
|
294
295
|
// bang
|
295
296
|
|
296
|
-
foo bar
|
297
|
-
a: b
|
298
|
-
|
299
|
-
SCSS
|
297
|
+
foo bar
|
298
|
+
a: b
|
299
|
+
SASS
|
300
300
|
// foo
|
301
301
|
// bar
|
302
302
|
// baz
|
303
303
|
// bang
|
304
304
|
|
305
|
-
foo bar
|
306
|
-
a: b
|
307
|
-
|
305
|
+
foo bar {
|
306
|
+
a: b;
|
307
|
+
}
|
308
|
+
SCSS
|
308
309
|
end
|
309
310
|
|
310
311
|
def test_nested_silent_comments
|
311
312
|
assert_renders <<SASS, <<SCSS
|
312
313
|
foo
|
313
314
|
bar: baz
|
315
|
+
|
314
316
|
// bip bop
|
315
317
|
// beep boop
|
316
318
|
bang: bizz
|
319
|
+
|
317
320
|
// bubble bubble
|
318
321
|
// toil trouble
|
319
322
|
SASS
|
320
323
|
foo {
|
321
324
|
bar: baz;
|
325
|
+
|
322
326
|
// bip bop
|
323
327
|
// beep boop
|
324
328
|
bang: bizz;
|
329
|
+
|
325
330
|
// bubble bubble
|
326
331
|
// toil trouble
|
327
332
|
}
|
@@ -330,10 +335,12 @@ SCSS
|
|
330
335
|
assert_sass_to_scss <<SCSS, <<SASS
|
331
336
|
foo {
|
332
337
|
bar: baz;
|
338
|
+
|
333
339
|
// bip bop
|
334
340
|
// beep boop
|
335
341
|
// bap blimp
|
336
342
|
bang: bizz;
|
343
|
+
|
337
344
|
// bubble bubble
|
338
345
|
// toil trouble
|
339
346
|
// gorp
|
@@ -341,16 +348,35 @@ foo {
|
|
341
348
|
SCSS
|
342
349
|
foo
|
343
350
|
bar: baz
|
351
|
+
|
344
352
|
// bip bop
|
345
353
|
beep boop
|
346
354
|
bap blimp
|
347
355
|
bang: bizz
|
356
|
+
|
348
357
|
// bubble bubble
|
349
358
|
toil trouble
|
350
359
|
gorp
|
351
360
|
SASS
|
352
361
|
end
|
353
362
|
|
363
|
+
def test_preserves_triple_slash_comments
|
364
|
+
assert_renders <<SASS, <<SCSS
|
365
|
+
/// foo
|
366
|
+
/// bar
|
367
|
+
foo
|
368
|
+
/// bip bop
|
369
|
+
/// beep boop
|
370
|
+
SASS
|
371
|
+
/// foo
|
372
|
+
/// bar
|
373
|
+
foo {
|
374
|
+
/// bip bop
|
375
|
+
/// beep boop
|
376
|
+
}
|
377
|
+
SCSS
|
378
|
+
end
|
379
|
+
|
354
380
|
def test_loud_comments
|
355
381
|
assert_renders <<SASS, <<SCSS
|
356
382
|
/* foo
|
@@ -427,17 +453,21 @@ SCSS
|
|
427
453
|
assert_renders <<SASS, <<SCSS
|
428
454
|
foo
|
429
455
|
bar: baz
|
456
|
+
|
430
457
|
/* bip bop
|
431
458
|
* beep boop
|
432
459
|
bang: bizz
|
460
|
+
|
433
461
|
/* bubble bubble
|
434
462
|
* toil trouble
|
435
463
|
SASS
|
436
464
|
foo {
|
437
465
|
bar: baz;
|
466
|
+
|
438
467
|
/* bip bop
|
439
468
|
* beep boop */
|
440
469
|
bang: bizz;
|
470
|
+
|
441
471
|
/* bubble bubble
|
442
472
|
* toil trouble */
|
443
473
|
}
|
@@ -446,10 +476,12 @@ SCSS
|
|
446
476
|
assert_sass_to_scss <<SCSS, <<SASS
|
447
477
|
foo {
|
448
478
|
bar: baz;
|
479
|
+
|
449
480
|
/* bip bop
|
450
481
|
* beep boop
|
451
482
|
* bap blimp */
|
452
483
|
bang: bizz;
|
484
|
+
|
453
485
|
/* bubble bubble
|
454
486
|
* toil trouble
|
455
487
|
* gorp */
|
@@ -457,16 +489,35 @@ foo {
|
|
457
489
|
SCSS
|
458
490
|
foo
|
459
491
|
bar: baz
|
492
|
+
|
460
493
|
/* bip bop
|
461
494
|
beep boop
|
462
495
|
bap blimp
|
463
496
|
bang: bizz
|
497
|
+
|
464
498
|
/* bubble bubble
|
465
499
|
toil trouble
|
466
500
|
gorp
|
467
501
|
SASS
|
468
502
|
end
|
469
503
|
|
504
|
+
def test_preserves_double_star_comments
|
505
|
+
assert_renders <<SASS, <<SCSS
|
506
|
+
/** foo
|
507
|
+
* bar
|
508
|
+
foo
|
509
|
+
/** bip bop
|
510
|
+
* beep boop
|
511
|
+
SASS
|
512
|
+
/** foo
|
513
|
+
* bar */
|
514
|
+
foo {
|
515
|
+
/** bip bop
|
516
|
+
* beep boop */
|
517
|
+
}
|
518
|
+
SCSS
|
519
|
+
end
|
520
|
+
|
470
521
|
def test_loud_comments_with_weird_indentation
|
471
522
|
assert_scss_to_sass <<SASS, <<SCSS
|
472
523
|
foo
|
@@ -580,10 +631,27 @@ SASS
|
|
580
631
|
assert_renders <<SASS, <<SCSS
|
581
632
|
foo
|
582
633
|
@debug 12px
|
634
|
+
|
583
635
|
bar: baz
|
584
636
|
SASS
|
585
637
|
foo {
|
586
638
|
@debug 12px;
|
639
|
+
|
640
|
+
bar: baz;
|
641
|
+
}
|
642
|
+
SCSS
|
643
|
+
end
|
644
|
+
|
645
|
+
def test_error
|
646
|
+
assert_renders <<SASS, <<SCSS
|
647
|
+
foo
|
648
|
+
@error "oh no!"
|
649
|
+
|
650
|
+
bar: baz
|
651
|
+
SASS
|
652
|
+
foo {
|
653
|
+
@error "oh no!";
|
654
|
+
|
587
655
|
bar: baz;
|
588
656
|
}
|
589
657
|
SCSS
|
@@ -593,10 +661,12 @@ SCSS
|
|
593
661
|
assert_renders <<SASS, <<SCSS
|
594
662
|
foo
|
595
663
|
@foo #bar "baz"
|
664
|
+
|
596
665
|
bar: baz
|
597
666
|
SASS
|
598
667
|
foo {
|
599
668
|
@foo #bar "baz";
|
669
|
+
|
600
670
|
bar: baz;
|
601
671
|
}
|
602
672
|
SCSS
|
@@ -628,6 +698,7 @@ foo
|
|
628
698
|
@foo #bar "baz"
|
629
699
|
#blat
|
630
700
|
a: b
|
701
|
+
|
631
702
|
.bang
|
632
703
|
c: d
|
633
704
|
e: f
|
@@ -639,6 +710,7 @@ foo {
|
|
639
710
|
#blat {
|
640
711
|
a: b;
|
641
712
|
}
|
713
|
+
|
642
714
|
.bang {
|
643
715
|
c: d;
|
644
716
|
e: f;
|
@@ -655,11 +727,14 @@ SCSS
|
|
655
727
|
foo
|
656
728
|
@foo #bar "baz"
|
657
729
|
g: h
|
730
|
+
|
658
731
|
#blat
|
659
732
|
a: b
|
733
|
+
|
660
734
|
.bang
|
661
735
|
c: d
|
662
736
|
e: f
|
737
|
+
|
663
738
|
i: j
|
664
739
|
|
665
740
|
bar: baz
|
@@ -667,13 +742,16 @@ SASS
|
|
667
742
|
foo {
|
668
743
|
@foo #bar "baz" {
|
669
744
|
g: h;
|
745
|
+
|
670
746
|
#blat {
|
671
747
|
a: b;
|
672
748
|
}
|
749
|
+
|
673
750
|
.bang {
|
674
751
|
c: d;
|
675
752
|
e: f;
|
676
753
|
}
|
754
|
+
|
677
755
|
i: j;
|
678
756
|
}
|
679
757
|
|
@@ -695,6 +773,7 @@ SCSS
|
|
695
773
|
foo
|
696
774
|
@for $a from $b to $c
|
697
775
|
a: b
|
776
|
+
|
698
777
|
@for $c from 1 to 16
|
699
778
|
d: e
|
700
779
|
f: g
|
@@ -703,6 +782,7 @@ foo {
|
|
703
782
|
@for $a from $b to $c {
|
704
783
|
a: b;
|
705
784
|
}
|
785
|
+
|
706
786
|
@for $c from 1 to 16 {
|
707
787
|
d: e;
|
708
788
|
f: g;
|
@@ -716,6 +796,7 @@ SCSS
|
|
716
796
|
foo
|
717
797
|
@while flaz($a + $b)
|
718
798
|
a: b
|
799
|
+
|
719
800
|
@while 1
|
720
801
|
d: e
|
721
802
|
f: g
|
@@ -724,6 +805,7 @@ foo {
|
|
724
805
|
@while flaz($a + $b) {
|
725
806
|
a: b;
|
726
807
|
}
|
808
|
+
|
727
809
|
@while 1 {
|
728
810
|
d: e;
|
729
811
|
f: g;
|
@@ -737,6 +819,7 @@ SCSS
|
|
737
819
|
foo
|
738
820
|
@if $foo or $bar
|
739
821
|
a: b
|
822
|
+
|
740
823
|
@if $baz
|
741
824
|
d: e
|
742
825
|
@else if $bang
|
@@ -748,6 +831,7 @@ foo {
|
|
748
831
|
@if $foo or $bar {
|
749
832
|
a: b;
|
750
833
|
}
|
834
|
+
|
751
835
|
@if $baz {
|
752
836
|
d: e;
|
753
837
|
}
|
@@ -893,10 +977,12 @@ SCSS
|
|
893
977
|
assert_renders <<SASS, <<SCSS
|
894
978
|
.foo
|
895
979
|
@extend .bar
|
980
|
+
|
896
981
|
@extend .baz:bang
|
897
982
|
SASS
|
898
983
|
.foo {
|
899
984
|
@extend .bar;
|
985
|
+
|
900
986
|
@extend .baz:bang;
|
901
987
|
}
|
902
988
|
SCSS
|
@@ -995,10 +1081,12 @@ SASS
|
|
995
1081
|
assert_renders <<SASS, <<SCSS
|
996
1082
|
foo
|
997
1083
|
+foo-bar
|
1084
|
+
|
998
1085
|
a: blip
|
999
1086
|
SASS
|
1000
1087
|
foo {
|
1001
1088
|
@include foo-bar;
|
1089
|
+
|
1002
1090
|
a: blip;
|
1003
1091
|
}
|
1004
1092
|
SCSS
|
@@ -1008,10 +1096,12 @@ SCSS
|
|
1008
1096
|
assert_renders <<SASS, <<SCSS
|
1009
1097
|
foo
|
1010
1098
|
+foo-bar(12px, "blaz")
|
1099
|
+
|
1011
1100
|
a: blip
|
1012
1101
|
SASS
|
1013
1102
|
foo {
|
1014
1103
|
@include foo-bar(12px, "blaz");
|
1104
|
+
|
1015
1105
|
a: blip;
|
1016
1106
|
}
|
1017
1107
|
SCSS
|
@@ -1021,12 +1111,33 @@ SCSS
|
|
1021
1111
|
assert_renders <<SASS, <<SCSS
|
1022
1112
|
foo
|
1023
1113
|
+foo-bar(12px, "blaz", $blip: blap, $bloop: blop)
|
1114
|
+
|
1024
1115
|
+foo-bar($blip: blap, $bloop: blop)
|
1116
|
+
|
1025
1117
|
a: blip
|
1026
1118
|
SASS
|
1027
1119
|
foo {
|
1028
1120
|
@include foo-bar(12px, "blaz", $blip: blap, $bloop: blop);
|
1121
|
+
|
1029
1122
|
@include foo-bar($blip: blap, $bloop: blop);
|
1123
|
+
|
1124
|
+
a: blip;
|
1125
|
+
}
|
1126
|
+
SCSS
|
1127
|
+
end
|
1128
|
+
|
1129
|
+
def test_consecutive_mixin_includes
|
1130
|
+
assert_renders <<SASS, <<SCSS
|
1131
|
+
foo
|
1132
|
+
+foo-bar
|
1133
|
+
+foo-bar
|
1134
|
+
|
1135
|
+
a: blip
|
1136
|
+
SASS
|
1137
|
+
foo {
|
1138
|
+
@include foo-bar;
|
1139
|
+
@include foo-bar;
|
1140
|
+
|
1030
1141
|
a: blip;
|
1031
1142
|
}
|
1032
1143
|
SCSS
|
@@ -1036,10 +1147,12 @@ SCSS
|
|
1036
1147
|
assert_renders <<SASS, <<SCSS
|
1037
1148
|
foo
|
1038
1149
|
+foo-bar($a-b_c: val)
|
1150
|
+
|
1039
1151
|
a: blip
|
1040
1152
|
SASS
|
1041
1153
|
foo {
|
1042
1154
|
@include foo-bar($a-b_c: val);
|
1155
|
+
|
1043
1156
|
a: blip;
|
1044
1157
|
}
|
1045
1158
|
SCSS
|
@@ -1049,10 +1162,12 @@ SCSS
|
|
1049
1162
|
assert_renders <<SASS, <<SCSS
|
1050
1163
|
@function foo()
|
1051
1164
|
$var: 1 + 1
|
1165
|
+
|
1052
1166
|
@return $var
|
1053
1167
|
SASS
|
1054
1168
|
@function foo() {
|
1055
1169
|
$var: 1 + 1;
|
1170
|
+
|
1056
1171
|
@return $var;
|
1057
1172
|
}
|
1058
1173
|
SCSS
|
@@ -1092,12 +1207,14 @@ $var1: 12px + 15px
|
|
1092
1207
|
|
1093
1208
|
foo
|
1094
1209
|
$var2: flaz(#abcdef)
|
1210
|
+
|
1095
1211
|
val: $var1 $var2
|
1096
1212
|
SASS
|
1097
1213
|
$var1: 12px + 15px;
|
1098
1214
|
|
1099
1215
|
foo {
|
1100
1216
|
$var2: flaz(#abcdef);
|
1217
|
+
|
1101
1218
|
val: $var1 $var2;
|
1102
1219
|
}
|
1103
1220
|
SCSS
|
@@ -1109,12 +1226,14 @@ $var1: 12px + 15px !default
|
|
1109
1226
|
|
1110
1227
|
foo
|
1111
1228
|
$var2: flaz(#abcdef) !default
|
1229
|
+
|
1112
1230
|
val: $var1 $var2
|
1113
1231
|
SASS
|
1114
1232
|
$var1: 12px + 15px !default;
|
1115
1233
|
|
1116
1234
|
foo {
|
1117
1235
|
$var2: flaz(#abcdef) !default;
|
1236
|
+
|
1118
1237
|
val: $var1 $var2;
|
1119
1238
|
}
|
1120
1239
|
SCSS
|
@@ -1194,6 +1313,16 @@ SASS
|
|
1194
1313
|
foo {
|
1195
1314
|
a: 1px / 2px;
|
1196
1315
|
}
|
1316
|
+
SCSS
|
1317
|
+
|
1318
|
+
# Regression test for issue 1787
|
1319
|
+
assert_renders <<SASS, <<SCSS
|
1320
|
+
foo
|
1321
|
+
a: 1px / 2px 3px
|
1322
|
+
SASS
|
1323
|
+
foo {
|
1324
|
+
a: 1px / 2px 3px;
|
1325
|
+
}
|
1197
1326
|
SCSS
|
1198
1327
|
end
|
1199
1328
|
|
@@ -1228,26 +1357,7 @@ SCSS
|
|
1228
1357
|
end
|
1229
1358
|
|
1230
1359
|
def test_media_with_expressions
|
1231
|
-
|
1232
|
-
$media1: screen;
|
1233
|
-
$media2: print;
|
1234
|
-
$var: -webkit-min-device-pixel-ratio;
|
1235
|
-
$val: 20;
|
1236
|
-
|
1237
|
-
@media \#{$media1} and ($var + "-foo": $val + 5), only \#{$media2} {
|
1238
|
-
a: b;
|
1239
|
-
}
|
1240
|
-
SCSS
|
1241
|
-
$media1: screen
|
1242
|
-
$media2: print
|
1243
|
-
$var: -webkit-min-device-pixel-ratio
|
1244
|
-
$val: 20
|
1245
|
-
|
1246
|
-
@media \#{$media1} and ($var + "-foo": $val + 5), only \#{$media2}
|
1247
|
-
a: b
|
1248
|
-
SASS
|
1249
|
-
|
1250
|
-
assert_scss_to_sass <<SASS, <<SCSS
|
1360
|
+
assert_renders <<SASS, <<SCSS
|
1251
1361
|
$media1: screen
|
1252
1362
|
$media2: print
|
1253
1363
|
$var: -webkit-min-device-pixel-ratio
|
@@ -1267,13 +1377,24 @@ $val: 20;
|
|
1267
1377
|
SCSS
|
1268
1378
|
end
|
1269
1379
|
|
1380
|
+
def test_media_with_feature
|
1381
|
+
assert_renders <<SASS, <<SCSS
|
1382
|
+
@media screen and (-webkit-transform-3d)
|
1383
|
+
a: b
|
1384
|
+
SASS
|
1385
|
+
@media screen and (-webkit-transform-3d) {
|
1386
|
+
a: b;
|
1387
|
+
}
|
1388
|
+
SCSS
|
1389
|
+
end
|
1390
|
+
|
1270
1391
|
def test_supports_with_expressions
|
1271
1392
|
assert_renders <<SASS, <<SCSS
|
1272
1393
|
$query: "(feature1: val)"
|
1273
1394
|
$feature: feature2
|
1274
1395
|
$val: val
|
1275
1396
|
|
1276
|
-
@supports \#{$query} and ($feature: $val) or (not ($feature + 3: $val + 4))
|
1397
|
+
@supports (\#{$query} and ($feature: $val)) or (not ($feature + 3: $val + 4))
|
1277
1398
|
foo
|
1278
1399
|
a: b
|
1279
1400
|
SASS
|
@@ -1281,7 +1402,7 @@ $query: "(feature1: val)";
|
|
1281
1402
|
$feature: feature2;
|
1282
1403
|
$val: val;
|
1283
1404
|
|
1284
|
-
@supports \#{$query} and ($feature: $val) or (not ($feature + 3: $val + 4)) {
|
1405
|
+
@supports (\#{$query} and ($feature: $val)) or (not ($feature + 3: $val + 4)) {
|
1285
1406
|
foo {
|
1286
1407
|
a: b;
|
1287
1408
|
}
|
@@ -1315,7 +1436,7 @@ SCSS
|
|
1315
1436
|
end
|
1316
1437
|
|
1317
1438
|
def test_old_declaration_hacks
|
1318
|
-
assert_renders <<SASS, <<SCSS, :old => true
|
1439
|
+
silence_warnings {assert_renders <<SASS, <<SCSS, :old => true}
|
1319
1440
|
foo
|
1320
1441
|
:_name val
|
1321
1442
|
:*name val
|
@@ -1390,7 +1511,9 @@ SCSS
|
|
1390
1511
|
|
1391
1512
|
div {
|
1392
1513
|
foo: under-scored-fn($under-scored-var + "before\#{$another-under-scored-var}after");
|
1514
|
+
|
1393
1515
|
@include under-scored-mixin($passed-arg);
|
1516
|
+
|
1394
1517
|
selector-\#{$under-scored-interp}: bold;
|
1395
1518
|
}
|
1396
1519
|
|
@@ -1430,7 +1553,9 @@ $color: blue
|
|
1430
1553
|
=context($class, $color: red)
|
1431
1554
|
.\#{$class}
|
1432
1555
|
background-color: $color
|
1556
|
+
|
1433
1557
|
@content
|
1558
|
+
|
1434
1559
|
border-color: $color
|
1435
1560
|
|
1436
1561
|
+context(parent)
|
@@ -1442,7 +1567,9 @@ $color: blue;
|
|
1442
1567
|
@mixin context($class, $color: red) {
|
1443
1568
|
.\#{$class} {
|
1444
1569
|
background-color: $color;
|
1570
|
+
|
1445
1571
|
@content;
|
1572
|
+
|
1446
1573
|
border-color: $color;
|
1447
1574
|
}
|
1448
1575
|
}
|
@@ -1527,6 +1654,7 @@ foo bar
|
|
1527
1654
|
baz bang
|
1528
1655
|
baz: bang
|
1529
1656
|
bip: bop
|
1657
|
+
|
1530
1658
|
blat: boo
|
1531
1659
|
SASS
|
1532
1660
|
foo bar {
|
@@ -1534,6 +1662,7 @@ foo bar {
|
|
1534
1662
|
baz: bang;
|
1535
1663
|
bip: bop;
|
1536
1664
|
}
|
1665
|
+
|
1537
1666
|
blat: boo;
|
1538
1667
|
}
|
1539
1668
|
SCSS
|
@@ -1543,6 +1672,7 @@ foo bar
|
|
1543
1672
|
baz bang
|
1544
1673
|
baz: bang
|
1545
1674
|
bip: bop
|
1675
|
+
|
1546
1676
|
blat: boo
|
1547
1677
|
SASS
|
1548
1678
|
foo bar {
|
@@ -1550,6 +1680,7 @@ foo bar {
|
|
1550
1680
|
baz: bang;
|
1551
1681
|
bip: bop;
|
1552
1682
|
}
|
1683
|
+
|
1553
1684
|
blat: boo;
|
1554
1685
|
}
|
1555
1686
|
SCSS
|
@@ -1560,6 +1691,7 @@ foo bar {
|
|
1560
1691
|
baz: bang;
|
1561
1692
|
bip: bop;
|
1562
1693
|
}
|
1694
|
+
|
1563
1695
|
blat: boo;
|
1564
1696
|
}
|
1565
1697
|
SCSS
|
@@ -1567,6 +1699,7 @@ foo bar
|
|
1567
1699
|
baz bang
|
1568
1700
|
baz: bang
|
1569
1701
|
bip: bop
|
1702
|
+
|
1570
1703
|
blat: boo
|
1571
1704
|
SASS
|
1572
1705
|
|
@@ -1576,6 +1709,7 @@ foo bar {
|
|
1576
1709
|
baz: bang;
|
1577
1710
|
bip: bop;
|
1578
1711
|
}
|
1712
|
+
|
1579
1713
|
blat: boo;
|
1580
1714
|
}
|
1581
1715
|
SCSS
|
@@ -1583,6 +1717,7 @@ foo bar
|
|
1583
1717
|
baz bang
|
1584
1718
|
baz: bang
|
1585
1719
|
bip: bop
|
1720
|
+
|
1586
1721
|
blat: boo
|
1587
1722
|
SASS
|
1588
1723
|
|
@@ -1591,6 +1726,7 @@ foo bar
|
|
1591
1726
|
baz bang
|
1592
1727
|
baz: bang
|
1593
1728
|
bip: bop
|
1729
|
+
|
1594
1730
|
blat: boo
|
1595
1731
|
SASS
|
1596
1732
|
foo bar {
|
@@ -1598,6 +1734,7 @@ foo bar {
|
|
1598
1734
|
baz: bang;
|
1599
1735
|
bip: bop;
|
1600
1736
|
}
|
1737
|
+
|
1601
1738
|
blat: boo;
|
1602
1739
|
}
|
1603
1740
|
SCSS
|
@@ -1607,6 +1744,7 @@ foo bar
|
|
1607
1744
|
baz bang
|
1608
1745
|
baz: bang
|
1609
1746
|
bip: bop
|
1747
|
+
|
1610
1748
|
blat: boo
|
1611
1749
|
SASS
|
1612
1750
|
foo bar {
|
@@ -1614,13 +1752,14 @@ foo bar {
|
|
1614
1752
|
baz: bang;
|
1615
1753
|
bip: bop;
|
1616
1754
|
}
|
1755
|
+
|
1617
1756
|
blat: boo;
|
1618
1757
|
}
|
1619
1758
|
SCSS
|
1620
1759
|
end
|
1621
1760
|
|
1622
1761
|
def test_extend_with_optional
|
1623
|
-
|
1762
|
+
assert_renders <<SASS, <<SCSS
|
1624
1763
|
foo
|
1625
1764
|
@extend .bar !optional
|
1626
1765
|
SASS
|
@@ -1631,7 +1770,7 @@ SCSS
|
|
1631
1770
|
end
|
1632
1771
|
|
1633
1772
|
def test_mixin_var_args
|
1634
|
-
|
1773
|
+
assert_renders <<SASS, <<SCSS
|
1635
1774
|
=foo($args...)
|
1636
1775
|
a: b
|
1637
1776
|
|
@@ -1640,6 +1779,7 @@ SCSS
|
|
1640
1779
|
|
1641
1780
|
.foo
|
1642
1781
|
+foo($list...)
|
1782
|
+
|
1643
1783
|
+bar(1, $list...)
|
1644
1784
|
SASS
|
1645
1785
|
@mixin foo($args...) {
|
@@ -1652,19 +1792,21 @@ SASS
|
|
1652
1792
|
|
1653
1793
|
.foo {
|
1654
1794
|
@include foo($list...);
|
1795
|
+
|
1655
1796
|
@include bar(1, $list...);
|
1656
1797
|
}
|
1657
1798
|
SCSS
|
1658
1799
|
end
|
1659
1800
|
|
1660
1801
|
def test_mixin_var_kwargs
|
1661
|
-
|
1802
|
+
assert_renders <<SASS, <<SCSS
|
1662
1803
|
=foo($a: b, $c: d)
|
1663
1804
|
a: $a
|
1664
1805
|
c: $c
|
1665
1806
|
|
1666
1807
|
.foo
|
1667
1808
|
+foo($list..., $map...)
|
1809
|
+
|
1668
1810
|
+foo(pos, $list..., $kwd: val, $map...)
|
1669
1811
|
SASS
|
1670
1812
|
@mixin foo($a: b, $c: d) {
|
@@ -1674,13 +1816,14 @@ SASS
|
|
1674
1816
|
|
1675
1817
|
.foo {
|
1676
1818
|
@include foo($list..., $map...);
|
1819
|
+
|
1677
1820
|
@include foo(pos, $list..., $kwd: val, $map...);
|
1678
1821
|
}
|
1679
1822
|
SCSS
|
1680
1823
|
end
|
1681
1824
|
|
1682
1825
|
def test_function_var_args
|
1683
|
-
|
1826
|
+
assert_renders <<SASS, <<SCSS
|
1684
1827
|
@function foo($args...)
|
1685
1828
|
@return foo
|
1686
1829
|
|
@@ -1707,7 +1850,7 @@ SCSS
|
|
1707
1850
|
end
|
1708
1851
|
|
1709
1852
|
def test_function_var_kwargs
|
1710
|
-
|
1853
|
+
assert_renders <<SASS, <<SCSS
|
1711
1854
|
@function foo($a: b, $c: d)
|
1712
1855
|
@return foo
|
1713
1856
|
|
@@ -1727,11 +1870,12 @@ SCSS
|
|
1727
1870
|
end
|
1728
1871
|
|
1729
1872
|
def test_at_root
|
1730
|
-
|
1873
|
+
assert_renders <<SASS, <<SCSS
|
1731
1874
|
.foo
|
1732
1875
|
@at-root
|
1733
1876
|
.bar
|
1734
1877
|
a: b
|
1878
|
+
|
1735
1879
|
.baz
|
1736
1880
|
c: d
|
1737
1881
|
SASS
|
@@ -1740,6 +1884,7 @@ SASS
|
|
1740
1884
|
.bar {
|
1741
1885
|
a: b;
|
1742
1886
|
}
|
1887
|
+
|
1743
1888
|
.baz {
|
1744
1889
|
c: d;
|
1745
1890
|
}
|
@@ -1749,7 +1894,7 @@ SCSS
|
|
1749
1894
|
end
|
1750
1895
|
|
1751
1896
|
def test_at_root_with_selector
|
1752
|
-
|
1897
|
+
assert_renders <<SASS, <<SCSS
|
1753
1898
|
.foo
|
1754
1899
|
@at-root .bar
|
1755
1900
|
a: b
|
@@ -1763,7 +1908,7 @@ SCSS
|
|
1763
1908
|
end
|
1764
1909
|
|
1765
1910
|
def test_at_root_without
|
1766
|
-
|
1911
|
+
assert_renders <<SASS, <<SCSS
|
1767
1912
|
.foo
|
1768
1913
|
@at-root (without: media rule)
|
1769
1914
|
a: b
|
@@ -1777,7 +1922,7 @@ SCSS
|
|
1777
1922
|
end
|
1778
1923
|
|
1779
1924
|
def test_at_root_with
|
1780
|
-
|
1925
|
+
assert_renders <<SASS, <<SCSS
|
1781
1926
|
.foo
|
1782
1927
|
@at-root (with: media rule)
|
1783
1928
|
a: b
|
@@ -1791,7 +1936,7 @@ SCSS
|
|
1791
1936
|
end
|
1792
1937
|
|
1793
1938
|
def test_function_var_kwargs_with_list
|
1794
|
-
|
1939
|
+
assert_renders <<SASS, <<SCSS
|
1795
1940
|
@function foo($a: b, $c: d)
|
1796
1941
|
@return $a, $c
|
1797
1942
|
|
@@ -1808,6 +1953,45 @@ SASS
|
|
1808
1953
|
SCSS
|
1809
1954
|
end
|
1810
1955
|
|
1956
|
+
def test_keyframes
|
1957
|
+
assert_renders(<<SASS, <<SCSS)
|
1958
|
+
@keyframes identifier
|
1959
|
+
0%
|
1960
|
+
top: 0
|
1961
|
+
left: 0
|
1962
|
+
|
1963
|
+
30%
|
1964
|
+
top: 50px
|
1965
|
+
|
1966
|
+
68%, 72%
|
1967
|
+
left: 50px
|
1968
|
+
|
1969
|
+
100%
|
1970
|
+
top: 100px
|
1971
|
+
left: 100%
|
1972
|
+
SASS
|
1973
|
+
@keyframes identifier {
|
1974
|
+
0% {
|
1975
|
+
top: 0;
|
1976
|
+
left: 0;
|
1977
|
+
}
|
1978
|
+
|
1979
|
+
30% {
|
1980
|
+
top: 50px;
|
1981
|
+
}
|
1982
|
+
|
1983
|
+
68%, 72% {
|
1984
|
+
left: 50px;
|
1985
|
+
}
|
1986
|
+
|
1987
|
+
100% {
|
1988
|
+
top: 100px;
|
1989
|
+
left: 100%;
|
1990
|
+
}
|
1991
|
+
}
|
1992
|
+
SCSS
|
1993
|
+
end
|
1994
|
+
|
1811
1995
|
## Regression Tests
|
1812
1996
|
|
1813
1997
|
def test_list_in_args
|
@@ -1827,12 +2011,13 @@ SCSS
|
|
1827
2011
|
end
|
1828
2012
|
|
1829
2013
|
def test_media_query_with_expr
|
1830
|
-
|
2014
|
+
assert_renders <<SASS, <<SCSS
|
1831
2015
|
@media foo and (bar: baz)
|
1832
2016
|
a: b
|
1833
2017
|
SASS
|
1834
2018
|
@media foo and (bar: baz) {
|
1835
|
-
a: b;
|
2019
|
+
a: b;
|
2020
|
+
}
|
1836
2021
|
SCSS
|
1837
2022
|
end
|
1838
2023
|
|
@@ -1918,13 +2103,11 @@ foo
|
|
1918
2103
|
ok: -$foo
|
1919
2104
|
comma: 10px, -$foo
|
1920
2105
|
needs-parens: 10px (-$foo)
|
1921
|
-
no-parens: a 50px + 60px b
|
1922
2106
|
SASS
|
1923
2107
|
foo {
|
1924
2108
|
ok: -$foo;
|
1925
2109
|
comma: 10px, -$foo;
|
1926
2110
|
needs-parens: 10px (-$foo);
|
1927
|
-
no-parens: a 50px + 60px b;
|
1928
2111
|
}
|
1929
2112
|
SCSS
|
1930
2113
|
end
|
@@ -1946,6 +2129,14 @@ foo {
|
|
1946
2129
|
SCSS
|
1947
2130
|
end
|
1948
2131
|
|
2132
|
+
def test_import_with_supports_clause
|
2133
|
+
assert_renders(<<'SASS', <<'SCSS')
|
2134
|
+
@import url("fallback-layout.css") supports(not (display: #{$display-type}))
|
2135
|
+
SASS
|
2136
|
+
@import url("fallback-layout.css") supports(not (display: #{$display-type}));
|
2137
|
+
SCSS
|
2138
|
+
end
|
2139
|
+
|
1949
2140
|
private
|
1950
2141
|
|
1951
2142
|
def assert_sass_to_sass(sass, options = {})
|