sass 3.4.0 → 3.4.25
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.
- 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 +26 -20
- data/Rakefile +103 -20
- data/VERSION +1 -1
- data/VERSION_DATE +1 -1
- data/extra/sass-spec-ref.sh +32 -0
- data/extra/update_watch.rb +1 -1
- data/lib/sass/cache_stores/filesystem.rb +7 -7
- data/lib/sass/cache_stores/memory.rb +4 -5
- data/lib/sass/callbacks.rb +2 -2
- data/lib/sass/css.rb +11 -10
- data/lib/sass/deprecation.rb +55 -0
- data/lib/sass/engine.rb +83 -38
- data/lib/sass/environment.rb +26 -2
- data/lib/sass/error.rb +12 -12
- data/lib/sass/exec/base.rb +15 -3
- data/lib/sass/exec/sass_convert.rb +34 -15
- data/lib/sass/exec/sass_scss.rb +23 -7
- data/lib/sass/features.rb +2 -2
- data/lib/sass/importers/base.rb +1 -1
- data/lib/sass/importers/deprecated_path.rb +51 -0
- data/lib/sass/importers/filesystem.rb +24 -16
- data/lib/sass/importers.rb +1 -0
- 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/plugin/compiler.rb +42 -25
- 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 +3 -3
- data/lib/sass/plugin.rb +3 -2
- 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 +140 -73
- data/lib/sass/script/lexer.rb +37 -22
- data/lib/sass/script/parser.rb +235 -40
- data/lib/sass/script/tree/funcall.rb +12 -5
- data/lib/sass/script/tree/interpolation.rb +109 -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/string_interpolation.rb +58 -37
- data/lib/sass/script/tree/variable.rb +1 -1
- data/lib/sass/script/value/base.rb +10 -9
- data/lib/sass/script/value/color.rb +42 -24
- data/lib/sass/script/value/helpers.rb +16 -6
- data/lib/sass/script/value/map.rb +1 -1
- data/lib/sass/script/value/number.rb +52 -19
- data/lib/sass/script/value/string.rb +46 -5
- data/lib/sass/script.rb +3 -3
- data/lib/sass/scss/css_parser.rb +16 -2
- data/lib/sass/scss/parser.rb +120 -75
- data/lib/sass/scss/rx.rb +9 -10
- data/lib/sass/scss/static_parser.rb +19 -14
- data/lib/sass/scss.rb +0 -2
- data/lib/sass/selector/abstract_sequence.rb +8 -6
- data/lib/sass/selector/comma_sequence.rb +25 -9
- data/lib/sass/selector/pseudo.rb +45 -35
- data/lib/sass/selector/sequence.rb +54 -18
- data/lib/sass/selector/simple.rb +11 -11
- data/lib/sass/selector/simple_sequence.rb +34 -15
- data/lib/sass/selector.rb +7 -10
- data/lib/sass/shared.rb +1 -1
- data/lib/sass/source/map.rb +7 -4
- data/lib/sass/source/position.rb +4 -4
- data/lib/sass/stack.rb +2 -2
- data/lib/sass/supports.rb +8 -10
- data/lib/sass/tree/comment_node.rb +1 -1
- data/lib/sass/tree/css_import_node.rb +9 -1
- data/lib/sass/tree/function_node.rb +8 -3
- data/lib/sass/tree/import_node.rb +6 -5
- data/lib/sass/tree/node.rb +5 -3
- data/lib/sass/tree/prop_node.rb +5 -6
- data/lib/sass/tree/rule_node.rb +14 -4
- data/lib/sass/tree/visitors/check_nesting.rb +18 -22
- data/lib/sass/tree/visitors/convert.rb +43 -26
- data/lib/sass/tree/visitors/cssize.rb +5 -1
- data/lib/sass/tree/visitors/deep_copy.rb +1 -1
- data/lib/sass/tree/visitors/extend.rb +15 -13
- data/lib/sass/tree/visitors/perform.rb +42 -17
- data/lib/sass/tree/visitors/set_options.rb +1 -1
- data/lib/sass/tree/visitors/to_css.rb +58 -30
- 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 +1 -2
- data/lib/sass/util.rb +125 -68
- data/lib/sass/version.rb +2 -2
- data/lib/sass.rb +10 -3
- data/test/sass/compiler_test.rb +6 -2
- data/test/sass/conversion_test.rb +187 -53
- data/test/sass/css2sass_test.rb +50 -1
- data/test/sass/css_variable_test.rb +132 -0
- data/test/sass/engine_test.rb +207 -61
- data/test/sass/exec_test.rb +10 -0
- data/test/sass/extend_test.rb +101 -29
- data/test/sass/functions_test.rb +60 -9
- data/test/sass/importer_test.rb +9 -0
- 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 +10 -8
- data/test/sass/results/script.css +3 -3
- data/test/sass/script_conversion_test.rb +58 -29
- data/test/sass/script_test.rb +430 -53
- data/test/sass/scss/css_test.rb +73 -7
- data/test/sass/scss/rx_test.rb +4 -0
- data/test/sass/scss/scss_test.rb +309 -4
- data/test/sass/source_map_test.rb +152 -74
- data/test/sass/superselector_test.rb +19 -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/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/util/multibyte_string_scanner_test.rb +10 -2
- data/test/sass/util_test.rb +15 -44
- data/test/sass-spec.yml +3 -0
- data/test/test_helper.rb +5 -4
- metadata +302 -295
- data/CONTRIBUTING +0 -3
- data/lib/sass/scss/script_lexer.rb +0 -15
- data/lib/sass/scss/script_parser.rb +0 -25
@@ -76,6 +76,26 @@ class SassScriptConversionTest < MiniTest::Test
|
|
76
76
|
assert_renders "null"
|
77
77
|
end
|
78
78
|
|
79
|
+
def test_space_list
|
80
|
+
assert_renders "foo bar baz"
|
81
|
+
assert_renders "foo (bar baz) bip"
|
82
|
+
assert_renders "foo (bar, baz) bip"
|
83
|
+
end
|
84
|
+
|
85
|
+
def test_comma_list
|
86
|
+
assert_renders "foo, bar, baz"
|
87
|
+
assert_renders "foo, (bar, baz), bip"
|
88
|
+
assert_renders "foo, bar baz, bip"
|
89
|
+
end
|
90
|
+
|
91
|
+
def test_space_list_adds_parens_for_clarity
|
92
|
+
assert_renders "(1 + 1) (2 / 4) (3 * 5)"
|
93
|
+
end
|
94
|
+
|
95
|
+
def test_comma_list_doesnt_add_parens
|
96
|
+
assert_renders "1 + 1, 2 / 4, 3 * 5"
|
97
|
+
end
|
98
|
+
|
79
99
|
def test_empty_list
|
80
100
|
assert_renders "()"
|
81
101
|
end
|
@@ -221,8 +241,8 @@ RUBY
|
|
221
241
|
assert_renders "$foo or ($bar $baz)"
|
222
242
|
assert_renders "($foo $bar) or $baz"
|
223
243
|
|
224
|
-
|
225
|
-
|
244
|
+
assert_renders "$foo ($bar or $baz)"
|
245
|
+
assert_renders "($foo or $bar) $baz"
|
226
246
|
|
227
247
|
assert_equal "$foo ($bar $baz)", render("$foo ($bar $baz)")
|
228
248
|
assert_equal "($foo $bar) $baz", render("($foo $bar) $baz")
|
@@ -244,23 +264,29 @@ RUBY
|
|
244
264
|
end
|
245
265
|
|
246
266
|
def test_interpolation
|
247
|
-
|
248
|
-
|
249
|
-
|
267
|
+
assert_equal 'unquote("#{$foo}#{$bar}#{$baz}")', render("$foo\#{$bar}$baz")
|
268
|
+
assert_equal 'unquote("#{$foo}#{$bar} #{$baz}")', render("$foo\#{$bar} $baz")
|
269
|
+
assert_equal 'unquote("#{$foo} #{$bar}#{$baz}")', render("$foo \#{$bar}$baz")
|
250
270
|
assert_renders "$foo \#{$bar} $baz"
|
251
271
|
assert_renders "$foo \#{$bar}\#{$bang} $baz"
|
252
272
|
assert_renders "$foo \#{$bar} \#{$bang} $baz"
|
253
|
-
|
254
|
-
|
273
|
+
assert_equal 'unquote("#{$bar}#{$baz}")', render("\#{$bar}$baz")
|
274
|
+
assert_equal 'unquote("#{$foo}#{$bar}")', render("$foo\#{$bar}")
|
255
275
|
assert_renders "\#{$bar}"
|
256
276
|
end
|
257
277
|
|
258
278
|
def test_interpolation_in_function
|
259
279
|
assert_renders 'flabnabbit(#{1 + "foo"})'
|
260
|
-
|
280
|
+
assert_equal 'flabnabbit(unquote("#{$foo} #{1 + "foo"}#{$baz}"))',
|
281
|
+
render('flabnabbit($foo #{1 + "foo"}$baz)')
|
261
282
|
assert_renders 'flabnabbit($foo #{1 + "foo"}#{2 + "bar"} $baz)'
|
262
283
|
end
|
263
284
|
|
285
|
+
def test_interpolation_in_string_function
|
286
|
+
assert_renders 'calc(#{1 + "foo"})'
|
287
|
+
assert_renders 'calc(foo#{1 + "foo"}baz)'
|
288
|
+
end
|
289
|
+
|
264
290
|
def test_interpolation_near_operators
|
265
291
|
assert_renders '#{1 + 2} , #{3 + 4}'
|
266
292
|
assert_renders '#{1 + 2}, #{3 + 4}'
|
@@ -274,30 +300,30 @@ RUBY
|
|
274
300
|
assert_renders '3/ #{3 + 4}'
|
275
301
|
assert_renders '3/#{3 + 4}'
|
276
302
|
|
277
|
-
|
278
|
-
|
279
|
-
|
280
|
-
|
303
|
+
assert_equal 'unquote("#{1 + 2} * 7")', render('#{1 + 2} * 7')
|
304
|
+
assert_equal 'unquote("#{1 + 2}* 7")', render('#{1 + 2}* 7')
|
305
|
+
assert_equal 'unquote("#{1 + 2} *7")', render('#{1 + 2} *7')
|
306
|
+
assert_equal 'unquote("#{1 + 2}*7")', render('#{1 + 2}*7')
|
281
307
|
|
282
308
|
assert_renders '-#{1 + 2}'
|
283
|
-
|
309
|
+
assert_equal 'unquote("- #{1 + 2}")', render('- #{1 + 2}')
|
284
310
|
|
285
|
-
|
286
|
-
|
287
|
-
|
288
|
-
|
289
|
-
|
290
|
-
|
311
|
+
assert_equal 'unquote("5 + #{1 + 2} * #{3 + 4}")', render('5 + #{1 + 2} * #{3 + 4}')
|
312
|
+
assert_equal 'unquote("5 +#{1 + 2} * #{3 + 4}")', render('5 +#{1 + 2} * #{3 + 4}')
|
313
|
+
assert_equal 'unquote("5+#{1 + 2} * #{3 + 4}")', render('5+#{1 + 2} * #{3 + 4}')
|
314
|
+
assert_equal 'unquote("#{1 + 2} * #{3 + 4} + 5")', render('#{1 + 2} * #{3 + 4} + 5')
|
315
|
+
assert_equal 'unquote("#{1 + 2} * #{3 + 4}+ 5")', render('#{1 + 2} * #{3 + 4}+ 5')
|
316
|
+
assert_equal 'unquote("#{1 + 2} * #{3 + 4}+5")', render('#{1 + 2} * #{3 + 4}+5')
|
291
317
|
|
292
|
-
assert_equal '5 / #{1 + 2} + #{3 + 4}', render('5 / (#{1 + 2} + #{3 + 4})')
|
293
|
-
assert_equal '5 / #{1 + 2} + #{3 + 4}', render('5 /(#{1 + 2} + #{3 + 4})')
|
294
|
-
assert_equal '5 / #{1 + 2} + #{3 + 4}', render('5 /( #{1 + 2} + #{3 + 4} )')
|
295
|
-
assert_equal '#{1 + 2} + #{3 + 4} / 5', render('(#{1 + 2} + #{3 + 4}) / 5')
|
296
|
-
assert_equal '#{1 + 2} + #{3 + 4} / 5', render('(#{1 + 2} + #{3 + 4})/ 5')
|
297
|
-
assert_equal '#{1 + 2} + #{3 + 4} / 5', render('( #{1 + 2} + #{3 + 4} )/ 5')
|
318
|
+
assert_equal '5 / unquote("#{1 + 2} + #{3 + 4}")', render('5 / (#{1 + 2} + #{3 + 4})')
|
319
|
+
assert_equal '5 / unquote("#{1 + 2} + #{3 + 4}")', render('5 /(#{1 + 2} + #{3 + 4})')
|
320
|
+
assert_equal '5 / unquote("#{1 + 2} + #{3 + 4}")', render('5 /( #{1 + 2} + #{3 + 4} )')
|
321
|
+
assert_equal 'unquote("#{1 + 2} + #{3 + 4}") / 5', render('(#{1 + 2} + #{3 + 4}) / 5')
|
322
|
+
assert_equal 'unquote("#{1 + 2} + #{3 + 4}") / 5', render('(#{1 + 2} + #{3 + 4})/ 5')
|
323
|
+
assert_equal 'unquote("#{1 + 2} + #{3 + 4}") / 5', render('( #{1 + 2} + #{3 + 4} )/ 5')
|
298
324
|
|
299
|
-
|
300
|
-
|
325
|
+
assert_equal 'unquote("#{1 + 2} + #{2 + 3}")', render('#{1 + 2} + 2 + 3')
|
326
|
+
assert_equal 'unquote("#{1 + 2} +#{2 + 3}")', render('#{1 + 2} +2 + 3')
|
301
327
|
end
|
302
328
|
|
303
329
|
def test_string_interpolation
|
@@ -309,7 +335,10 @@ RUBY
|
|
309
335
|
assert_renders '"foo #{$bar} #{$bang} baz"'
|
310
336
|
assert_renders '"#{$bar}baz"'
|
311
337
|
assert_renders '"foo#{$bar}"'
|
312
|
-
|
338
|
+
assert_renders '"#{$bar}"'
|
339
|
+
|
340
|
+
assert_renders "'\"\#{\"bar\"}\"'"
|
341
|
+
assert_renders '"\#{bar}"'
|
313
342
|
|
314
343
|
assert_equal '"foo#{$bar}baz"', render("'foo\#{$bar}baz'")
|
315
344
|
end
|
@@ -322,7 +351,7 @@ RUBY
|
|
322
351
|
|
323
352
|
def render(script, options = {})
|
324
353
|
munge_filename(options)
|
325
|
-
node = Sass::Script.parse(script, 1, 0, options)
|
354
|
+
node = Sass::Script.parse(script, 1, 0, options.merge(:_convert => true))
|
326
355
|
node.to_sass
|
327
356
|
end
|
328
357
|
end
|