oreorenasass 3.4.4 → 3.4.5
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/MIT-LICENSE +1 -1
- data/README.md +50 -70
- data/Rakefile +5 -26
- data/VERSION +1 -1
- data/VERSION_NAME +1 -1
- data/bin/sass +1 -1
- data/bin/scss +1 -1
- data/lib/sass.rb +12 -19
- data/lib/sass/cache_stores/base.rb +2 -2
- data/lib/sass/cache_stores/chain.rb +1 -2
- data/lib/sass/cache_stores/filesystem.rb +5 -1
- data/lib/sass/cache_stores/memory.rb +1 -1
- data/lib/sass/cache_stores/null.rb +2 -2
- data/lib/sass/callbacks.rb +0 -1
- data/lib/sass/css.rb +13 -11
- data/lib/sass/engine.rb +173 -424
- data/lib/sass/environment.rb +58 -148
- data/lib/sass/error.rb +14 -11
- data/lib/sass/exec.rb +703 -5
- data/lib/sass/importers/base.rb +6 -49
- data/lib/sass/importers/filesystem.rb +19 -44
- data/lib/sass/logger.rb +4 -1
- data/lib/sass/logger/base.rb +4 -2
- data/lib/sass/logger/log_level.rb +7 -3
- data/lib/sass/media.rb +23 -20
- data/lib/sass/plugin.rb +7 -7
- data/lib/sass/plugin/compiler.rb +145 -304
- data/lib/sass/plugin/configuration.rb +23 -18
- data/lib/sass/plugin/merb.rb +1 -1
- data/lib/sass/plugin/staleness_checker.rb +3 -3
- data/lib/sass/repl.rb +3 -3
- data/lib/sass/script.rb +8 -35
- data/lib/sass/script/{value/arg_list.rb → arg_list.rb} +25 -9
- data/lib/sass/script/bool.rb +18 -0
- data/lib/sass/script/color.rb +606 -0
- data/lib/sass/script/css_lexer.rb +4 -8
- data/lib/sass/script/css_parser.rb +2 -5
- data/lib/sass/script/funcall.rb +245 -0
- data/lib/sass/script/functions.rb +408 -1491
- data/lib/sass/script/interpolation.rb +79 -0
- data/lib/sass/script/lexer.rb +68 -172
- data/lib/sass/script/list.rb +85 -0
- data/lib/sass/script/literal.rb +221 -0
- data/lib/sass/script/{tree/node.rb → node.rb} +12 -22
- data/lib/sass/script/{value/null.rb → null.rb} +7 -14
- data/lib/sass/script/{value/number.rb → number.rb} +75 -152
- data/lib/sass/script/{tree/operation.rb → operation.rb} +24 -17
- data/lib/sass/script/parser.rb +110 -245
- data/lib/sass/script/string.rb +51 -0
- data/lib/sass/script/{tree/string_interpolation.rb → string_interpolation.rb} +4 -5
- data/lib/sass/script/{tree/unary_operation.rb → unary_operation.rb} +6 -6
- data/lib/sass/script/variable.rb +58 -0
- data/lib/sass/scss/css_parser.rb +3 -9
- data/lib/sass/scss/parser.rb +421 -450
- data/lib/sass/scss/rx.rb +11 -19
- data/lib/sass/scss/static_parser.rb +7 -321
- data/lib/sass/selector.rb +194 -68
- data/lib/sass/selector/abstract_sequence.rb +14 -29
- data/lib/sass/selector/comma_sequence.rb +25 -108
- data/lib/sass/selector/sequence.rb +66 -159
- data/lib/sass/selector/simple.rb +25 -23
- data/lib/sass/selector/simple_sequence.rb +63 -173
- data/lib/sass/shared.rb +1 -1
- data/lib/sass/supports.rb +15 -13
- data/lib/sass/tree/charset_node.rb +1 -1
- 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 +4 -21
- data/lib/sass/tree/each_node.rb +8 -8
- data/lib/sass/tree/extend_node.rb +7 -14
- data/lib/sass/tree/for_node.rb +4 -4
- data/lib/sass/tree/function_node.rb +4 -9
- data/lib/sass/tree/if_node.rb +1 -1
- data/lib/sass/tree/import_node.rb +5 -4
- data/lib/sass/tree/media_node.rb +14 -4
- data/lib/sass/tree/mixin_def_node.rb +4 -4
- data/lib/sass/tree/mixin_node.rb +8 -21
- data/lib/sass/tree/node.rb +12 -54
- data/lib/sass/tree/prop_node.rb +20 -39
- data/lib/sass/tree/return_node.rb +2 -3
- data/lib/sass/tree/root_node.rb +3 -19
- data/lib/sass/tree/rule_node.rb +22 -35
- data/lib/sass/tree/supports_node.rb +13 -0
- data/lib/sass/tree/trace_node.rb +1 -2
- data/lib/sass/tree/variable_node.rb +3 -9
- data/lib/sass/tree/visitors/base.rb +8 -5
- data/lib/sass/tree/visitors/check_nesting.rb +19 -49
- data/lib/sass/tree/visitors/convert.rb +56 -74
- data/lib/sass/tree/visitors/cssize.rb +74 -202
- data/lib/sass/tree/visitors/deep_copy.rb +5 -10
- data/lib/sass/tree/visitors/extend.rb +7 -7
- data/lib/sass/tree/visitors/perform.rb +185 -278
- data/lib/sass/tree/visitors/set_options.rb +6 -20
- data/lib/sass/tree/visitors/to_css.rb +81 -234
- data/lib/sass/tree/warn_node.rb +2 -2
- data/lib/sass/tree/while_node.rb +2 -2
- data/lib/sass/util.rb +152 -522
- data/lib/sass/util/multibyte_string_scanner.rb +0 -2
- data/lib/sass/util/subset_map.rb +3 -4
- data/lib/sass/util/test.rb +1 -0
- data/lib/sass/version.rb +22 -20
- data/test/Gemfile +3 -0
- data/test/Gemfile.lock +10 -0
- data/test/sass/cache_test.rb +20 -62
- data/test/sass/callbacks_test.rb +1 -1
- data/test/sass/conversion_test.rb +2 -296
- data/test/sass/css2sass_test.rb +4 -23
- data/test/sass/engine_test.rb +354 -411
- data/test/sass/exec_test.rb +2 -2
- data/test/sass/extend_test.rb +145 -324
- data/test/sass/functions_test.rb +86 -873
- data/test/sass/importer_test.rb +21 -241
- data/test/sass/logger_test.rb +1 -1
- data/test/sass/more_results/more_import.css +1 -1
- data/test/sass/plugin_test.rb +26 -16
- 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 +3 -3
- data/test/sass/results/scss_import.css +1 -1
- data/test/sass/script_conversion_test.rb +7 -36
- data/test/sass/script_test.rb +53 -485
- data/test/sass/scss/css_test.rb +28 -143
- data/test/sass/scss/rx_test.rb +4 -4
- data/test/sass/scss/scss_test.rb +325 -2119
- data/test/sass/templates/scss_import.scss +1 -2
- data/test/sass/test_helper.rb +1 -1
- data/test/sass/util/multibyte_string_scanner_test.rb +1 -1
- data/test/sass/util/subset_map_test.rb +2 -2
- data/test/sass/util_test.rb +1 -86
- data/test/test_helper.rb +8 -37
- metadata +19 -66
- data/lib/sass/exec/base.rb +0 -187
- data/lib/sass/exec/sass_convert.rb +0 -264
- data/lib/sass/exec/sass_scss.rb +0 -424
- data/lib/sass/features.rb +0 -47
- data/lib/sass/script/tree.rb +0 -16
- data/lib/sass/script/tree/funcall.rb +0 -306
- data/lib/sass/script/tree/interpolation.rb +0 -118
- data/lib/sass/script/tree/list_literal.rb +0 -77
- data/lib/sass/script/tree/literal.rb +0 -45
- data/lib/sass/script/tree/map_literal.rb +0 -64
- data/lib/sass/script/tree/selector.rb +0 -26
- data/lib/sass/script/tree/variable.rb +0 -57
- data/lib/sass/script/value.rb +0 -11
- data/lib/sass/script/value/base.rb +0 -240
- data/lib/sass/script/value/bool.rb +0 -35
- data/lib/sass/script/value/color.rb +0 -680
- data/lib/sass/script/value/helpers.rb +0 -262
- data/lib/sass/script/value/list.rb +0 -113
- data/lib/sass/script/value/map.rb +0 -70
- data/lib/sass/script/value/string.rb +0 -97
- data/lib/sass/selector/pseudo.rb +0 -256
- data/lib/sass/source/map.rb +0 -210
- data/lib/sass/source/position.rb +0 -39
- data/lib/sass/source/range.rb +0 -41
- data/lib/sass/stack.rb +0 -120
- data/lib/sass/tree/at_root_node.rb +0 -83
- data/lib/sass/tree/error_node.rb +0 -18
- data/lib/sass/tree/keyframe_rule_node.rb +0 -15
- data/lib/sass/util/cross_platform_random.rb +0 -19
- data/lib/sass/util/normalized_map.rb +0 -130
- data/lib/sass/util/ordered_hash.rb +0 -192
- data/test/sass/compiler_test.rb +0 -232
- data/test/sass/encoding_test.rb +0 -219
- data/test/sass/source_map_test.rb +0 -977
- data/test/sass/superselector_test.rb +0 -191
- data/test/sass/util/normalized_map_test.rb +0 -51
- data/test/sass/value_helpers_test.rb +0 -179
@@ -1,191 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
require File.dirname(__FILE__) + '/../test_helper'
|
3
|
-
|
4
|
-
class SuperselectorTest < MiniTest::Test
|
5
|
-
def test_superselector_reflexivity
|
6
|
-
assert_superselector 'h1', 'h1'
|
7
|
-
assert_superselector '.foo', '.foo'
|
8
|
-
assert_superselector '#foo > .bar, baz', '#foo > .bar, baz'
|
9
|
-
end
|
10
|
-
|
11
|
-
def test_smaller_compound_superselector
|
12
|
-
assert_strict_superselector '.foo', '.foo.bar'
|
13
|
-
assert_strict_superselector '.bar', '.foo.bar'
|
14
|
-
assert_strict_superselector 'a', 'a#b'
|
15
|
-
assert_strict_superselector '#b', 'a#b'
|
16
|
-
end
|
17
|
-
|
18
|
-
def test_smaller_complex_superselector
|
19
|
-
assert_strict_superselector '.bar', '.foo .bar'
|
20
|
-
assert_strict_superselector '.bar', '.foo > .bar'
|
21
|
-
assert_strict_superselector '.bar', '.foo + .bar'
|
22
|
-
assert_strict_superselector '.bar', '.foo ~ .bar'
|
23
|
-
end
|
24
|
-
|
25
|
-
def test_selector_list_subset_superselector
|
26
|
-
assert_strict_superselector '.foo, .bar', '.foo'
|
27
|
-
assert_strict_superselector '.foo, .bar, .baz', '.foo, .baz'
|
28
|
-
assert_strict_superselector '.foo, .baz, .qux', '.foo.bar, .baz.bang'
|
29
|
-
end
|
30
|
-
|
31
|
-
def test_leading_combinator_superselector
|
32
|
-
refute_superselector '+ .foo', '.foo'
|
33
|
-
refute_superselector '+ .foo', '.bar + .foo'
|
34
|
-
end
|
35
|
-
|
36
|
-
def test_trailing_combinator_superselector
|
37
|
-
refute_superselector '.foo +', '.foo'
|
38
|
-
refute_superselector '.foo +', '.foo + .bar'
|
39
|
-
end
|
40
|
-
|
41
|
-
def test_matching_combinator_superselector
|
42
|
-
assert_strict_superselector '.foo + .bar', '.foo + .bar.baz'
|
43
|
-
assert_strict_superselector '.foo + .bar', '.foo.baz + .bar'
|
44
|
-
assert_strict_superselector '.foo > .bar', '.foo > .bar.baz'
|
45
|
-
assert_strict_superselector '.foo > .bar', '.foo.baz > .bar'
|
46
|
-
assert_strict_superselector '.foo ~ .bar', '.foo ~ .bar.baz'
|
47
|
-
assert_strict_superselector '.foo ~ .bar', '.foo.baz ~ .bar'
|
48
|
-
end
|
49
|
-
|
50
|
-
def test_following_sibling_is_superselector_of_next_sibling
|
51
|
-
assert_strict_superselector '.foo ~ .bar', '.foo + .bar.baz'
|
52
|
-
assert_strict_superselector '.foo ~ .bar', '.foo.baz + .bar'
|
53
|
-
end
|
54
|
-
|
55
|
-
def test_descendant_is_superselector_of_child
|
56
|
-
assert_strict_superselector '.foo .bar', '.foo > .bar.baz'
|
57
|
-
assert_strict_superselector '.foo .bar', '.foo.baz > .bar'
|
58
|
-
end
|
59
|
-
|
60
|
-
def test_matches_is_superselector_of_constituent_selectors
|
61
|
-
%w[matches -moz-any].each do |name|
|
62
|
-
assert_strict_superselector ":#{name}(.foo, .bar)", '.foo.baz'
|
63
|
-
assert_strict_superselector ":#{name}(.foo, .bar)", '.bar.baz'
|
64
|
-
assert_strict_superselector ":#{name}(.foo .bar, .baz)", '.x .foo .bar'
|
65
|
-
end
|
66
|
-
end
|
67
|
-
|
68
|
-
def test_matches_is_superselector_of_subset_matches
|
69
|
-
assert_strict_superselector ':matches(.foo, .bar, .baz)', '#x:matches(.foo.bip, .baz.bang)'
|
70
|
-
assert_strict_superselector ':-moz-any(.foo, .bar, .baz)', '#x:-moz-any(.foo.bip, .baz.bang)'
|
71
|
-
end
|
72
|
-
|
73
|
-
def test_matches_is_not_superselector_of_any
|
74
|
-
refute_superselector ':matches(.foo, .bar)', ':-moz-any(.foo, .bar)'
|
75
|
-
refute_superselector ':-moz-any(.foo, .bar)', ':matches(.foo, .bar)'
|
76
|
-
end
|
77
|
-
|
78
|
-
def test_matches_can_be_subselector
|
79
|
-
%w[matches -moz-any].each do |name|
|
80
|
-
assert_superselector '.foo', ":#{name}(.foo.bar)"
|
81
|
-
assert_superselector '.foo.bar', ":#{name}(.foo.bar.baz)"
|
82
|
-
assert_superselector '.foo', ":#{name}(.foo.bar, .foo.baz)"
|
83
|
-
end
|
84
|
-
end
|
85
|
-
|
86
|
-
def test_any_is_not_superselector_of_different_prefix
|
87
|
-
refute_superselector ':-moz-any(.foo, .bar)', ':-s-any(.foo, .bar)'
|
88
|
-
end
|
89
|
-
|
90
|
-
def test_not_is_superselector_of_less_complex_not
|
91
|
-
assert_strict_superselector ':not(.foo.bar)', ':not(.foo)'
|
92
|
-
assert_strict_superselector ':not(.foo .bar)', ':not(.bar)'
|
93
|
-
end
|
94
|
-
|
95
|
-
def test_not_is_superselector_of_superset
|
96
|
-
assert_strict_superselector ':not(.foo.bip, .baz.bang)', ':not(.foo, .bar, .baz)'
|
97
|
-
assert_strict_superselector ':not(.foo.bip, .baz.bang)', ':not(.foo):not(.bar):not(.baz)'
|
98
|
-
end
|
99
|
-
|
100
|
-
def test_not_is_superselector_of_unique_selectors
|
101
|
-
assert_strict_superselector ':not(h1.foo)', 'a'
|
102
|
-
assert_strict_superselector ':not(.baz #foo)', '#bar'
|
103
|
-
end
|
104
|
-
|
105
|
-
def test_not_is_not_superselector_of_non_unique_selectors
|
106
|
-
refute_superselector ':not(.foo)', '.bar'
|
107
|
-
refute_superselector ':not(:hover)', ':visited'
|
108
|
-
end
|
109
|
-
|
110
|
-
def test_current_is_superselector_with_identical_innards
|
111
|
-
assert_superselector ':current(.foo)', ':current(.foo)'
|
112
|
-
end
|
113
|
-
|
114
|
-
def test_current_is_superselector_with_subselector_innards
|
115
|
-
refute_superselector ':current(.foo)', ':current(.foo.bar)'
|
116
|
-
refute_superselector ':current(.foo.bar)', ':current(.foo)'
|
117
|
-
end
|
118
|
-
|
119
|
-
def test_nth_match_is_superselector_of_subset_nth_match
|
120
|
-
assert_strict_superselector(
|
121
|
-
':nth-child(2n of .foo, .bar, .baz)', '#x:nth-child(2n of .foo.bip, .baz.bang)')
|
122
|
-
assert_strict_superselector(
|
123
|
-
':nth-last-child(2n of .foo, .bar, .baz)', '#x:nth-last-child(2n of .foo.bip, .baz.bang)')
|
124
|
-
end
|
125
|
-
|
126
|
-
def test_nth_match_is_not_superselector_of_nth_match_with_different_arg
|
127
|
-
refute_superselector(
|
128
|
-
':nth-child(2n of .foo, .bar, .baz)', '#x:nth-child(2n + 1 of .foo.bip, .baz.bang)')
|
129
|
-
refute_superselector(
|
130
|
-
':nth-last-child(2n of .foo, .bar, .baz)', '#x:nth-last-child(2n + 1 of .foo.bip, .baz.bang)')
|
131
|
-
end
|
132
|
-
|
133
|
-
def test_nth_match_is_not_superselector_of_nth_last_match
|
134
|
-
refute_superselector ':nth-child(2n of .foo, .bar)', ':nth-last-child(2n of .foo, .bar)'
|
135
|
-
refute_superselector ':nth-last-child(2n of .foo, .bar)', ':nth-child(2n of .foo, .bar)'
|
136
|
-
end
|
137
|
-
|
138
|
-
def test_nth_match_can_be_subselector
|
139
|
-
%w[nth-child nth-last-child].each do |name|
|
140
|
-
assert_superselector '.foo', ":#{name}(2n of .foo.bar)"
|
141
|
-
assert_superselector '.foo.bar', ":#{name}(2n of .foo.bar.baz)"
|
142
|
-
assert_superselector '.foo', ":#{name}(2n of .foo.bar, .foo.baz)"
|
143
|
-
end
|
144
|
-
end
|
145
|
-
|
146
|
-
def has_is_superselector_of_subset_host
|
147
|
-
assert_strict_superselector ':has(.foo, .bar, .baz)', ':has(.foo.bip, .baz.bang)'
|
148
|
-
end
|
149
|
-
|
150
|
-
def has_isnt_superselector_of_contained_selector
|
151
|
-
assert_strict_superselector ':has(.foo, .bar, .baz)', '.foo'
|
152
|
-
end
|
153
|
-
|
154
|
-
def host_is_superselector_of_subset_host
|
155
|
-
assert_strict_superselector ':host(.foo, .bar, .baz)', ':host(.foo.bip, .baz.bang)'
|
156
|
-
end
|
157
|
-
|
158
|
-
def host_isnt_superselector_of_contained_selector
|
159
|
-
assert_strict_superselector ':host(.foo, .bar, .baz)', '.foo'
|
160
|
-
end
|
161
|
-
|
162
|
-
def host_context_is_superselector_of_subset_host
|
163
|
-
assert_strict_superselector(
|
164
|
-
':host-context(.foo, .bar, .baz)', ':host-context(.foo.bip, .baz.bang)')
|
165
|
-
end
|
166
|
-
|
167
|
-
def host_context_isnt_superselector_of_contained_selector
|
168
|
-
assert_strict_superselector ':host-context(.foo, .bar, .baz)', '.foo'
|
169
|
-
end
|
170
|
-
|
171
|
-
private
|
172
|
-
|
173
|
-
def assert_superselector(superselector, subselector)
|
174
|
-
assert(parse_selector(superselector).superselector?(parse_selector(subselector)),
|
175
|
-
"Expected #{superselector} to be a superselector of #{subselector}.")
|
176
|
-
end
|
177
|
-
|
178
|
-
def refute_superselector(superselector, subselector)
|
179
|
-
assert(!parse_selector(superselector).superselector?(parse_selector(subselector)),
|
180
|
-
"Expected #{superselector} not to be a superselector of #{subselector}.")
|
181
|
-
end
|
182
|
-
|
183
|
-
def assert_strict_superselector(superselector, subselector)
|
184
|
-
assert_superselector(superselector, subselector)
|
185
|
-
refute_superselector(subselector, superselector)
|
186
|
-
end
|
187
|
-
|
188
|
-
def parse_selector(selector)
|
189
|
-
Sass::SCSS::CssParser.new(selector, filename_for_test, nil).parse_selector
|
190
|
-
end
|
191
|
-
end
|
@@ -1,51 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
require File.dirname(__FILE__) + '/../../test_helper'
|
3
|
-
require 'sass/util/normalized_map'
|
4
|
-
|
5
|
-
class NormalizedMapTest < MiniTest::Test
|
6
|
-
extend PublicApiLinter
|
7
|
-
|
8
|
-
lint_api Hash, Sass::Util::NormalizedMap
|
9
|
-
|
10
|
-
def lint_instance
|
11
|
-
Sass::Util::NormalizedMap.new
|
12
|
-
end
|
13
|
-
|
14
|
-
def test_normalized_map_errors_unless_explicitly_implemented
|
15
|
-
assert Sass.tests_running
|
16
|
-
assert_raise_message(ArgumentError, "The method invert must be implemented explicitly") do
|
17
|
-
Sass::Util::NormalizedMap.new.invert
|
18
|
-
end
|
19
|
-
end
|
20
|
-
|
21
|
-
def test_normalized_map_does_not_error_when_released
|
22
|
-
Sass.tests_running = false
|
23
|
-
assert_equal({}, Sass::Util::NormalizedMap.new.invert)
|
24
|
-
ensure
|
25
|
-
Sass.tests_running = true
|
26
|
-
end
|
27
|
-
|
28
|
-
def test_basic_lifecycle
|
29
|
-
m = Sass::Util::NormalizedMap.new
|
30
|
-
m["a-b"] = 1
|
31
|
-
assert_equal ["a_b"], m.keys
|
32
|
-
assert_equal 1, m["a_b"]
|
33
|
-
assert_equal 1, m["a-b"]
|
34
|
-
assert m.has_key?("a_b")
|
35
|
-
assert m.has_key?("a-b")
|
36
|
-
assert_equal({"a-b" => 1}, m.as_stored)
|
37
|
-
assert_equal 1, m.delete("a-b")
|
38
|
-
assert !m.has_key?("a-b")
|
39
|
-
m["a_b"] = 2
|
40
|
-
assert_equal({"a_b" => 2}, m.as_stored)
|
41
|
-
end
|
42
|
-
|
43
|
-
def test_dup
|
44
|
-
m = Sass::Util::NormalizedMap.new
|
45
|
-
m["a-b"] = 1
|
46
|
-
m2 = m.dup
|
47
|
-
m.delete("a-b")
|
48
|
-
assert !m.has_key?("a-b")
|
49
|
-
assert m2.has_key?("a-b")
|
50
|
-
end
|
51
|
-
end
|
@@ -1,179 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
require File.dirname(__FILE__) + '/../test_helper'
|
3
|
-
|
4
|
-
class ValueHelpersTest < MiniTest::Test
|
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_clamps_0_to_1
|
55
|
-
assert_equal 1, hex_color("FF007F", 50).alpha
|
56
|
-
end
|
57
|
-
|
58
|
-
def test_hsl_color_without_alpha
|
59
|
-
no_alpha = hsl_color(1, 0.5, 1)
|
60
|
-
assert_equal 1, no_alpha.hue
|
61
|
-
assert_equal 0.5, no_alpha.saturation
|
62
|
-
assert_equal 1, no_alpha.lightness
|
63
|
-
assert_equal 1, no_alpha.alpha
|
64
|
-
end
|
65
|
-
|
66
|
-
def test_hsl_color_with_alpha
|
67
|
-
has_alpha = hsl_color(1, 0.5, 1, 0.5)
|
68
|
-
assert_equal 1, has_alpha.hue
|
69
|
-
assert_equal 0.5, has_alpha.saturation
|
70
|
-
assert_equal 1, has_alpha.lightness
|
71
|
-
assert_equal 0.5, has_alpha.alpha
|
72
|
-
end
|
73
|
-
|
74
|
-
def test_rgb_color_without_alpha
|
75
|
-
no_alpha = rgb_color(255, 0, 0)
|
76
|
-
assert_equal 255, no_alpha.red
|
77
|
-
assert_equal 0, no_alpha.green
|
78
|
-
assert_equal 0, no_alpha.blue
|
79
|
-
assert_equal 1, no_alpha.alpha
|
80
|
-
end
|
81
|
-
|
82
|
-
def test_rgb_color_with_alpha
|
83
|
-
has_alpha = rgb_color(255, 255, 255, 0.5)
|
84
|
-
assert_equal 255, has_alpha.red
|
85
|
-
assert_equal 255, has_alpha.green
|
86
|
-
assert_equal 255, has_alpha.blue
|
87
|
-
assert_equal 0.5, has_alpha.alpha
|
88
|
-
end
|
89
|
-
|
90
|
-
def test_number
|
91
|
-
n = number(1)
|
92
|
-
assert_equal 1, n.value
|
93
|
-
assert_equal "1", n.to_sass
|
94
|
-
end
|
95
|
-
|
96
|
-
def test_number_with_single_unit
|
97
|
-
n = number(1, "px")
|
98
|
-
assert_equal 1, n.value
|
99
|
-
assert_equal "1px", n.to_sass
|
100
|
-
end
|
101
|
-
|
102
|
-
def test_number_with_singal_numerator_and_denominator
|
103
|
-
ratio = number(1, "px/em")
|
104
|
-
assert_equal "1px/em", ratio.to_sass
|
105
|
-
end
|
106
|
-
|
107
|
-
def test_number_with_many_numerator_and_denominator_units
|
108
|
-
complex = number(1, "px*in/em*%")
|
109
|
-
assert_equal "1in*px/%*em", complex.to_sass
|
110
|
-
end
|
111
|
-
|
112
|
-
def test_number_with_many_numerator_and_denominator_units_with_spaces
|
113
|
-
complex = number(1, "px * in / em * %")
|
114
|
-
assert_equal "1in*px/%*em", complex.to_sass
|
115
|
-
end
|
116
|
-
|
117
|
-
def test_number_with_malformed_units
|
118
|
-
assert_raises ArgumentError do
|
119
|
-
number(1, "px/em/%")
|
120
|
-
end
|
121
|
-
assert_raises ArgumentError do
|
122
|
-
number(1, "/")
|
123
|
-
end
|
124
|
-
assert_raises ArgumentError do
|
125
|
-
number(1, "px/")
|
126
|
-
end
|
127
|
-
end
|
128
|
-
|
129
|
-
def test_space_list
|
130
|
-
l = list(number(1, "px"), hex_color("#f71"), :space)
|
131
|
-
l.options = {}
|
132
|
-
assert_kind_of Sass::Script::Value::List, l
|
133
|
-
assert_equal "1px #f71", l.to_sass
|
134
|
-
end
|
135
|
-
|
136
|
-
def test_comma_list
|
137
|
-
l = list(number(1, "px"), hex_color("#f71"), :comma)
|
138
|
-
l.options = {}
|
139
|
-
assert_kind_of Sass::Script::Value::List, l
|
140
|
-
assert_equal "1px, #f71", l.to_sass
|
141
|
-
end
|
142
|
-
|
143
|
-
def test_missing_list_type
|
144
|
-
assert_raises ArgumentError do
|
145
|
-
list(number(1, "px"), hex_color("#f71"))
|
146
|
-
end
|
147
|
-
end
|
148
|
-
|
149
|
-
def test_null
|
150
|
-
assert_kind_of Sass::Script::Value::Null, null
|
151
|
-
end
|
152
|
-
|
153
|
-
def test_quoted_string
|
154
|
-
s = quoted_string("sassy string")
|
155
|
-
s.options = {}
|
156
|
-
assert_kind_of Sass::Script::Value::String, s
|
157
|
-
assert_equal "sassy string", s.value
|
158
|
-
assert_equal :string, s.type
|
159
|
-
assert_equal '"sassy string"', s.to_sass
|
160
|
-
end
|
161
|
-
|
162
|
-
def test_identifier
|
163
|
-
s = identifier("a-sass-ident")
|
164
|
-
s.options = {}
|
165
|
-
assert_kind_of Sass::Script::Value::String, s
|
166
|
-
assert_equal "a-sass-ident", s.value
|
167
|
-
assert_equal :identifier, s.type
|
168
|
-
assert_equal "a-sass-ident", s.to_sass
|
169
|
-
end
|
170
|
-
|
171
|
-
def test_unquoted_string
|
172
|
-
s = unquoted_string("a-sass-ident")
|
173
|
-
s.options = {}
|
174
|
-
assert_kind_of Sass::Script::Value::String, s
|
175
|
-
assert_equal "a-sass-ident", s.value
|
176
|
-
assert_equal :identifier, s.type
|
177
|
-
assert_equal "a-sass-ident", s.to_sass
|
178
|
-
end
|
179
|
-
end
|