Changeset 681

Show
Ignore:
Timestamp:
09/24/07 07:15:22 (1 year ago)
Author:
duane.johns..@gmail.com
Message:

Added Merb::Router.append and Merb::Router.prepend so that routes can be re-opened after the initial Merb::Router.prepare statement (of particular use to plugins etc.)

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/lib/merb/router.rb

    r494 r681  
    1212 
    1313    class << self 
    14       def prepare 
     14      def append(&block) 
     15        prepare(@@routes, [], &block) 
     16      end 
     17       
     18      def prepend(&block) 
     19        prepare([], @@routes, &block) 
     20      end 
     21       
     22      def prepare(first = [], last = [], &block) 
    1523        @@routes = [] 
    1624        yield Behavior.new({}, {:action => 'index'}) # defaults 
     25        @@routes = first + @@routes + last 
    1726        compile 
    1827      end 
  • trunk/specs/merb/merb_router_spec.rb

    r494 r681  
    5050  end 
    5151   
     52  it "should be able to prepend routes to the @@routes list" do 
     53    r1, r2 = nil, nil 
     54    Merb::Router.prepare do |r| 
     55      r1 = r.match('/:controller/:action').to(:controller => '/admin/:controller') 
     56    end 
     57    Merb::Router.prepend do |r| 
     58      r2 = r.match('/:controller/:action').to(:controller => '/admin/:controller') 
     59    end 
     60    Merb::Router.routes[0].should == r2 
     61    Merb::Router.routes[1].should == r1 
     62  end 
     63   
     64  it "should be able to append routes to the @@routes list" do 
     65    r1, r2 = nil, nil 
     66    Merb::Router.prepare do |r| 
     67      r1 = r.match('/:controller/:action').to(:controller => '/admin/:controller') 
     68    end 
     69    Merb::Router.append do |r| 
     70      r2 = r.match('/:controller/:action').to(:controller => '/admin/:controller') 
     71    end 
     72    Merb::Router.routes[0].should == r1 
     73    Merb::Router.routes[1].should == r2 
     74  end 
     75 
    5276  # it "should be fast" do 
    5377  #   Merb::Router.prepare do |r|