compass 0.11.alpha.1 → 0.11.alpha.3

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 (39) hide show
  1. data/Rakefile +21 -1
  2. data/VERSION.yml +1 -1
  3. data/bin/compass +17 -2
  4. data/features/command_line.feature +15 -24
  5. data/features/step_definitions/command_line_steps.rb +3 -3
  6. data/frameworks/compass/stylesheets/_lemonade.scss +38 -0
  7. data/frameworks/compass/stylesheets/compass/css3/_background-size.scss +3 -1
  8. data/frameworks/compass/stylesheets/compass/css3/_box-shadow.scss +1 -1
  9. data/frameworks/compass/stylesheets/compass/css3/_images.scss +8 -6
  10. data/frameworks/compass/stylesheets/compass/css3/_transform.scss +3 -3
  11. data/frameworks/compass/stylesheets/compass/utilities/sprites/_base.scss +40 -0
  12. data/frameworks/compass/templates/pie/PIE.htc +69 -69
  13. data/frameworks/compass/templates/pie/manifest.rb +2 -2
  14. data/lib/compass.rb +3 -2
  15. data/lib/compass/app_integration/stand_alone/installer.rb +1 -1
  16. data/lib/compass/commands.rb +1 -1
  17. data/lib/compass/commands/sprite.rb +87 -0
  18. data/lib/compass/configuration/adapters.rb +3 -0
  19. data/lib/compass/dependencies.rb +7 -1
  20. data/lib/compass/installers/bare_installer.rb +1 -1
  21. data/lib/compass/quick_cache.rb +15 -0
  22. data/lib/compass/sass_extensions/functions.rb +3 -3
  23. data/lib/compass/sass_extensions/functions/gradient_support.rb +60 -21
  24. data/lib/compass/sass_extensions/functions/image_size.rb +11 -11
  25. data/lib/compass/sass_extensions/functions/sprites.rb +357 -0
  26. data/lib/compass/sass_extensions/functions/urls.rb +16 -3
  27. data/lib/compass/sass_extensions/monkey_patches/traversal.rb +1 -1
  28. data/lib/compass/sprites.rb +122 -0
  29. data/test/fixtures/stylesheets/compass/css/gradients.css +18 -1
  30. data/test/fixtures/stylesheets/compass/css/pie.css +1 -0
  31. data/test/fixtures/stylesheets/compass/css/transform.css +28 -0
  32. data/test/fixtures/stylesheets/compass/sass/gradients.sass +9 -0
  33. data/test/fixtures/stylesheets/image_urls/css/screen.css +2 -0
  34. data/test/fixtures/stylesheets/image_urls/sass/screen.sass +3 -0
  35. data/test/fixtures/stylesheets/valid/config.rb +9 -0
  36. data/test/fixtures/stylesheets/valid/sass/simple.sass +2 -0
  37. data/test/sass_extensions_test.rb +8 -0
  38. metadata +40 -8
  39. data/lib/compass/sass_extensions/functions/if.rb +0 -9
@@ -18,6 +18,8 @@ module Compass::SassExtensions::Functions::Urls
18
18
  clean_url(path)
19
19
  end
20
20
  end
21
+ Sass::Script::Functions.declare :stylesheet_url, [:path]
22
+ Sass::Script::Functions.declare :stylesheet_url, [:path, :only_path]
21
23
 
22
24
  def font_url(path, only_path = Sass::Script::Bool.new(false))
23
25
  path = path.value # get to the string value of the literal.
@@ -43,8 +45,10 @@ module Compass::SassExtensions::Functions::Urls
43
45
  clean_url(path)
44
46
  end
45
47
  end
48
+ Sass::Script::Functions.declare :font_url, [:path]
49
+ Sass::Script::Functions.declare :font_url, [:path, :only_path]
46
50
 
47
- def image_url(path, only_path = Sass::Script::Bool.new(false))
51
+ def image_url(path, only_path = Sass::Script::Bool.new(false), cache_buster = Sass::Script::Bool.new(true))
48
52
  path = path.value # get to the string value of the literal.
49
53
 
50
54
  if path =~ %r{^#{Regexp.escape(Compass.configuration.http_images_path)}/(.*)}
@@ -83,8 +87,14 @@ module Compass::SassExtensions::Functions::Urls
83
87
  end
84
88
 
85
89
  # Compute and append the cache buster if there is one.
86
- if buster = compute_cache_buster(path, real_path)
87
- path += "?#{buster}"
90
+ if cache_buster.to_bool
91
+ if cache_buster.is_a?(Sass::Script::String)
92
+ path += "?#{cache_buster.value}"
93
+ else
94
+ if buster = compute_cache_buster(path, real_path)
95
+ path += "?#{buster}"
96
+ end
97
+ end
88
98
  end
89
99
 
90
100
  # prepend the asset host if there is one.
@@ -96,6 +106,9 @@ module Compass::SassExtensions::Functions::Urls
96
106
  clean_url(path)
97
107
  end
98
108
  end
109
+ Sass::Script::Functions.declare :image_url, [:path]
110
+ Sass::Script::Functions.declare :image_url, [:path, :only_path]
111
+ Sass::Script::Functions.declare :image_url, [:path, :only_path, :cache_buster]
99
112
 
100
113
  private
101
114
 
@@ -6,7 +6,7 @@ module Sass
6
6
  visitor.visit(self)
7
7
  visitor.down(self) if children.any? and visitor.respond_to?(:down)
8
8
  if is_a?(ImportNode) && visitor.import?(self)
9
- root = Sass::Files.tree_for(import, @options)
9
+ root = Sass::Engine.for_file(import, @options).to_tree
10
10
  imported_children = root.children
11
11
  end
12
12
 
@@ -0,0 +1,122 @@
1
+ module Compass
2
+ class Sprites < Sass::Importers::Base
3
+ attr_accessor :name
4
+ attr_accessor :path
5
+
6
+ class << self
7
+ def path_and_name(uri)
8
+ if uri =~ %r{((.+/)?(.+))/(.+?)\.png}
9
+ [$1, $3, $4]
10
+ end
11
+ end
12
+
13
+ def discover_sprites(uri)
14
+ glob = File.join(Compass.configuration.images_path, uri)
15
+ Dir.glob(glob).sort
16
+ end
17
+
18
+ def sprite_name(file)
19
+ File.basename(file, '.png')
20
+ end
21
+
22
+ end
23
+
24
+ def find_relative(*args)
25
+ nil
26
+ end
27
+
28
+ def find(uri, options)
29
+ if uri =~ /\.png$/
30
+ self.path, self.name = Compass::Sprites.path_and_name(uri)
31
+ options.merge! :filename => name, :syntax => :scss, :importer => self
32
+ sprite_files = Compass::Sprites.discover_sprites(uri)
33
+ image_names = sprite_files.map {|i| Compass::Sprites.sprite_name(i) }
34
+ Sass::Engine.new(content_for_images(uri, name, image_names), options)
35
+ end
36
+ end
37
+
38
+ def content_for_images(uri, name, images)
39
+ <<-SCSS
40
+ @import "compass/utilities/sprites/base";
41
+
42
+ // General Sprite Defaults
43
+ // You can override them before you import this file.
44
+ $#{name}-sprite-base-class: ".#{name}-sprite" !default;
45
+ $#{name}-sprite-dimensions: false !default;
46
+ $#{name}-position: 0% !default;
47
+ $#{name}-spacing: 0 !default;
48
+ $#{name}-repeat: no-repeat !default;
49
+
50
+ // These variables control the generated sprite output
51
+ // You can override them selectively before you import this file.
52
+ #{images.map do |sprite_name|
53
+ <<-SCSS
54
+ $#{name}-#{sprite_name}-position: $#{name}-position !default;
55
+ $#{name}-#{sprite_name}-spacing: $#{name}-spacing !default;
56
+ $#{name}-#{sprite_name}-repeat: $#{name}-repeat !default;
57
+ SCSS
58
+ end.join}
59
+
60
+ $#{name}-sprites: sprite-map("#{uri}",
61
+ #{images.map do |sprite_name|
62
+ %Q{ $#{sprite_name}-position: $#{name}-#{sprite_name}-position,
63
+ $#{sprite_name}-spacing: $#{name}-#{sprite_name}-spacing,
64
+ $#{sprite_name}-repeat: $#{name}-#{sprite_name}-repeat}
65
+ end.join(",\n")});
66
+
67
+ // All sprites should extend this class
68
+ // The #{name}-sprite mixin will do so for you.
69
+ \#{$#{name}-sprite-base-class} {
70
+ background: $#{name}-sprites no-repeat;
71
+ }
72
+
73
+ // Use this to set the dimensions of an element
74
+ // based on the size of the original image.
75
+ @mixin #{name}-sprite-dimensions($name) {
76
+ @include sprite-dimensions($#{name}-sprites, $name)
77
+ }
78
+
79
+ // Move the background position to display the sprite.
80
+ @mixin #{name}-sprite-position($name, $offset-x: 0, $offset-y: 0) {
81
+ @include sprite-position($#{name}-sprites, $name, $offset-x, $offset-y)
82
+ }
83
+
84
+ // Extends the sprite base class and set the background position for the desired sprite.
85
+ // It will also apply the image dimensions if $dimensions is true.
86
+ @mixin #{name}-sprite($name, $dimensions: $#{name}-sprite-dimensions, $offset-x: 0, $offset-y: 0) {
87
+ @extend \#{$#{name}-sprite-base-class};
88
+ @include sprite($#{name}-sprites, $name, $dimensions, $offset-x, $offset-y)
89
+ }
90
+
91
+ @mixin #{name}-sprites($sprite-names, $dimensions: $#{name}-sprite-dimensions) {
92
+ @include sprites($#{name}-sprites, $sprite-names, $#{name}-sprite-base-class, $dimensions)
93
+ }
94
+
95
+ // Generates a class for each sprited image.
96
+ @mixin all-#{name}-sprites($dimensions: $#{name}-sprite-dimensions) {
97
+ @include #{name}-sprites(#{images.join(" ")}, $dimensions);
98
+ }
99
+ SCSS
100
+ end
101
+
102
+ def key(uri, options)
103
+ [self.class.name + ":" + File.dirname(File.expand_path(uri)),
104
+ File.basename(uri)]
105
+ end
106
+
107
+ def mtime(uri, options)
108
+ Compass.quick_cache("mtime:#{uri}") do
109
+ self.path, self.name = Compass::Sprites.path_and_name(uri)
110
+ glob = File.join(Compass.configuration.images_path, uri)
111
+ Dir.glob(glob).inject(Time.at(0)) do |max_time, file|
112
+ (t = File.mtime(file)) > max_time ? t : max_time
113
+ end
114
+ end
115
+ end
116
+
117
+ def to_s
118
+ ""
119
+ end
120
+
121
+ end
122
+ end
@@ -1,3 +1,20 @@
1
+ .bg-shortcut-simple-image {
2
+ background: white url("foo.png"); }
3
+
4
+ .bg-shortcut-linear-gradient {
5
+ background: white ;
6
+ background: white url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiB4MT0iMCUiIHkxPSIwJSIgeDI9IjEwMCUiIHkyPSIxMDAlIj48c3RvcCBvZmZzZXQ9IjAlIiBzdG9wLWNvbG9yPSIjZGRkZGRkIi8+PHN0b3Agb2Zmc2V0PSIxMDAlIiBzdG9wLWNvbG9yPSIjYWFhYWFhIi8+PC9saW5lYXJHcmFkaWVudD48L2RlZnM+PHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgZmlsbD0idXJsKCNncmFkKSIgLz48L3N2Zz4g');
7
+ background: white -webkit-gradient(linear, 0% 0%, 100% 100%, color-stop(0%, #dddddd), color-stop(100%, #aaaaaa));
8
+ background: white -moz-linear-gradient(top left, #dddddd, #aaaaaa);
9
+ background: white linear-gradient(top left, #dddddd, #aaaaaa); }
10
+
11
+ .bg-shortcut-radial-gradient {
12
+ background: white ;
13
+ background: white url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PHJhZGlhbEdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgY3g9IjUwJSIgY3k9IjUwJSIgcj0iMTAwIj48c3RvcCBvZmZzZXQ9IjAlIiBzdG9wLWNvbG9yPSIjZGRkZGRkIi8+PHN0b3Agb2Zmc2V0PSIxMDAlIiBzdG9wLWNvbG9yPSIjYWFhYWFhIi8+PC9yYWRpYWxHcmFkaWVudD48L2RlZnM+PHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgZmlsbD0idXJsKCNncmFkKSIgLz48L3N2Zz4g');
14
+ background: white -webkit-gradient(radial, 50% 50%, 0, 50% 50%, 100, color-stop(0%, #dddddd), color-stop(100%, #aaaaaa));
15
+ background: white -moz-radial-gradient(center center, #dddddd, #aaaaaa 100px);
16
+ background: white radial-gradient(center center, #dddddd, #aaaaaa 100px); }
17
+
1
18
  .bg-simple-image {
2
19
  background-image: url("foo.png"); }
3
20
 
@@ -46,7 +63,7 @@
46
63
  list-style-image: url('/images/4x6.png?busted=true'); }
47
64
 
48
65
  .shorthand-list-image-plain {
49
- list-style-image: outside url("/images/4x6.png?busted=true"); }
66
+ list-style-image: outside url('/images/4x6.png?busted=true'); }
50
67
 
51
68
  .direct-list-image-with-gradient {
52
69
  list-style-image: -moz-radial-gradient(#00ff00, #ff0000 10px);
@@ -1,3 +1,4 @@
1
+ @charset "UTF-8";
1
2
  .pie-element, .bordered, .gradient {
2
3
  behavior: url('/tmp/PIE.htc');
3
4
  position: relative; }
@@ -2,6 +2,7 @@
2
2
  -moz-transform-origin: 2px 5%;
3
3
  -webkit-transform-origin: 2px 5%;
4
4
  -o-transform-origin: 2px 5%;
5
+ -ms-transform-origin: 2px 5%;
5
6
  transform-origin: 2px 5%; }
6
7
 
7
8
  .apply-origin-3d {
@@ -12,6 +13,7 @@
12
13
  -moz-transform-origin: 100px 100px;
13
14
  -webkit-transform-origin: 100px 100px;
14
15
  -o-transform-origin: 100px 100px;
16
+ -ms-transform-origin: 100px 100px;
15
17
  transform-origin: 100px 100px; }
16
18
 
17
19
  .transform-origin-3d {
@@ -22,6 +24,7 @@
22
24
  -moz-transform: rotateY(20deg);
23
25
  -webkit-transform: rotateY(20deg);
24
26
  -o-transform: rotateY(20deg);
27
+ -ms-transform: rotateY(20deg);
25
28
  transform: rotateY(20deg); }
26
29
 
27
30
  .transform-3d {
@@ -48,6 +51,7 @@
48
51
  -moz-transform: scale(30px, 50px);
49
52
  -webkit-transform: scale(30px, 50px);
50
53
  -o-transform: scale(30px, 50px);
54
+ -ms-transform: scale(30px, 50px);
51
55
  transform: scale(30px, 50px); }
52
56
 
53
57
  .scale-3d {
@@ -58,6 +62,7 @@
58
62
  -moz-transform: perspective(500) scale(30px, 50px);
59
63
  -webkit-transform: perspective(500) scale(30px, 50px);
60
64
  -o-transform: perspective(500) scale(30px, 50px);
65
+ -ms-transform: perspective(500) scale(30px, 50px);
61
66
  transform: perspective(500) scale(30px, 50px); }
62
67
 
63
68
  .scale-3d-with-perspective {
@@ -68,6 +73,7 @@
68
73
  -moz-transform: scaleX(30px);
69
74
  -webkit-transform: scaleX(30px);
70
75
  -o-transform: scaleX(30px);
76
+ -ms-transform: scaleX(30px);
71
77
  transform: scaleX(30px); }
72
78
 
73
79
  .scale-x-3d {
@@ -78,6 +84,7 @@
78
84
  -moz-transform: perspective(500) scaleX(30px);
79
85
  -webkit-transform: perspective(500) scaleX(30px);
80
86
  -o-transform: perspective(500) scaleX(30px);
87
+ -ms-transform: perspective(500) scaleX(30px);
81
88
  transform: perspective(500) scaleX(30px); }
82
89
 
83
90
  .scale-x-3d-with-perspective {
@@ -88,6 +95,7 @@
88
95
  -moz-transform: scaleY(50px);
89
96
  -webkit-transform: scaleY(50px);
90
97
  -o-transform: scaleY(50px);
98
+ -ms-transform: scaleY(50px);
91
99
  transform: scaleY(50px); }
92
100
 
93
101
  .scale-y-3d {
@@ -98,6 +106,7 @@
98
106
  -moz-transform: perspective(500) scaleY(50px);
99
107
  -webkit-transform: perspective(500) scaleY(50px);
100
108
  -o-transform: perspective(500) scaleY(50px);
109
+ -ms-transform: perspective(500) scaleY(50px);
101
110
  transform: perspective(500) scaleY(50px); }
102
111
 
103
112
  .scale-y-3d-with-perspective {
@@ -124,24 +133,28 @@
124
133
  -moz-transform: perspective(500) rotate(25deg);
125
134
  -webkit-transform: perspective(500) rotate(25deg);
126
135
  -o-transform: perspective(500) rotate(25deg);
136
+ -ms-transform: perspective(500) rotate(25deg);
127
137
  transform: perspective(500) rotate(25deg); }
128
138
 
129
139
  .rotate-with-perspective {
130
140
  -moz-transform: perspective(500) rotate(25deg);
131
141
  -webkit-transform: perspective(500) rotate(25deg);
132
142
  -o-transform: perspective(500) rotate(25deg);
143
+ -ms-transform: perspective(500) rotate(25deg);
133
144
  transform: perspective(500) rotate(25deg); }
134
145
 
135
146
  .rotate-z {
136
147
  -moz-transform: rotate(25deg);
137
148
  -webkit-transform: rotate(25deg);
138
149
  -o-transform: rotate(25deg);
150
+ -ms-transform: rotate(25deg);
139
151
  transform: rotate(25deg); }
140
152
 
141
153
  .rotate-z-with-perspective {
142
154
  -moz-transform: perspective(500) rotate(25deg);
143
155
  -webkit-transform: perspective(500) rotate(25deg);
144
156
  -o-transform: perspective(500) rotate(25deg);
157
+ -ms-transform: perspective(500) rotate(25deg);
145
158
  transform: perspective(500) rotate(25deg); }
146
159
 
147
160
  .rotate-x {
@@ -172,12 +185,14 @@
172
185
  -moz-transform: translate(20px, 30%);
173
186
  -webkit-transform: translate(20px, 30%);
174
187
  -o-transform: translate(20px, 30%);
188
+ -ms-transform: translate(20px, 30%);
175
189
  transform: translate(20px, 30%); }
176
190
 
177
191
  .translate-with-perspective {
178
192
  -moz-transform: perspective(500) translate(20px, 30%);
179
193
  -webkit-transform: perspective(500) translate(20px, 30%);
180
194
  -o-transform: perspective(500) translate(20px, 30%);
195
+ -ms-transform: perspective(500) translate(20px, 30%);
181
196
  transform: perspective(500) translate(20px, 30%); }
182
197
 
183
198
  .translate-3d {
@@ -192,6 +207,7 @@
192
207
  -moz-transform: translateX(30px);
193
208
  -webkit-transform: translateX(30px);
194
209
  -o-transform: translateX(30px);
210
+ -ms-transform: translateX(30px);
195
211
  transform: translateX(30px); }
196
212
 
197
213
  .translate-x-3d {
@@ -202,6 +218,7 @@
202
218
  -moz-transform: perspective(500) translateX(30px);
203
219
  -webkit-transform: perspective(500) translateX(30px);
204
220
  -o-transform: perspective(500) translateX(30px);
221
+ -ms-transform: perspective(500) translateX(30px);
205
222
  transform: perspective(500) translateX(30px); }
206
223
 
207
224
  .translate-x-3d-with-perspective {
@@ -212,6 +229,7 @@
212
229
  -moz-transform: translateY(30px);
213
230
  -webkit-transform: translateY(30px);
214
231
  -o-transform: translateY(30px);
232
+ -ms-transform: translateY(30px);
215
233
  transform: translateY(30px); }
216
234
 
217
235
  .translate-y-3d {
@@ -222,6 +240,7 @@
222
240
  -moz-transform: perspective(500) translateY(30px);
223
241
  -webkit-transform: perspective(500) translateY(30px);
224
242
  -o-transform: perspective(500) translateY(30px);
243
+ -ms-transform: perspective(500) translateY(30px);
225
244
  transform: perspective(500) translateY(30px); }
226
245
 
227
246
  .translate-y-3d-with-perspective {
@@ -248,6 +267,7 @@
248
267
  -moz-transform: skew(20deg, 50deg);
249
268
  -webkit-transform: skew(20deg, 50deg);
250
269
  -o-transform: skew(20deg, 50deg);
270
+ -ms-transform: skew(20deg, 50deg);
251
271
  transform: skew(20deg, 50deg); }
252
272
 
253
273
  .skew-3d {
@@ -258,6 +278,7 @@
258
278
  -moz-transform: skewX(20deg);
259
279
  -webkit-transform: skewX(20deg);
260
280
  -o-transform: skewX(20deg);
281
+ -ms-transform: skewX(20deg);
261
282
  transform: skewX(20deg); }
262
283
 
263
284
  .skew-x-3d {
@@ -268,6 +289,7 @@
268
289
  -moz-transform: skewY(20deg);
269
290
  -webkit-transform: skewY(20deg);
270
291
  -o-transform: skewY(20deg);
292
+ -ms-transform: skewY(20deg);
271
293
  transform: skewY(20deg); }
272
294
 
273
295
  .skew-y-3d {
@@ -278,28 +300,34 @@
278
300
  -moz-transform: perspective(500) scale(20px, 20px) rotateX(25deg) rotateY(25deg) rotate3d(false 50px) translateX(50px) translateZ(50deg) skew(50deg, 50%);
279
301
  -webkit-transform: perspective(500) scale(20px, 20px) rotateX(25deg) rotateY(25deg) rotate3d(false 50px) translateX(50px) translateZ(50deg) skew(50deg, 50%);
280
302
  -o-transform: perspective(500) scale(20px, 20px) rotateX(25deg) rotateY(25deg) rotate3d(false 50px) translateX(50px) translateZ(50deg) skew(50deg, 50%);
303
+ -ms-transform: perspective(500) scale(20px, 20px) rotateX(25deg) rotateY(25deg) rotate3d(false 50px) translateX(50px) translateZ(50deg) skew(50deg, 50%);
281
304
  transform: perspective(500) scale(20px, 20px) rotateX(25deg) rotateY(25deg) rotate3d(false 50px) translateX(50px) translateZ(50deg) skew(50deg, 50%);
282
305
  -moz-transform-origin: 50%;
283
306
  -webkit-transform-origin: 50%;
284
307
  -o-transform-origin: 50%;
308
+ -ms-transform-origin: 50%;
285
309
  transform-origin: 50%; }
286
310
 
287
311
  .create-transform-3d {
288
312
  -moz-transform: perspective(500) scale3d(20px, 20px, 20px) rotateX(25deg) rotateY(25deg) rotateZ(25deg) rotate3d(false 50px) translate3d(50px, 50px, 50deg) skew(50deg, 50%);
289
313
  -webkit-transform: perspective(500) scale3d(20px, 20px, 20px) rotateX(25deg) rotateY(25deg) rotateZ(25deg) rotate3d(false 50px) translate3d(50px, 50px, 50deg) skew(50deg, 50%);
290
314
  -o-transform: perspective(500) scale3d(20px, 20px, 20px) rotateX(25deg) rotateY(25deg) rotateZ(25deg) rotate3d(false 50px) translate3d(50px, 50px, 50deg) skew(50deg, 50%);
315
+ -ms-transform: perspective(500) scale3d(20px, 20px, 20px) rotateX(25deg) rotateY(25deg) rotateZ(25deg) rotate3d(false 50px) translate3d(50px, 50px, 50deg) skew(50deg, 50%);
291
316
  transform: perspective(500) scale3d(20px, 20px, 20px) rotateX(25deg) rotateY(25deg) rotateZ(25deg) rotate3d(false 50px) translate3d(50px, 50px, 50deg) skew(50deg, 50%);
292
317
  -moz-transform-origin: 50% 50%;
293
318
  -webkit-transform-origin: 50% 50%;
294
319
  -o-transform-origin: 50% 50%;
320
+ -ms-transform-origin: 50% 50%;
295
321
  transform-origin: 50% 50%; }
296
322
 
297
323
  .simple-transform {
298
324
  -moz-transform: scale(25px, 25px) rotateZ(25deg) translate(10px, 10px) skew(30deg, 30deg);
299
325
  -webkit-transform: scale(25px, 25px) rotateZ(25deg) translate(10px, 10px) skew(30deg, 30deg);
300
326
  -o-transform: scale(25px, 25px) rotateZ(25deg) translate(10px, 10px) skew(30deg, 30deg);
327
+ -ms-transform: scale(25px, 25px) rotateZ(25deg) translate(10px, 10px) skew(30deg, 30deg);
301
328
  transform: scale(25px, 25px) rotateZ(25deg) translate(10px, 10px) skew(30deg, 30deg);
302
329
  -moz-transform-origin: 10% 10%;
303
330
  -webkit-transform-origin: 10% 10%;
304
331
  -o-transform-origin: 10% 10%;
332
+ -ms-transform-origin: 10% 10%;
305
333
  transform-origin: 10% 10%; }
@@ -1,6 +1,15 @@
1
1
  @import compass/css3/images, compass/css3/gradient
2
2
 
3
3
  $experimental-support-for-svg: true
4
+ .bg-shortcut-simple-image
5
+ +background(#fff url('foo.png'))
6
+
7
+ .bg-shortcut-linear-gradient
8
+ +background(#fff linear-gradient(top left, #ddd, #aaa))
9
+
10
+ .bg-shortcut-radial-gradient
11
+ +background(#fff radial-gradient(center center, #ddd, #aaa 100px))
12
+
4
13
  .bg-simple-image
5
14
  +background-image(url('foo.png'))
6
15
 
@@ -1,3 +1,5 @@
1
1
  .showgrid { background-image: url('http://assets0.example.com/images/grid.png?busted=true'); }
2
2
 
3
3
  .inlinegrid { background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAAUEAYAAACv1qP4AAAABmJLR0T///////8JWPfcAAAACXBIWXMAAABIAAAASABGyWs+AAAAZ0lEQVRYw+3QwQ2AIBAFUTEUwI3+uzN7gDscsIgxEuO8An52J11X73OudfxMraXkzHfO3Y98nQEhA0IGhAwIGRAyIGRAyICQASEDQgaEDAgZEDIgZEDIgJABoZzSGK3tPuN9ERFP7Nw4fg+c5g8V1wAAAABJRU5ErkJggg=='); }
4
+
5
+ .no-buster { background-image: url('http://assets0.example.com/images/grid.png'); }
@@ -3,3 +3,6 @@
3
3
 
4
4
  .inlinegrid
5
5
  background-image: inline-image(unquote("grid.png"))
6
+
7
+ .no-buster
8
+ background-image: image-url("grid.png", $only-path: false, $cache-buster: false)
@@ -0,0 +1,9 @@
1
+ # Require any additional compass plugins here.
2
+ css_dir = "tmp"
3
+ sass_dir = "sass"
4
+ images_dir = "assets/images"
5
+ javascripts_dir = "assets/javascripts"
6
+ # Set this to the root of your project when deployed:
7
+ http_path = "/"
8
+ # To enable relative paths to assets via compass helper functions. Uncomment:
9
+ relative_assets = true