diff options
author | Rafael Mendonça França <rafaelmfranca@gmail.com> | 2012-09-17 07:20:14 -0700 |
---|---|---|
committer | Rafael Mendonça França <rafaelmfranca@gmail.com> | 2012-09-17 07:20:14 -0700 |
commit | d9f936e61b15ae163e92ca92822b242baeec986d (patch) | |
tree | d78a704e9f10263b71bb008cf22ce9fe941bd613 | |
parent | c35a7d78ec2599b597296dc6749ca3d7ac434177 (diff) | |
parent | 13b0af736e6bd1242827409f59d528673b97fcc9 (diff) | |
download | rails-d9f936e61b15ae163e92ca92822b242baeec986d.tar.gz rails-d9f936e61b15ae163e92ca92822b242baeec986d.tar.bz2 rails-d9f936e61b15ae163e92ca92822b242baeec986d.zip |
Merge pull request #7644 from insside/register_template_handler-method-refactoring
Allowing pass couple extension to one register_template_handler call
-rw-r--r-- | actionpack/CHANGELOG.md | 2 | ||||
-rw-r--r-- | actionpack/lib/action_view/template/handlers.rb | 9 | ||||
-rw-r--r-- | actionpack/test/template/render_test.rb | 9 |
3 files changed, 17 insertions, 3 deletions
diff --git a/actionpack/CHANGELOG.md b/actionpack/CHANGELOG.md index 3b71af9af7..339b4197df 100644 --- a/actionpack/CHANGELOG.md +++ b/actionpack/CHANGELOG.md @@ -1,5 +1,7 @@ ## Rails 4.0.0 (unreleased) ## +* Allow pass couple extensions to ActionView::Template.register_template_handler call. *Tima Maslyuchenko* + * Sprockets integration has been extracted from Action Pack and the `sprockets-rails` gem should be added to Gemfile (under the assets group) in order to use Rails asset pipeline in future versions of Rails. diff --git a/actionpack/lib/action_view/template/handlers.rb b/actionpack/lib/action_view/template/handlers.rb index 52e032bbd8..47e572967a 100644 --- a/actionpack/lib/action_view/template/handlers.rb +++ b/actionpack/lib/action_view/template/handlers.rb @@ -21,11 +21,14 @@ module ActionView #:nodoc: end # Register an object that knows how to handle template files with the given - # extension. This can be used to implement new template types. + # extensions. This can be used to implement new template types. # The handler must respond to `:call`, which will be passed the template # and should return the rendered template as a String. - def register_template_handler(extension, handler) - @@template_handlers[extension.to_sym] = handler + 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 diff --git a/actionpack/test/template/render_test.rb b/actionpack/test/template/render_test.rb index 6279abaae5..16a43fa0df 100644 --- a/actionpack/test/template/render_test.rb +++ b/actionpack/test/template/render_test.rb @@ -451,6 +451,15 @@ module RenderTestCases assert_equal %(<title>David</title>), @view.render(:file => "test/layout_render_object") end + + def test_render_with_passing_couple_extensions_to_one_register_template_handler_function_call + ActionView::Template.register_template_handler :foo1, :foo2, CustomHandler + assert_equal @view.render(:inline => "Hello, World!", :type => :foo1), @view.render(:inline => "Hello, World!", :type => :foo2) + end + + def test_render_throws_exception_when_no_extensions_passed_to_register_template_handler_function_call + assert_raises(ArgumentError) { ActionView::Template.register_template_handler CustomHandler } + end end class CachedViewRenderTest < ActiveSupport::TestCase |