lib/usher/route.rb in joshbuddy-usher-0.4.3 vs lib/usher/route.rb in joshbuddy-usher-0.4.5
- old
+ new
@@ -4,42 +4,54 @@
require 'route/variable'
require 'route/request_method'
class Usher
class Route
- attr_reader :paths, :original_path, :requirements, :conditions, :params, :primary_path
+ attr_reader :paths, :original_path, :requirements, :conditions, :destination, :named
- def initialize(original_path, router, options = nil) # :nodoc:
+ def initialize(original_path, router, conditions, requirements, default_values) # :nodoc:
@original_path = original_path
@router = router
- @requirements = options && options.delete(:requirements)
- @conditions = options && options.delete(:conditions)
- @paths = @router.splitter.split(@original_path, @requirements).collect {|path| Path.new(self, path)}
- @primary_path = @paths.first
- #FIXME params is poorly named. this shouldn't be an array
- @params = []
+ @requirements = requirements
+ @conditions = conditions
+ @default_values = default_values
+ @paths = @router.splitter.split(@original_path, @requirements, @default_values).collect {|path| Path.new(self, path)}
end
+ def grapher
+ unless @grapher
+ @grapher = Grapher.new
+ @grapher.add_route(self)
+ end
+ @grapher
+ end
+
+ def find_matching_path(params)
+ @paths.size == 1 ? @paths.first : grapher.find_matching_path(params)
+ end
+
# Sets +options+ on a route. Returns +self+.
#
# Request = Struct.new(:path)
# set = Usher.new
# route = set.add_route('/test')
# route.to(:controller => 'testing', :action => 'index')
# set.recognize(Request.new('/test')).first.params => {:controller => 'testing', :action => 'index'}
def to(options = nil, &block)
- @params << (block_given? ? block : options)
+ @destination = (block_given? ? block : options)
self
end
# Sets route as referenceable from +name+. Returns +self+.
#
# set = Usher.new
# route = set.add_route('/test').name(:route)
# set.generate_url(:route) => '/test'
def name(name)
+ @named = name
@router.name(name, self)
+ self
end
end
end