http_router 0.3.5 → 0.3.6

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.
data/http_router.gemspec CHANGED
@@ -7,7 +7,7 @@ Gem::Specification.new do |s|
7
7
  s.version = HttpRouter::VERSION
8
8
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
9
9
  s.authors = ["Joshua Hull"]
10
- s.date = HttpRouter::RELEASE_DATE
10
+ s.date = '2010-07-31'
11
11
  s.summary = "A kick-ass HTTP router for use in Rack & Sinatra"
12
12
  s.description = "This library allows you to recognize and build URLs in a Rack application. As well it contains an interface for use within Sinatra."
13
13
  s.email = %q{joshbuddy@gmail.com}
@@ -164,6 +164,11 @@ class HttpRouter
164
164
  self
165
165
  end
166
166
 
167
+ # Convenient regexp matching on an entire path. Returns +self+
168
+ def match_path(matcher)
169
+ arbitrary{|env| match = matcher.match(env.path_info); !match.nil? and match.begin(0) == 0 and match[0].size == env.path_info.size}
170
+ end
171
+
167
172
  # Adds an arbitrary proc matcher to a Route. Receives either a block, or a proc. The proc will receive a Rack::Request object and must return true for the Route to be matched. Returns +self+.
168
173
  def arbitrary(proc = nil, &block)
169
174
  @arbitrary << (proc || block)
@@ -1,5 +1,4 @@
1
1
  # encoding: utf-8
2
2
  class HttpRouter #:nodoc
3
- VERSION = '0.3.5'.freeze
4
- RELEASE_DATE = '2010-07-18'.freeze
3
+ VERSION = '0.3.6'.freeze
5
4
  end
@@ -209,6 +209,15 @@ describe "HttpRouter#recognize" do
209
209
  response.params_as_hash[:variable].should == 'value'
210
210
  end
211
211
 
212
+ it "should recognize using match_path" do
213
+ route = @router.add('/:test').match_path(%r{/(test123|\d+)}).to(:test)
214
+ @router.recognize(Rack::MockRequest.env_for('/test123')).params_as_hash[:test].should == 'test123'
215
+ @router.recognize(Rack::MockRequest.env_for('/123')).params_as_hash[:test].should == '123'
216
+ @router.recognize(Rack::MockRequest.env_for('/test321')).should be_nil
217
+ @router.recognize(Rack::MockRequest.env_for('/test123andmore')).should be_nil
218
+ @router.recognize(Rack::MockRequest.env_for('/lesstest123')).should be_nil
219
+ end
220
+
212
221
  it "should recognize '/test.:format'" do
213
222
  route = @router.add('/test.:format').to(:test)
214
223
  response = @router.recognize(Rack::MockRequest.env_for('/test.html'))
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: 25
4
+ hash: 31
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 3
9
- - 5
10
- version: 0.3.5
9
+ - 6
10
+ version: 0.3.6
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-07-18 00:00:00 -04:00
18
+ date: 2010-07-31 00:00:00 -04:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency