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