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 |
# File 'lib/sprockets/engines.rb', line 53 def register_engine(ext, klass, = {}) 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 |