sass 3.1.0.alpha.221 → 3.1.0.alpha.246
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.
- data/REVISION +1 -1
- data/Rakefile +1 -1
- data/VERSION +1 -1
- data/lib/sass/cache_stores/filesystem.rb +6 -4
- data/lib/sass/engine.rb +18 -44
- data/lib/sass/exec.rb +3 -10
- data/lib/sass/importers/filesystem.rb +10 -9
- data/lib/sass/less.rb +1 -1
- data/lib/sass/plugin.rb +1 -1
- data/lib/sass/plugin/compiler.rb +2 -2
- data/lib/sass/script.rb +2 -25
- data/lib/sass/script/color.rb +0 -11
- data/lib/sass/script/funcall.rb +0 -9
- data/lib/sass/script/functions.rb +1 -21
- data/lib/sass/script/lexer.rb +1 -4
- data/lib/sass/script/list.rb +0 -1
- data/lib/sass/script/node.rb +0 -27
- data/lib/sass/script/number.rb +1 -1
- data/lib/sass/script/operation.rb +0 -5
- data/lib/sass/script/parser.rb +1 -8
- data/lib/sass/script/string.rb +2 -17
- data/lib/sass/script/string_interpolation.rb +1 -0
- data/lib/sass/scss/parser.rb +3 -1
- data/lib/sass/scss/rx.rb +2 -1
- data/lib/sass/scss/script_lexer.rb +1 -1
- data/lib/sass/tree/comment_node.rb +23 -2
- data/lib/sass/tree/mixin_node.rb +0 -7
- data/lib/sass/tree/prop_node.rb +10 -3
- data/lib/sass/tree/visitors/check_nesting.rb +26 -16
- data/lib/sass/tree/visitors/convert.rb +11 -2
- data/lib/sass/tree/visitors/perform.rb +10 -13
- data/lib/sass/tree/visitors/to_css.rb +17 -5
- data/test/sass/conversion_test.rb +17 -102
- data/test/sass/engine_test.rb +70 -370
- data/test/sass/functions_test.rb +4 -0
- data/test/sass/plugin_test.rb +36 -24
- data/test/sass/script_conversion_test.rb +0 -38
- data/test/test_helper.rb +0 -3
- metadata +2 -4
- data/bin/css2sass +0 -13
@@ -59,8 +59,20 @@ class Sass::Tree::Visitors::ToCss < Sass::Tree::Visitors::Base
|
|
59
59
|
return if node.invisible?
|
60
60
|
spaces = (' ' * [@tabs - node.value[/^ */].size, 0].max)
|
61
61
|
|
62
|
-
content = node.value.gsub(/^/, spaces)
|
63
|
-
|
62
|
+
content = node.value.gsub(/^/, spaces).gsub(%r{^(\s*)//(.*)$}) do |md|
|
63
|
+
"#{$1}/*#{$2} */"
|
64
|
+
end
|
65
|
+
if content =~ /[^\\]\#\{.*\}/
|
66
|
+
Sass::Util.sass_warn <<MESSAGE
|
67
|
+
WARNING:
|
68
|
+
On line #{node.line}#{" of '#{node.filename}'" if node.filename}
|
69
|
+
Comments will evaluate the contents of interpolations (\#{ ... }) in Sass 3.2.
|
70
|
+
Please escape the interpolation by adding a backslash before the hash sign.
|
71
|
+
MESSAGE
|
72
|
+
elsif content =~ /\\\#\{.*\}/
|
73
|
+
content.gsub!(/\\(\#\{.*\})/, '\1')
|
74
|
+
end
|
75
|
+
content.gsub!(/\n +(\* *(?!\/))?/, ' ') if (node.style == :compact || node.style == :compressed) && !node.loud
|
64
76
|
content
|
65
77
|
end
|
66
78
|
|
@@ -110,9 +122,9 @@ class Sass::Tree::Visitors::ToCss < Sass::Tree::Visitors::Base
|
|
110
122
|
def visit_prop(node)
|
111
123
|
tab_str = ' ' * (@tabs + node.tabs)
|
112
124
|
if node.style == :compressed
|
113
|
-
"#{tab_str}#{node.resolved_name}:#{node.resolved_value}"
|
125
|
+
"#{tab_str}#{node.resolved_name}:#{node.resolved_value}#{'!important' if node.important}"
|
114
126
|
else
|
115
|
-
"#{tab_str}#{node.resolved_name}: #{node.resolved_value};"
|
127
|
+
"#{tab_str}#{node.resolved_name}: #{node.resolved_value}#{' !important' if node.important};"
|
116
128
|
end
|
117
129
|
end
|
118
130
|
|
@@ -192,7 +204,7 @@ class Sass::Tree::Visitors::ToCss < Sass::Tree::Visitors::Base
|
|
192
204
|
[Sass::Selector::Element.new(k.to_s.gsub(/[^\w-]/, "\\\\\\0"), nil)])
|
193
205
|
])
|
194
206
|
])
|
195
|
-
prop = Sass::Tree::PropNode.new([""], "", :new)
|
207
|
+
prop = Sass::Tree::PropNode.new([""], "", false, :new)
|
196
208
|
prop.resolved_name = "font-family"
|
197
209
|
prop.resolved_value = Sass::SCSS::RX.escape_ident(v.to_s)
|
198
210
|
rule << prop
|
@@ -165,14 +165,6 @@ SASS
|
|
165
165
|
foo bar {
|
166
166
|
baz: 12 $bang "bip"; }
|
167
167
|
SCSS
|
168
|
-
|
169
|
-
assert_sass_to_scss <<SCSS, <<SASS
|
170
|
-
foo bar {
|
171
|
-
baz: 12 $bang bip; }
|
172
|
-
SCSS
|
173
|
-
foo bar
|
174
|
-
baz= 12 $bang "bip"
|
175
|
-
SASS
|
176
168
|
end
|
177
169
|
|
178
170
|
def test_dynamic_properties_with_old
|
@@ -183,14 +175,6 @@ SASS
|
|
183
175
|
foo bar {
|
184
176
|
baz: 12 $bang "bip"; }
|
185
177
|
SCSS
|
186
|
-
|
187
|
-
assert_sass_to_scss <<SCSS, <<SASS, :old => true
|
188
|
-
foo bar {
|
189
|
-
baz: 12 $bang bip; }
|
190
|
-
SCSS
|
191
|
-
foo bar
|
192
|
-
:baz= 12 $bang "bip"
|
193
|
-
SASS
|
194
178
|
end
|
195
179
|
|
196
180
|
def test_multiline_properties
|
@@ -842,22 +826,12 @@ SASS
|
|
842
826
|
a: $baz $bang; } }
|
843
827
|
SCSS
|
844
828
|
|
845
|
-
assert_scss_to_sass <<SASS, <<SCSS
|
846
|
-
=foo-bar($baz, $bang: foo)
|
847
|
-
baz
|
848
|
-
a: $baz $bang
|
849
|
-
SASS
|
850
|
-
@mixin foo-bar($baz, $bang = "foo") {
|
851
|
-
baz {
|
852
|
-
a: $baz $bang; } }
|
853
|
-
SCSS
|
854
|
-
|
855
829
|
assert_sass_to_scss <<SCSS, <<SASS
|
856
830
|
@mixin foo-bar($baz, $bang: foo) {
|
857
831
|
baz {
|
858
832
|
a: $baz $bang; } }
|
859
833
|
SCSS
|
860
|
-
=foo-bar($baz, $bang
|
834
|
+
=foo-bar($baz, $bang: foo)
|
861
835
|
baz
|
862
836
|
a: $baz $bang
|
863
837
|
SASS
|
@@ -951,8 +925,6 @@ foo {
|
|
951
925
|
$var2: flaz(#abcdef);
|
952
926
|
val: $var1 $var2; }
|
953
927
|
SCSS
|
954
|
-
|
955
|
-
assert_sass_to_scss '$var: 12px $bar baz;', '$var = 12px $bar "baz"'
|
956
928
|
end
|
957
929
|
|
958
930
|
def test_guarded_variable_definition
|
@@ -969,8 +941,6 @@ foo {
|
|
969
941
|
$var2: flaz(#abcdef) !default;
|
970
942
|
val: $var1 $var2; }
|
971
943
|
SCSS
|
972
|
-
|
973
|
-
assert_sass_to_scss '$var: 12px $bar baz !default;', '$var ||= 12px $bar "baz"'
|
974
944
|
end
|
975
945
|
|
976
946
|
def test_multiple_variable_definitions
|
@@ -1114,62 +1084,6 @@ SCSS
|
|
1114
1084
|
end
|
1115
1085
|
end
|
1116
1086
|
|
1117
|
-
# Sass 3 Deprecation conversions
|
1118
|
-
|
1119
|
-
def test_simple_quoted_strings_unquoted_with_equals
|
1120
|
-
assert_sass_to_scss '$var: 1px foo + bar baz;', '!var = 1px "foo" + "bar" baz'
|
1121
|
-
assert_sass_to_scss '$var: -foo-bar;', '!var = "-foo-bar"'
|
1122
|
-
end
|
1123
|
-
|
1124
|
-
def test_complex_quoted_strings_explicitly_unquoted_with_equals
|
1125
|
-
assert_sass_to_scss '$var: 1px unquote("foo + bar") baz;', '!var = 1px "foo + bar" baz'
|
1126
|
-
assert_sass_to_scss "$var: unquote('foo\"bar');", '!var = "foo\"bar"'
|
1127
|
-
end
|
1128
|
-
|
1129
|
-
def test_division_asserted_with_equals
|
1130
|
-
assert_sass_to_scss <<SCSS, <<SASS
|
1131
|
-
foo {
|
1132
|
-
a: (1px / 2px); }
|
1133
|
-
SCSS
|
1134
|
-
foo
|
1135
|
-
a = 1px / 2px
|
1136
|
-
SASS
|
1137
|
-
end
|
1138
|
-
|
1139
|
-
def test_division_not_asserted_with_equals_when_unnecessary
|
1140
|
-
assert_sass_to_scss <<SCSS, <<SASS
|
1141
|
-
$var: 1px / 2px;
|
1142
|
-
|
1143
|
-
foo {
|
1144
|
-
a: $var; }
|
1145
|
-
SCSS
|
1146
|
-
!var = 1px / 2px
|
1147
|
-
|
1148
|
-
foo
|
1149
|
-
a = !var
|
1150
|
-
SASS
|
1151
|
-
|
1152
|
-
assert_sass_to_scss <<SCSS, <<SASS
|
1153
|
-
$var: 1px;
|
1154
|
-
|
1155
|
-
foo {
|
1156
|
-
a: $var / 2px; }
|
1157
|
-
SCSS
|
1158
|
-
!var = 1px
|
1159
|
-
|
1160
|
-
foo
|
1161
|
-
a = !var / 2px
|
1162
|
-
SASS
|
1163
|
-
|
1164
|
-
assert_sass_to_scss <<SCSS, <<SASS
|
1165
|
-
foo {
|
1166
|
-
a: 1 + 1px / 2px; }
|
1167
|
-
SCSS
|
1168
|
-
foo
|
1169
|
-
a = 1 + 1px / 2px
|
1170
|
-
SASS
|
1171
|
-
end
|
1172
|
-
|
1173
1087
|
def test_nested_properties
|
1174
1088
|
assert_renders <<SASS, <<SCSS
|
1175
1089
|
div
|
@@ -1217,24 +1131,25 @@ div
|
|
1217
1131
|
SASS
|
1218
1132
|
end
|
1219
1133
|
|
1220
|
-
def
|
1221
|
-
|
1222
|
-
|
1223
|
-
|
1224
|
-
|
1225
|
-
foo
|
1226
|
-
a: b \#{!c} d
|
1134
|
+
def test_loud_comment_conversion
|
1135
|
+
assert_renders(<<SASS, <<SCSS)
|
1136
|
+
/*! \#{"interpolated"}
|
1137
|
+
/*!
|
1138
|
+
* \#{"also interpolated"}
|
1227
1139
|
SASS
|
1228
|
-
|
1229
|
-
|
1230
|
-
|
1231
|
-
assert_sass_to_scss <<SCSS, <<SASS
|
1232
|
-
foo-\#{$c} {
|
1233
|
-
a: b; }
|
1140
|
+
/*! \#{"interpolated"} */
|
1141
|
+
/*!
|
1142
|
+
* \#{"also interpolated"} */
|
1234
1143
|
SCSS
|
1235
|
-
|
1236
|
-
|
1144
|
+
assert_renders(<<SASS, <<SCSS)
|
1145
|
+
//! \#{"interpolated"}
|
1146
|
+
//!
|
1147
|
+
//! \#{"also interpolated"}
|
1237
1148
|
SASS
|
1149
|
+
//! \#{"interpolated"}
|
1150
|
+
//!
|
1151
|
+
//! \#{"also interpolated"}
|
1152
|
+
SCSS
|
1238
1153
|
end
|
1239
1154
|
|
1240
1155
|
private
|
data/test/sass/engine_test.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
# -*- coding: utf-8 -*-
|
3
|
-
require
|
4
|
-
require
|
3
|
+
require 'test_helper'
|
4
|
+
require 'sass/test_helper'
|
5
5
|
require 'sass/engine'
|
6
6
|
require 'stringio'
|
7
7
|
require 'mock_importer'
|
@@ -41,9 +41,9 @@ MSG
|
|
41
41
|
"a\n @extend .foo ^bar" => 'Invalid CSS after ".foo ": expected selector, was "^bar"',
|
42
42
|
"a: b" => 'Properties are only allowed within rules, directives, or other properties.',
|
43
43
|
":a b" => 'Properties are only allowed within rules, directives, or other properties.',
|
44
|
-
"
|
44
|
+
"$" => 'Invalid variable: "$".',
|
45
45
|
"$a" => 'Invalid variable: "$a".',
|
46
|
-
"
|
46
|
+
"$ a" => 'Invalid variable: "$ a".',
|
47
47
|
"$a b" => 'Invalid variable: "$a b".',
|
48
48
|
"$a: 1b + 2c" => "Incompatible units: 'c' and 'b'.",
|
49
49
|
"$a: 1b < 2c" => "Incompatible units: 'c' and 'b'.",
|
@@ -68,6 +68,7 @@ MSG
|
|
68
68
|
"@if true\n @import foo" => "Import directives may not be used within control directives or mixins.",
|
69
69
|
"@mixin foo\n @import foo" => "Import directives may not be used within control directives or mixins.",
|
70
70
|
'$foo: "bar" "baz" !' => %Q{Invalid CSS after ""bar" "baz" ": expected expression (e.g. 1px, bold), was "!"},
|
71
|
+
'$foo: "bar" "baz" $' => %Q{Invalid CSS after ""bar" "baz" ": expected expression (e.g. 1px, bold), was "$"},
|
71
72
|
"=foo\n :color red\n.bar\n +bang" => "Undefined mixin 'bang'.",
|
72
73
|
"=foo\n :color red\n.bar\n +bang_bop" => "Undefined mixin 'bang_bop'.",
|
73
74
|
"=foo\n :color red\n.bar\n +bang-bop" => "Undefined mixin 'bang-bop'.",
|
@@ -90,8 +91,8 @@ MSG
|
|
90
91
|
"=a($foo bar)" => 'Invalid CSS after "($foo ": expected ")", was "bar)"',
|
91
92
|
"=foo\n bar: baz\n+foo" => ["Properties are only allowed within rules, directives, or other properties.", 2],
|
92
93
|
"a-\#{$b\n c: d" => ['Invalid CSS after "a-#{$b": expected "}", was ""', 1],
|
93
|
-
"=a($b
|
94
|
-
"=a($b
|
94
|
+
"=a($b: 1, $c)" => "Required argument $c must come before any optional arguments.",
|
95
|
+
"=a($b: 1)\n a: $b\ndiv\n +a(1,2)" => "Mixin a takes 1 argument but 2 were passed.",
|
95
96
|
"=a($b: 1)\n a: $b\ndiv\n +a(1,$c: 3)" => "Mixin a doesn't have an argument named $c",
|
96
97
|
"=a($b)\n a: $b\ndiv\n +a" => "Mixin a is missing parameter $b.",
|
97
98
|
"@function foo()\n 1 + 2" => "Functions can only contain variable declarations and control directives.",
|
@@ -113,7 +114,6 @@ MSG
|
|
113
114
|
"@else\n a\n b: c" => ["@else must come after @if.", 1],
|
114
115
|
"@if false\n@else foo" => "Invalid else directive '@else foo': expected 'if <expr>'.",
|
115
116
|
"@if false\n@else if " => "Invalid else directive '@else if': expected 'if <expr>'.",
|
116
|
-
"a\n !b: 12\nc\n d: !b" => 'Undefined variable: "$b".',
|
117
117
|
"a\n $b: 12\nc\n d: $b" => 'Undefined variable: "$b".',
|
118
118
|
"=foo\n $b: 12\nc\n +foo\n d: $b" => 'Undefined variable: "$b".',
|
119
119
|
"c\n d: $b-foo" => 'Undefined variable: "$b-foo".',
|
@@ -968,77 +968,6 @@ foo
|
|
968
968
|
SASS
|
969
969
|
end
|
970
970
|
|
971
|
-
def test_equals_warning_for_properties
|
972
|
-
assert_warning(<<WARN) {assert_equal(<<CSS, render(<<SASS))}
|
973
|
-
DEPRECATION WARNING:
|
974
|
-
On line 3, character 3 of 'test_equals_warning_for_properties_inline.sass'
|
975
|
-
Setting properties with = has been deprecated and will be removed in version 3.2.
|
976
|
-
Use "a: $var" instead.
|
977
|
-
|
978
|
-
You can use `sass-convert --in-place --from sass2 file.sass' to convert files automatically.
|
979
|
-
WARN
|
980
|
-
foo {
|
981
|
-
a: 2px 3px; }
|
982
|
-
CSS
|
983
|
-
$var: 2px 3px
|
984
|
-
foo
|
985
|
-
a = $var
|
986
|
-
SASS
|
987
|
-
end
|
988
|
-
|
989
|
-
def test_equals_warning_for_dynamic_properties
|
990
|
-
assert_warning(<<WARN) {assert_equal(<<CSS, render(<<SASS))}
|
991
|
-
DEPRECATION WARNING:
|
992
|
-
On line 4, character 3 of 'test_equals_warning_for_dynamic_properties_inline.sass'
|
993
|
-
Setting properties with = has been deprecated and will be removed in version 3.2.
|
994
|
-
Use "a-\#{$i}: $var" instead.
|
995
|
-
|
996
|
-
You can use `sass-convert --in-place --from sass2 file.sass' to convert files automatically.
|
997
|
-
WARN
|
998
|
-
foo {
|
999
|
-
a-12: 2px 3px; }
|
1000
|
-
CSS
|
1001
|
-
$var: 2px 3px
|
1002
|
-
$i: 12
|
1003
|
-
foo
|
1004
|
-
a-\#{$i} = $var
|
1005
|
-
SASS
|
1006
|
-
end
|
1007
|
-
|
1008
|
-
def test_equals_warning_for_property_with_string
|
1009
|
-
assert_warning(<<WARN) {assert_equal(<<CSS, render(<<SASS))}
|
1010
|
-
DEPRECATION WARNING:
|
1011
|
-
On line 2, character 3 of 'test_equals_warning_for_property_with_string_inline.sass'
|
1012
|
-
Setting properties with = has been deprecated and will be removed in version 3.2.
|
1013
|
-
Use "a: foo" instead.
|
1014
|
-
|
1015
|
-
You can use `sass-convert --in-place --from sass2 file.sass' to convert files automatically.
|
1016
|
-
WARN
|
1017
|
-
foo {
|
1018
|
-
a: foo; }
|
1019
|
-
CSS
|
1020
|
-
foo
|
1021
|
-
a = "foo"
|
1022
|
-
SASS
|
1023
|
-
end
|
1024
|
-
|
1025
|
-
def test_equals_warning_for_property_with_division
|
1026
|
-
assert_warning(<<WARN) {assert_equal(<<CSS, render(<<SASS))}
|
1027
|
-
DEPRECATION WARNING:
|
1028
|
-
On line 2, character 3 of 'test_equals_warning_for_property_with_division_inline.sass'
|
1029
|
-
Setting properties with = has been deprecated and will be removed in version 3.2.
|
1030
|
-
Use "a: (1px / 2px)" instead.
|
1031
|
-
|
1032
|
-
You can use `sass-convert --in-place --from sass2 file.sass' to convert files automatically.
|
1033
|
-
WARN
|
1034
|
-
foo {
|
1035
|
-
a: 0.5; }
|
1036
|
-
CSS
|
1037
|
-
foo
|
1038
|
-
a = 1px/2px
|
1039
|
-
SASS
|
1040
|
-
end
|
1041
|
-
|
1042
971
|
def test_guarded_assign
|
1043
972
|
assert_equal("foo {\n a: b; }\n", render(%Q{$foo: b\n$foo: c !default\nfoo\n a: $foo}))
|
1044
973
|
assert_equal("foo {\n a: b; }\n", render(%Q{$foo: b !default\nfoo\n a: $foo}))
|
@@ -1148,26 +1077,6 @@ a
|
|
1148
1077
|
SASS
|
1149
1078
|
end
|
1150
1079
|
|
1151
|
-
def test_equals_warning_for_mixin_args
|
1152
|
-
assert_warning(<<WARN) {assert_equal(<<CSS, render(<<SASS))}
|
1153
|
-
DEPRECATION WARNING:
|
1154
|
-
On line 1, character 10 of 'test_equals_warning_for_mixin_args_inline.sass'
|
1155
|
-
Setting mixin argument defaults with = has been deprecated and will be removed in version 3.2.
|
1156
|
-
Use "$arg: 1px" instead.
|
1157
|
-
|
1158
|
-
You can use `sass-convert --in-place --from sass2 file.sass' to convert files automatically.
|
1159
|
-
WARN
|
1160
|
-
bar {
|
1161
|
-
a: 1px; }
|
1162
|
-
CSS
|
1163
|
-
=foo($arg = 1px)
|
1164
|
-
a: $arg
|
1165
|
-
|
1166
|
-
bar
|
1167
|
-
+foo
|
1168
|
-
SASS
|
1169
|
-
end
|
1170
|
-
|
1171
1080
|
def test_css_identifier_mixin
|
1172
1081
|
assert_equal(<<CSS, render(<<SASS))
|
1173
1082
|
a {
|
@@ -1336,30 +1245,6 @@ $a: 3
|
|
1336
1245
|
SASS
|
1337
1246
|
end
|
1338
1247
|
|
1339
|
-
def test_for_with_bang_var
|
1340
|
-
assert_warning(<<WARN) {assert_equal(<<CSS, render(<<SASS))}
|
1341
|
-
DEPRECATION WARNING:
|
1342
|
-
On line 1, character 6 of 'test_for_with_bang_var_inline.sass'
|
1343
|
-
Variables with ! have been deprecated and will be removed in version 3.2.
|
1344
|
-
Use "$bar" instead.
|
1345
|
-
|
1346
|
-
You can use `sass-convert --in-place --from sass2 file.sass' to convert files automatically.
|
1347
|
-
WARN
|
1348
|
-
a-0 {
|
1349
|
-
b: c; }
|
1350
|
-
|
1351
|
-
a-1 {
|
1352
|
-
b: c; }
|
1353
|
-
|
1354
|
-
a-2 {
|
1355
|
-
b: c; }
|
1356
|
-
CSS
|
1357
|
-
@for !bar from 0 to 3
|
1358
|
-
a-\#{$bar}
|
1359
|
-
b: c
|
1360
|
-
SASS
|
1361
|
-
end
|
1362
|
-
|
1363
1248
|
def test_while
|
1364
1249
|
assert_equal(<<CSS, render(<<SASS))
|
1365
1250
|
a-5 {
|
@@ -1462,78 +1347,6 @@ a
|
|
1462
1347
|
SASS
|
1463
1348
|
end
|
1464
1349
|
|
1465
|
-
def test_bang_variables
|
1466
|
-
assert_warning(<<WARN) {assert_equal(<<CSS, render(<<SASS))}
|
1467
|
-
DEPRECATION WARNING:
|
1468
|
-
On line 1, character 1 of 'test_bang_variables_inline.sass'
|
1469
|
-
Variables with ! have been deprecated and will be removed in version 3.2.
|
1470
|
-
Use "$bang-var" instead.
|
1471
|
-
|
1472
|
-
You can use `sass-convert --in-place --from sass2 file.sass' to convert files automatically.
|
1473
|
-
WARN
|
1474
|
-
foo {
|
1475
|
-
a: 1px; }
|
1476
|
-
CSS
|
1477
|
-
!bang-var: 1px
|
1478
|
-
foo
|
1479
|
-
a: $bang-var
|
1480
|
-
SASS
|
1481
|
-
|
1482
|
-
assert_warning(<<WARN) {assert_equal(<<CSS, render(<<SASS))}
|
1483
|
-
DEPRECATION WARNING:
|
1484
|
-
On line 3, character 6 of 'test_bang_variables_inline.sass'
|
1485
|
-
Variables with ! have been deprecated and will be removed in version 3.2.
|
1486
|
-
Use "$dollar-var" instead.
|
1487
|
-
|
1488
|
-
You can use `sass-convert --in-place --from sass2 file.sass' to convert files automatically.
|
1489
|
-
WARN
|
1490
|
-
foo {
|
1491
|
-
a: 1px; }
|
1492
|
-
CSS
|
1493
|
-
$dollar-var: 1px
|
1494
|
-
foo
|
1495
|
-
a: !dollar-var
|
1496
|
-
SASS
|
1497
|
-
end
|
1498
|
-
|
1499
|
-
def test_equals_warning_for_variables
|
1500
|
-
assert_warning(<<WARN) {assert_equal(<<CSS, render(<<SASS))}
|
1501
|
-
DEPRECATION WARNING:
|
1502
|
-
On line 2, character 1 of 'test_equals_warning_for_variables_inline.sass'
|
1503
|
-
Setting variables with = has been deprecated and will be removed in version 3.2.
|
1504
|
-
Use "$equals-var: 2px 3px" instead.
|
1505
|
-
|
1506
|
-
You can use `sass-convert --in-place --from sass2 file.sass' to convert files automatically.
|
1507
|
-
WARN
|
1508
|
-
foo {
|
1509
|
-
a: 2px 3px; }
|
1510
|
-
CSS
|
1511
|
-
|
1512
|
-
$equals-var = 2px 3px
|
1513
|
-
foo
|
1514
|
-
a: $equals-var
|
1515
|
-
SASS
|
1516
|
-
end
|
1517
|
-
|
1518
|
-
def test_equals_warning_for_guarded_variables
|
1519
|
-
assert_warning(<<WARN) {assert_equal(<<CSS, render(<<SASS))}
|
1520
|
-
DEPRECATION WARNING:
|
1521
|
-
On line 2, character 1 of 'test_equals_warning_for_guarded_variables_inline.sass'
|
1522
|
-
Setting variable defaults with ||= has been deprecated and will be removed in version 3.2.
|
1523
|
-
Use "$equals-var: 2px 3px !default" instead.
|
1524
|
-
|
1525
|
-
You can use `sass-convert --in-place --from sass2 file.sass' to convert files automatically.
|
1526
|
-
WARN
|
1527
|
-
foo {
|
1528
|
-
a: 2px 3px; }
|
1529
|
-
CSS
|
1530
|
-
|
1531
|
-
$equals-var ||= 2px 3px
|
1532
|
-
foo
|
1533
|
-
a: $equals-var
|
1534
|
-
SASS
|
1535
|
-
end
|
1536
|
-
|
1537
1350
|
def test_variable_scope
|
1538
1351
|
assert_equal(<<CSS, render(<<SASS))
|
1539
1352
|
a {
|
@@ -1715,6 +1528,47 @@ foo
|
|
1715
1528
|
SASS
|
1716
1529
|
end
|
1717
1530
|
|
1531
|
+
def test_loud_comment_in_compressed_mode
|
1532
|
+
assert_equal <<CSS, render(<<SASS, :style => :compressed)
|
1533
|
+
foo{color:blue;/* foo
|
1534
|
+
* bar
|
1535
|
+
*/}
|
1536
|
+
CSS
|
1537
|
+
foo
|
1538
|
+
color: blue
|
1539
|
+
/*! foo
|
1540
|
+
* bar
|
1541
|
+
*/
|
1542
|
+
SASS
|
1543
|
+
end
|
1544
|
+
def test_loud_comment_in_silent_comment
|
1545
|
+
assert_equal <<CSS, render(<<SASS, :style => :compressed)
|
1546
|
+
foo{color:blue;/* foo */
|
1547
|
+
/* bar */
|
1548
|
+
/* */
|
1549
|
+
/* bip */
|
1550
|
+
/* baz */}
|
1551
|
+
CSS
|
1552
|
+
foo
|
1553
|
+
color: blue
|
1554
|
+
//! foo
|
1555
|
+
//! bar
|
1556
|
+
//!
|
1557
|
+
bip
|
1558
|
+
baz
|
1559
|
+
SASS
|
1560
|
+
end
|
1561
|
+
|
1562
|
+
def test_loud_comment_is_evaluated
|
1563
|
+
assert_equal <<CSS, render(<<SASS)
|
1564
|
+
/*
|
1565
|
+
* Hue: 327.216deg */
|
1566
|
+
CSS
|
1567
|
+
/*!
|
1568
|
+
Hue: \#{hue(#f836a0)}
|
1569
|
+
SASS
|
1570
|
+
end
|
1571
|
+
|
1718
1572
|
def test_attribute_selector_with_spaces
|
1719
1573
|
assert_equal(<<CSS, render(<<SASS))
|
1720
1574
|
a b[foo=bar] {
|
@@ -1919,182 +1773,6 @@ CSS
|
|
1919
1773
|
SASS
|
1920
1774
|
end
|
1921
1775
|
|
1922
|
-
# Deprecated equals behavior
|
1923
|
-
|
1924
|
-
def test_equals_properties_unquote_strings
|
1925
|
-
silence_warnings do
|
1926
|
-
assert_equal(<<CSS, render(<<SASS))
|
1927
|
-
foo {
|
1928
|
-
a: foo;
|
1929
|
-
b: bar;
|
1930
|
-
c: foo bar;
|
1931
|
-
d: foo, bar baz;
|
1932
|
-
e: foo bar, bar; }
|
1933
|
-
CSS
|
1934
|
-
foo
|
1935
|
-
a= "foo"
|
1936
|
-
b= bar
|
1937
|
-
c= "foo" bar
|
1938
|
-
d= foo, "bar baz"
|
1939
|
-
e= "foo bar", bar
|
1940
|
-
SASS
|
1941
|
-
end
|
1942
|
-
end
|
1943
|
-
|
1944
|
-
def test_equals_properties_unquote_value
|
1945
|
-
silence_warnings do
|
1946
|
-
assert_equal(<<CSS, render(<<SASS))
|
1947
|
-
foo {
|
1948
|
-
a: foo; }
|
1949
|
-
CSS
|
1950
|
-
$var: "foo"
|
1951
|
-
|
1952
|
-
foo
|
1953
|
-
a= $var
|
1954
|
-
SASS
|
1955
|
-
end
|
1956
|
-
end
|
1957
|
-
|
1958
|
-
def test_equals_properties_deep_unquote_vars
|
1959
|
-
silence_warnings do
|
1960
|
-
assert_equal(<<CSS, render(<<SASS))
|
1961
|
-
foo {
|
1962
|
-
a: foo bar;
|
1963
|
-
b: bar foo; }
|
1964
|
-
CSS
|
1965
|
-
$var: "foo"
|
1966
|
-
|
1967
|
-
foo
|
1968
|
-
a= $var "bar"
|
1969
|
-
b= "bar" $var
|
1970
|
-
SASS
|
1971
|
-
end
|
1972
|
-
end
|
1973
|
-
|
1974
|
-
def test_equals_vars_unquote_strings
|
1975
|
-
silence_warnings do
|
1976
|
-
assert_equal(<<CSS, render(<<SASS))
|
1977
|
-
foo {
|
1978
|
-
a: foo;
|
1979
|
-
b: bar;
|
1980
|
-
c: foo bar;
|
1981
|
-
d: foo, bar; }
|
1982
|
-
CSS
|
1983
|
-
$a = "foo"
|
1984
|
-
$b = bar
|
1985
|
-
$c = "foo" bar
|
1986
|
-
$d = foo, "bar"
|
1987
|
-
|
1988
|
-
foo
|
1989
|
-
a: $a
|
1990
|
-
b: $b
|
1991
|
-
c: $c
|
1992
|
-
d: $d
|
1993
|
-
SASS
|
1994
|
-
end
|
1995
|
-
end
|
1996
|
-
|
1997
|
-
def test_equals_vars_unquote_value
|
1998
|
-
silence_warnings do
|
1999
|
-
assert_equal(<<CSS, render(<<SASS))
|
2000
|
-
foo {
|
2001
|
-
a: foo; }
|
2002
|
-
CSS
|
2003
|
-
$var1: "foo"
|
2004
|
-
$var2 = $var1
|
2005
|
-
|
2006
|
-
foo
|
2007
|
-
a: $var2
|
2008
|
-
SASS
|
2009
|
-
end
|
2010
|
-
end
|
2011
|
-
|
2012
|
-
def test_equals_vars_deep_unquote_vars
|
2013
|
-
silence_warnings do
|
2014
|
-
assert_equal(<<CSS, render(<<SASS))
|
2015
|
-
foo {
|
2016
|
-
a: foo bar;
|
2017
|
-
b: bar foo; }
|
2018
|
-
CSS
|
2019
|
-
$var: "foo"
|
2020
|
-
$a = $var "bar"
|
2021
|
-
$b = "bar" $var
|
2022
|
-
|
2023
|
-
foo
|
2024
|
-
a: $a
|
2025
|
-
b: $b
|
2026
|
-
SASS
|
2027
|
-
end
|
2028
|
-
end
|
2029
|
-
|
2030
|
-
def test_equals_args_unquote_strings
|
2031
|
-
silence_warnings do
|
2032
|
-
assert_equal(<<CSS, render(<<SASS))
|
2033
|
-
foo {
|
2034
|
-
a: foo;
|
2035
|
-
b: bar;
|
2036
|
-
c: foo bar;
|
2037
|
-
d: foo, bar; }
|
2038
|
-
CSS
|
2039
|
-
=foo($a = "foo", $b = bar, $c = "foo" bar, $d = (foo, "bar"))
|
2040
|
-
foo
|
2041
|
-
a: $a
|
2042
|
-
b: $b
|
2043
|
-
c: $c
|
2044
|
-
d: $d
|
2045
|
-
|
2046
|
-
+foo
|
2047
|
-
SASS
|
2048
|
-
end
|
2049
|
-
end
|
2050
|
-
|
2051
|
-
def test_equals_args_unquote_value
|
2052
|
-
silence_warnings do
|
2053
|
-
assert_equal(<<CSS, render(<<SASS))
|
2054
|
-
foo {
|
2055
|
-
a: foo; }
|
2056
|
-
CSS
|
2057
|
-
$var1: "foo"
|
2058
|
-
|
2059
|
-
=foo($var2 = $var1)
|
2060
|
-
foo
|
2061
|
-
a: $var2
|
2062
|
-
|
2063
|
-
+foo
|
2064
|
-
SASS
|
2065
|
-
end
|
2066
|
-
end
|
2067
|
-
|
2068
|
-
def test_equals_args_deep_unquote_vars
|
2069
|
-
silence_warnings do
|
2070
|
-
assert_equal(<<CSS, render(<<SASS))
|
2071
|
-
foo {
|
2072
|
-
a: foo bar;
|
2073
|
-
b: bar foo; }
|
2074
|
-
CSS
|
2075
|
-
$var: "foo"
|
2076
|
-
=foo($a = $var "bar", $b = "bar" $var)
|
2077
|
-
foo
|
2078
|
-
a: $a
|
2079
|
-
b: $b
|
2080
|
-
|
2081
|
-
+foo
|
2082
|
-
SASS
|
2083
|
-
end
|
2084
|
-
end
|
2085
|
-
|
2086
|
-
def test_equals_properties_force_division
|
2087
|
-
silence_warnings do
|
2088
|
-
assert_equal(<<CSS, render(<<SASS))
|
2089
|
-
foo {
|
2090
|
-
a: 0.5; }
|
2091
|
-
CSS
|
2092
|
-
foo
|
2093
|
-
a = 1px/2px
|
2094
|
-
SASS
|
2095
|
-
end
|
2096
|
-
end
|
2097
|
-
|
2098
1776
|
def test_warn_directive
|
2099
1777
|
expected_warning = <<EXPECTATION
|
2100
1778
|
WARNING: this is a warning
|
@@ -2569,6 +2247,28 @@ CSS
|
|
2569
2247
|
SASS
|
2570
2248
|
end
|
2571
2249
|
|
2250
|
+
def test_comment_interpolation_warning
|
2251
|
+
assert_warning(<<END) {render("/* \#{foo}")}
|
2252
|
+
WARNING:
|
2253
|
+
On line 1 of 'test_comment_interpolation_warning_inline.sass'
|
2254
|
+
Comments will evaluate the contents of interpolations (\#{ ... }) in Sass 3.2.
|
2255
|
+
Please escape the interpolation by adding a backslash before the hash sign.
|
2256
|
+
END
|
2257
|
+
end
|
2258
|
+
|
2259
|
+
def test_loud_comment_interpolations_can_be_escaped
|
2260
|
+
assert_equal <<CSS, render(<<SASS)
|
2261
|
+
/* \#{foo} */
|
2262
|
+
CSS
|
2263
|
+
/* \\\#{foo}
|
2264
|
+
SASS
|
2265
|
+
assert_equal <<CSS, render(<<SASS)
|
2266
|
+
/* \#{foo} */
|
2267
|
+
CSS
|
2268
|
+
/*! \\\#{foo}
|
2269
|
+
SASS
|
2270
|
+
end
|
2271
|
+
|
2572
2272
|
# Encodings
|
2573
2273
|
|
2574
2274
|
unless Sass::Util.ruby1_8?
|