mynyml-simple_router 0.8.1 → 0.9

Sign up to get free protection for your applications and to get access to all the features.
data/README CHANGED
@@ -22,10 +22,10 @@ class App
22
22
 
23
23
  def call(env)
24
24
  verb, path = ENV['REQUEST_METHOD'], ENV['PATH_INFO']
25
- route, args = self.class.routes.match(verb, path)
25
+ route = self.class.routes.match(verb, path)
26
26
  route.nil? ?
27
27
  [404, {'Content-Type' => 'text/html'}, '404 page not found'] :
28
- [200, {'Content-Type' => 'text/html'}, route.action.call(*args)]
28
+ [200, {'Content-Type' => 'text/html'}, route.action.call(*route.values)]
29
29
  end
30
30
  end
31
31
 
@@ -46,6 +46,7 @@ example above:
46
46
  route.verb = :get
47
47
  route.path = '/archives/:year/:month/:day'
48
48
  route.action = lambda {|year, month, day| Article.archived.find_by_date(year, month, day) }
49
+ route.values = ['2008', '07', '01'] # after being matched with path '/archives/2008/07/01'
49
50
 
50
51
  See examples/ directory for executable code examples.
51
52
 
@@ -64,7 +65,7 @@ This allows, for instance, a new faster engine to be used by an app without
64
65
  changes in the top level DSL.
65
66
 
66
67
  Engines can also allow route definitions to include more (or less!) features.
67
- For example, the built-in SimpleEngine allows route variables and extention
68
+ For example, the built-in SimpleEngine allows route variables and extension
68
69
  handling. Others could add variable conditions ( :id => Integer ), mime-type
69
70
  restrictions, etc.
70
71
 
data/Rakefile CHANGED
@@ -22,7 +22,7 @@ end
22
22
 
23
23
  spec = Gem::Specification.new do |s|
24
24
  s.name = 'simple_router'
25
- s.version = '0.8.1'
25
+ s.version = '0.9'
26
26
  s.summary = "Simple, minimalistic, standalone router meant to be used with pure rack applications."
27
27
  s.description = "Simple, minimalistic, standalone router meant to be used with pure rack applications."
28
28
  s.author = "Martin Aumont"
@@ -35,10 +35,10 @@ class App
35
35
  verb = request.request_method.downcase.to_sym
36
36
  path = Rack::Utils.unescape(request.path_info)
37
37
 
38
- route, args = self.class.routes.match(verb, path)
38
+ route = self.class.routes.match(verb, path)
39
39
  route.nil? ?
40
40
  [404, {'Content-Type' => 'text/html'}, '404 page not found'] :
41
- [200, {'Content-Type' => 'text/html'}, [route.action.call(*args.push(request.params))]]
41
+ [200, {'Content-Type' => 'text/html'}, [route.action.call(*route.values.push(request.params))]]
42
42
  end
43
43
  end
44
44
 
@@ -6,29 +6,30 @@ module SimpleRouter
6
6
  end
7
7
 
8
8
  def match(verb, path)
9
- none = [nil, nil]
10
- return none if self.empty?
9
+ return nil if self.empty?
11
10
 
12
11
  verb = verb.to_s.downcase.strip.to_sym
13
12
 
14
13
  routes = self.select {|route| route.verb == verb }
15
14
  paths = routes.map {|route| route.path }
16
15
 
17
- path, vars = SimpleRouter.engine.match(path, paths)
18
- return none if path.nil?
16
+ path, values = SimpleRouter.engine.match(path, paths)
17
+ return nil if path.nil?
19
18
 
20
19
  route = routes.detect {|route| route.path == path }
21
- [route, vars]
20
+ route.values = values
21
+ route
22
22
  end
23
23
 
24
24
  class Route
25
- attr_accessor :verb,:path,:options,:action
25
+ attr_accessor :verb,:path,:options,:action, :values
26
26
 
27
27
  def initialize(verb, path, options, &action)
28
28
  self.verb = verb
29
29
  self.path = path
30
30
  self.options = options
31
31
  self.action = action
32
+ self.values = nil
32
33
  end
33
34
  end
34
35
  end
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: simple_router
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.1
4
+ version: "0.9"
5
5
  platform: ruby
6
6
  authors:
7
7
  - Martin Aumont
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-05-19 00:00:00 -04:00
12
+ date: 2009-05-23 00:00:00 -04:00
13
13
  default_executable:
14
14
  dependencies: []
15
15
 
@@ -33,7 +33,7 @@ class SimpleEngineTest < Test::Unit::TestCase
33
33
  vars.should be([])
34
34
  end
35
35
 
36
- test "treats extention as pattern part" do
36
+ test "treats extension as pattern part" do
37
37
  path, vars = Base.match('/a/b.xml', ['/:foo/:bar', '/:foo/:bar.:type'])
38
38
  path.should be('/:foo/:bar.:type')
39
39
  vars.should be(['a','b','xml'])
@@ -65,7 +65,7 @@ class PatternTest < Test::Unit::TestCase
65
65
  pattern.vars.should be(%w( foo bar baz ))
66
66
  end
67
67
 
68
- test "pattern variables with extention" do
68
+ test "pattern variables with extension" do
69
69
  path = Path.new('/foo/bar/baz.xml')
70
70
  pattern = Pattern.new('/:a/:b/:c.:type')
71
71
 
@@ -73,35 +73,35 @@ class PatternTest < Test::Unit::TestCase
73
73
  pattern.vars.should be(%w( foo bar baz xml ))
74
74
  end
75
75
 
76
- test "variable pattern matches a path with static extention" do
76
+ test "variable pattern matches a path with static extension" do
77
77
  path = Path.new('/foo/bar.xml')
78
78
  pattern = Pattern.new('/:foo/:bar.xml')
79
79
 
80
80
  assert pattern == path
81
81
  end
82
82
 
83
- test "variable pattern matches a path with variable extention" do
83
+ test "variable pattern matches a path with variable extension" do
84
84
  path = Path.new('/foo/bar.xml')
85
85
  pattern = Pattern.new('/:foo/:bar.:type')
86
86
 
87
87
  assert pattern == path
88
88
  end
89
89
 
90
- test "pattern without extention doesn't match path with extention" do
90
+ test "pattern without extension doesn't match path with extension" do
91
91
  path = Path.new('/foo/bar.xml')
92
92
  pattern = Pattern.new('/:foo/:bar')
93
93
 
94
94
  assert pattern != path
95
95
  end
96
96
 
97
- test "pattern with static extention doesn't match path without extention" do
97
+ test "pattern with static extension doesn't match path without extension" do
98
98
  path = Path.new('/foo/bar')
99
99
  pattern = Pattern.new('/:foo/:bar.xml')
100
100
 
101
101
  assert pattern != path
102
102
  end
103
103
 
104
- test "pattern with variable extention doesn't match path without extention" do
104
+ test "pattern with variable extension doesn't match path without extension" do
105
105
  path = Path.new('/foo/bar')
106
106
  pattern = Pattern.new('/:foo/:bar.:type')
107
107
 
@@ -116,7 +116,7 @@ class PatternTest < Test::Unit::TestCase
116
116
  pattern.variables.should be(%w( foo bar.baz abc ))
117
117
  end
118
118
 
119
- test "doesn't get confused with extention when path contains other dots" do
119
+ test "doesn't get confused with extension when path contains other dots" do
120
120
  path = Path.new('/foo/bar.baz/abc.xml')
121
121
  pattern = Pattern.new('/:a/:b/:c.:type')
122
122
 
@@ -33,6 +33,6 @@ class DslTest < Test::Unit::TestCase
33
33
  App.get('/bar') { 'bar' }
34
34
 
35
35
  App.routes.match(:get, '/foo').should_not be( nil )
36
- App.routes.match(:get, '/foo').first.action.call.should be('foo')
36
+ App.routes.match(:get, '/foo').action.call.should be('foo')
37
37
  end
38
38
  end
@@ -21,23 +21,23 @@ class RoutesTest < Test::Unit::TestCase
21
21
  @routes.add(:get, '/bar', {}, &@action)
22
22
 
23
23
  @routes.match(:get, '/bar').should_not be(nil)
24
- @routes.match(:get, '/bar').first.path.should be('/bar')
24
+ @routes.match(:get, '/bar').path.should be('/bar')
25
25
  end
26
26
 
27
27
  test "returns nil when no route matches" do
28
28
  @routes.add(:get, '/foo', {}, &@action)
29
29
  @routes.add(:get, '/bar', {}, &@action)
30
30
 
31
- @routes.match('/baz', :get).should be([nil,nil])
31
+ @routes.match('/baz', :get).should be(nil)
32
32
  end
33
33
 
34
34
  test "normalizes passed in verb string" do
35
35
  @routes.add(:get, '/foo', {}, &@action)
36
36
  @routes.add(:get, '/bar', {}, &@action)
37
37
 
38
- @routes.match('get', '/bar').first.path.should be('/bar')
39
- @routes.match('GET', '/bar').first.path.should be('/bar')
40
- @routes.match(' GET ','/bar').first.path.should be('/bar')
38
+ @routes.match('get', '/bar').path.should be('/bar')
39
+ @routes.match('GET', '/bar').path.should be('/bar')
40
+ @routes.match(' GET ','/bar').path.should be('/bar')
41
41
  end
42
42
  end
43
43
 
@@ -51,5 +51,6 @@ class RouteTest < Test::Unit::TestCase
51
51
  route.path .should be(path)
52
52
  route.options .should be(options)
53
53
  route.action .should be(action)
54
+ route.values .should be(nil)
54
55
  end
55
56
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mynyml-simple_router
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.1
4
+ version: "0.9"
5
5
  platform: ruby
6
6
  authors:
7
7
  - Martin Aumont
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-05-18 21:00:00 -07:00
12
+ date: 2009-05-22 21:00:00 -07:00
13
13
  default_executable:
14
14
  dependencies: []
15
15