lib/abstract_controller/layouts.rb
# Creates a _layout method to be called by _default_layout .
#
# If a layout is not explicitly mentioned then look for a layout with the controller's name.
# if nothing is found then try same procedure to find super class's layout.
Creates a _layout method to be called by _default_layout .
If a layout is not explicitly mentioned then look for a layout with the controller's name.
if nothing is found then try same procedure to find super class's layout.
Creates a _layout method to be called by _default_layout . If a layout is not explicitly mentioned then look for a layout with the controller ' s name . if nothing is found then try same procedure to find super class ' s layout .
def _write_layout_method
        remove_possible_method(:_layout)
        case defined?(@_layout) ? @_layout : nil
        when String
          self.class_eval %{def _layout; #{@_layout.inspect} end}, __FILE__, __LINE__
        when Symbol
          self.class_eval <<-ruby_eval, __FILE__, __LINE__ + 1
            def _layout
              #{@_layout}.tap do |layout|
                unless layout.is_a?(String) || !layout
                  raise ArgumentError, "Your layout method :#{@_layout} returned \#{layout}. It " \
                    "should have returned a String, false, or nil"
                end
              end
            end
          ruby_eval
        when Proc
          define_method :_layout_from_proc, &@_layout
          self.class_eval %{def _layout; _layout_from_proc(self) end}, __FILE__, __LINE__
        when false
          self.class_eval %{def _layout; end}, __FILE__, __LINE__
        when true
          raise ArgumentError, "Layouts must be specified as a String, Symbol, false, or nil"
        when nil
          if name
            _prefixes = _implied_layout_name =~ /\blayouts/ ? [] : ["layouts"]
            self.class_eval <<-RUBY, __FILE__, __LINE__ + 1
              def _layout
                if template_exists?("#{_implied_layout_name}", #{_prefixes.inspect})
                  "#{_implied_layout_name}"
                else
                  super
                end
              end
            RUBY
          end
        end
        self.class_eval { private :_layout }
      end
def _write_layout_method remove_possible_method ( :_layout ) case defined? ( @_layout ) ? @_layout : nil when String self . class_eval %{def _layout; #{@_layout.inspect} end} , __FILE__ , __LINE__ when Symbol self . class_eval <<-ruby_eval , __FILE__ , __LINE__ + 1 
            def _layout
               #{ @_layout } .tap do |layout|
                unless layout.is_a?(String) || !layout
                  raise ArgumentError, "Your layout method : #{ @_layout }  returned  \# {layout}. It "  \
                     "should have returned a String, false, or nil"
                end
              end
            end
           ruby_eval when Proc define_method :_layout_from_proc , & @_layout self . class_eval %{def _layout; _layout_from_proc(self) end} , __FILE__ , __LINE__ when false self . class_eval %{def _layout; end} , __FILE__ , __LINE__ when true raise ArgumentError , "Layouts must be specified as a String, Symbol, false, or nil" when nil if name _prefixes = _implied_layout_name =~ / \b layouts / ? [ ] : [ "layouts" ] self . class_eval <<-RUBY , __FILE__ , __LINE__ + 1 
              def _layout
                if template_exists?(" #{ _implied_layout_name } ",  #{ _prefixes . inspect } )
                  " #{ _implied_layout_name } "
                else
                  super
                end
              end
             RUBY end end self . class_eval { private :_layout } end
Creates a _layout method to be called by _default_layout .
Creates a _layout method to be called by _default_layout .