oreorenasass 3.4.0
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 +7 -0
- data/.yardopts +11 -0
- data/CONTRIBUTING +3 -0
- data/MIT-LICENSE +20 -0
- data/README.md +221 -0
- data/Rakefile +370 -0
- data/VERSION +1 -0
- data/VERSION_NAME +1 -0
- data/bin/sass +13 -0
- data/bin/sass-convert +12 -0
- data/bin/scss +13 -0
- data/extra/update_watch.rb +13 -0
- data/init.rb +18 -0
- data/lib/sass/cache_stores/base.rb +88 -0
- data/lib/sass/cache_stores/chain.rb +34 -0
- data/lib/sass/cache_stores/filesystem.rb +60 -0
- data/lib/sass/cache_stores/memory.rb +47 -0
- data/lib/sass/cache_stores/null.rb +25 -0
- data/lib/sass/cache_stores.rb +15 -0
- data/lib/sass/callbacks.rb +67 -0
- data/lib/sass/css.rb +407 -0
- data/lib/sass/engine.rb +1181 -0
- data/lib/sass/environment.rb +191 -0
- data/lib/sass/error.rb +198 -0
- data/lib/sass/exec/base.rb +187 -0
- data/lib/sass/exec/sass_convert.rb +264 -0
- data/lib/sass/exec/sass_scss.rb +424 -0
- data/lib/sass/exec.rb +9 -0
- data/lib/sass/features.rb +47 -0
- data/lib/sass/importers/base.rb +182 -0
- data/lib/sass/importers/filesystem.rb +211 -0
- data/lib/sass/importers.rb +22 -0
- data/lib/sass/logger/base.rb +30 -0
- data/lib/sass/logger/log_level.rb +45 -0
- data/lib/sass/logger.rb +12 -0
- data/lib/sass/media.rb +210 -0
- data/lib/sass/plugin/compiler.rb +565 -0
- data/lib/sass/plugin/configuration.rb +118 -0
- data/lib/sass/plugin/generic.rb +15 -0
- data/lib/sass/plugin/merb.rb +48 -0
- data/lib/sass/plugin/rack.rb +60 -0
- data/lib/sass/plugin/rails.rb +47 -0
- data/lib/sass/plugin/staleness_checker.rb +199 -0
- data/lib/sass/plugin.rb +133 -0
- data/lib/sass/railtie.rb +10 -0
- data/lib/sass/repl.rb +57 -0
- data/lib/sass/root.rb +7 -0
- data/lib/sass/script/css_lexer.rb +33 -0
- data/lib/sass/script/css_parser.rb +34 -0
- data/lib/sass/script/functions.rb +2626 -0
- data/lib/sass/script/lexer.rb +449 -0
- data/lib/sass/script/parser.rb +637 -0
- data/lib/sass/script/tree/funcall.rb +306 -0
- data/lib/sass/script/tree/interpolation.rb +118 -0
- data/lib/sass/script/tree/list_literal.rb +77 -0
- data/lib/sass/script/tree/literal.rb +45 -0
- data/lib/sass/script/tree/map_literal.rb +64 -0
- data/lib/sass/script/tree/node.rb +109 -0
- data/lib/sass/script/tree/operation.rb +103 -0
- data/lib/sass/script/tree/selector.rb +26 -0
- data/lib/sass/script/tree/string_interpolation.rb +104 -0
- data/lib/sass/script/tree/unary_operation.rb +69 -0
- data/lib/sass/script/tree/variable.rb +57 -0
- data/lib/sass/script/tree.rb +16 -0
- data/lib/sass/script/value/arg_list.rb +36 -0
- data/lib/sass/script/value/base.rb +240 -0
- data/lib/sass/script/value/bool.rb +35 -0
- data/lib/sass/script/value/color.rb +680 -0
- data/lib/sass/script/value/helpers.rb +262 -0
- data/lib/sass/script/value/list.rb +113 -0
- data/lib/sass/script/value/map.rb +70 -0
- data/lib/sass/script/value/null.rb +44 -0
- data/lib/sass/script/value/number.rb +530 -0
- data/lib/sass/script/value/string.rb +97 -0
- data/lib/sass/script/value.rb +11 -0
- data/lib/sass/script.rb +66 -0
- data/lib/sass/scss/css_parser.rb +42 -0
- data/lib/sass/scss/parser.rb +1209 -0
- data/lib/sass/scss/rx.rb +141 -0
- data/lib/sass/scss/script_lexer.rb +15 -0
- data/lib/sass/scss/script_parser.rb +25 -0
- data/lib/sass/scss/static_parser.rb +368 -0
- data/lib/sass/scss.rb +16 -0
- data/lib/sass/selector/abstract_sequence.rb +109 -0
- data/lib/sass/selector/comma_sequence.rb +175 -0
- data/lib/sass/selector/pseudo.rb +256 -0
- data/lib/sass/selector/sequence.rb +600 -0
- data/lib/sass/selector/simple.rb +117 -0
- data/lib/sass/selector/simple_sequence.rb +325 -0
- data/lib/sass/selector.rb +326 -0
- data/lib/sass/shared.rb +76 -0
- data/lib/sass/source/map.rb +210 -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 +227 -0
- data/lib/sass/tree/at_root_node.rb +83 -0
- data/lib/sass/tree/charset_node.rb +22 -0
- data/lib/sass/tree/comment_node.rb +82 -0
- data/lib/sass/tree/content_node.rb +9 -0
- data/lib/sass/tree/css_import_node.rb +60 -0
- data/lib/sass/tree/debug_node.rb +18 -0
- data/lib/sass/tree/directive_node.rb +59 -0
- data/lib/sass/tree/each_node.rb +24 -0
- data/lib/sass/tree/error_node.rb +18 -0
- data/lib/sass/tree/extend_node.rb +43 -0
- data/lib/sass/tree/for_node.rb +36 -0
- data/lib/sass/tree/function_node.rb +39 -0
- data/lib/sass/tree/if_node.rb +52 -0
- data/lib/sass/tree/import_node.rb +74 -0
- data/lib/sass/tree/keyframe_rule_node.rb +15 -0
- data/lib/sass/tree/media_node.rb +48 -0
- data/lib/sass/tree/mixin_def_node.rb +38 -0
- data/lib/sass/tree/mixin_node.rb +52 -0
- data/lib/sass/tree/node.rb +238 -0
- data/lib/sass/tree/prop_node.rb +171 -0
- data/lib/sass/tree/return_node.rb +19 -0
- data/lib/sass/tree/root_node.rb +44 -0
- data/lib/sass/tree/rule_node.rb +145 -0
- data/lib/sass/tree/supports_node.rb +38 -0
- data/lib/sass/tree/trace_node.rb +33 -0
- data/lib/sass/tree/variable_node.rb +36 -0
- data/lib/sass/tree/visitors/base.rb +72 -0
- data/lib/sass/tree/visitors/check_nesting.rb +177 -0
- data/lib/sass/tree/visitors/convert.rb +334 -0
- data/lib/sass/tree/visitors/cssize.rb +369 -0
- data/lib/sass/tree/visitors/deep_copy.rb +107 -0
- data/lib/sass/tree/visitors/extend.rb +68 -0
- data/lib/sass/tree/visitors/perform.rb +539 -0
- data/lib/sass/tree/visitors/set_options.rb +139 -0
- data/lib/sass/tree/visitors/to_css.rb +381 -0
- data/lib/sass/tree/warn_node.rb +18 -0
- data/lib/sass/tree/while_node.rb +18 -0
- data/lib/sass/util/cross_platform_random.rb +19 -0
- data/lib/sass/util/multibyte_string_scanner.rb +157 -0
- data/lib/sass/util/normalized_map.rb +130 -0
- data/lib/sass/util/ordered_hash.rb +192 -0
- data/lib/sass/util/subset_map.rb +110 -0
- data/lib/sass/util/test.rb +9 -0
- data/lib/sass/util.rb +1318 -0
- data/lib/sass/version.rb +124 -0
- data/lib/sass.rb +102 -0
- data/rails/init.rb +1 -0
- data/test/sass/cache_test.rb +131 -0
- data/test/sass/callbacks_test.rb +61 -0
- data/test/sass/compiler_test.rb +232 -0
- data/test/sass/conversion_test.rb +2054 -0
- data/test/sass/css2sass_test.rb +477 -0
- data/test/sass/data/hsl-rgb.txt +319 -0
- data/test/sass/encoding_test.rb +219 -0
- data/test/sass/engine_test.rb +3301 -0
- data/test/sass/exec_test.rb +86 -0
- data/test/sass/extend_test.rb +1661 -0
- data/test/sass/fixtures/test_staleness_check_across_importers.css +1 -0
- data/test/sass/fixtures/test_staleness_check_across_importers.scss +1 -0
- data/test/sass/functions_test.rb +1926 -0
- data/test/sass/importer_test.rb +412 -0
- data/test/sass/logger_test.rb +58 -0
- data/test/sass/mock_importer.rb +49 -0
- data/test/sass/more_results/more1.css +9 -0
- data/test/sass/more_results/more1_with_line_comments.css +26 -0
- data/test/sass/more_results/more_import.css +29 -0
- data/test/sass/more_templates/_more_partial.sass +2 -0
- data/test/sass/more_templates/more1.sass +23 -0
- data/test/sass/more_templates/more_import.sass +11 -0
- data/test/sass/plugin_test.rb +554 -0
- data/test/sass/results/alt.css +4 -0
- data/test/sass/results/basic.css +9 -0
- data/test/sass/results/cached_import_option.css +3 -0
- data/test/sass/results/compact.css +5 -0
- data/test/sass/results/complex.css +86 -0
- data/test/sass/results/compressed.css +1 -0
- data/test/sass/results/expanded.css +19 -0
- data/test/sass/results/filename_fn.css +3 -0
- data/test/sass/results/if.css +3 -0
- data/test/sass/results/import.css +31 -0
- data/test/sass/results/import_charset.css +5 -0
- data/test/sass/results/import_charset_1_8.css +5 -0
- data/test/sass/results/import_charset_ibm866.css +5 -0
- data/test/sass/results/import_content.css +1 -0
- data/test/sass/results/line_numbers.css +49 -0
- data/test/sass/results/mixins.css +95 -0
- data/test/sass/results/multiline.css +24 -0
- data/test/sass/results/nested.css +22 -0
- data/test/sass/results/options.css +1 -0
- data/test/sass/results/parent_ref.css +13 -0
- data/test/sass/results/script.css +16 -0
- data/test/sass/results/scss_import.css +31 -0
- data/test/sass/results/scss_importee.css +2 -0
- data/test/sass/results/subdir/nested_subdir/nested_subdir.css +1 -0
- data/test/sass/results/subdir/subdir.css +3 -0
- data/test/sass/results/units.css +11 -0
- data/test/sass/results/warn.css +0 -0
- data/test/sass/results/warn_imported.css +0 -0
- data/test/sass/script_conversion_test.rb +328 -0
- data/test/sass/script_test.rb +1054 -0
- data/test/sass/scss/css_test.rb +1215 -0
- data/test/sass/scss/rx_test.rb +156 -0
- data/test/sass/scss/scss_test.rb +3900 -0
- data/test/sass/scss/test_helper.rb +37 -0
- data/test/sass/source_map_test.rb +977 -0
- data/test/sass/superselector_test.rb +191 -0
- data/test/sass/templates/_cached_import_option_partial.scss +1 -0
- data/test/sass/templates/_double_import_loop2.sass +1 -0
- data/test/sass/templates/_filename_fn_import.scss +11 -0
- data/test/sass/templates/_imported_charset_ibm866.sass +4 -0
- data/test/sass/templates/_imported_charset_utf8.sass +4 -0
- data/test/sass/templates/_imported_content.sass +3 -0
- data/test/sass/templates/_partial.sass +2 -0
- data/test/sass/templates/_same_name_different_partiality.scss +1 -0
- data/test/sass/templates/alt.sass +16 -0
- data/test/sass/templates/basic.sass +23 -0
- data/test/sass/templates/bork1.sass +2 -0
- data/test/sass/templates/bork2.sass +2 -0
- data/test/sass/templates/bork3.sass +2 -0
- data/test/sass/templates/bork4.sass +2 -0
- data/test/sass/templates/bork5.sass +3 -0
- data/test/sass/templates/cached_import_option.scss +3 -0
- data/test/sass/templates/compact.sass +17 -0
- data/test/sass/templates/complex.sass +305 -0
- data/test/sass/templates/compressed.sass +15 -0
- data/test/sass/templates/double_import_loop1.sass +1 -0
- data/test/sass/templates/expanded.sass +17 -0
- data/test/sass/templates/filename_fn.scss +18 -0
- data/test/sass/templates/if.sass +11 -0
- data/test/sass/templates/import.sass +12 -0
- data/test/sass/templates/import_charset.sass +9 -0
- data/test/sass/templates/import_charset_1_8.sass +6 -0
- data/test/sass/templates/import_charset_ibm866.sass +11 -0
- data/test/sass/templates/import_content.sass +4 -0
- data/test/sass/templates/importee.less +2 -0
- data/test/sass/templates/importee.sass +19 -0
- data/test/sass/templates/line_numbers.sass +13 -0
- data/test/sass/templates/mixin_bork.sass +5 -0
- data/test/sass/templates/mixins.sass +76 -0
- data/test/sass/templates/multiline.sass +20 -0
- data/test/sass/templates/nested.sass +25 -0
- data/test/sass/templates/nested_bork1.sass +2 -0
- data/test/sass/templates/nested_bork2.sass +2 -0
- data/test/sass/templates/nested_bork3.sass +2 -0
- data/test/sass/templates/nested_bork4.sass +2 -0
- data/test/sass/templates/nested_import.sass +2 -0
- data/test/sass/templates/nested_mixin_bork.sass +6 -0
- data/test/sass/templates/options.sass +2 -0
- data/test/sass/templates/parent_ref.sass +25 -0
- data/test/sass/templates/same_name_different_ext.sass +2 -0
- data/test/sass/templates/same_name_different_ext.scss +1 -0
- data/test/sass/templates/same_name_different_partiality.scss +1 -0
- data/test/sass/templates/script.sass +101 -0
- data/test/sass/templates/scss_import.scss +12 -0
- data/test/sass/templates/scss_importee.scss +1 -0
- data/test/sass/templates/single_import_loop.sass +1 -0
- data/test/sass/templates/subdir/import_up1.scss +1 -0
- data/test/sass/templates/subdir/import_up2.scss +1 -0
- data/test/sass/templates/subdir/nested_subdir/_nested_partial.sass +2 -0
- data/test/sass/templates/subdir/nested_subdir/nested_subdir.sass +3 -0
- data/test/sass/templates/subdir/subdir.sass +6 -0
- data/test/sass/templates/units.sass +11 -0
- data/test/sass/templates/warn.sass +3 -0
- data/test/sass/templates/warn_imported.sass +4 -0
- data/test/sass/test_helper.rb +8 -0
- data/test/sass/util/multibyte_string_scanner_test.rb +147 -0
- data/test/sass/util/normalized_map_test.rb +51 -0
- data/test/sass/util/subset_map_test.rb +91 -0
- data/test/sass/util_test.rb +467 -0
- data/test/sass/value_helpers_test.rb +179 -0
- data/test/test_helper.rb +109 -0
- metadata +386 -0
@@ -0,0 +1,191 @@
|
|
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
|
@@ -0,0 +1 @@
|
|
1
|
+
partial {value: whatever()}
|
@@ -0,0 +1 @@
|
|
1
|
+
@import "double_import_loop1"
|
@@ -0,0 +1 @@
|
|
1
|
+
.foo {partial: yes}
|
@@ -0,0 +1,23 @@
|
|
1
|
+
|
2
|
+
|
3
|
+
body
|
4
|
+
:font Arial
|
5
|
+
:background blue
|
6
|
+
|
7
|
+
#page
|
8
|
+
:width 700px
|
9
|
+
:height 100
|
10
|
+
#header
|
11
|
+
:height 300px
|
12
|
+
h1
|
13
|
+
:font-size 50px
|
14
|
+
:color blue
|
15
|
+
|
16
|
+
#content.user.show
|
17
|
+
#container.top
|
18
|
+
#column.left
|
19
|
+
:width 100px
|
20
|
+
#column.right
|
21
|
+
:width 600px
|
22
|
+
#container.bottom
|
23
|
+
:background brown
|
@@ -0,0 +1,305 @@
|
|
1
|
+
body
|
2
|
+
:margin 0
|
3
|
+
:font 0.85em "Lucida Grande", "Trebuchet MS", Verdana, sans-serif
|
4
|
+
:color #fff
|
5
|
+
:background url(/images/global_bg.gif)
|
6
|
+
|
7
|
+
#page
|
8
|
+
:width 900px
|
9
|
+
:margin 0 auto
|
10
|
+
:background #440008
|
11
|
+
:border-top
|
12
|
+
:width 5px
|
13
|
+
:style solid
|
14
|
+
:color #ff8500
|
15
|
+
|
16
|
+
#header
|
17
|
+
:height 75px
|
18
|
+
:padding 0
|
19
|
+
h1
|
20
|
+
:float left
|
21
|
+
:width 274px
|
22
|
+
:height 75px
|
23
|
+
:margin 0
|
24
|
+
:background
|
25
|
+
:image url(/images/global_logo.gif)
|
26
|
+
/* Crazy nested comment
|
27
|
+
:repeat no-repeat
|
28
|
+
:text-indent -9999px
|
29
|
+
.status
|
30
|
+
:float right
|
31
|
+
:padding
|
32
|
+
:top .5em
|
33
|
+
:left .5em
|
34
|
+
:right .5em
|
35
|
+
:bottom 0
|
36
|
+
p
|
37
|
+
:float left
|
38
|
+
:margin
|
39
|
+
:top 0
|
40
|
+
:right 0.5em
|
41
|
+
:bottom 0
|
42
|
+
:left 0
|
43
|
+
ul
|
44
|
+
:float left
|
45
|
+
:margin 0
|
46
|
+
:padding 0
|
47
|
+
li
|
48
|
+
:list-style-type none
|
49
|
+
:display inline
|
50
|
+
:margin 0 5px
|
51
|
+
a:link, a:visited
|
52
|
+
:color #ff8500
|
53
|
+
:text-decoration none
|
54
|
+
a:hover
|
55
|
+
:text-decoration underline
|
56
|
+
.search
|
57
|
+
:float right
|
58
|
+
:clear right
|
59
|
+
:margin 12px 0 0 0
|
60
|
+
form
|
61
|
+
:margin 0
|
62
|
+
input
|
63
|
+
:margin 0 3px 0 0
|
64
|
+
:padding 2px
|
65
|
+
:border none
|
66
|
+
|
67
|
+
#menu
|
68
|
+
:clear both
|
69
|
+
:text-align right
|
70
|
+
:height 20px
|
71
|
+
:border-bottom 5px solid #006b95
|
72
|
+
:background #00a4e4
|
73
|
+
.contests
|
74
|
+
ul
|
75
|
+
:margin 0 5px 0 0
|
76
|
+
:padding 0
|
77
|
+
li
|
78
|
+
:list-style-type none
|
79
|
+
:margin 0 5px
|
80
|
+
:padding 5px 5px 0 5px
|
81
|
+
:display inline
|
82
|
+
:font-size 1.1em
|
83
|
+
// This comment is properly indented
|
84
|
+
:color #fff
|
85
|
+
:background #00a4e4
|
86
|
+
a:link, a:visited
|
87
|
+
:color #fff
|
88
|
+
:text-decoration none
|
89
|
+
:font-weight bold
|
90
|
+
a:hover
|
91
|
+
:text-decoration underline
|
92
|
+
|
93
|
+
//General content information
|
94
|
+
#content
|
95
|
+
:clear both
|
96
|
+
.container
|
97
|
+
:clear both
|
98
|
+
.column
|
99
|
+
:float left
|
100
|
+
.right
|
101
|
+
:float right
|
102
|
+
a:link, a:visited
|
103
|
+
:color #93d700
|
104
|
+
:text-decoration none
|
105
|
+
a:hover
|
106
|
+
:text-decoration underline
|
107
|
+
|
108
|
+
// A hard tab:
|
109
|
+
|
110
|
+
|
111
|
+
#content
|
112
|
+
p, div
|
113
|
+
:width 40em
|
114
|
+
li, dt, dd
|
115
|
+
:color #ddffdd
|
116
|
+
:background-color #4792bb
|
117
|
+
.container.video
|
118
|
+
.column.left
|
119
|
+
:width 200px
|
120
|
+
.box
|
121
|
+
:margin-top 10px
|
122
|
+
p
|
123
|
+
:margin 0 1em auto 1em
|
124
|
+
.box.participants
|
125
|
+
img
|
126
|
+
:float left
|
127
|
+
:margin 0 1em auto 1em
|
128
|
+
:border 1px solid #6e000d
|
129
|
+
:style solid
|
130
|
+
h2
|
131
|
+
:margin 0 0 10px 0
|
132
|
+
:padding 0.5em
|
133
|
+
/* The background image is a gif!
|
134
|
+
:background #6e000d url(/images/hdr_participant.gif) 2px 2px no-repeat
|
135
|
+
/* Okay check this out
|
136
|
+
Multiline comments
|
137
|
+
Wow dude
|
138
|
+
I mean seriously, WOW
|
139
|
+
:text-indent -9999px
|
140
|
+
// And also...
|
141
|
+
Multiline comments that don't output!
|
142
|
+
Snazzy, no?
|
143
|
+
:border
|
144
|
+
:top
|
145
|
+
:width 5px
|
146
|
+
:style solid
|
147
|
+
:color #a20013
|
148
|
+
:right
|
149
|
+
:width 1px
|
150
|
+
:style dotted
|
151
|
+
.column.middle
|
152
|
+
:width 500px
|
153
|
+
.column.right
|
154
|
+
:width 200px
|
155
|
+
.box
|
156
|
+
:margin-top 0
|
157
|
+
p
|
158
|
+
:margin 0 1em auto 1em
|
159
|
+
.column
|
160
|
+
p
|
161
|
+
:margin-top 0
|
162
|
+
|
163
|
+
#content.contests
|
164
|
+
.container.information
|
165
|
+
.column.right
|
166
|
+
.box
|
167
|
+
:margin 1em 0
|
168
|
+
.box.videos
|
169
|
+
.thumbnail img
|
170
|
+
:width 200px
|
171
|
+
:height 150px
|
172
|
+
:margin-bottom 5px
|
173
|
+
a:link, a:visited
|
174
|
+
:color #93d700
|
175
|
+
:text-decoration none
|
176
|
+
a:hover
|
177
|
+
:text-decoration underline
|
178
|
+
.box.votes
|
179
|
+
a
|
180
|
+
:display block
|
181
|
+
:width 200px
|
182
|
+
:height 60px
|
183
|
+
:margin 15px 0
|
184
|
+
:background url(/images/btn_votenow.gif) no-repeat
|
185
|
+
:text-indent -9999px
|
186
|
+
:outline none
|
187
|
+
:border none
|
188
|
+
h2
|
189
|
+
:margin 52px 0 10px 0
|
190
|
+
:padding 0.5em
|
191
|
+
:background #6e000d url(/images/hdr_videostats.gif) 2px 2px no-repeat
|
192
|
+
:text-indent -9999px
|
193
|
+
:border-top 5px solid #a20013
|
194
|
+
|
195
|
+
#content.contests
|
196
|
+
.container.video
|
197
|
+
.box.videos
|
198
|
+
h2
|
199
|
+
:margin 0
|
200
|
+
:padding 0.5em
|
201
|
+
:background #6e000d url(/images/hdr_newestclips.gif) 2px 2px no-repeat
|
202
|
+
:text-indent -9999px
|
203
|
+
:border-top 5px solid #a20013
|
204
|
+
table
|
205
|
+
:width 100
|
206
|
+
td
|
207
|
+
:padding 1em
|
208
|
+
:width 25
|
209
|
+
:vertical-align top
|
210
|
+
p
|
211
|
+
:margin 0 0 5px 0
|
212
|
+
a:link, a:visited
|
213
|
+
:color #93d700
|
214
|
+
:text-decoration none
|
215
|
+
a:hover
|
216
|
+
:text-decoration underline
|
217
|
+
.thumbnail
|
218
|
+
:float left
|
219
|
+
img
|
220
|
+
:width 80px
|
221
|
+
:height 60px
|
222
|
+
:margin 0 10px 0 0
|
223
|
+
:border 1px solid #6e000d
|
224
|
+
|
225
|
+
#content
|
226
|
+
.container.comments
|
227
|
+
.column
|
228
|
+
:margin-top 15px
|
229
|
+
.column.left
|
230
|
+
:width 600px
|
231
|
+
.box
|
232
|
+
ol
|
233
|
+
:margin 0
|
234
|
+
:padding 0
|
235
|
+
li
|
236
|
+
:list-style-type none
|
237
|
+
:padding 10px
|
238
|
+
:margin 0 0 1em 0
|
239
|
+
:background #6e000d
|
240
|
+
:border-top 5px solid #a20013
|
241
|
+
div
|
242
|
+
:margin-bottom 1em
|
243
|
+
ul
|
244
|
+
:text-align right
|
245
|
+
li
|
246
|
+
:display inline
|
247
|
+
:border none
|
248
|
+
:padding 0
|
249
|
+
.column.right
|
250
|
+
:width 290px
|
251
|
+
:padding-left 10px
|
252
|
+
h2
|
253
|
+
:margin 0
|
254
|
+
:padding 0.5em
|
255
|
+
:background #6e000d url(/images/hdr_addcomment.gif) 2px 2px no-repeat
|
256
|
+
:text-indent -9999px
|
257
|
+
:border-top 5px solid #a20013
|
258
|
+
.box
|
259
|
+
textarea
|
260
|
+
:width 290px
|
261
|
+
:height 100px
|
262
|
+
:border none
|
263
|
+
|
264
|
+
#footer
|
265
|
+
:margin-top 10px
|
266
|
+
:padding 1.2em 1.5em
|
267
|
+
:background #ff8500
|
268
|
+
ul
|
269
|
+
:margin 0
|
270
|
+
:padding 0
|
271
|
+
:list-style-type none
|
272
|
+
li
|
273
|
+
:display inline
|
274
|
+
:margin 0 0.5em
|
275
|
+
:color #440008
|
276
|
+
ul.links
|
277
|
+
:float left
|
278
|
+
a:link, a:visited
|
279
|
+
:color #440008
|
280
|
+
:text-decoration none
|
281
|
+
a:hover
|
282
|
+
:text-decoration underline
|
283
|
+
ul.copyright
|
284
|
+
:float right
|
285
|
+
|
286
|
+
|
287
|
+
.clear
|
288
|
+
:clear both
|
289
|
+
|
290
|
+
.centered
|
291
|
+
:text-align center
|
292
|
+
|
293
|
+
img
|
294
|
+
:border none
|
295
|
+
|
296
|
+
button.short
|
297
|
+
:width 60px
|
298
|
+
:height 22px
|
299
|
+
:padding 0 0 2px 0
|
300
|
+
:color #fff
|
301
|
+
:border none
|
302
|
+
:background url(/images/btn_short.gif) no-repeat
|
303
|
+
|
304
|
+
table
|
305
|
+
:border-collapse collapse
|