X-Git-Url: https://git.njae.me.uk/?a=blobdiff_plain;f=vendor%2Frails%2Factionpack%2Flib%2Faction_view%2Ftemplate_handlers.rb;fp=vendor%2Frails%2Factionpack%2Flib%2Faction_view%2Ftemplate_handlers.rb;h=205f8628f0e97e791e24639822342c6470dc2917;hb=437aa336c44c74a30aeea16a06743c32747ed661;hp=0000000000000000000000000000000000000000;hpb=97a0772b06264134cfe38e7494f9427efe0840a0;p=feedcatcher.git

diff --git a/vendor/rails/actionpack/lib/action_view/template_handlers.rb b/vendor/rails/actionpack/lib/action_view/template_handlers.rb
new file mode 100644
index 0000000..205f862
--- /dev/null
+++ b/vendor/rails/actionpack/lib/action_view/template_handlers.rb
@@ -0,0 +1,48 @@
+module ActionView #:nodoc:
+  module TemplateHandlers #:nodoc:
+    autoload :ERB, 'action_view/template_handlers/erb'
+    autoload :RJS, 'action_view/template_handlers/rjs'
+    autoload :Builder, 'action_view/template_handlers/builder'
+
+    def self.extended(base)
+      base.register_default_template_handler :erb, TemplateHandlers::ERB
+      base.register_template_handler :rjs, TemplateHandlers::RJS
+      base.register_template_handler :builder, TemplateHandlers::Builder
+
+      # TODO: Depreciate old template extensions
+      base.register_template_handler :rhtml, TemplateHandlers::ERB
+      base.register_template_handler :rxml, TemplateHandlers::Builder
+    end
+
+    @@template_handlers = {}
+    @@default_template_handlers = nil
+
+    # 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.
+    def register_template_handler(extension, klass)
+      @@template_handlers[extension.to_sym] = klass
+    end
+
+    def template_handler_extensions
+      @@template_handlers.keys.map(&:to_s).sort
+    end
+
+    def registered_template_handler(extension)
+      extension && @@template_handlers[extension.to_sym]
+    end
+
+    def register_default_template_handler(extension, klass)
+      register_template_handler(extension, klass)
+      @@default_template_handlers = klass
+    end
+
+    def handler_class_for_extension(extension)
+      registered_template_handler(extension) || @@default_template_handlers
+    end
+  end
+end