## Use this for completely custom routing
# /lib/routing_extensions.rb
module ThongKuah
module Routing

module RouteExtensions
def self.included(base)
base.alias_method_chain :recognition_conditions, :path_regexp
end

# allows recognition for paths only matching the given regexp (conditions[:path])
# allows recognition for paths not matching the given regexp (conditions[:not_path])
def recognition_conditions_with_path_regexp
result = recognition_conditions_without_path_regexp
result << "conditions[:path] =~ path" if conditions[:path]
result << "(conditions[:not_path]=~path).nil?" if conditions[:not_path]
result
end
end

end
end

# /config.environment.rb
require 'route_extension'
ActionController::Routing::Route.send :include, ThongKuah::Routing::RouteExtensions

## Example usage
#match only paths starting with a
map.connect '/location/:name', :controller => :locations, :path => /^a/
#match all paths not starting with z
map.connect '/location/:name', :controller => :locations, :not_path => /^z/
#combine path and not_path!
map.connect '/location/:name', :controller => :locations, :path => /^a/, :not_path => /^ab/
map.country ':country', :controller => :locations, :action => :show,
:conditions => {:path => Regexp.new(Country.all.map(&:name).join('|'))}
map.region ':country/:region', :controller => :locations, :action => :show,
:conditions => {:path => Regexp.new(Country.all.each{|c| "^#{c.name}" }.join('|')) }