http_router 0.3.14 → 0.3.15

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -136,7 +136,9 @@ class HttpRouter
136
136
 
137
137
  def find_on_parts(request, parts, params)
138
138
  if parts and !parts.empty?
139
- return potential if potential = potential_match(request, parts, params)
139
+ if potential = potential_match(request, parts, params)
140
+ return potential
141
+ end
140
142
  if @linear && !@linear.empty?
141
143
  response = nil
142
144
  dupped_parts = nil
@@ -196,14 +198,7 @@ class HttpRouter
196
198
  end
197
199
 
198
200
  def potential_match(request, parts, params)
199
- if parts.size == 1 and parts.first == ''
200
- potential = find_on_parts(request, [], params)
201
- if potential and (router.ignore_trailing_slash? or potential.value && potential.value.route.trailing_slash_ignore?)
202
- parts.shift
203
- potential
204
- end
205
- end
206
- nil
201
+ parts.size == 1 and parts.first == '' and potential = find_on_parts(request, nil, params) and (router.ignore_trailing_slash? or (potential.value and potential.value.route.trailing_slash_ignore?)) and parts.shift ? potential : nil
207
202
  end
208
203
  end
209
204
 
@@ -1,4 +1,4 @@
1
1
  # encoding: utf-8
2
2
  class HttpRouter #:nodoc
3
- VERSION = '0.3.14'
3
+ VERSION = '0.3.15'
4
4
  end
@@ -109,10 +109,20 @@ describe "HttpRouter#recognize" do
109
109
  route = @router.add("/test").to(:test)
110
110
  @router.recognize(Rack::MockRequest.env_for('/test/')).should be_nil
111
111
  end
112
+
112
113
  it "should not capture normally" do
113
114
  route = @router.add("/:test").to(:test)
114
115
  @router.recognize(Rack::MockRequest.env_for('/test/')).params.first.should == 'test'
115
116
  end
117
+
118
+ it "should recognize trailing slashes when there are other more specific routes near by" do
119
+ @router = HttpRouter.new
120
+ route = @router.add("/foo").to(:foo)
121
+ route = @router.add("/foo/:bar/:id").to(:foo_bar)
122
+ @router.recognize(Rack::MockRequest.env_for('/foo')).dest.should == :foo
123
+ @router.recognize(Rack::MockRequest.env_for('/foo/')).dest.should == :foo
124
+ @router.recognize(Rack::MockRequest.env_for('/foo/5/10')).dest.should == :foo_bar
125
+ end
116
126
  end
117
127
  end
118
128
 
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: http_router
3
3
  version: !ruby/object:Gem::Version
4
- hash: 15
4
+ hash: 13
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 3
9
- - 14
10
- version: 0.3.14
9
+ - 15
10
+ version: 0.3.15
11
11
  platform: ruby
12
12
  authors:
13
13
  - Joshua Hull
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2010-09-01 00:00:00 -07:00
18
+ date: 2010-09-03 00:00:00 -04:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency