Module: ActionView::Template::Handlers

Included in:
ActionView::Template
Defined in:
actionpack/lib/action_view/template/handler.rb,
actionpack/lib/action_view/template/handlers.rb,
actionpack/lib/action_view/template/handlers/erb.rb,
actionpack/lib/action_view/template/handlers/builder.rb

Overview

:nodoc:

Defined Under Namespace

Modules: Compilable Classes: Builder, ERB, Erubis

Constant Summary collapse

@@template_handlers =
{}
@@default_template_handlers =
nil

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.extended(base) ⇒ Object



8
9
10
11
# File 'actionpack/lib/action_view/template/handlers.rb', line 8

def self.extended(base)
  base.register_default_template_handler :erb, ERB.new
  base.register_template_handler :builder, Builder.new
end

.extensionsObject



16
17
18
# File 'actionpack/lib/action_view/template/handlers.rb', line 16

def self.extensions
  @@template_extensions ||= @@template_handlers.keys
end

Instance Method Details

#handler_class_for_extension(extension) ⇒ Object



44
45
46
47
48
# File 'actionpack/lib/action_view/template/handlers.rb', line 44

def handler_class_for_extension(extension)
  ActiveSupport::Deprecation.warn "handler_class_for_extension is deprecated. " <<
    "Please use handler_for_extension instead", caller
  handler_for_extension(extension)
end

#handler_for_extension(extension) ⇒ Object



50
51
52
# File 'actionpack/lib/action_view/template/handlers.rb', line 50

def handler_for_extension(extension)
  registered_template_handler(extension) || @@default_template_handlers
end

#register_default_template_handler(extension, klass) ⇒ Object



39
40
41
42
# File 'actionpack/lib/action_view/template/handlers.rb', line 39

def register_default_template_handler(extension, klass)
  register_template_handler(extension, klass)
  @@default_template_handlers = klass
end

#register_template_handler(extension, klass) ⇒ Object

Register a class that knows how to handle template files with the given extension. This can be used to implement new template types. The constructor for the class must take the ActiveView::Base instance as a parameter, and the class must implement a render method that takes the contents of the template to render as well as the Hash of local assigns available to the template. The render method ought to return the rendered template as a string.



27
28
29
# File 'actionpack/lib/action_view/template/handlers.rb', line 27

def register_template_handler(extension, klass)
  @@template_handlers[extension.to_sym] = klass
end

#registered_template_handler(extension) ⇒ Object



35
36
37
# File 'actionpack/lib/action_view/template/handlers.rb', line 35

def registered_template_handler(extension)
  extension && @@template_handlers[extension.to_sym]
end

#template_handler_extensionsObject



31
32
33
# File 'actionpack/lib/action_view/template/handlers.rb', line 31

def template_handler_extensions
  @@template_handlers.keys.map {|key| key.to_s }.sort
end