aboutsummaryrefslogblamecommitdiffstats
path: root/actionpack/lib/action_controller/new_base/layouts.rb
blob: 35068db770b8a1ba1b790bb713e22c2335bea80f (plain) (tree)
1
2
3
4
5
6
7

                       

                                          


                                          





                              



                                    
                                                                                                             
                                                                                                                             
         
       
  
                                         
               


                                                          






                                                                                             
     
   
module ActionController
  module Layouts
    extend ActiveSupport::DependencyModule

    depends_on ActionController::Renderer
    depends_on AbstractController::Layouts
    
    module ClassMethods
      def _implied_layout_name
        controller_path
      end
    end
    
  private

    def _determine_template(options)
      super
      if (!options.key?(:text) && !options.key?(:inline) && !options.key?(:partial)) || options.key?(:layout)
        options[:_layout] = _layout_for_option(options.key?(:layout) ? options[:layout] : :none, options[:_template].details)
      end
    end
  
    def _layout_for_option(name, details)
      case name
      when String     then _layout_for_name(name, details)
      when true       then _default_layout(true, details)
      when :none      then _default_layout(false, details)
      when false, nil then nil
      else
        raise ArgumentError, 
          "String, true, or false, expected for `layout'; you passed #{name.inspect}"        
      end
    end
    
  end
end