module ActionView::LookupContext::ViewPaths

def args_for_lookup(name, prefix, partial) #:nodoc:

:nodoc:
def args_for_lookup(name, prefix, partial) #:nodoc:
  name, prefix = normalize_name(name, prefix)
  [name, prefix, partial || false, @details, details_key]
end

def default_handlers #:nodoc:

:nodoc:
def default_handlers #:nodoc:
  @@default_handlers ||= Template::Handlers.extensions
end

def exists?(name, prefix = nil, partial = false)

def exists?(name, prefix = nil, partial = false)
  @view_paths.exists?(*args_for_lookup(name, prefix, partial))
end

def find(name, prefix = nil, partial = false)

def find(name, prefix = nil, partial = false)
  @view_paths.find(*args_for_lookup(name, prefix, partial))
end

def find_all(name, prefix = nil, partial = false)

def find_all(name, prefix = nil, partial = false)
  @view_paths.find_all(*args_for_lookup(name, prefix, partial))
end

def handlers_regexp #:nodoc:

:nodoc:
def handlers_regexp #:nodoc:
  @@handlers_regexp ||= /\.(?:#{default_handlers.join('|')})$/
end

def normalize_name(name, prefix) #:nodoc:

:nodoc:
name instead of the prefix.
as well as incorrectly putting part of the path in the template
Support legacy foo.erb names even though we now ignore .erb
def normalize_name(name, prefix) #:nodoc:
  name  = name.to_s.gsub(handlers_regexp, '')
  parts = name.split('/')
  return parts.pop, [prefix, *parts].compact.join("/")
end

def view_paths=(paths)

instance objects as we wish.
Whenever setting view paths, makes a copy so we can manipulate then in
def view_paths=(paths)
  @view_paths = ActionView::Base.process_view_paths(paths)
end

def with_fallbacks

Add fallbacks to the view paths. Useful in cases you are rendering a :file.
def with_fallbacks
  added_resolvers = 0
  self.class.fallbacks.each do |resolver|
    next if view_paths.include?(resolver)
    view_paths.push(resolver)
    added_resolvers += 1
  end
  yield
ensure
  added_resolvers.times { view_paths.pop }
end