module Middleman::CoreExtensions::Routing::InstanceMethods

def page(url, opts={}, &block)

page "/", :layout => :homepage_layout
page "/about.html", :layout => false
The page method allows the layout to be set on a specific path
def page(url, opts={}, &block)
  if url.include?("*")
    url = Regexp.new(url.gsub("*", "(.*)").gsub(/^\//, "^"))
  end
  
  if url.is_a?(Regexp) && !opts.empty?
    provides_metadata_for_path url do |url|
      { :options => opts }
    end
    
    return
  end
  
  opts[:layout] = layout if opts[:layout].nil?
  
  url = full_path(url)
  if opts.has_key?(:proxy)
    reroute(url, opts[:proxy])
    
    if opts.has_key?(:ignore) && opts[:ignore]
      ignore(opts[:proxy])
      opts.delete(:ignore)
    end  
    
    opts.delete(:proxy)
  else
    if opts.has_key?(:ignore) && opts[:ignore]
      ignore(url)
      opts.delete(:ignore)
    end
  end
  a_block = block_given? ? block : nil
  if a_block || !opts.empty?
    sitemap.page(url) do
      template.options = opts
      template.blocks  = [a_block]
    end
  end
end

def with_layout(layout_name, &block)

end
page "/admin/login.html"
page "/admin/"
with_layout :admin do
Takes a block which allows many pages to have the same layout
def with_layout(layout_name, &block)
  old_layout = layout

  set :layout, layout_name
  instance_exec(&block) if block_given?
ensure
  set :layout, old_layout
end