aboutsummaryrefslogtreecommitdiffstats
path: root/actionpack/lib/action_controller/new_base/render_options.rb
diff options
context:
space:
mode:
authorPratik Naik <pratiknaik@gmail.com>2009-06-01 09:38:09 +0100
committerPratik Naik <pratiknaik@gmail.com>2009-06-01 09:38:09 +0100
commit9d60525b5fc14b4b6f3ed9ba8ea874d6e76b4f78 (patch)
tree5a711cacac76a83ad12551023da8524f94e7365b /actionpack/lib/action_controller/new_base/render_options.rb
parentdc7323efd34327c13d26031b68e51314c24360f6 (diff)
parent9537fd0e3a7625afe4bee75d749647ca1837195a (diff)
downloadrails-9d60525b5fc14b4b6f3ed9ba8ea874d6e76b4f78.tar.gz
rails-9d60525b5fc14b4b6f3ed9ba8ea874d6e76b4f78.tar.bz2
rails-9d60525b5fc14b4b6f3ed9ba8ea874d6e76b4f78.zip
Merge commit 'mainstream/master'
Diffstat (limited to 'actionpack/lib/action_controller/new_base/render_options.rb')
-rw-r--r--actionpack/lib/action_controller/new_base/render_options.rb58
1 files changed, 27 insertions, 31 deletions
diff --git a/actionpack/lib/action_controller/new_base/render_options.rb b/actionpack/lib/action_controller/new_base/render_options.rb
index 581a92cb7b..fc9a02626f 100644
--- a/actionpack/lib/action_controller/new_base/render_options.rb
+++ b/actionpack/lib/action_controller/new_base/render_options.rb
@@ -1,12 +1,12 @@
module ActionController
module RenderOptions
- extend ActiveSupport::DependencyModule
-
+ extend ActiveSupport::Concern
+
included do
extlib_inheritable_accessor :_renderers
self._renderers = []
end
-
+
module ClassMethods
def _write_render_options
renderers = _renderers.map do |r|
@@ -17,33 +17,31 @@ module ActionController
end
RUBY_EVAL
end
-
+
class_eval <<-RUBY_EVAL, __FILE__, __LINE__ + 1
def _handle_render_options(options)
#{renderers.join}
end
RUBY_EVAL
end
-
+
def _add_render_option(name)
_renderers << name
_write_render_options
end
end
-
+
def render_to_body(options)
_handle_render_options(options) || super
end
end
-
- module RenderOption
- extend ActiveSupport::DependencyModule
- included do
- extend ActiveSupport::DependencyModule
- depends_on ::ActionController::RenderOptions
+ module RenderOption #:nodoc:
+ def self.extended(base)
+ base.extend ActiveSupport::Concern
+ base.send :include, ::ActionController::RenderOptions
- def self.register_renderer(name)
+ def base.register_renderer(name)
included { _add_render_option(name) }
end
end
@@ -51,57 +49,55 @@ module ActionController
module Renderers
module Json
- include RenderOption
+ extend RenderOption
register_renderer :json
-
+
def _render_json(json, options)
json = ActiveSupport::JSON.encode(json) unless json.respond_to?(:to_str)
json = "#{options[:callback]}(#{json})" unless options[:callback].blank?
- response.content_type ||= Mime::JSON
+ self.content_type ||= Mime::JSON
self.response_body = json
- end
+ end
end
module Js
- include RenderOption
+ extend RenderOption
register_renderer :js
def _render_js(js, options)
- response.content_type ||= Mime::JS
+ self.content_type ||= Mime::JS
self.response_body = js
end
end
module Xml
- include RenderOption
+ extend RenderOption
register_renderer :xml
def _render_xml(xml, options)
- response.content_type ||= Mime::XML
+ self.content_type ||= Mime::XML
self.response_body = xml.respond_to?(:to_xml) ? xml.to_xml : xml
end
end
- module Rjs
- include RenderOption
+ module RJS
+ extend RenderOption
register_renderer :update
def _render_update(proc, options)
generator = ActionView::Helpers::PrototypeHelper::JavaScriptGenerator.new(_action_view, &proc)
- response.content_type = Mime::JS
+ self.content_type = Mime::JS
self.response_body = generator.to_s
end
end
module All
- extend ActiveSupport::DependencyModule
+ extend ActiveSupport::Concern
- included do
- include ::ActionController::Renderers::Json
- include ::ActionController::Renderers::Js
- include ::ActionController::Renderers::Xml
- include ::ActionController::Renderers::Rjs
- end
+ include ActionController::Renderers::Json
+ include ActionController::Renderers::Js
+ include ActionController::Renderers::Xml
+ include ActionController::Renderers::RJS
end
end
end