sass 3.3.0 → 3.4.25

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (208) hide show
  1. checksums.yaml +4 -4
  2. data/.yardopts +3 -1
  3. data/CODE_OF_CONDUCT.md +10 -0
  4. data/CONTRIBUTING.md +148 -0
  5. data/MIT-LICENSE +1 -1
  6. data/README.md +76 -62
  7. data/Rakefile +104 -24
  8. data/VERSION +1 -1
  9. data/VERSION_DATE +1 -1
  10. data/VERSION_NAME +1 -1
  11. data/bin/sass +1 -1
  12. data/bin/scss +1 -1
  13. data/extra/sass-spec-ref.sh +32 -0
  14. data/extra/update_watch.rb +1 -1
  15. data/lib/sass/cache_stores/filesystem.rb +9 -5
  16. data/lib/sass/cache_stores/memory.rb +4 -5
  17. data/lib/sass/callbacks.rb +2 -2
  18. data/lib/sass/css.rb +12 -13
  19. data/lib/sass/deprecation.rb +55 -0
  20. data/lib/sass/engine.rb +106 -70
  21. data/lib/sass/environment.rb +39 -19
  22. data/lib/sass/error.rb +17 -20
  23. data/lib/sass/exec/base.rb +199 -0
  24. data/lib/sass/exec/sass_convert.rb +283 -0
  25. data/lib/sass/exec/sass_scss.rb +440 -0
  26. data/lib/sass/exec.rb +5 -771
  27. data/lib/sass/features.rb +9 -2
  28. data/lib/sass/importers/base.rb +8 -3
  29. data/lib/sass/importers/filesystem.rb +30 -38
  30. data/lib/sass/logger/base.rb +8 -2
  31. data/lib/sass/logger/delayed.rb +50 -0
  32. data/lib/sass/logger.rb +8 -3
  33. data/lib/sass/media.rb +1 -4
  34. data/lib/sass/plugin/compiler.rb +224 -90
  35. data/lib/sass/plugin/configuration.rb +38 -22
  36. data/lib/sass/plugin/merb.rb +2 -2
  37. data/lib/sass/plugin/rack.rb +3 -3
  38. data/lib/sass/plugin/rails.rb +1 -1
  39. data/lib/sass/plugin/staleness_checker.rb +4 -4
  40. data/lib/sass/plugin.rb +6 -5
  41. data/lib/sass/script/css_lexer.rb +1 -1
  42. data/lib/sass/script/css_parser.rb +2 -3
  43. data/lib/sass/script/css_variable_warning.rb +52 -0
  44. data/lib/sass/script/functions.rb +739 -318
  45. data/lib/sass/script/lexer.rb +134 -54
  46. data/lib/sass/script/parser.rb +252 -56
  47. data/lib/sass/script/tree/funcall.rb +13 -6
  48. data/lib/sass/script/tree/interpolation.rb +127 -4
  49. data/lib/sass/script/tree/list_literal.rb +31 -4
  50. data/lib/sass/script/tree/literal.rb +4 -0
  51. data/lib/sass/script/tree/node.rb +21 -3
  52. data/lib/sass/script/tree/operation.rb +54 -1
  53. data/lib/sass/script/tree/selector.rb +26 -0
  54. data/lib/sass/script/tree/string_interpolation.rb +59 -38
  55. data/lib/sass/script/tree/variable.rb +1 -1
  56. data/lib/sass/script/tree.rb +1 -0
  57. data/lib/sass/script/value/base.rb +17 -14
  58. data/lib/sass/script/value/bool.rb +0 -5
  59. data/lib/sass/script/value/color.rb +78 -42
  60. data/lib/sass/script/value/helpers.rb +119 -2
  61. data/lib/sass/script/value/list.rb +0 -15
  62. data/lib/sass/script/value/map.rb +1 -1
  63. data/lib/sass/script/value/null.rb +0 -5
  64. data/lib/sass/script/value/number.rb +112 -31
  65. data/lib/sass/script/value/string.rb +102 -13
  66. data/lib/sass/script/value.rb +0 -1
  67. data/lib/sass/script.rb +3 -3
  68. data/lib/sass/scss/css_parser.rb +24 -4
  69. data/lib/sass/scss/parser.rb +290 -383
  70. data/lib/sass/scss/rx.rb +17 -9
  71. data/lib/sass/scss/static_parser.rb +306 -4
  72. data/lib/sass/scss.rb +0 -2
  73. data/lib/sass/selector/abstract_sequence.rb +35 -18
  74. data/lib/sass/selector/comma_sequence.rb +114 -19
  75. data/lib/sass/selector/pseudo.rb +266 -0
  76. data/lib/sass/selector/sequence.rb +146 -40
  77. data/lib/sass/selector/simple.rb +22 -33
  78. data/lib/sass/selector/simple_sequence.rb +122 -39
  79. data/lib/sass/selector.rb +57 -197
  80. data/lib/sass/shared.rb +2 -2
  81. data/lib/sass/source/map.rb +31 -14
  82. data/lib/sass/source/position.rb +4 -4
  83. data/lib/sass/stack.rb +2 -8
  84. data/lib/sass/supports.rb +10 -13
  85. data/lib/sass/tree/at_root_node.rb +1 -0
  86. data/lib/sass/tree/charset_node.rb +1 -1
  87. data/lib/sass/tree/comment_node.rb +1 -1
  88. data/lib/sass/tree/css_import_node.rb +9 -1
  89. data/lib/sass/tree/directive_node.rb +8 -2
  90. data/lib/sass/tree/error_node.rb +18 -0
  91. data/lib/sass/tree/extend_node.rb +1 -1
  92. data/lib/sass/tree/function_node.rb +9 -0
  93. data/lib/sass/tree/import_node.rb +6 -5
  94. data/lib/sass/tree/keyframe_rule_node.rb +15 -0
  95. data/lib/sass/tree/node.rb +5 -3
  96. data/lib/sass/tree/prop_node.rb +6 -7
  97. data/lib/sass/tree/rule_node.rb +26 -11
  98. data/lib/sass/tree/visitors/check_nesting.rb +56 -32
  99. data/lib/sass/tree/visitors/convert.rb +59 -44
  100. data/lib/sass/tree/visitors/cssize.rb +34 -30
  101. data/lib/sass/tree/visitors/deep_copy.rb +6 -1
  102. data/lib/sass/tree/visitors/extend.rb +15 -13
  103. data/lib/sass/tree/visitors/perform.rb +87 -50
  104. data/lib/sass/tree/visitors/set_options.rb +15 -1
  105. data/lib/sass/tree/visitors/to_css.rb +72 -43
  106. data/lib/sass/util/multibyte_string_scanner.rb +0 -2
  107. data/lib/sass/util/normalized_map.rb +0 -1
  108. data/lib/sass/util/subset_map.rb +2 -3
  109. data/lib/sass/util.rb +334 -154
  110. data/lib/sass/version.rb +7 -7
  111. data/lib/sass.rb +10 -8
  112. data/test/sass/cache_test.rb +62 -20
  113. data/test/sass/callbacks_test.rb +1 -1
  114. data/test/sass/compiler_test.rb +24 -11
  115. data/test/sass/conversion_test.rb +241 -50
  116. data/test/sass/css2sass_test.rb +73 -5
  117. data/test/sass/css_variable_test.rb +132 -0
  118. data/test/sass/encoding_test.rb +219 -0
  119. data/test/sass/engine_test.rb +343 -260
  120. data/test/sass/exec_test.rb +12 -2
  121. data/test/sass/extend_test.rb +333 -44
  122. data/test/sass/functions_test.rb +353 -260
  123. data/test/sass/importer_test.rb +40 -21
  124. data/test/sass/logger_test.rb +1 -1
  125. data/test/sass/more_results/more_import.css +1 -1
  126. data/test/sass/more_templates/more1.sass +10 -10
  127. data/test/sass/more_templates/more_import.sass +2 -2
  128. data/test/sass/plugin_test.rb +24 -21
  129. data/test/sass/results/compact.css +1 -1
  130. data/test/sass/results/complex.css +4 -4
  131. data/test/sass/results/expanded.css +1 -1
  132. data/test/sass/results/import.css +1 -1
  133. data/test/sass/results/import_charset_ibm866.css +2 -2
  134. data/test/sass/results/mixins.css +17 -17
  135. data/test/sass/results/nested.css +1 -1
  136. data/test/sass/results/parent_ref.css +2 -2
  137. data/test/sass/results/script.css +5 -5
  138. data/test/sass/results/scss_import.css +1 -1
  139. data/test/sass/script_conversion_test.rb +71 -39
  140. data/test/sass/script_test.rb +714 -123
  141. data/test/sass/scss/css_test.rb +213 -30
  142. data/test/sass/scss/rx_test.rb +8 -4
  143. data/test/sass/scss/scss_test.rb +766 -22
  144. data/test/sass/source_map_test.rb +263 -95
  145. data/test/sass/superselector_test.rb +210 -0
  146. data/test/sass/templates/_partial.sass +1 -1
  147. data/test/sass/templates/basic.sass +10 -10
  148. data/test/sass/templates/bork1.sass +1 -1
  149. data/test/sass/templates/bork5.sass +1 -1
  150. data/test/sass/templates/compact.sass +10 -10
  151. data/test/sass/templates/complex.sass +187 -187
  152. data/test/sass/templates/compressed.sass +10 -10
  153. data/test/sass/templates/expanded.sass +10 -10
  154. data/test/sass/templates/import.sass +2 -2
  155. data/test/sass/templates/importee.sass +3 -3
  156. data/test/sass/templates/mixins.sass +22 -22
  157. data/test/sass/templates/multiline.sass +4 -4
  158. data/test/sass/templates/nested.sass +13 -13
  159. data/test/sass/templates/parent_ref.sass +12 -12
  160. data/test/sass/templates/script.sass +70 -70
  161. data/test/sass/templates/scss_import.scss +2 -1
  162. data/test/sass/templates/subdir/nested_subdir/_nested_partial.sass +1 -1
  163. data/test/sass/templates/subdir/nested_subdir/nested_subdir.sass +2 -2
  164. data/test/sass/templates/subdir/subdir.sass +3 -3
  165. data/test/sass/templates/units.sass +10 -10
  166. data/test/sass/test_helper.rb +1 -1
  167. data/test/sass/util/multibyte_string_scanner_test.rb +11 -3
  168. data/test/sass/util/normalized_map_test.rb +1 -1
  169. data/test/sass/util/subset_map_test.rb +2 -2
  170. data/test/sass/util_test.rb +46 -45
  171. data/test/sass/value_helpers_test.rb +5 -7
  172. data/test/sass-spec.yml +3 -0
  173. data/test/test_helper.rb +7 -6
  174. data/vendor/listen/CHANGELOG.md +1 -228
  175. data/vendor/listen/Gemfile +5 -15
  176. data/vendor/listen/README.md +111 -77
  177. data/vendor/listen/Rakefile +0 -42
  178. data/vendor/listen/lib/listen/adapter.rb +195 -82
  179. data/vendor/listen/lib/listen/adapters/bsd.rb +27 -64
  180. data/vendor/listen/lib/listen/adapters/darwin.rb +21 -58
  181. data/vendor/listen/lib/listen/adapters/linux.rb +23 -55
  182. data/vendor/listen/lib/listen/adapters/polling.rb +25 -34
  183. data/vendor/listen/lib/listen/adapters/windows.rb +50 -46
  184. data/vendor/listen/lib/listen/directory_record.rb +96 -61
  185. data/vendor/listen/lib/listen/listener.rb +135 -37
  186. data/vendor/listen/lib/listen/turnstile.rb +9 -5
  187. data/vendor/listen/lib/listen/version.rb +1 -1
  188. data/vendor/listen/lib/listen.rb +33 -19
  189. data/vendor/listen/listen.gemspec +6 -0
  190. data/vendor/listen/spec/listen/adapter_spec.rb +43 -77
  191. data/vendor/listen/spec/listen/adapters/polling_spec.rb +8 -8
  192. data/vendor/listen/spec/listen/directory_record_spec.rb +81 -56
  193. data/vendor/listen/spec/listen/listener_spec.rb +128 -39
  194. data/vendor/listen/spec/listen_spec.rb +15 -21
  195. data/vendor/listen/spec/spec_helper.rb +4 -0
  196. data/vendor/listen/spec/support/adapter_helper.rb +52 -15
  197. data/vendor/listen/spec/support/directory_record_helper.rb +7 -5
  198. data/vendor/listen/spec/support/listeners_helper.rb +30 -7
  199. metadata +310 -300
  200. data/CONTRIBUTING +0 -3
  201. data/ext/mkrf_conf.rb +0 -27
  202. data/lib/sass/script/value/deprecated_false.rb +0 -55
  203. data/lib/sass/scss/script_lexer.rb +0 -15
  204. data/lib/sass/scss/script_parser.rb +0 -25
  205. data/vendor/listen/lib/listen/dependency_manager.rb +0 -126
  206. data/vendor/listen/lib/listen/multi_listener.rb +0 -143
  207. data/vendor/listen/spec/listen/dependency_manager_spec.rb +0 -107
  208. data/vendor/listen/spec/listen/multi_listener_spec.rb +0 -174
@@ -0,0 +1,210 @@
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,2 +1,2 @@
1
1
  #foo
2
- :background-color #baf
2
+ background-color: #baf
@@ -1,23 +1,23 @@
1
1
 
2
2
 
3
3
  body
4
- :font Arial
5
- :background blue
4
+ font: Arial
5
+ background: blue
6
6
 
7
7
  #page
8
- :width 700px
9
- :height 100
8
+ width: 700px
9
+ height: 100
10
10
  #header
11
- :height 300px
11
+ height: 300px
12
12
  h1
13
- :font-size 50px
14
- :color blue
13
+ font-size: 50px
14
+ color: blue
15
15
 
16
16
  #content.user.show
17
17
  #container.top
18
18
  #column.left
19
- :width 100px
19
+ width: 100px
20
20
  #column.right
21
- :width 600px
21
+ width: 600px
22
22
  #container.bottom
23
- :background brown
23
+ background: brown
@@ -1,2 +1,2 @@
1
1
  bork
2
- :bork $bork
2
+ bork: $bork
@@ -1,3 +1,3 @@
1
1
  bork
2
2
  /* foo */
3
- :bork $bork
3
+ bork: $bork
@@ -1,17 +1,17 @@
1
1
  #main
2
- :width 15em
3
- :color #0000ff
2
+ width: 15em
3
+ color: #0000ff
4
4
  p
5
- :border
6
- :style dotted
5
+ border:
6
+ style: dotted
7
7
  /* Nested comment
8
8
  More nested stuff
9
- :width 2px
9
+ width: 2px
10
10
  .cool
11
- :width 100px
11
+ width: 100px
12
12
 
13
13
  #left
14
- :font
15
- :size 2em
16
- :weight bold
17
- :float left
14
+ font:
15
+ size: 2em
16
+ weight: bold
17
+ float: left