module ActionView::Template::Handlers
def self.extended(base)
def self.extended(base) base.register_default_template_handler :raw, Raw.new base.register_template_handler :erb, ERB.new base.register_template_handler :html, Html.new base.register_template_handler :builder, Builder.new base.register_template_handler :ruby, lambda { |_, source| source } end
def self.extensions
def self.extensions @@template_extensions ||= @@template_handlers.keys end
def handler_for_extension(extension)
def handler_for_extension(extension) registered_template_handler(extension) || @@default_template_handlers end
def register_default_template_handler(extension, klass)
def register_default_template_handler(extension, klass) register_template_handler(extension, klass) @@default_template_handlers = klass end
def register_template_handler(*extensions, handler)
The handler must respond to +:call+, which will be passed the template
extensions. This can be used to implement new template types.
Register an object that knows how to handle template files with the given
def register_template_handler(*extensions, handler) raise(ArgumentError, "Extension is required") if extensions.empty? extensions.each do |extension| @@template_handlers[extension.to_sym] = handler end @@template_extensions = nil end
def registered_template_handler(extension)
def registered_template_handler(extension) extension && @@template_handlers[extension.to_sym] end
def template_handler_extensions
def template_handler_extensions @@template_handlers.keys.map(&:to_s).sort end
def unregister_template_handler(*extensions)
def unregister_template_handler(*extensions) extensions.each do |extension| handler = @@template_handlers.delete extension.to_sym @@default_template_handlers = nil if @@default_template_handlers == handler end @@template_extensions = nil end