aboutsummaryrefslogtreecommitdiffstats
path: root/actionpack/lib/action_dispatch/routing/route.rb
diff options
context:
space:
mode:
authorJoshua Peek <josh@joshpeek.com>2009-10-24 18:08:54 -0500
committerJoshua Peek <josh@joshpeek.com>2009-10-24 18:08:54 -0500
commita840c8afbf4e30b7bd9979e8cd70192c65be7a43 (patch)
tree82ca10172b498a604c051576f51e113eefe9a574 /actionpack/lib/action_dispatch/routing/route.rb
parenta0049a6b429c6de46537cc31bf7b3ca48b4c1b2c (diff)
downloadrails-a840c8afbf4e30b7bd9979e8cd70192c65be7a43.tar.gz
rails-a840c8afbf4e30b7bd9979e8cd70192c65be7a43.tar.bz2
rails-a840c8afbf4e30b7bd9979e8cd70192c65be7a43.zip
Restore `rake routes` [#3402 state:resolved]
Diffstat (limited to 'actionpack/lib/action_dispatch/routing/route.rb')
-rw-r--r--actionpack/lib/action_dispatch/routing/route.rb44
1 files changed, 44 insertions, 0 deletions
diff --git a/actionpack/lib/action_dispatch/routing/route.rb b/actionpack/lib/action_dispatch/routing/route.rb
new file mode 100644
index 0000000000..8990e207c2
--- /dev/null
+++ b/actionpack/lib/action_dispatch/routing/route.rb
@@ -0,0 +1,44 @@
+module ActionDispatch
+ module Routing
+ class Route #:nodoc:
+ attr_reader :app, :conditions, :defaults, :name
+ attr_reader :path, :requirements
+
+ def initialize(app, conditions = {}, requirements = {}, defaults = {}, name = nil)
+ @app = app
+ @defaults = defaults
+ @name = name
+
+ @requirements = requirements.merge(defaults)
+ @requirements.delete(:controller) if @requirements[:controller].is_a?(Regexp)
+ @requirements.delete_if { |k, v|
+ v == Regexp.compile("[^#{SEPARATORS.join}]+")
+ }
+
+ if path = conditions[:path_info]
+ @path = path
+ conditions[:path_info] = ::Rack::Mount::Strexp.compile(path, requirements, SEPARATORS)
+ end
+
+ @conditions = conditions.inject({}) { |h, (k, v)|
+ h[k] = Rack::Mount::RegexpWithNamedGroups.new(v)
+ h
+ }
+ end
+
+ def verb
+ if verb = conditions[:verb]
+ verb.to_s.upcase
+ end
+ end
+
+ def segment_keys
+ @segment_keys ||= conditions[:path_info].names.compact.map { |key| key.to_sym }
+ end
+
+ def to_ary
+ [@app, @conditions, @defaults, @name]
+ end
+ end
+ end
+end