README.md in sprockets_relative_url-0.0.1 vs README.md in sprockets_relative_url-1.0.0
- old
+ new
@@ -1,40 +1,104 @@
# Sprockets Relative URL support
+[![Gem Version][GV img]][Gem Version]
+[![Build Status][BS img]][Build Status]
+[![Dependency Status][DS img]][Dependency Status]
+[![Code Climate][CC img]][Code Climate]
+[![Coverage Status][CS img]][Coverage Status]
+[![Semantic Versioning][SV img]][Semantic Versioning]
+
+[Gem Version]: https://rubygems.org/gems/sprockets_relative_url
+[Build Status]: https://travis-ci.org/smangelsdorf/sprockets_relative_url
+[Dependency Status]: https://gemnasium.com/smangelsdorf/sprockets_relative_url
+[Code Climate]: https://codeclimate.com/github/smangelsdorf/sprockets_relative_url
+[Coverage Status]: https://coveralls.io/r/smangelsdorf/sprockets_relative_url
+[Semantic Versioning]: http://semver.org
+
+[GV img]: https://img.shields.io/gem/v/sprockets_relative_url.svg
+[BS img]: https://img.shields.io/travis/smangelsdorf/sprockets_relative_url.svg
+[DS img]: https://img.shields.io/gemnasium/smangelsdorf/sprockets_relative_url.svg
+[CC img]: https://img.shields.io/codeclimate/github/smangelsdorf/sprockets_relative_url.svg
+[CS img]: https://img.shields.io/coveralls/smangelsdorf/sprockets_relative_url.svg
+[SV img]: http://img.shields.io/badge/semver-%E2%9C%94-brightgreen.svg
+
Fixes relative URLs in CSS assets using Sprockets.
Each asset is resolved from Sprockets, and its relative URL will be rewritten to
use a precompiled version. By adding this preprocessor, CSS frameworks can be
minified and combined into your `application.css` file without any need to
rewrite the `url()` values in their CSS.
-Tested with:
+Tested Rubies:
-- Rails
-- TODO: Sinatra
+- MRI 1.9.3, 2.0.0, 2.1.x
+- JRuby 1.7.x
+- Rubinius 2.2.x
## Installation
Add this line to your application's Gemfile:
- gem 'sprockets_relative_url'
+```ruby
+gem 'sprockets_relative_url'
+```
## Usage
### Rails
Add the processor to the Rails asset pipeline:
- Rails.application.assets
- .register_postprocessor('text/css', SprocketsRelativeUrl::Processor)
+```ruby
+# config/initializers/sprockets_relative_url.rb
+Rails.application.assets
+ .register_postprocessor('text/css', SprocketsRelativeUrl::Processor)
+```
-### Sinatra
+Ensure referenced assets are being precompiled. For example:
-TODO
+```ruby
+# config/application.rb
+config.assets.precompile << /(fonts|images)\/.*/
+```
+### Standalone Sprockets
+
+```ruby
+env = Sprockets::Environment.new
+env.append_path('app/assets')
+env.register_postprocessor('text/css', SprocketsRelativeUrl::Processor)
+```
+
+Similar to the Rails setup above, you will need to ensure that referenced assets
+are being precompiled.
+
+## Caveats
+
+This library uses a regular expression to grab `url(...)` values out of CSS,
+which has some drawbacks:
+
+* No support for escaped parentheses inside URLs:
+
+ ```css
+ background: url(images/mainbg\(white\).png);
+ ```
+
+ This issue is addressed by ignoring any URL which contains a backslash
+ character, but this obviously means that escaped characters in a URL are
+ prohibited. Special characters can be URL encoded to work around this.
+
+* Deliberately malformed CSS can probably trick the regular expression into
+ matching something it shouldn't. This should never be an issue, but it's
+ worth mentioning.
+
+These could be fixed properly by building a full CSS parser into the processor,
+but the additional complexity is prohibitive.
+
## Contributing
1. Fork it ( https://github.com/smangelsdorf/sprockets_relative_url/fork )
2. Create your feature branch (`git checkout -b my-new-feature`)
3. Commit your changes (`git commit -am 'Add some feature'`)
-4. Push to the branch (`git push origin my-new-feature`)
-5. Create a new Pull Request
+4. Verify project tests and style (`rake`)
+5. Push to the branch (`git push origin my-new-feature`)
+6. Create a new Pull Request