sass 3.2.7 → 3.3.0.rc.1
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/MIT-LICENSE +2 -2
- data/README.md +14 -2
- data/Rakefile +25 -1
- data/VERSION +1 -1
- data/VERSION_DATE +1 -1
- data/VERSION_NAME +1 -1
- data/lib/sass/cache_stores/base.rb +4 -2
- data/lib/sass/cache_stores/chain.rb +2 -1
- data/lib/sass/cache_stores/filesystem.rb +2 -6
- data/lib/sass/cache_stores/memory.rb +1 -1
- data/lib/sass/cache_stores/null.rb +2 -2
- data/lib/sass/callbacks.rb +1 -0
- data/lib/sass/css.rb +10 -10
- data/lib/sass/engine.rb +403 -150
- data/lib/sass/environment.rb +136 -57
- data/lib/sass/error.rb +7 -7
- data/lib/sass/exec.rb +123 -39
- data/lib/sass/features.rb +41 -0
- data/lib/sass/importers/base.rb +33 -2
- data/lib/sass/importers/deprecated_path.rb +45 -0
- data/lib/sass/importers/filesystem.rb +25 -14
- data/lib/sass/importers.rb +1 -0
- data/lib/sass/logger/base.rb +3 -3
- data/lib/sass/logger/log_level.rb +4 -6
- data/lib/sass/media.rb +19 -19
- data/lib/sass/plugin/compiler.rb +141 -101
- data/lib/sass/plugin/configuration.rb +18 -22
- data/lib/sass/plugin/merb.rb +1 -1
- data/lib/sass/plugin/staleness_checker.rb +24 -8
- data/lib/sass/plugin.rb +4 -2
- data/lib/sass/repl.rb +3 -3
- data/lib/sass/script/css_lexer.rb +9 -4
- data/lib/sass/script/css_parser.rb +6 -2
- data/lib/sass/script/functions.rb +1343 -590
- data/lib/sass/script/lexer.rb +84 -52
- data/lib/sass/script/parser.rb +217 -97
- data/lib/sass/script/tree/funcall.rb +290 -0
- data/lib/sass/script/{interpolation.rb → tree/interpolation.rb} +34 -13
- data/lib/sass/script/tree/list_literal.rb +80 -0
- data/lib/sass/script/tree/literal.rb +47 -0
- data/lib/sass/script/tree/map_literal.rb +64 -0
- data/lib/sass/script/{node.rb → tree/node.rb} +22 -12
- data/lib/sass/script/{operation.rb → tree/operation.rb} +17 -25
- data/lib/sass/script/tree/selector.rb +30 -0
- data/lib/sass/script/{string_interpolation.rb → tree/string_interpolation.rb} +5 -4
- data/lib/sass/script/{unary_operation.rb → tree/unary_operation.rb} +14 -9
- data/lib/sass/script/tree/variable.rb +57 -0
- data/lib/sass/script/tree.rb +16 -0
- data/lib/sass/script/{arg_list.rb → value/arg_list.rb} +4 -24
- data/lib/sass/script/value/base.rb +248 -0
- data/lib/sass/script/value/bool.rb +36 -0
- data/lib/sass/script/{color.rb → value/color.rb} +239 -195
- data/lib/sass/script/value/helpers.rb +155 -0
- data/lib/sass/script/value/list.rb +119 -0
- data/lib/sass/script/value/map.rb +70 -0
- data/lib/sass/script/value/null.rb +45 -0
- data/lib/sass/script/{number.rb → value/number.rb} +91 -65
- data/lib/sass/script/{string.rb → value/string.rb} +9 -11
- data/lib/sass/script/value.rb +11 -0
- data/lib/sass/script.rb +35 -8
- data/lib/sass/scss/css_parser.rb +2 -1
- data/lib/sass/scss/parser.rb +338 -170
- data/lib/sass/scss/rx.rb +5 -6
- data/lib/sass/scss/script_lexer.rb +1 -0
- data/lib/sass/scss/script_parser.rb +1 -0
- data/lib/sass/scss/static_parser.rb +23 -6
- data/lib/sass/selector/abstract_sequence.rb +2 -2
- data/lib/sass/selector/comma_sequence.rb +21 -16
- data/lib/sass/selector/sequence.rb +60 -34
- data/lib/sass/selector/simple.rb +11 -12
- data/lib/sass/selector/simple_sequence.rb +55 -33
- data/lib/sass/selector.rb +52 -48
- data/lib/sass/source/map.rb +211 -0
- data/lib/sass/source/position.rb +39 -0
- data/lib/sass/source/range.rb +41 -0
- data/lib/sass/stack.rb +120 -0
- data/lib/sass/supports.rb +12 -13
- data/lib/sass/tree/at_root_node.rb +82 -0
- data/lib/sass/tree/comment_node.rb +3 -3
- data/lib/sass/tree/css_import_node.rb +11 -11
- data/lib/sass/tree/debug_node.rb +2 -2
- data/lib/sass/tree/directive_node.rb +13 -2
- data/lib/sass/tree/each_node.rb +8 -8
- data/lib/sass/tree/extend_node.rb +13 -6
- data/lib/sass/tree/for_node.rb +4 -4
- data/lib/sass/tree/function_node.rb +5 -4
- data/lib/sass/tree/if_node.rb +1 -1
- data/lib/sass/tree/import_node.rb +4 -5
- data/lib/sass/tree/media_node.rb +4 -14
- data/lib/sass/tree/mixin_def_node.rb +4 -4
- data/lib/sass/tree/mixin_node.rb +21 -8
- data/lib/sass/tree/node.rb +29 -12
- data/lib/sass/tree/prop_node.rb +38 -18
- data/lib/sass/tree/return_node.rb +3 -2
- data/lib/sass/tree/root_node.rb +19 -3
- data/lib/sass/tree/rule_node.rb +25 -17
- data/lib/sass/tree/supports_node.rb +0 -13
- data/lib/sass/tree/trace_node.rb +2 -1
- data/lib/sass/tree/variable_node.rb +9 -3
- data/lib/sass/tree/visitors/base.rb +6 -6
- data/lib/sass/tree/visitors/check_nesting.rb +12 -9
- data/lib/sass/tree/visitors/convert.rb +63 -38
- data/lib/sass/tree/visitors/cssize.rb +63 -23
- data/lib/sass/tree/visitors/deep_copy.rb +6 -5
- data/lib/sass/tree/visitors/extend.rb +7 -7
- data/lib/sass/tree/visitors/perform.rb +256 -151
- data/lib/sass/tree/visitors/set_options.rb +6 -6
- data/lib/sass/tree/visitors/to_css.rb +231 -81
- data/lib/sass/tree/warn_node.rb +2 -2
- data/lib/sass/tree/while_node.rb +2 -2
- data/lib/sass/util/multibyte_string_scanner.rb +2 -0
- data/lib/sass/util/normalized_map.rb +65 -0
- data/lib/sass/util/ordered_hash.rb +188 -0
- data/lib/sass/util/subset_map.rb +3 -2
- data/lib/sass/util/test.rb +9 -0
- data/lib/sass/util.rb +220 -34
- data/lib/sass/version.rb +9 -9
- data/lib/sass.rb +14 -7
- data/test/sass/compiler_test.rb +213 -0
- data/test/sass/conversion_test.rb +235 -9
- data/test/sass/engine_test.rb +230 -60
- data/test/sass/exec_test.rb +86 -0
- data/test/sass/extend_test.rb +215 -147
- data/test/sass/functions_test.rb +584 -99
- data/test/sass/importer_test.rb +165 -17
- data/test/sass/plugin_test.rb +19 -13
- data/test/sass/script_conversion_test.rb +40 -0
- data/test/sass/script_test.rb +231 -21
- data/test/sass/scss/css_test.rb +14 -5
- data/test/sass/scss/scss_test.rb +1266 -66
- data/test/sass/source_map_test.rb +879 -0
- data/test/sass/templates/bork5.sass +3 -0
- data/test/sass/util/normalized_map_test.rb +30 -0
- data/test/sass/util_test.rb +90 -0
- data/test/sass/value_helpers_test.rb +181 -0
- data/test/test_helper.rb +7 -2
- metadata +316 -291
- data/lib/sass/script/bool.rb +0 -18
- data/lib/sass/script/funcall.rb +0 -231
- data/lib/sass/script/list.rb +0 -84
- data/lib/sass/script/literal.rb +0 -239
- data/lib/sass/script/null.rb +0 -34
- data/lib/sass/script/variable.rb +0 -58
- data/test/Gemfile +0 -3
- data/vendor/listen/CHANGELOG.md +0 -221
- data/vendor/listen/CONTRIBUTING.md +0 -38
- data/vendor/listen/Gemfile +0 -30
- data/vendor/listen/Guardfile +0 -8
- data/vendor/listen/LICENSE +0 -20
- data/vendor/listen/README.md +0 -315
- data/vendor/listen/Rakefile +0 -47
- data/vendor/listen/Vagrantfile +0 -96
- data/vendor/listen/lib/listen/adapter.rb +0 -214
- data/vendor/listen/lib/listen/adapters/bsd.rb +0 -112
- data/vendor/listen/lib/listen/adapters/darwin.rb +0 -85
- data/vendor/listen/lib/listen/adapters/linux.rb +0 -113
- data/vendor/listen/lib/listen/adapters/polling.rb +0 -67
- data/vendor/listen/lib/listen/adapters/windows.rb +0 -87
- data/vendor/listen/lib/listen/dependency_manager.rb +0 -126
- data/vendor/listen/lib/listen/directory_record.rb +0 -371
- data/vendor/listen/lib/listen/listener.rb +0 -225
- data/vendor/listen/lib/listen/multi_listener.rb +0 -143
- data/vendor/listen/lib/listen/turnstile.rb +0 -28
- data/vendor/listen/lib/listen/version.rb +0 -3
- data/vendor/listen/lib/listen.rb +0 -40
- data/vendor/listen/listen.gemspec +0 -22
- data/vendor/listen/spec/listen/adapter_spec.rb +0 -183
- data/vendor/listen/spec/listen/adapters/bsd_spec.rb +0 -36
- data/vendor/listen/spec/listen/adapters/darwin_spec.rb +0 -37
- data/vendor/listen/spec/listen/adapters/linux_spec.rb +0 -47
- data/vendor/listen/spec/listen/adapters/polling_spec.rb +0 -68
- data/vendor/listen/spec/listen/adapters/windows_spec.rb +0 -30
- data/vendor/listen/spec/listen/dependency_manager_spec.rb +0 -107
- data/vendor/listen/spec/listen/directory_record_spec.rb +0 -1225
- data/vendor/listen/spec/listen/listener_spec.rb +0 -169
- data/vendor/listen/spec/listen/multi_listener_spec.rb +0 -174
- data/vendor/listen/spec/listen/turnstile_spec.rb +0 -56
- data/vendor/listen/spec/listen_spec.rb +0 -73
- data/vendor/listen/spec/spec_helper.rb +0 -21
- data/vendor/listen/spec/support/adapter_helper.rb +0 -629
- data/vendor/listen/spec/support/directory_record_helper.rb +0 -55
- data/vendor/listen/spec/support/fixtures_helper.rb +0 -29
- data/vendor/listen/spec/support/listeners_helper.rb +0 -156
- data/vendor/listen/spec/support/platform_helper.rb +0 -15
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
#!/usr/bin/env ruby
|
|
2
|
+
require File.dirname(__FILE__) + '/../../test_helper'
|
|
3
|
+
require 'sass/util/normalized_map'
|
|
4
|
+
|
|
5
|
+
class NormalizedMapTest < Test::Unit::TestCase
|
|
6
|
+
def test_basic_lifecycle
|
|
7
|
+
m = Sass::Util::NormalizedMap.new
|
|
8
|
+
m["a-b"] = 1
|
|
9
|
+
assert_equal ["a_b"], m.keys
|
|
10
|
+
assert_equal 1, m["a_b"]
|
|
11
|
+
assert_equal 1, m["a-b"]
|
|
12
|
+
assert m.has_key?("a_b")
|
|
13
|
+
assert m.has_key?("a-b")
|
|
14
|
+
assert_equal({"a-b" => 1}, m.as_stored)
|
|
15
|
+
assert_equal 1, m.delete("a-b")
|
|
16
|
+
assert !m.has_key?("a-b")
|
|
17
|
+
m["a_b"] = 2
|
|
18
|
+
assert_equal({"a_b" => 2}, m.as_stored)
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def test_dup
|
|
22
|
+
m = Sass::Util::NormalizedMap.new
|
|
23
|
+
m["a-b"] = 1
|
|
24
|
+
m2 = m.dup
|
|
25
|
+
m.delete("a-b")
|
|
26
|
+
assert !m.has_key?("a-b")
|
|
27
|
+
assert m2.has_key?("a-b")
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
end
|
data/test/sass/util_test.rb
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env ruby
|
|
2
2
|
require File.dirname(__FILE__) + '/../test_helper'
|
|
3
3
|
require 'pathname'
|
|
4
|
+
require 'tmpdir'
|
|
4
5
|
|
|
5
6
|
class UtilTest < Test::Unit::TestCase
|
|
6
7
|
include Sass::Util
|
|
@@ -310,4 +311,93 @@ class UtilTest < Test::Unit::TestCase
|
|
|
310
311
|
"UtilTest::FooBar must implement #foo") {FooBar.new.foo}
|
|
311
312
|
end
|
|
312
313
|
|
|
314
|
+
def test_json_escape_string
|
|
315
|
+
assert_json_string "", ""
|
|
316
|
+
alphanum = (("0".."9").to_a).concat(("a".."z").to_a).concat(("A".."Z").to_a).join
|
|
317
|
+
assert_json_string alphanum, alphanum
|
|
318
|
+
assert_json_string "'\"\\'", "'\\\"\\\\'"
|
|
319
|
+
assert_json_string "\b\f\n\r\t", "\\b\\f\\n\\r\\t"
|
|
320
|
+
end
|
|
321
|
+
|
|
322
|
+
def assert_json_string(source, target)
|
|
323
|
+
assert_equal target, json_escape_string(source)
|
|
324
|
+
end
|
|
325
|
+
|
|
326
|
+
def test_json_value_of
|
|
327
|
+
assert_json_value 0, "0"
|
|
328
|
+
assert_json_value(-42, "-42")
|
|
329
|
+
assert_json_value 42, "42"
|
|
330
|
+
assert_json_value true, "true"
|
|
331
|
+
assert_json_value false, "false"
|
|
332
|
+
assert_json_value "", "\"\""
|
|
333
|
+
assert_json_value "\"\"", "\"\\\"\\\"\""
|
|
334
|
+
assert_json_value "Multi\nLine\rString", "\"Multi\\nLine\\rString\""
|
|
335
|
+
assert_json_value [1, "some\nstr,ing", false, nil], "[1,\"some\\nstr,ing\",false,null]"
|
|
336
|
+
end
|
|
337
|
+
|
|
338
|
+
def assert_json_value(source, target)
|
|
339
|
+
assert_equal target, json_value_of(source)
|
|
340
|
+
end
|
|
341
|
+
|
|
342
|
+
def test_vlq
|
|
343
|
+
assert_equal "A", encode_vlq(0)
|
|
344
|
+
assert_equal "e", encode_vlq(15)
|
|
345
|
+
assert_equal "gB", encode_vlq(16)
|
|
346
|
+
assert_equal "wH", encode_vlq(120)
|
|
347
|
+
end
|
|
348
|
+
|
|
349
|
+
def assert_vlq_encodes(int, vlq)
|
|
350
|
+
vlq_from_decimal_array = decimal_array.map {|d| encode_vlq(d)}.join
|
|
351
|
+
decimal_array_from_vlq = decode_vlq(vlq)
|
|
352
|
+
assert_equal vlq, vlq_from_decimal_array
|
|
353
|
+
assert_equal decimal_array, decimal_array_from_vlq
|
|
354
|
+
end
|
|
355
|
+
|
|
356
|
+
def test_atomic_writes
|
|
357
|
+
# when using normal writes, this test fails about 90% of the time.
|
|
358
|
+
filename = File.join(Dir.tmpdir, "test_atomic")
|
|
359
|
+
5.times do
|
|
360
|
+
writes_to_perform = %w(1 2 3 4 5 6 7 8 9).map {|i| "#{i}\n" * 100_000}
|
|
361
|
+
threads = writes_to_perform.map do |to_write|
|
|
362
|
+
Thread.new do
|
|
363
|
+
# To see this test fail with a normal write,
|
|
364
|
+
# change to the standard file open mechanism:
|
|
365
|
+
# open(filename, "w") do |f|
|
|
366
|
+
atomic_create_and_write_file(filename) do |f|
|
|
367
|
+
f.write(to_write)
|
|
368
|
+
end
|
|
369
|
+
end
|
|
370
|
+
end
|
|
371
|
+
loop do
|
|
372
|
+
contents = File.exist?(filename) ? File.read(filename) : nil
|
|
373
|
+
next if contents.nil? || contents.size == 0
|
|
374
|
+
unless writes_to_perform.include?(contents)
|
|
375
|
+
if contents.size != writes_to_perform.first.size
|
|
376
|
+
fail "Incomplete write detected: was #{contents.size} characters, " +
|
|
377
|
+
"should have been #{writes_to_perform.first.size}"
|
|
378
|
+
else
|
|
379
|
+
fail "Corrupted read/write detected"
|
|
380
|
+
end
|
|
381
|
+
end
|
|
382
|
+
break if threads.all? {|t| !t.alive?}
|
|
383
|
+
end
|
|
384
|
+
threads.each {|t| t.join}
|
|
385
|
+
end
|
|
386
|
+
end
|
|
387
|
+
|
|
388
|
+
class FakeError < RuntimeError; end
|
|
389
|
+
|
|
390
|
+
def test_atomic_writes_handles_exceptions
|
|
391
|
+
filename = File.join(Dir.tmpdir, "test_atomic_exception")
|
|
392
|
+
FileUtils.rm_f(filename)
|
|
393
|
+
tmp_filename = nil
|
|
394
|
+
assert_raises FakeError do
|
|
395
|
+
atomic_create_and_write_file(filename) do |f|
|
|
396
|
+
tmp_filename = f.path
|
|
397
|
+
raise FakeError.new "Borken"
|
|
398
|
+
end
|
|
399
|
+
end
|
|
400
|
+
assert !File.exist?(filename)
|
|
401
|
+
assert !File.exist?(tmp_filename)
|
|
402
|
+
end
|
|
313
403
|
end
|
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
#!/usr/bin/env ruby
|
|
2
|
+
require File.dirname(__FILE__) + '/../test_helper'
|
|
3
|
+
|
|
4
|
+
class ValueHelpersTest < Test::Unit::TestCase
|
|
5
|
+
include Sass::Script
|
|
6
|
+
include Sass::Script::Value::Helpers
|
|
7
|
+
|
|
8
|
+
def test_bool
|
|
9
|
+
assert_same Value::Bool::TRUE, bool(true)
|
|
10
|
+
assert_same Value::Bool::FALSE, bool(false)
|
|
11
|
+
assert_same Value::Bool::FALSE, bool(nil)
|
|
12
|
+
assert_same Value::Bool::TRUE, bool(Object.new)
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def test_hex_color_with_three_digits
|
|
16
|
+
color = hex_color("F07")
|
|
17
|
+
assert_equal 255, color.red
|
|
18
|
+
assert_equal 0, color.green
|
|
19
|
+
assert_equal 119, color.blue
|
|
20
|
+
assert_equal 1, color.alpha
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def test_hex_color_without_hash
|
|
24
|
+
color_without_hash = hex_color("FF007F")
|
|
25
|
+
assert_equal 255, color_without_hash.red
|
|
26
|
+
assert_equal 0, color_without_hash.green
|
|
27
|
+
assert_equal 127, color_without_hash.blue
|
|
28
|
+
assert_equal 1, color_without_hash.alpha
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
def test_hex_color_with_hash
|
|
32
|
+
color_with_hash = hex_color("#FF007F")
|
|
33
|
+
assert_equal 255, color_with_hash.red
|
|
34
|
+
assert_equal 0, color_with_hash.green
|
|
35
|
+
assert_equal 127, color_with_hash.blue
|
|
36
|
+
assert_equal 1, color_with_hash.alpha
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
def test_malformed_hex_color
|
|
40
|
+
assert_raises ArgumentError do
|
|
41
|
+
hex_color("green")
|
|
42
|
+
end
|
|
43
|
+
assert_raises ArgumentError do
|
|
44
|
+
hex_color("#abcd")
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
def test_hex_color_with_alpha
|
|
50
|
+
color_with_alpha = hex_color("FF007F", 0.5)
|
|
51
|
+
assert_equal 0.5, color_with_alpha.alpha
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
def test_hex_color_alpha_enforces_0_to_1
|
|
55
|
+
assert_raises ArgumentError do
|
|
56
|
+
hex_color("FF007F", 50)
|
|
57
|
+
end
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
def test_hsl_color_without_alpha
|
|
61
|
+
no_alpha = hsl_color(1, 0.5, 1)
|
|
62
|
+
assert_equal 1, no_alpha.hue
|
|
63
|
+
assert_equal 0.5, no_alpha.saturation
|
|
64
|
+
assert_equal 1, no_alpha.lightness
|
|
65
|
+
assert_equal 1, no_alpha.alpha
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
def test_hsl_color_with_alpha
|
|
69
|
+
has_alpha = hsl_color(1, 0.5, 1, 0.5)
|
|
70
|
+
assert_equal 1, has_alpha.hue
|
|
71
|
+
assert_equal 0.5, has_alpha.saturation
|
|
72
|
+
assert_equal 1, has_alpha.lightness
|
|
73
|
+
assert_equal 0.5, has_alpha.alpha
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
def test_rgb_color_without_alpha
|
|
77
|
+
no_alpha = rgb_color(255, 0, 0)
|
|
78
|
+
assert_equal 255, no_alpha.red
|
|
79
|
+
assert_equal 0, no_alpha.green
|
|
80
|
+
assert_equal 0, no_alpha.blue
|
|
81
|
+
assert_equal 1, no_alpha.alpha
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
def test_rgb_color_with_alpha
|
|
85
|
+
has_alpha = rgb_color(255, 255, 255, 0.5)
|
|
86
|
+
assert_equal 255, has_alpha.red
|
|
87
|
+
assert_equal 255, has_alpha.green
|
|
88
|
+
assert_equal 255, has_alpha.blue
|
|
89
|
+
assert_equal 0.5, has_alpha.alpha
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
def test_number
|
|
93
|
+
n = number(1)
|
|
94
|
+
assert_equal 1, n.value
|
|
95
|
+
assert_equal "1", n.to_sass
|
|
96
|
+
end
|
|
97
|
+
|
|
98
|
+
def test_number_with_single_unit
|
|
99
|
+
n = number(1, "px")
|
|
100
|
+
assert_equal 1, n.value
|
|
101
|
+
assert_equal "1px", n.to_sass
|
|
102
|
+
end
|
|
103
|
+
|
|
104
|
+
def test_number_with_singal_numerator_and_denominator
|
|
105
|
+
ratio = number(1, "px/em")
|
|
106
|
+
assert_equal "1px/em", ratio.to_sass
|
|
107
|
+
end
|
|
108
|
+
|
|
109
|
+
def test_number_with_many_numerator_and_denominator_units
|
|
110
|
+
complex = number(1, "px*in/em*%")
|
|
111
|
+
assert_equal "1in*px/%*em", complex.to_sass
|
|
112
|
+
end
|
|
113
|
+
|
|
114
|
+
def test_number_with_many_numerator_and_denominator_units_with_spaces
|
|
115
|
+
complex = number(1, "px * in / em * %")
|
|
116
|
+
assert_equal "1in*px/%*em", complex.to_sass
|
|
117
|
+
end
|
|
118
|
+
|
|
119
|
+
def test_number_with_malformed_units
|
|
120
|
+
assert_raises ArgumentError do
|
|
121
|
+
number(1, "px/em/%")
|
|
122
|
+
end
|
|
123
|
+
assert_raises ArgumentError do
|
|
124
|
+
number(1, "/")
|
|
125
|
+
end
|
|
126
|
+
assert_raises ArgumentError do
|
|
127
|
+
number(1, "px/")
|
|
128
|
+
end
|
|
129
|
+
end
|
|
130
|
+
|
|
131
|
+
def test_space_list
|
|
132
|
+
l = list(number(1, "px"), hex_color("#f71"), :space)
|
|
133
|
+
l.options = {}
|
|
134
|
+
assert_kind_of Sass::Script::Value::List, l
|
|
135
|
+
assert_equal "1px #ff7711", l.to_sass
|
|
136
|
+
end
|
|
137
|
+
|
|
138
|
+
def test_comma_list
|
|
139
|
+
l = list(number(1, "px"), hex_color("#f71"), :comma)
|
|
140
|
+
l.options = {}
|
|
141
|
+
assert_kind_of Sass::Script::Value::List, l
|
|
142
|
+
assert_equal "1px, #ff7711", l.to_sass
|
|
143
|
+
end
|
|
144
|
+
|
|
145
|
+
def test_missing_list_type
|
|
146
|
+
assert_raises ArgumentError do
|
|
147
|
+
list(number(1, "px"), hex_color("#f71"))
|
|
148
|
+
end
|
|
149
|
+
end
|
|
150
|
+
|
|
151
|
+
def test_null
|
|
152
|
+
assert_kind_of Sass::Script::Value::Null, null
|
|
153
|
+
end
|
|
154
|
+
|
|
155
|
+
def test_quoted_string
|
|
156
|
+
s = quoted_string("sassy string")
|
|
157
|
+
s.options = {}
|
|
158
|
+
assert_kind_of Sass::Script::Value::String, s
|
|
159
|
+
assert_equal "sassy string", s.value
|
|
160
|
+
assert_equal :string, s.type
|
|
161
|
+
assert_equal '"sassy string"', s.to_sass
|
|
162
|
+
end
|
|
163
|
+
|
|
164
|
+
def test_identifier
|
|
165
|
+
s = identifier("a-sass-ident")
|
|
166
|
+
s.options = {}
|
|
167
|
+
assert_kind_of Sass::Script::Value::String, s
|
|
168
|
+
assert_equal "a-sass-ident", s.value
|
|
169
|
+
assert_equal :identifier, s.type
|
|
170
|
+
assert_equal "a-sass-ident", s.to_sass
|
|
171
|
+
end
|
|
172
|
+
|
|
173
|
+
def test_unquoted_string
|
|
174
|
+
s = unquoted_string("a-sass-ident")
|
|
175
|
+
s.options = {}
|
|
176
|
+
assert_kind_of Sass::Script::Value::String, s
|
|
177
|
+
assert_equal "a-sass-ident", s.value
|
|
178
|
+
assert_equal :identifier, s.type
|
|
179
|
+
assert_equal "a-sass-ident", s.to_sass
|
|
180
|
+
end
|
|
181
|
+
end
|
data/test/test_helper.rb
CHANGED
|
@@ -7,11 +7,16 @@ require 'sass'
|
|
|
7
7
|
require 'mathn' if ENV['MATHN'] == 'true'
|
|
8
8
|
|
|
9
9
|
Sass::RAILS_LOADED = true unless defined?(Sass::RAILS_LOADED)
|
|
10
|
-
|
|
10
|
+
|
|
11
|
+
if defined?(Encoding)
|
|
12
|
+
$-w, w = false, $-w
|
|
13
|
+
Encoding.default_external = 'UTF-8'
|
|
14
|
+
$-w = w
|
|
15
|
+
end
|
|
11
16
|
|
|
12
17
|
module Sass::Script::Functions
|
|
13
18
|
def option(name)
|
|
14
|
-
Sass::Script::String.new(@options[name.value.to_sym].to_s)
|
|
19
|
+
Sass::Script::Value::String.new(@options[name.value.to_sym].to_s)
|
|
15
20
|
end
|
|
16
21
|
end
|
|
17
22
|
|