提交 d9f936e6 编写于 作者: R Rafael Mendonça França

Merge pull request #7644 from insside/register_template_handler-method-refactoring

Allowing pass couple extension to one register_template_handler call
## Rails 4.0.0 (unreleased) ## ## 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` * 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 gem should be added to Gemfile (under the assets group) in order to use Rails asset
pipeline in future versions of Rails. pipeline in future versions of Rails.
......
...@@ -21,11 +21,14 @@ def self.extensions ...@@ -21,11 +21,14 @@ def self.extensions
end end
# Register an object that knows how to handle template files with the given # 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 # The handler must respond to `:call`, which will be passed the template
# and should return the rendered template as a String. # and should return the rendered template as a String.
def register_template_handler(extension, handler) def register_template_handler(*extensions, handler)
@@template_handlers[extension.to_sym] = handler raise(ArgumentError, "Extension is required") if extensions.empty?
extensions.each do |extension|
@@template_handlers[extension.to_sym] = handler
end
@@template_extensions = nil @@template_extensions = nil
end end
......
...@@ -451,6 +451,15 @@ def test_render_layout_with_object ...@@ -451,6 +451,15 @@ def test_render_layout_with_object
assert_equal %(<title>David</title>), assert_equal %(<title>David</title>),
@view.render(:file => "test/layout_render_object") @view.render(:file => "test/layout_render_object")
end 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 end
class CachedViewRenderTest < ActiveSupport::TestCase class CachedViewRenderTest < ActiveSupport::TestCase
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册