Module: Sprockets::Engines

Included in:
Sprockets, Processing
Defined in:
lib/sprockets/engines.rb

Overview

Engines provides a global and Environment instance registry.

An engine is a type of processor that is bound to an filename extension. application.js.coffee indicates that the CoffeeScriptTemplate 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 ERBTemplate then CoffeeScriptTemplate.

All ‘Engine`s must follow the Tilt::Template interface. It is recommended to subclass Tilt::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', SassTemplate

Instance Method Summary collapse

Instance Method Details

#engine_extensionsObject

Returns an Array of engine extension ‘String`s.

environment.engine_extensions
# => ['.coffee', '.sass', ...]


54
55
56
# File 'lib/sprockets/engines.rb', line 54

def engine_extensions
  @engines.keys
end

#engines(ext = nil) ⇒ Object

Returns an Array of ‘Engine`s registered on the Environment. If an ext argument is supplied, the Engine register under that extension will be returned.

environment.engines
# => [CoffeeScriptTemplate, SassTemplate, ...]

environment.engines('.coffee')
# => CoffeeScriptTemplate


41
42
43
44
45
46
47
48
# File 'lib/sprockets/engines.rb', line 41

def engines(ext = nil)
  if ext
    ext = Sprockets::Utils.normalize_extension(ext)
    @engines[ext]
  else
    @engines.dup
  end
end

#register_engine(ext, klass) ⇒ Object

Registers a new Engine klass for ext. If the ext already has an engine registered, it will be overridden.

environment.register_engine '.coffee', CoffeeScriptTemplate


63
64
65
66
# File 'lib/sprockets/engines.rb', line 63

def register_engine(ext, klass)
  ext = Sprockets::Utils.normalize_extension(ext)
  @engines[ext] = klass
end