aboutsummaryrefslogblamecommitdiffstats
path: root/actionpack/lib/action_controller/new_base/renderer.rb
blob: 13085371605d15a9451a9f8e88d93151e4244a88 (plain) (tree)
1
2
3
4
5
6
7
8
9
10
11
12
13


                       









                                     




                            







                                              



                                                    
 
                                 


                                      
 
                            
                             
                                   
                                                    
                       

                                               

                                    


         














                                  




                                         

     
module ActionController
  module Renderer
    
    # def self.included(klass)
    #   klass.extend ClassMethods
    # end
    # 
    # module ClassMethods
    #   def prefix
    #     @prefix ||= name.underscore
    #   end      
    # end
    
    def initialize(*)
      self.formats = [:html]
      super
    end
    
    def render(action, options = {})
      # TODO: Move this into #render_to_string
      if action.is_a?(Hash)
        options, action = action, nil 
      else
        options.merge! :action => action
      end
      
      _process_options(options)
      
      self.response_body = render_to_string(options)
    end

    def render_to_string(options)
      unless options.is_a?(Hash)
        options = {:action => options}
      end

      if options.key?(:text)
        _render_text(options)
      elsif options.key?(:template)
        template = options.delete(:template)        
        super(template)
      elsif options.key?(:action)
        template = options.delete(:action).to_s
        options[:_prefix] = _prefix 
        super(template, options)
      end
    end
    
  private
  
    def _prefix
      controller_path
    end  
  
    def _render_text(options)
      text = options.delete(:text)

      case text
      when nil then " "
      else          text.to_s
      end
    end
  
    def _process_options(options)
      if status = options.delete(:status)
        response.status = status.to_i
      end
    end
  end
end