module Middleman::CoreExtensions::Routing::ClassMethods

def ignore(path)

Keep a path from building
def ignore(path)
  settings.excluded_paths << paths_for_url(path)
  settings.excluded_paths.flatten!
  settings.excluded_paths.uniq!
end

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)
  has_block = block_given?
  options[:layout] = settings.layout if options[:layout].nil?
  
  if options.has_key?(:proxy)
    settings.proxied_paths[url] = options[:proxy]
    if options.has_key?(:ignore) && options[:ignore]
      settings.ignore(options[:proxy])
    end
  else
    if options.has_key?(:ignore) && options[:ignore]
      settings.ignore(url)
    end
  end
  paths_for_url(url).each do |p|
    get(p) do
      if settings.proxied_paths.has_key?(url)
        request["is_proxy"] = true
        request.path_info = settings.proxied_paths[url]
      end
      
      instance_eval(&block) if has_block
      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 paths_for_url(url)

def paths_for_url(url)
  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)}"
  paths
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