class ActionView::PartialRenderer

def setup(context, options, block)

respond to +to_partial_path+ in order to setup the path.
set to that string. Otherwise, the +options[:partial]+ object must
If +options[:partial]+ is a string, then the +@path+ instance variable is

logic that handles the type of object passed in as the partial.
finds the options and details and extracts them. The method also contains
Sets up instance variables needed for rendering a partial. This method
def setup(context, options, block)
  @view   = context
  @options = options
  @block   = block
  @locals  = options[:locals] || {}
  @details = extract_details(options)
  prepend_formats(options[:formats])
  partial = options[:partial]
  if String === partial
    @has_object = options.key?(:object)
    @object     = options[:object]
    @collection = collection_from_options
    @path       = partial
  else
    @has_object = true
    @object = partial
    @collection = collection_from_object || collection_from_options
    if @collection
      paths = @collection_data = @collection.map { |o| partial_path(o) }
      @path = paths.uniq.one? ? paths.first : nil
    else
      @path = partial_path
    end
  end
  if as = options[:as]
    raise_invalid_option_as(as) unless as.to_s =~ /\A[a-z_]\w*\z/
    as = as.to_sym
  end
  if @path
    @variable, @variable_counter, @variable_iteration = retrieve_variable(@path, as)
    @template_keys = retrieve_template_keys
  else
    paths.map! { |path| retrieve_variable(path, as).unshift(path) }
  end
  self
end