module Middleman::CoreExtensions::Routing::ClassMethods

def page(url, options={}, &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, options={}, &block)
  url = url.gsub(%r{#{settings.index_file}$}, "")
  url = url.gsub(%r{(\/)$}, "") if url.length > 1

  paths = [url]
  paths << "#{url}/" if url.length > 1 && url.split("/").last.split('.').length <= 1
  paths << "#{path_to_index(url)}"
  options[:layout] = settings.layout if options[:layout].nil?
  paths.each do |p|
    get(p) do
      return yield if block_given?
      process_request(options)
    end
  end
end

def path_to_index(path)

def path_to_index(path)
  parts = path ? path.split('/') : []
  if parts.last.nil? || parts.last.split('.').length == 1
    path = File.join(path, settings.index_file) 
  end
  path.gsub(%r{^/}, '')
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 = settings.layout

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