Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
84 lines (77 sloc) 2.744 kb
require 'sprockets/legacy_tilt_processor'
require 'sprockets/utils'
module Sprockets
# `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
#
module Engines
include Utils
# 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, ...}
#
def engines
config[:engines]
end
# Internal: Returns a `Hash` of engine extensions to mime types.
#
# # => { '.coffee' => 'application/javascript' }
def engine_mime_types
config[:engine_mime_types]
end
# Registers a new Engine `klass` for `ext`. If the `ext` already
# has an engine registered, it will be overridden.
#
# environment.register_engine '.coffee', CoffeeScriptProcessor
#
def register_engine(ext, klass, options = {})
ext = Sprockets::Utils.normalize_extension(ext)
if klass.respond_to?(:call)
processor = klass
self.config = hash_reassoc(config, :engines) do |engines|
engines.merge(ext => klass)
end
if options[:mime_type]
self.config = hash_reassoc(config, :engine_mime_types) do |mime_types|
mime_types.merge(ext.to_s => options[: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
self.config = hash_reassoc(config, :_extnames) do
compute_extname_map
end
end
end
end
Jump to Line
Something went wrong with that request. Please try again.