Sha256: 74e794ec26445277123f0141f90f37de1ffb81b051706ee48d1328bde2c092a7

Contents?: true

Size: 1.33 KB

Versions: 5

Compression:

Stored size: 1.33 KB

Contents

$:.unshift File.dirname(__FILE__)

require 'route/path'
require 'route/variable'
require 'route/request_method'

class Usher
  class Route
    attr_reader :paths, :original_path, :requirements, :conditions, :params, :primary_path
    
    def initialize(original_path, router, options = {}) # :nodoc:
      @original_path = original_path
      @router = router
      @requirements = options.delete(:requirements)
      @conditions = options.delete(:conditions)
      @transformers = options.delete(:transformers)
      @paths = @router.splitter.split(@original_path, @requirements, @transformers).collect {|path| Path.new(self, path)}
      @primary_path = @paths.first
      @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)
      @params << 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)
      @router.name(name, self)
    end

  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
joshbuddy-usher-0.3.2 lib/usher/route.rb
joshbuddy-usher-0.3.3 lib/usher/route.rb
joshbuddy-usher-0.3.4 lib/usher/route.rb
joshbuddy-usher-0.3.5 lib/usher/route.rb
joshbuddy-usher-0.3.6 lib/usher/route.rb