sinatra-assetpack 0.0.8 → 0.0.9

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 (54) hide show
  1. data/.gitignore +1 -0
  2. data/HISTORY.md +15 -0
  3. data/README.md +203 -112
  4. data/Rakefile +17 -0
  5. data/docsrc/style.css +32 -0
  6. data/{example → examples/basic}/.gitignore +0 -0
  7. data/{example → examples/basic}/Rakefile +0 -0
  8. data/{example → examples/basic}/app.rb +0 -0
  9. data/{example → examples/basic}/app/css/test.sass +0 -0
  10. data/{example → examples/basic}/app/images/icon.png +0 -0
  11. data/{example → examples/basic}/app/js/app.js +0 -0
  12. data/{example → examples/basic}/app/js/vendor/jquery.js +0 -0
  13. data/{example → examples/basic}/app/js/vendor/jquery.plugin.js +0 -0
  14. data/{example → examples/basic}/app/js/vendor/underscore.js +0 -0
  15. data/{example → examples/basic}/views/index.erb +0 -0
  16. data/examples/compass/.gitignore +1 -0
  17. data/examples/compass/Rakefile +7 -0
  18. data/examples/compass/app.rb +45 -0
  19. data/examples/compass/app/css/main.scss +64 -0
  20. data/examples/compass/app/images/icon-scfd8d7d404.png +0 -0
  21. data/examples/compass/app/images/icon/mail.png +0 -0
  22. data/examples/compass/app/images/icon/refresh.png +0 -0
  23. data/examples/compass/app/images/junk/mail.png +0 -0
  24. data/examples/compass/app/images/junk/refresh.png +0 -0
  25. data/examples/compass/app/js/app.js +3 -0
  26. data/examples/compass/app/js/vendor/jquery.js +2 -0
  27. data/examples/compass/app/js/vendor/jquery.plugin.js +2 -0
  28. data/examples/compass/app/js/vendor/underscore.js +2 -0
  29. data/examples/compass/config.ru +3 -0
  30. data/examples/compass/views/index.erb +15 -0
  31. data/lib/sinatra/assetpack.rb +1 -1
  32. data/lib/sinatra/assetpack/class_methods.rb +13 -7
  33. data/lib/sinatra/assetpack/options.rb +0 -8
  34. data/lib/sinatra/assetpack/package.rb +1 -1
  35. data/lib/sinatra/assetpack/rake.rb +7 -1
  36. data/lib/sinatra/assetpack/version.rb +1 -1
  37. data/test/app/app.rb +4 -0
  38. data/test/app/app/css/behavior.htc +1 -0
  39. data/test/app/app/js_glob/a/b/c1/hello.js +1 -0
  40. data/test/app/app/js_glob/a/b/c2/hi.js +1 -0
  41. data/test/app/app/js_glob/a/b/c2/hola.js +1 -0
  42. data/test/cache_test.rb +3 -4
  43. data/test/compressed_test.rb +30 -0
  44. data/test/glob_test.rb +42 -0
  45. data/test/local_file_test.rb +1 -2
  46. data/test/mime_type_test.rb +33 -0
  47. data/test/non_existent_test.rb +1 -2
  48. data/test/options_test.rb +1 -2
  49. data/test/order_test.rb +1 -2
  50. data/test/stylus_test.rb +1 -2
  51. data/test/template_cache_test.rb +29 -0
  52. data/test/test_helper.rb +6 -7
  53. data/test/yui_test.rb +1 -1
  54. metadata +59 -37
data/.gitignore CHANGED
@@ -1,3 +1,4 @@
1
1
  /Gemfile.lock
2
2
  /.rvmrc
3
3
  /.sass-cache
4
+ /doc/
data/HISTORY.md CHANGED
@@ -1,3 +1,18 @@
1
+ v0.0.9 - Sep 18, 2011
2
+ ---------------------
3
+
4
+ ### Fixed:
5
+ * Fixed a bad route terminating issue. (#9)
6
+ * Fix the Rake task when the main App class is in a module. (#11)
7
+
8
+ ### Changed:
9
+ * Use Sinatra's `template_cache`. This makes AssetPack honor Sinatra's
10
+ `reload_templates` setting. (#15)
11
+
12
+ ### Added:
13
+ * Added .htc (IE behavior files) to the list of file formats to be served.
14
+ * Added examples.
15
+
1
16
  v0.0.8 - Sep 06, 2011
2
17
  ---------------------
3
18
 
data/README.md CHANGED
@@ -1,9 +1,9 @@
1
- # Sinatra AssetPack
1
+ # [Sinatra AssetPack](http://ricostacruz.com/sinatra-assetpack)
2
2
  #### Asset packer for Sinatra
3
3
 
4
4
  This is *the* most convenient way to set up your CSS/JS (and images) in a
5
- Sinatra app. Seriously. No need for crappy routes to render Sass or whatever.
6
- No-siree!
5
+ [Sinatra](http://sinatrarb.com) app. Seriously. No need for crappy routes to
6
+ render Sass or whatever. No-siree!
7
7
 
8
8
  1. Drop your assets into `/app` like so (you can configure directories don't worry):
9
9
  * JavaScript/CoffeeScript files in `/app/js`
@@ -14,12 +14,26 @@ No-siree!
14
14
  messy *script* and *link* tags
15
15
  5. BOOM! You're in business baby!
16
16
 
17
+ Installation
18
+ ------------
19
+
20
+ Sinatra AssetPack is a simple Ruby gem. You can install it via `gem install`.
21
+
22
+ ``` console
23
+ $ gem install sinatra-assetpack
24
+ ```
25
+
26
+ #### Bundler users
27
+ If you use Bundler, you will need to add it to your *Gemfile*.
28
+
29
+ ``` ruby
30
+ gem 'sinatra-assetpack', :require => 'sinatra/assetpack'
31
+ ```
32
+
33
+
17
34
  Setup
18
35
  -----
19
36
 
20
- * Bundler? Add to *Gemfile*: `gem 'sinatra-assetpack', :require => 'sinatra/assetpack'`
21
- * Else: `$ gem install sinatra-assetpack`
22
-
23
37
  Install the plugin and add some options. (Feel free to omit the *Optional*
24
38
  items, they're listed here for posterity):
25
39
 
@@ -52,18 +66,20 @@ class App < Sinatra::Base
52
66
  end
53
67
  ```
54
68
 
55
- In your layouts:
69
+ #### Using in layouts
70
+ In your layouts, use the `css` and `js` helpers:
71
+ *(Use haml? Great! Use `!= css :youreawesome` instead.)*
56
72
 
57
73
  ``` erb
58
74
  <%= css :application, :media => 'screen' %>
59
75
  <%= js :app %>
60
76
  ```
61
77
 
62
- *(Use haml? Great! Use `!= css :youreawesome`.)*
63
78
 
64
79
  And then what?
65
80
  --------------
66
81
 
82
+ #### Development mode
67
83
  If you're on **development** mode, it serves each of the files as so:
68
84
 
69
85
  ``` html
@@ -73,6 +89,7 @@ If you're on **development** mode, it serves each of the files as so:
73
89
  <script type='text/javascript' src='/js/app/main.589491.js'></script>
74
90
  ```
75
91
 
92
+ #### Production mode
76
93
  If you're on **production** mode, it serves a compressed version in the URLs you specify:
77
94
 
78
95
  ``` html
@@ -83,32 +100,32 @@ If you're on **production** mode, it serves a compressed version in the URLs you
83
100
  Features
84
101
  --------
85
102
 
86
- * __CoffeeScript support__: Just add your coffee files in one of the paths
103
+ * __CoffeeScript support__ Just add your coffee files in one of the paths
87
104
  served (in the example, `app/js/hello.coffee`) and they will be available as JS
88
105
  files (`http://localhost:4567/js/hello.js`).
89
106
 
90
- * __Sass/Less/SCSS support__: Works the same way. Place your dynamic CSS files
107
+ * __Sass/Less/SCSS support__ Works the same way. Place your dynamic CSS files
91
108
  in there (say, `app/css/screen.sass`) and they will be available as CSS files
92
109
  (`http://localhost:4567/css/screen.css`).
93
110
 
94
- * __Cache busting__: the `css` and `js` helpers automatically ensures the URL
111
+ * __Cache busting__ the `css` and `js` helpers automatically ensures the URL
95
112
  is based on when the file was last modified. The URL `/js/jquery.js` may be
96
113
  translated to `/js/jquery.8237898.js` to ensure visitors always get the latest
97
114
  version.
98
115
 
99
- * __Images support__: Image filenames in your CSS will automatically get a
116
+ * __Images support__ Image filenames in your CSS will automatically get a
100
117
  cache-busting suffix (eg, `/images/icon.742958.png`).
101
118
 
102
- * __Embedded images support__: You can embed images in your CSS files as
119
+ * __Embedded images support__ You can embed images in your CSS files as
103
120
  `data:` URIs by simply adding `?embed` to the end of your URL.
104
121
 
105
- * __No intermediate files needed__: You don't need to generate compiled files.
122
+ * __No intermediate files needed__ You don't need to generate compiled files.
106
123
  You can, but it's optional. Keeps your source repo clean!
107
124
 
108
- * __Auto minification (with caching)__: JS and CSS files will be compressed as
125
+ * __Auto minification (with caching)__ JS and CSS files will be compressed as
109
126
  needed.
110
127
 
111
- * __Heroku support__: Oh yes. That's right.
128
+ * __Heroku support__ Oh yes. That's right.
112
129
 
113
130
  Compressors
114
131
  -----------
@@ -124,11 +141,11 @@ assets {
124
141
  }
125
142
  ```
126
143
 
127
-
128
- ----
129
-
130
144
  ### YUI Compressor
131
145
 
146
+ This uses Yahoo's Java-powered YUI compressor. For YUI compression, you need the
147
+ YUI compressor gem (`gem install yui-compressor`).
148
+
132
149
  ``` ruby
133
150
  assets {
134
151
  js_compression :yui
@@ -138,30 +155,23 @@ assets {
138
155
  }
139
156
  ```
140
157
 
141
- For YUI compression, you need the YUI compressor gem.
142
-
143
- * Bundler? Add to *Gemfile*: `gem 'yui-compressor', :require => 'yui/compressor'`
144
- * Else, `gem install yui-compressor`
145
-
146
- ----
147
-
148
158
  ### SASS compression
149
159
 
160
+ For SASS compression, you need the Sass gem (`gem install sass`). This treats
161
+ the CSS files as Scss files and uses Sass's `output: :compressed`.
162
+
150
163
  ``` ruby
151
164
  assets {
152
165
  css_compression :sass
153
166
  }
154
167
  ```
155
168
 
156
- For SASS compression, you need the Sass gem.
157
-
158
- * Bundler? Add to *Gemfile*: `gem 'sass'`
159
- * Else, `gem install sass`
160
-
161
- ----
162
-
163
169
  ### Sqwish CSS compression
164
170
 
171
+ [Sqwish](http://github.com/ded/sqwish) is a NodeJS-based CSS compressor. To use
172
+ Sqwish with AssetPack, install it using `npm install -g sqwish`. You need NodeJS
173
+ and NPM installed.
174
+
165
175
  ``` ruby
166
176
  assets {
167
177
  css_compression :sqwish
@@ -169,13 +179,15 @@ assets {
169
179
  }
170
180
  ```
171
181
 
172
- [Sqwish](http://github.com/ded/sqwish) is a NodeJS-based CSS compressor. To use
173
- Sqwish with AssetPack, install it using `npm install -g sqwish`. You need NodeJS
174
- and NPM installed.
182
+ ### Google Closure compression
175
183
 
176
- ----
184
+ This uses the [Google closure compiler
185
+ service](http://closure-compiler.appspot.com/home)
186
+ to compress your JavaScript. Available levels are:
177
187
 
178
- ### Google Closure compression
188
+ * `WHITESPACE_ONLY`
189
+ * `SIMPLE_OPTIMIZATIONS`
190
+ * `ADVANCED_OPTIMIZATIONS`
179
191
 
180
192
  ``` ruby
181
193
  assets {
@@ -184,11 +196,6 @@ assets {
184
196
  }
185
197
  ```
186
198
 
187
- This uses the [Google closure compiler service](http://closure-compiler.appspot.com/home)
188
- to compress your JavaScript.
189
-
190
- Available levels: `WHITESPACE_ONLY`, `SIMPLE_OPTIMIZATIONS`, `ADVANCED_OPTIMIZATIONS`
191
-
192
199
  Images
193
200
  ------
194
201
 
@@ -201,6 +208,7 @@ ImageMagick is required to generate full image tags with width and height.
201
208
  <!-- Output: --> <img src='/images/email.873842.png' width='16' height='16' />
202
209
  ```
203
210
 
211
+ #### URL translation
204
212
  In your CSS files, `url()`'s will automatically be translated.
205
213
 
206
214
  ``` css
@@ -208,6 +216,7 @@ In your CSS files, `url()`'s will automatically be translated.
208
216
  /* Output: */ .email { background: url(/images/email.6783478.png); }
209
217
  ```
210
218
 
219
+ #### Image embedding
211
220
  Want to embed images as `data:` URI's? Sure! Just add `?embed` at the end of the
212
221
  URL.
213
222
 
@@ -219,24 +228,26 @@ URL.
219
228
  Need to build the files?
220
229
  ------------------------
221
230
 
222
- Actually, you don't need to--this is optional! But add this to your Rakefile:
231
+ Actually, you don't need tothis is optional! But add this to your `Rakefile`:
223
232
 
224
233
  ``` ruby
234
+ # Rakefile
225
235
  APP_FILE = 'app.rb'
226
236
  APP_CLASS = 'App'
227
237
 
228
238
  require 'sinatra/assetpack/rake'
229
239
  ```
230
240
 
231
- Now:
241
+ #### Invoking
242
+ Now invoke the `assetpack:build` Rake task. This will create files in `/public`.
232
243
 
233
244
  $ rake assetpack:build
234
245
 
235
- This will create files in `/public`.
236
246
 
237
- API reference: assets block
238
- ---------------------------
247
+ API reference
248
+ -------------
239
249
 
250
+ #### Assets block
240
251
  All configuration happens in the `assets` block. You may invoke it in 2 ways:
241
252
 
242
253
  ``` ruby
@@ -257,68 +268,82 @@ class App < Sinatra::Base
257
268
  end
258
269
  ```
259
270
 
260
- Invoking it without a block allows you to access the options.
271
+ #### Getting options
272
+ Invoking it without a block allows you to access the options. This works for
273
+ almost all the options, with the exception for `css`, `js` and `serve`.
261
274
 
262
275
  ``` ruby
263
276
  App.assets
264
277
  App.assets.js_compression #=> :yui
265
278
  ```
266
279
 
267
- ----
268
-
269
280
  ### assets.serve
270
281
 
271
- __Usage:__ `serve 'PATH', :from => 'LOCALPATH'`
272
-
273
282
  Serves files from `LOCALPATH` in the URI path `PATH`. Both parameters are
274
283
  required.
275
284
 
276
285
  ``` ruby
277
- # ..This makes /app/javascripts/vendor/jquery.js
278
- # available as http://localhost:4567/js/vendor/jquery.js
279
- serve '/js', from: '/app/javascripts'
286
+ # Usage
287
+ serve 'PATH', :from => 'LOCALPATH'
280
288
  ```
281
289
 
282
- ----
290
+ #### Example
291
+ This makes `/app/javascripts/vendor/jquery.js`
292
+ available as `http://localhost:4567/js/vendor/jquery.js`.
283
293
 
284
- ### assets.js_compression
285
- ### assets.css_compression
294
+ ``` ruby
295
+ serve '/js', from: '/app/javascripts'
296
+ ```
286
297
 
287
- __Usage:__ `js_compression :ENGINE`
288
- __Usage:__ `js_compression :ENGINE, OPTIONS_HASH`
289
- __Usage:__ `css_compression :ENGINE`
290
- __Usage:__ `css_compression :ENGINE, OPTIONS_HASH`
298
+ ### assets.js\_compression<br>assets.css\_compression
291
299
 
292
300
  Sets the compression engine to use for JavaScript or CSS. This defaults to
293
301
  `:jsmin` and `:simple`, respectively.
294
302
 
295
303
  If `OPTIONS_HASH` is given as a hash, it sets options for the engine to use.
296
304
 
297
- __Example 1:__ `css_compression :sqwish`
298
- __Example 2:__ `css_compression :sqwish, :strict => true`
305
+ ``` ruby
306
+ # Usage:
307
+ assets {
308
+ js_compression :ENGINE
309
+ js_compression :ENGINE, OPTIONS_HASH
310
+ css_compression :ENGINE
311
+ css_compression :ENGINE, OPTIONS_HASH
312
+ }
313
+ ```
299
314
 
300
- ----
315
+ #### Examples
316
+ Yo seriously check this out: the first line uses Sqwish with it's defaults, and
317
+ the second line uses Sqwish with it's magic.
301
318
 
302
- ### assets.js_compression_options
303
- ### assets.css_compression_options
319
+ ``` ruby
320
+ assets {
321
+ css_compression :sqwish
322
+ css_compression :sqwish, :strict => true
323
+ }
324
+ ```
304
325
 
305
- __Usage:__ `js_compression_options HASH`
306
- __Usage:__ `css_compression_options HASH`
326
+ ### assets.js\_compression\_options<br>assets.css\_compression\_options
307
327
 
308
328
  Sets the options for the compression engine to use. This is usually not needed
309
329
  as you can already set options using `js_compression` and `css_compression`.
310
330
 
311
- __Example:__ `js_compression_options :munge => true`
331
+ ``` ruby
332
+ # Usage:
333
+ assets {
334
+ js_compression_options HASH
335
+ css_compression_options HASH
336
+ }
337
+ ```
312
338
 
313
- ----
339
+ #### Example
340
+ This sets the option for `:munge` for the CSS compression engine.
314
341
 
315
- ### assets.css
316
- ### assets.js
342
+ ``` ruby
343
+ css_compression_options :munge => true
344
+ ```
317
345
 
318
- __Usage:__ `css :NAME, [ PATH1, PATH2, ... ]`
319
- __Usage:__ `css :NAME, 'URI', [ PATH1, PATH2, ... ]`
320
- __Usage:__ `js :NAME, [ PATH1, PATH2, ... ]`
321
- __Usage:__ `js :NAME, 'URI', [ PATH1, PATH2, ... ]`
346
+ ### assets.css<br>assets.js
322
347
 
323
348
  Adds packages to be used.
324
349
 
@@ -326,18 +351,27 @@ The `NAME` is a symbol defines the ID for that given package that you can use
326
351
  for the helpers. That is, If a CSS package was defined as `css :main, [ ... ]`,
327
352
  then you will need to use `<%= css :main %>` to render it in views.
328
353
 
329
- the `URI` is a string that defines where the compressed version will be served.
330
- It is optional. If not provided, it will default to `"/type/name.type"` (eg:
331
- `/css/main.css`).
354
+ the `URI` is a string that defines where the compressed version will be served.
355
+ It is optional. If not provided, it will default to `"/assets/name.type"` (eg:
356
+ `/assets/main.css`).
332
357
 
333
358
  the `PATHs` is an array that defines files that will be served. Take note that
334
359
  this is an array of URI paths, not local paths.
335
360
 
336
- If a `PATH` contains wildcards, it will be expanded in alphabetical order.
361
+ If a `PATH` contains wildcards, it will be expanded in alphabetical order.
337
362
  Redundancies will be taken care of.
338
363
 
339
- __Examples:__
364
+ ``` ruby
365
+ # Usage:
366
+ assets {
367
+ css :NAME, [ PATH1, PATH2, ... ]
368
+ css :NAME, 'URI', [ PATH1, PATH2, ... ]
369
+ js:NAME, [ PATH1, PATH2, ... ]
370
+ js:NAME, 'URI', [ PATH1, PATH2, ... ]
371
+ }
372
+ ```
340
373
 
374
+ #### Example
341
375
  In this example, JavaScript files will be served compressed as
342
376
  `/js/application.js` (default since no `URI` is given). The files will be taken
343
377
  from `./app/javascripts/vendor/jquery*.js`.
@@ -361,61 +395,100 @@ API reference: helpers
361
395
 
362
396
  These are helpers you can use in your views.
363
397
 
364
- ----
365
-
366
- ### css
367
-
368
- __Usage:__ `css :PACKAGE`
369
- __Usage:__ `css :PACKAGE_1, :PACKAGE_2, ... :PACKAGE_N, OPTIONS_HASH`
370
- __Usage:__ `css :PACKAGE, OPTIONS_HASH`
398
+ ### <%= css %>
371
399
 
372
400
  Shows a CSS package named `PACKAGE`. If `OPTIONS_HASH` is given, they will we
373
401
  passed onto the `<link>` tag to be generated as attributes.
374
402
 
375
403
  You may specify as many packages as you need, as shown in the second usage line.
376
404
 
377
- __Example 1:__ `css :main, media: 'screen'`
378
- __Output:__ `<link rel='stylesheet' type='text/css' href='/css/main.873984.css'
379
- media='screen' />`
405
+ ``` ruby
406
+ # Usage:
407
+ <%= css :PACKAGE %>
408
+ <%= css :PACKAGE_1, :PACKAGE_2, ... :PACKAGE_N, OPTIONS_HASH %>
409
+ <%= css :PACKAGE, OPTIONS_HASH %>
410
+ ```
380
411
 
381
- __Example 2:__ `css :base, :app, :main, media: 'screen'`
412
+ #### Example 1
413
+ This links to the `main` stylesheet for *screen* media.
382
414
 
383
- ----
415
+ ``` erb
416
+ <%= css :main, media: 'screen' %>
384
417
 
385
- ### js
418
+ <!-- Output: -->
419
+ <link rel='stylesheet' type='text/css' href='/css/main.873984.css' media='screen' />
420
+ ```
386
421
 
387
- __Usage:__ `js :PACKAGE`
388
- __Usage:__ `js :PACKAGE, OPTIONS_HASH`
422
+ #### Example 2
423
+ You may also invoke it with multiple packages.
389
424
 
390
- Same as `css`, but obviously for JavaScript.
425
+ ``` erb
426
+ <%= css :base, :app, :main, media: 'screen' %>
391
427
 
392
- You may also specify as many packages as you need.
428
+ <!-- Output: -->
429
+ <link rel='stylesheet' type='text/css' href='/css/base.873984.css' media='screen' />
430
+ <link rel='stylesheet' type='text/css' href='/css/app.873984.css' media='screen' />
431
+ <link rel='stylesheet' type='text/css' href='/css/main.873984.css' media='screen' />
432
+ ```
393
433
 
394
- __Example:__ `js :main, id: 'main_script'`
395
- __Output:__ `<script type='text/javascript' src='/js/main.783439.js' id='main_script'></script>`
434
+ ### <%= js %>
396
435
 
397
- ----
436
+ Same as `css`, but obviously for JavaScript. You may also specify as many packages as you need, just with `css`.
398
437
 
399
- ### img
438
+ ``` erb
439
+ # Usage:
440
+ <%= js :PACKAGE %>
441
+ <%= js :PACKAGE_1, :PACKAGE_2, ... :PACKAGE_N, OPTIONS_HASH %>
442
+ <%= js :PACKAGE, OPTIONS_HASH %>
443
+ ```
444
+
445
+ #### Example
446
+ This example embeds the *main* package with an ID.
400
447
 
401
- __Usage:__ `img 'SRC'`
402
- __Usage:__ `img 'SRC', OPTIONS_HASH`
448
+ ``` erb
449
+ <%= js :main, id: 'main_script' %>
450
+
451
+ <!-- Output: -->
452
+ <script type='text/javascript' src='/js/main.783439.js' id='main_script'></script>
453
+ ```
454
+
455
+ ### <%= img %>
403
456
 
404
457
  Shows an `<img>` tag from the given `SRC`. If the images is found in the asset
405
- directories (and ImageMagick is available), `width` and `height` attributes
406
- will be added.
458
+ directories (and ImageMagick is available), `width` and `height` attributes will
459
+ be added.
460
+
461
+ ``` ruby
462
+ # Usage:
463
+ img 'SRC'
464
+ img 'SRC', OPTIONS_HASH
465
+ ```
407
466
 
408
467
  If `OPTIONS_HASH` is given, they will we passed onto the `<img>` tag to be
409
468
  generated as attributes.
410
469
 
411
- __Example:__ `img '/images/icon.png', alt: 'Icon'`
412
- __Output:__ `<img src='/images/icon.834782.png' width='24' height='24' alt='Icon' />`
470
+ #### Example
471
+ This example renders an image with an alt tag.
472
+
473
+ ``` erb
474
+ <%= img '/images/icon.png', alt: 'Icon' %>
475
+
476
+ <!-- Output: -->
477
+ <img src='/images/icon.834782.png' width='24' height='24' alt='Icon' />`
478
+ ```
413
479
 
414
480
  Need Compass support?
415
481
  ---------------------
416
482
 
417
- No, AssetPack doesn't have built-in Compass support, but you can use [Sinatra
418
- Support](http://sinefunc.com/sinatra-support):
483
+ No, AssetPack doesn't have built-in [Compass](http://compass-style.org) support,
484
+ but you can use [Sinatra Support](http://sinefunc.com/sinatra-support).
485
+
486
+ For an example of how to use AssetPack with Compass, including on how to use it
487
+ to generate image [sprites][compsprite], see the [Compass example
488
+ application.][compex]
489
+
490
+ [compex]: https://github.com/rstacruz/sinatra-assetpack/tree/master/examples/compass
491
+ [compsprite]: http://compass-style.org/reference/compass/utilities/sprites/
419
492
 
420
493
  ``` ruby
421
494
  # gem install sinatra/support
@@ -439,3 +512,21 @@ AssetPack will eventually have:
439
512
  * Refactor *Compressor* module
440
513
  * CDN (Cloudfront, S3) support
441
514
  * Better support for Compass sprites
515
+
516
+ Acknowledgements
517
+ ----------------
518
+
519
+ © 2011, Rico Sta. Cruz. Released under the [MIT
520
+ License](http://www.opensource.org/licenses/mit-license.php).
521
+
522
+ Sinatra-AssetPack is authored and maintained by [Rico Sta. Cruz][rsc] with help
523
+ from it's [contributors][c]. It is sponsored by my startup, [Sinefunc, Inc][sf].
524
+
525
+ * [My website](http://ricostacruz.com) (ricostacruz.com)
526
+ * [Sinefunc, Inc.](http://sinefunc.com) (sinefunc.com)
527
+ * [Github](http://github.com/rstacruz) (@rstacruz)
528
+ * [Twitter](http://twitter.com/rstacruz) (@rstacruz)
529
+
530
+ [rsc]: http://ricostacruz.com
531
+ [c]: http://github.com/rstacruz/sinatra-assetpack/contributors
532
+ [sf]: http://sinefunc.com