lib/usher/route.rb in joshbuddy-usher-0.5.4 vs lib/usher/route.rb in joshbuddy-usher-0.5.6

- old
+ new

@@ -6,51 +6,53 @@ class Usher class Route attr_reader :paths, :requirements, :conditions, :destination, :named, :generate_with, :default_values, :match_partially - attr_accessor :parent_route - + attr_accessor :parent_route, :router + GenerateWith = Struct.new(:scheme, :port, :host) - - def initialize(parsed_paths, router, conditions, requirements, default_values, generate_with, match_partially) + + def initialize(parsed_paths, router, conditions, requirements, default_values, generate_with, match_partially) @paths = parsed_paths.collect {|path| Path.new(self, path)} @router, @requirements, @conditions, @default_values, @match_partially = router, requirements, conditions, default_values, match_partially @generate_with = GenerateWith.new(generate_with[:scheme], generate_with[:port], generate_with[:host]) if generate_with end - + def grapher unless @grapher @grapher = Grapher.new @grapher.add_route(self) end @grapher end def dup result = super - result.grapher = nil + result.instance_eval do + @grapher = nil + end result end def find_matching_path(params) if params.nil? || params.empty? matching_path = @paths.first else matching_path = @paths.size == 1 ? @paths.first : grapher.find_matching_path(params) end - + if parent_route matching_path = parent_route.find_matching_path(params).merge(matching_path) matching_path.route = self end - + matching_path 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'} @@ -64,28 +66,28 @@ end 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 - + def match_partially! @match_partially = true self end - + def partial_match? @match_partially end - + private attr_writer :grapher end end