module Middleman::Base::InstanceMethods

def process_request(options={})

Internal method to look for templates and evaluate them if found
def process_request(options={})
  if !settings.views.include?(settings.root)
    settings.set :views, File.join(settings.root, settings.views)
  end  
  
  # Normalize the path and add index if we're looking at a directory
  request.path_info = self.class.path_to_index(request.path)
  
  request_path = request.path_info.gsub("%20", " ")
  found_template = resolve_template(request_path, :raise_exceptions => false)
  return status(404) unless found_template
  return unless settings.execute_before_processing!(self, found_template)
  
  options.merge!(request['custom_options'] || {})
  old_layout = settings.layout
  settings.set :layout, options[:layout] if !options[:layout].nil?
  local_layout = if settings.layout
    if options[:layout] == false || request.path_info =~ /\.(css|js)$/
      false
    else
      settings.fetch_layout_path(settings.layout).to_sym
    end
  else
    false
  end
  render_options = { :layout => local_layout }
  render_options[:layout_engine] = options[:layout_engine] if options.has_key? :layout_engine
  
  path, engine = found_template
  locals = request['custom_locals'] || {}
  
  begin
    result = render(engine, path, render_options, locals)
  
    if result
      content_type mime_type(File.extname(request_path)), :charset => 'utf-8'
      status 200
      body result
    end
  # rescue
  #   status(404)
  ensure
    settings.set :layout, old_layout
  end
end