Module: Sprockets::Engines
Overview
‘Engines` provides a global and `Environment` instance registry.
An engine is a type of processor that is bound to a filename extension. ‘application.js.coffee` indicates that the `CoffeeScriptProcessor` engine will be ran on the file.
Extensions can be stacked and will be evaulated from right to left. ‘application.js.coffee.erb` will first run `ERBProcessor` then `CoffeeScriptProcessor`.
All ‘Engine`s must follow the `Template` interface. It is recommended to subclass `Template`.
Its recommended that you register engine changes on your local ‘Environment` instance.
environment.register_engine '.foo', FooProcessor
The global registry is exposed for plugins to register themselves.
Sprockets.register_engine '.sass', SassProcessor
Constant Summary
Constants included from Utils
Utils::UNBOUND_METHODS_BIND_TO_ANY_OBJECT
Instance Method Summary collapse
-
#engine_mime_types ⇒ Object
Internal: Returns a ‘Hash` of engine extensions to mime types.
-
#engines ⇒ Object
Returns a ‘Hash` of `Engine`s registered on the `Environment`.
-
#register_engine(ext, klass, options = {}) ⇒ Object
Registers a new Engine ‘klass` for `ext`.
Methods included from Utils
#concat_javascript_sources, #dfs, #dfs_paths, #duplicable?, #hash_reassoc, #hash_reassoc1, #module_include, #normalize_extension, #string_end_with_semicolon?
Instance Method Details
#engine_mime_types ⇒ Object
Internal: Returns a ‘Hash` of engine extensions to mime types.
# => { ‘.coffee’ => ‘application/javascript’ }
44 45 46 |
# File 'lib/sprockets/engines.rb', line 44 def engine_mime_types config[:engine_mime_types] end |
#engines ⇒ Object
Returns a ‘Hash` of `Engine`s registered on the `Environment`. If an `ext` argument is supplied, the `Engine` associated with that extension will be returned.
environment.engines
# => {".coffee" => CoffeeScriptProcessor, ".sass" => SassProcessor, ...}
37 38 39 |
# File 'lib/sprockets/engines.rb', line 37 def engines config[:engines] end |
#register_engine(ext, klass, options = {}) ⇒ Object
Registers a new Engine ‘klass` for `ext`. If the `ext` already has an engine registered, it will be overridden.
environment.register_engine '.coffee', CoffeeScriptProcessor
53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 |
# File 'lib/sprockets/engines.rb', line 53 def register_engine(ext, klass, = {}) unless [:silence_deprecation] msg = <<-MSG Sprockets method `register_engine` is deprecated. Please register a mime type using `register_mime_type` then use `register_compressor` or `register_transformer`. https://github.com/rails/sprockets/blob/master/guides/extending_sprockets.md#supporting-all-versions-of-sprockets-in-processors MSG Deprecation.new([caller.first]).warn(msg) end ext = Sprockets::Utils.normalize_extension(ext) self.computed_config = {} if klass.respond_to?(:call) processor = klass self.config = hash_reassoc(config, :engines) do |engines| engines.merge(ext => klass) end if [:mime_type] self.config = hash_reassoc(config, :engine_mime_types) do |mime_types| mime_types.merge(ext.to_s => [:mime_type]) end end else processor = LegacyTiltProcessor.new(klass) self.config = hash_reassoc(config, :engines) do |engines| engines.merge(ext => processor) end if klass.respond_to?(:default_mime_type) && klass.default_mime_type self.config = hash_reassoc(config, :engine_mime_types) do |mime_types| mime_types.merge(ext.to_s => klass.default_mime_type) end end end end |