sass 3.4.25 → 3.7.4

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.
Files changed (237) hide show
  1. checksums.yaml +4 -4
  2. data/CODE_OF_CONDUCT.md +1 -1
  3. data/CONTRIBUTING.md +3 -3
  4. data/README.md +17 -9
  5. data/VERSION +1 -1
  6. data/VERSION_DATE +1 -1
  7. data/VERSION_NAME +1 -1
  8. data/extra/sass-spec-ref.sh +9 -1
  9. data/lib/sass.rb +0 -7
  10. data/lib/sass/cache_stores/filesystem.rb +1 -1
  11. data/lib/sass/css.rb +1 -2
  12. data/lib/sass/engine.rb +39 -29
  13. data/lib/sass/environment.rb +26 -5
  14. data/lib/sass/error.rb +2 -2
  15. data/lib/sass/exec/base.rb +2 -13
  16. data/lib/sass/exec/sass_scss.rb +1 -5
  17. data/lib/sass/features.rb +1 -0
  18. data/lib/sass/importers/filesystem.rb +6 -4
  19. data/lib/sass/logger/base.rb +11 -0
  20. data/lib/sass/plugin/compiler.rb +20 -50
  21. data/lib/sass/plugin/configuration.rb +2 -2
  22. data/lib/sass/railtie.rb +1 -1
  23. data/lib/sass/script/css_parser.rb +4 -1
  24. data/lib/sass/script/functions.rb +308 -81
  25. data/lib/sass/script/lexer.rb +63 -9
  26. data/lib/sass/script/parser.rb +287 -118
  27. data/lib/sass/script/tree/funcall.rb +35 -34
  28. data/lib/sass/script/tree/interpolation.rb +0 -3
  29. data/lib/sass/script/tree/list_literal.rb +23 -8
  30. data/lib/sass/script/tree/map_literal.rb +2 -2
  31. data/lib/sass/script/tree/node.rb +0 -8
  32. data/lib/sass/script/tree/operation.rb +1 -8
  33. data/lib/sass/script/value.rb +2 -0
  34. data/lib/sass/script/value/arg_list.rb +1 -1
  35. data/lib/sass/script/value/base.rb +17 -0
  36. data/lib/sass/script/value/callable.rb +25 -0
  37. data/lib/sass/script/value/color.rb +8 -2
  38. data/lib/sass/script/value/function.rb +19 -0
  39. data/lib/sass/script/value/helpers.rb +37 -11
  40. data/lib/sass/script/value/list.rb +35 -14
  41. data/lib/sass/script/value/map.rb +2 -2
  42. data/lib/sass/script/value/number.rb +3 -2
  43. data/lib/sass/scss/css_parser.rb +6 -1
  44. data/lib/sass/scss/parser.rb +145 -56
  45. data/lib/sass/scss/rx.rb +5 -11
  46. data/lib/sass/scss/static_parser.rb +20 -42
  47. data/lib/sass/selector.rb +4 -0
  48. data/lib/sass/selector/abstract_sequence.rb +7 -6
  49. data/lib/sass/selector/comma_sequence.rb +9 -5
  50. data/lib/sass/selector/pseudo.rb +20 -3
  51. data/lib/sass/selector/sequence.rb +35 -10
  52. data/lib/sass/selector/simple.rb +9 -2
  53. data/lib/sass/selector/simple_sequence.rb +8 -4
  54. data/lib/sass/source/map.rb +2 -6
  55. data/lib/sass/stack.rb +21 -1
  56. data/lib/sass/tree/charset_node.rb +1 -1
  57. data/lib/sass/tree/prop_node.rb +45 -53
  58. data/lib/sass/tree/rule_node.rb +6 -8
  59. data/lib/sass/tree/visitors/check_nesting.rb +1 -1
  60. data/lib/sass/tree/visitors/convert.rb +2 -3
  61. data/lib/sass/tree/visitors/cssize.rb +4 -15
  62. data/lib/sass/tree/visitors/deep_copy.rb +1 -1
  63. data/lib/sass/tree/visitors/extend.rb +2 -8
  64. data/lib/sass/tree/visitors/perform.rb +23 -15
  65. data/lib/sass/tree/visitors/set_options.rb +1 -1
  66. data/lib/sass/tree/visitors/to_css.rb +49 -22
  67. data/lib/sass/util.rb +72 -310
  68. data/lib/sass/util/multibyte_string_scanner.rb +127 -131
  69. data/lib/sass/util/normalized_map.rb +1 -8
  70. data/lib/sass/version.rb +0 -4
  71. metadata +55 -202
  72. data/Rakefile +0 -453
  73. data/lib/sass/script/css_variable_warning.rb +0 -52
  74. data/lib/sass/util/cross_platform_random.rb +0 -19
  75. data/lib/sass/util/ordered_hash.rb +0 -192
  76. data/test/sass-spec.yml +0 -3
  77. data/test/sass/cache_test.rb +0 -131
  78. data/test/sass/callbacks_test.rb +0 -61
  79. data/test/sass/compiler_test.rb +0 -236
  80. data/test/sass/conversion_test.rb +0 -2188
  81. data/test/sass/css2sass_test.rb +0 -526
  82. data/test/sass/css_variable_test.rb +0 -132
  83. data/test/sass/data/hsl-rgb.txt +0 -319
  84. data/test/sass/encoding_test.rb +0 -219
  85. data/test/sass/engine_test.rb +0 -3447
  86. data/test/sass/exec_test.rb +0 -96
  87. data/test/sass/extend_test.rb +0 -1733
  88. data/test/sass/fixtures/test_staleness_check_across_importers.css +0 -1
  89. data/test/sass/fixtures/test_staleness_check_across_importers.scss +0 -1
  90. data/test/sass/functions_test.rb +0 -1977
  91. data/test/sass/importer_test.rb +0 -421
  92. data/test/sass/logger_test.rb +0 -58
  93. data/test/sass/mock_importer.rb +0 -49
  94. data/test/sass/more_results/more1.css +0 -9
  95. data/test/sass/more_results/more1_with_line_comments.css +0 -26
  96. data/test/sass/more_results/more_import.css +0 -29
  97. data/test/sass/more_templates/_more_partial.sass +0 -2
  98. data/test/sass/more_templates/more1.sass +0 -23
  99. data/test/sass/more_templates/more_import.sass +0 -11
  100. data/test/sass/plugin_test.rb +0 -556
  101. data/test/sass/results/alt.css +0 -4
  102. data/test/sass/results/basic.css +0 -9
  103. data/test/sass/results/cached_import_option.css +0 -3
  104. data/test/sass/results/compact.css +0 -5
  105. data/test/sass/results/complex.css +0 -86
  106. data/test/sass/results/compressed.css +0 -1
  107. data/test/sass/results/expanded.css +0 -19
  108. data/test/sass/results/filename_fn.css +0 -3
  109. data/test/sass/results/if.css +0 -3
  110. data/test/sass/results/import.css +0 -31
  111. data/test/sass/results/import_charset.css +0 -5
  112. data/test/sass/results/import_charset_1_8.css +0 -5
  113. data/test/sass/results/import_charset_ibm866.css +0 -5
  114. data/test/sass/results/import_content.css +0 -1
  115. data/test/sass/results/line_numbers.css +0 -49
  116. data/test/sass/results/mixins.css +0 -95
  117. data/test/sass/results/multiline.css +0 -24
  118. data/test/sass/results/nested.css +0 -22
  119. data/test/sass/results/options.css +0 -1
  120. data/test/sass/results/parent_ref.css +0 -13
  121. data/test/sass/results/script.css +0 -16
  122. data/test/sass/results/scss_import.css +0 -31
  123. data/test/sass/results/scss_importee.css +0 -2
  124. data/test/sass/results/subdir/nested_subdir/nested_subdir.css +0 -1
  125. data/test/sass/results/subdir/subdir.css +0 -3
  126. data/test/sass/results/units.css +0 -11
  127. data/test/sass/results/warn.css +0 -0
  128. data/test/sass/results/warn_imported.css +0 -0
  129. data/test/sass/script_conversion_test.rb +0 -357
  130. data/test/sass/script_test.rb +0 -1431
  131. data/test/sass/scss/css_test.rb +0 -1281
  132. data/test/sass/scss/rx_test.rb +0 -160
  133. data/test/sass/scss/scss_test.rb +0 -4205
  134. data/test/sass/scss/test_helper.rb +0 -37
  135. data/test/sass/source_map_test.rb +0 -1055
  136. data/test/sass/superselector_test.rb +0 -210
  137. data/test/sass/templates/_cached_import_option_partial.scss +0 -1
  138. data/test/sass/templates/_double_import_loop2.sass +0 -1
  139. data/test/sass/templates/_filename_fn_import.scss +0 -11
  140. data/test/sass/templates/_imported_charset_ibm866.sass +0 -4
  141. data/test/sass/templates/_imported_charset_utf8.sass +0 -4
  142. data/test/sass/templates/_imported_content.sass +0 -3
  143. data/test/sass/templates/_partial.sass +0 -2
  144. data/test/sass/templates/_same_name_different_partiality.scss +0 -1
  145. data/test/sass/templates/alt.sass +0 -16
  146. data/test/sass/templates/basic.sass +0 -23
  147. data/test/sass/templates/bork1.sass +0 -2
  148. data/test/sass/templates/bork2.sass +0 -2
  149. data/test/sass/templates/bork3.sass +0 -2
  150. data/test/sass/templates/bork4.sass +0 -2
  151. data/test/sass/templates/bork5.sass +0 -3
  152. data/test/sass/templates/cached_import_option.scss +0 -3
  153. data/test/sass/templates/compact.sass +0 -17
  154. data/test/sass/templates/complex.sass +0 -305
  155. data/test/sass/templates/compressed.sass +0 -15
  156. data/test/sass/templates/double_import_loop1.sass +0 -1
  157. data/test/sass/templates/expanded.sass +0 -17
  158. data/test/sass/templates/filename_fn.scss +0 -18
  159. data/test/sass/templates/if.sass +0 -11
  160. data/test/sass/templates/import.sass +0 -12
  161. data/test/sass/templates/import_charset.sass +0 -9
  162. data/test/sass/templates/import_charset_1_8.sass +0 -6
  163. data/test/sass/templates/import_charset_ibm866.sass +0 -11
  164. data/test/sass/templates/import_content.sass +0 -4
  165. data/test/sass/templates/importee.less +0 -2
  166. data/test/sass/templates/importee.sass +0 -19
  167. data/test/sass/templates/line_numbers.sass +0 -13
  168. data/test/sass/templates/mixin_bork.sass +0 -5
  169. data/test/sass/templates/mixins.sass +0 -76
  170. data/test/sass/templates/multiline.sass +0 -20
  171. data/test/sass/templates/nested.sass +0 -25
  172. data/test/sass/templates/nested_bork1.sass +0 -2
  173. data/test/sass/templates/nested_bork2.sass +0 -2
  174. data/test/sass/templates/nested_bork3.sass +0 -2
  175. data/test/sass/templates/nested_bork4.sass +0 -2
  176. data/test/sass/templates/nested_import.sass +0 -2
  177. data/test/sass/templates/nested_mixin_bork.sass +0 -6
  178. data/test/sass/templates/options.sass +0 -2
  179. data/test/sass/templates/parent_ref.sass +0 -25
  180. data/test/sass/templates/same_name_different_ext.sass +0 -2
  181. data/test/sass/templates/same_name_different_ext.scss +0 -1
  182. data/test/sass/templates/same_name_different_partiality.scss +0 -1
  183. data/test/sass/templates/script.sass +0 -101
  184. data/test/sass/templates/scss_import.scss +0 -12
  185. data/test/sass/templates/scss_importee.scss +0 -1
  186. data/test/sass/templates/single_import_loop.sass +0 -1
  187. data/test/sass/templates/subdir/import_up1.scss +0 -1
  188. data/test/sass/templates/subdir/import_up2.scss +0 -1
  189. data/test/sass/templates/subdir/nested_subdir/_nested_partial.sass +0 -2
  190. data/test/sass/templates/subdir/nested_subdir/nested_subdir.sass +0 -3
  191. data/test/sass/templates/subdir/subdir.sass +0 -6
  192. data/test/sass/templates/units.sass +0 -11
  193. data/test/sass/templates/warn.sass +0 -3
  194. data/test/sass/templates/warn_imported.sass +0 -4
  195. data/test/sass/test_helper.rb +0 -8
  196. data/test/sass/util/multibyte_string_scanner_test.rb +0 -155
  197. data/test/sass/util/normalized_map_test.rb +0 -51
  198. data/test/sass/util/subset_map_test.rb +0 -91
  199. data/test/sass/util_test.rb +0 -438
  200. data/test/sass/value_helpers_test.rb +0 -179
  201. data/test/test_helper.rb +0 -110
  202. data/vendor/listen/CHANGELOG.md +0 -1
  203. data/vendor/listen/CONTRIBUTING.md +0 -38
  204. data/vendor/listen/Gemfile +0 -20
  205. data/vendor/listen/Guardfile +0 -8
  206. data/vendor/listen/LICENSE +0 -20
  207. data/vendor/listen/README.md +0 -349
  208. data/vendor/listen/Rakefile +0 -5
  209. data/vendor/listen/Vagrantfile +0 -96
  210. data/vendor/listen/lib/listen.rb +0 -54
  211. data/vendor/listen/lib/listen/adapter.rb +0 -327
  212. data/vendor/listen/lib/listen/adapters/bsd.rb +0 -75
  213. data/vendor/listen/lib/listen/adapters/darwin.rb +0 -48
  214. data/vendor/listen/lib/listen/adapters/linux.rb +0 -81
  215. data/vendor/listen/lib/listen/adapters/polling.rb +0 -58
  216. data/vendor/listen/lib/listen/adapters/windows.rb +0 -91
  217. data/vendor/listen/lib/listen/directory_record.rb +0 -406
  218. data/vendor/listen/lib/listen/listener.rb +0 -323
  219. data/vendor/listen/lib/listen/turnstile.rb +0 -32
  220. data/vendor/listen/lib/listen/version.rb +0 -3
  221. data/vendor/listen/listen.gemspec +0 -28
  222. data/vendor/listen/spec/listen/adapter_spec.rb +0 -149
  223. data/vendor/listen/spec/listen/adapters/bsd_spec.rb +0 -36
  224. data/vendor/listen/spec/listen/adapters/darwin_spec.rb +0 -37
  225. data/vendor/listen/spec/listen/adapters/linux_spec.rb +0 -47
  226. data/vendor/listen/spec/listen/adapters/polling_spec.rb +0 -68
  227. data/vendor/listen/spec/listen/adapters/windows_spec.rb +0 -30
  228. data/vendor/listen/spec/listen/directory_record_spec.rb +0 -1250
  229. data/vendor/listen/spec/listen/listener_spec.rb +0 -258
  230. data/vendor/listen/spec/listen/turnstile_spec.rb +0 -56
  231. data/vendor/listen/spec/listen_spec.rb +0 -67
  232. data/vendor/listen/spec/spec_helper.rb +0 -25
  233. data/vendor/listen/spec/support/adapter_helper.rb +0 -666
  234. data/vendor/listen/spec/support/directory_record_helper.rb +0 -57
  235. data/vendor/listen/spec/support/fixtures_helper.rb +0 -29
  236. data/vendor/listen/spec/support/listeners_helper.rb +0 -179
  237. data/vendor/listen/spec/support/platform_helper.rb +0 -15
@@ -1,210 +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
- assert_strict_superselector '.foo .baz', '.foo > .bar > .baz'
59
- end
60
-
61
- def test_child_isnt_superselector_of_longer_child
62
- refute_superselector '.foo > .baz', '.foo > .bar > .baz'
63
- refute_superselector '.foo > .baz', '.foo > .bar .baz'
64
- end
65
-
66
- def test_following_sibling_isnt_superselector_of_longer_following_sibling
67
- refute_superselector '.foo + .baz', '.foo + .bar + .baz'
68
- refute_superselector '.foo + .baz', '.foo + .bar .baz'
69
- end
70
-
71
- def test_sibling_isnt_superselector_of_longer_sibling
72
- # This actually is a superselector, but it's a very narrow edge case and
73
- # detecting it is very difficult and may be exponential in the worst case.
74
- refute_superselector '.foo ~ .baz', '.foo ~ .bar ~ .baz'
75
-
76
- refute_superselector '.foo ~ .baz', '.foo ~ .bar .baz'
77
- end
78
-
79
- def test_matches_is_superselector_of_constituent_selectors
80
- %w[matches -moz-any].each do |name|
81
- assert_strict_superselector ":#{name}(.foo, .bar)", '.foo.baz'
82
- assert_strict_superselector ":#{name}(.foo, .bar)", '.bar.baz'
83
- assert_strict_superselector ":#{name}(.foo .bar, .baz)", '.x .foo .bar'
84
- end
85
- end
86
-
87
- def test_matches_is_superselector_of_subset_matches
88
- assert_strict_superselector ':matches(.foo, .bar, .baz)', '#x:matches(.foo.bip, .baz.bang)'
89
- assert_strict_superselector ':-moz-any(.foo, .bar, .baz)', '#x:-moz-any(.foo.bip, .baz.bang)'
90
- end
91
-
92
- def test_matches_is_not_superselector_of_any
93
- refute_superselector ':matches(.foo, .bar)', ':-moz-any(.foo, .bar)'
94
- refute_superselector ':-moz-any(.foo, .bar)', ':matches(.foo, .bar)'
95
- end
96
-
97
- def test_matches_can_be_subselector
98
- %w[matches -moz-any].each do |name|
99
- assert_superselector '.foo', ":#{name}(.foo.bar)"
100
- assert_superselector '.foo.bar', ":#{name}(.foo.bar.baz)"
101
- assert_superselector '.foo', ":#{name}(.foo.bar, .foo.baz)"
102
- end
103
- end
104
-
105
- def test_any_is_not_superselector_of_different_prefix
106
- refute_superselector ':-moz-any(.foo, .bar)', ':-s-any(.foo, .bar)'
107
- end
108
-
109
- def test_not_is_superselector_of_less_complex_not
110
- assert_strict_superselector ':not(.foo.bar)', ':not(.foo)'
111
- assert_strict_superselector ':not(.foo .bar)', ':not(.bar)'
112
- end
113
-
114
- def test_not_is_superselector_of_superset
115
- assert_strict_superselector ':not(.foo.bip, .baz.bang)', ':not(.foo, .bar, .baz)'
116
- assert_strict_superselector ':not(.foo.bip, .baz.bang)', ':not(.foo):not(.bar):not(.baz)'
117
- end
118
-
119
- def test_not_is_superselector_of_unique_selectors
120
- assert_strict_superselector ':not(h1.foo)', 'a'
121
- assert_strict_superselector ':not(.baz #foo)', '#bar'
122
- end
123
-
124
- def test_not_is_not_superselector_of_non_unique_selectors
125
- refute_superselector ':not(.foo)', '.bar'
126
- refute_superselector ':not(:hover)', ':visited'
127
- end
128
-
129
- def test_current_is_superselector_with_identical_innards
130
- assert_superselector ':current(.foo)', ':current(.foo)'
131
- end
132
-
133
- def test_current_is_superselector_with_subselector_innards
134
- refute_superselector ':current(.foo)', ':current(.foo.bar)'
135
- refute_superselector ':current(.foo.bar)', ':current(.foo)'
136
- end
137
-
138
- def test_nth_match_is_superselector_of_subset_nth_match
139
- assert_strict_superselector(
140
- ':nth-child(2n of .foo, .bar, .baz)', '#x:nth-child(2n of .foo.bip, .baz.bang)')
141
- assert_strict_superselector(
142
- ':nth-last-child(2n of .foo, .bar, .baz)', '#x:nth-last-child(2n of .foo.bip, .baz.bang)')
143
- end
144
-
145
- def test_nth_match_is_not_superselector_of_nth_match_with_different_arg
146
- refute_superselector(
147
- ':nth-child(2n of .foo, .bar, .baz)', '#x:nth-child(2n + 1 of .foo.bip, .baz.bang)')
148
- refute_superselector(
149
- ':nth-last-child(2n of .foo, .bar, .baz)', '#x:nth-last-child(2n + 1 of .foo.bip, .baz.bang)')
150
- end
151
-
152
- def test_nth_match_is_not_superselector_of_nth_last_match
153
- refute_superselector ':nth-child(2n of .foo, .bar)', ':nth-last-child(2n of .foo, .bar)'
154
- refute_superselector ':nth-last-child(2n of .foo, .bar)', ':nth-child(2n of .foo, .bar)'
155
- end
156
-
157
- def test_nth_match_can_be_subselector
158
- %w[nth-child nth-last-child].each do |name|
159
- assert_superselector '.foo', ":#{name}(2n of .foo.bar)"
160
- assert_superselector '.foo.bar', ":#{name}(2n of .foo.bar.baz)"
161
- assert_superselector '.foo', ":#{name}(2n of .foo.bar, .foo.baz)"
162
- end
163
- end
164
-
165
- def has_is_superselector_of_subset_host
166
- assert_strict_superselector ':has(.foo, .bar, .baz)', ':has(.foo.bip, .baz.bang)'
167
- end
168
-
169
- def has_isnt_superselector_of_contained_selector
170
- assert_strict_superselector ':has(.foo, .bar, .baz)', '.foo'
171
- end
172
-
173
- def host_is_superselector_of_subset_host
174
- assert_strict_superselector ':host(.foo, .bar, .baz)', ':host(.foo.bip, .baz.bang)'
175
- end
176
-
177
- def host_isnt_superselector_of_contained_selector
178
- assert_strict_superselector ':host(.foo, .bar, .baz)', '.foo'
179
- end
180
-
181
- def host_context_is_superselector_of_subset_host
182
- assert_strict_superselector(
183
- ':host-context(.foo, .bar, .baz)', ':host-context(.foo.bip, .baz.bang)')
184
- end
185
-
186
- def host_context_isnt_superselector_of_contained_selector
187
- assert_strict_superselector ':host-context(.foo, .bar, .baz)', '.foo'
188
- end
189
-
190
- private
191
-
192
- def assert_superselector(superselector, subselector)
193
- assert(parse_selector(superselector).superselector?(parse_selector(subselector)),
194
- "Expected #{superselector} to be a superselector of #{subselector}.")
195
- end
196
-
197
- def refute_superselector(superselector, subselector)
198
- assert(!parse_selector(superselector).superselector?(parse_selector(subselector)),
199
- "Expected #{superselector} not to be a superselector of #{subselector}.")
200
- end
201
-
202
- def assert_strict_superselector(superselector, subselector)
203
- assert_superselector(superselector, subselector)
204
- refute_superselector(subselector, superselector)
205
- end
206
-
207
- def parse_selector(selector)
208
- Sass::SCSS::CssParser.new(selector, filename_for_test, nil).parse_selector
209
- end
210
- end
@@ -1 +0,0 @@
1
- partial {value: whatever()}
@@ -1 +0,0 @@
1
- @import "double_import_loop1"
@@ -1,11 +0,0 @@
1
- @mixin imported-mixin {
2
- imported-mixin: filename();
3
- }
4
-
5
- @function imported-function() {
6
- @return filename();
7
- }
8
-
9
- filename {
10
- imported: filename();
11
- }
@@ -1,4 +0,0 @@
1
- @charset "IBM866"
2
-
3
- .bar
4
- a: �
@@ -1,4 +0,0 @@
1
- @charset "UTF-8"
2
-
3
- .bar
4
- a: щ
@@ -1,3 +0,0 @@
1
- @mixin foo
2
- a
3
- @content
@@ -1,2 +0,0 @@
1
- #foo
2
- background-color: #baf
@@ -1 +0,0 @@
1
- .foo {partial: yes}
@@ -1,16 +0,0 @@
1
- h1
2
- :float left
3
- :width 274px
4
- height: 75px
5
- margin: 0
6
- background:
7
- repeat: no-repeat
8
- :image none
9
- a:hover, a:visited
10
- color: green
11
- b:hover
12
- color: red
13
- :background-color green
14
- const
15
- nosp: 1 + 2
16
- sp : 1 + 2
@@ -1,23 +0,0 @@
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
@@ -1,2 +0,0 @@
1
- bork
2
- bork: $bork
@@ -1,2 +0,0 @@
1
- bork
2
- :bork: bork;
@@ -1,2 +0,0 @@
1
- bork
2
- bork:
@@ -1,2 +0,0 @@
1
-
2
- bork: blah
@@ -1,3 +0,0 @@
1
- bork
2
- /* foo */
3
- bork: $bork
@@ -1,3 +0,0 @@
1
- @import "cached_import_option_partial";
2
-
3
- main {value: whatever()}
@@ -1,17 +0,0 @@
1
- #main
2
- width: 15em
3
- color: #0000ff
4
- p
5
- border:
6
- style: dotted
7
- /* Nested comment
8
- More nested stuff
9
- width: 2px
10
- .cool
11
- width: 100px
12
-
13
- #left
14
- font:
15
- size: 2em
16
- weight: bold
17
- float: left
@@ -1,305 +0,0 @@
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