aboutsummaryrefslogtreecommitdiffstats
path: root/actionpack/lib/action_controller/new_base/renderer.rb
diff options
context:
space:
mode:
Diffstat (limited to 'actionpack/lib/action_controller/new_base/renderer.rb')
-rw-r--r--actionpack/lib/action_controller/new_base/renderer.rb62
1 files changed, 62 insertions, 0 deletions
diff --git a/actionpack/lib/action_controller/new_base/renderer.rb b/actionpack/lib/action_controller/new_base/renderer.rb
new file mode 100644
index 0000000000..ed34c46aed
--- /dev/null
+++ b/actionpack/lib/action_controller/new_base/renderer.rb
@@ -0,0 +1,62 @@
+module ActionController
+ module Renderer
+ depends_on AbstractController::Renderer
+
+ def initialize(*)
+ self.formats = [:html]
+ super
+ end
+
+ def render(action, options = {})
+ # TODO: Move this into #render_to_body
+ if action.is_a?(Hash)
+ options, action = action, nil
+ else
+ options.merge! :action => action
+ end
+
+ _process_options(options)
+
+ self.response_body = render_to_body(options)
+ end
+
+ def render_to_body(options)
+ unless options.is_a?(Hash)
+ options = {:action => options}
+ end
+
+ if options.key?(:text)
+ options[:_template] = ActionView::TextTemplate.new(_text(options))
+ template = nil
+ elsif options.key?(:template)
+ options[:_template_name] = options[:template]
+ elsif options.key?(:action)
+ options[:_template_name] = options[:action].to_s
+ options[:_prefix] = _prefix
+ end
+
+ super(options)
+ end
+
+ private
+
+ def _prefix
+ controller_path
+ end
+
+ def _text(options)
+ text = options[:text]
+
+ case text
+ when nil then " "
+ else text.to_s
+ end
+ end
+
+ def _process_options(options)
+ if status = options[:status]
+ response.status = status.to_i
+ end
+ end
+ end
+end