aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRafael Mendonça França <rafaelmfranca@gmail.com>2012-09-17 07:20:14 -0700
committerRafael Mendonça França <rafaelmfranca@gmail.com>2012-09-17 07:20:14 -0700
commitd9f936e61b15ae163e92ca92822b242baeec986d (patch)
treed78a704e9f10263b71bb008cf22ce9fe941bd613
parentc35a7d78ec2599b597296dc6749ca3d7ac434177 (diff)
parent13b0af736e6bd1242827409f59d528673b97fcc9 (diff)
downloadrails-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.md2
-rw-r--r--actionpack/lib/action_view/template/handlers.rb9
-rw-r--r--actionpack/test/template/render_test.rb9
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