Class: Sprockets::CharsetNormalizer
- Inherits:
-
Tilt::Template
- Object
- Tilt::Template
- Sprockets::CharsetNormalizer
- Defined in:
- lib/sprockets/charset_normalizer.rb
Overview
Some browsers have issues with stylesheets that contain multiple ‘@charset` definitions. The issue surfaces while using Sass since it inserts a `@charset` at the top of each file. Then Sprockets concatenates them together.
The ‘CharsetNormalizer` processor strips out multiple `@charset` definitions.
The current implementation is naive. It picks the first ‘@charset` it sees and strips the others. This works for most people because the other definitions are usually `UTF-8`. A more sophisticated approach would be to re-encode stylesheets with mixed encodings.
This behavior can be disabled with:
environment.unregister_bundle_processor 'text/css', Sprockets::CharsetNormalizer
Instance Method Summary collapse
Instance Method Details
#evaluate(context, locals, &block) ⇒ Object
25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
# File 'lib/sprockets/charset_normalizer.rb', line 25 def evaluate(context, locals, &block) charset = nil # Find and strip out any `@charset` definitions filtered_data = data.gsub(/^@charset "([^"]+)";$/) { charset ||= $1; "" } if charset # If there was a charset, move it to the top "@charset \"#{charset}\";#{filtered_data}" else data end end |
#prepare ⇒ Object
22 23 |
# File 'lib/sprockets/charset_normalizer.rb', line 22 def prepare end |