| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 | 
							- require 'sprockets/eco_template'
 
- require 'sprockets/ejs_template'
 
- require 'sprockets/jst_processor'
 
- require 'sprockets/utils'
 
- require 'tilt'
 
- module Sprockets
 
-   # `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
 
-   #
 
-   module Engines
 
-     # 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
 
-     #
 
-     def engines(ext = nil)
 
-       if ext
 
-         ext = Sprockets::Utils.normalize_extension(ext)
 
-         @engines[ext]
 
-       else
 
-         @engines.dup
 
-       end
 
-     end
 
-     # Returns an `Array` of engine extension `String`s.
 
-     #
 
-     #     environment.engine_extensions
 
-     #     # => ['.coffee', '.sass', ...]
 
-     def engine_extensions
 
-       @engines.keys
 
-     end
 
-     # Registers a new Engine `klass` for `ext`. If the `ext` already
 
-     # has an engine registered, it will be overridden.
 
-     #
 
-     #     environment.register_engine '.coffee', CoffeeScriptTemplate
 
-     #
 
-     def register_engine(ext, klass)
 
-       ext = Sprockets::Utils.normalize_extension(ext)
 
-       @engines[ext] = klass
 
-     end
 
-     private
 
-       def deep_copy_hash(hash)
 
-         initial = Hash.new { |h, k| h[k] = [] }
 
-         hash.inject(initial) { |h, (k, a)| h[k] = a.dup; h }
 
-       end
 
-   end
 
- end
 
 
  |