journey 1.0.0.rc1 → 1.0.0.rc2

Sign up to get free protection for your applications and to get access to all the features.
data/.travis.yml ADDED
@@ -0,0 +1,6 @@
1
+ rvm:
2
+ - 1.8.7
3
+ - 1.9.2
4
+ - jruby
5
+ - rbx
6
+ - ree
data/CHANGELOG.rdoc CHANGED
@@ -1,4 +1,4 @@
1
- === 1.0.0 / 2011-03-08
1
+ === 1.0.0 / (not released)
2
2
 
3
3
  * 1 major enhancement
4
4
 
data/Gemfile CHANGED
@@ -5,7 +5,10 @@
5
5
  source :gemcutter
6
6
 
7
7
 
8
- gem "minitest", "~>2.5", :group => [:development, :test]
9
- gem "hoe", "~>2.10", :group => [:development, :test]
8
+ gem "minitest", "~>2.3", :group => [:development, :test]
9
+ gem "racc", ">=1.4.6", :group => [:development, :test]
10
+ gem "rdoc", "~>3.11", :group => [:development, :test]
11
+ gem "json", ">=0", :group => [:development, :test]
12
+ gem "hoe", "~>2.12", :group => [:development, :test]
10
13
 
11
14
  # vim: syntax=ruby
data/Manifest.txt CHANGED
@@ -1,5 +1,6 @@
1
1
  .autotest
2
2
  .gemtest
3
+ .travis.yml
3
4
  CHANGELOG.rdoc
4
5
  Gemfile
5
6
  Manifest.txt
data/Rakefile CHANGED
@@ -16,6 +16,7 @@ Hoe.spec 'journey' do
16
16
  self.extra_rdoc_files = FileList['*.rdoc']
17
17
  self.extra_dev_deps += [
18
18
  ["racc", ">= 1.4.6"],
19
+ ["rdoc", "~> 3.11"],
19
20
  ["json"],
20
21
  ]
21
22
  end
data/journey.gemspec CHANGED
@@ -2,15 +2,15 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = "journey"
5
- s.version = "1.0.0.20111022124133"
5
+ s.version = "1.0.0.rc2.20111221114756"
6
6
 
7
- s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
7
+ s.required_rubygems_version = Gem::Requirement.new("> 1.3.1") if s.respond_to? :required_rubygems_version=
8
8
  s.authors = ["Aaron Patterson"]
9
- s.date = "2011-10-22"
9
+ s.date = "2011-12-21"
10
10
  s.description = "Journey is a router. It routes requests."
11
11
  s.email = ["aaron@tenderlovemaking.com"]
12
12
  s.extra_rdoc_files = ["Manifest.txt", "CHANGELOG.rdoc", "README.rdoc"]
13
- s.files = [".autotest", "CHANGELOG.rdoc", "Gemfile", "Manifest.txt", "README.rdoc", "Rakefile", "journey.gemspec", "lib/journey.rb", "lib/journey/backwards.rb", "lib/journey/core-ext/hash.rb", "lib/journey/formatter.rb", "lib/journey/gtg/builder.rb", "lib/journey/gtg/simulator.rb", "lib/journey/gtg/transition_table.rb", "lib/journey/nfa/builder.rb", "lib/journey/nfa/dot.rb", "lib/journey/nfa/simulator.rb", "lib/journey/nfa/transition_table.rb", "lib/journey/nodes/node.rb", "lib/journey/parser.rb", "lib/journey/parser.y", "lib/journey/parser_extras.rb", "lib/journey/path/pattern.rb", "lib/journey/route.rb", "lib/journey/router.rb", "lib/journey/router/strexp.rb", "lib/journey/router/utils.rb", "lib/journey/routes.rb", "lib/journey/scanner.rb", "lib/journey/visitors.rb", "lib/journey/visualizer/d3.min.js", "lib/journey/visualizer/fsm.css", "lib/journey/visualizer/fsm.js", "lib/journey/visualizer/index.html.erb", "lib/journey/visualizer/reset.css", "test/gtg/test_builder.rb", "test/gtg/test_transition_table.rb", "test/helper.rb", "test/nfa/test_simulator.rb", "test/nfa/test_transition_table.rb", "test/nodes/test_symbol.rb", "test/path/test_pattern.rb", "test/route/definition/test_parser.rb", "test/route/definition/test_scanner.rb", "test/router/test_strexp.rb", "test/router/test_utils.rb", "test/test_route.rb", "test/test_router.rb", "test/test_routes.rb", ".gemtest"]
13
+ s.files = [".autotest", ".gemtest", ".travis.yml", "CHANGELOG.rdoc", "Gemfile", "Manifest.txt", "README.rdoc", "Rakefile", "journey.gemspec", "lib/journey.rb", "lib/journey/backwards.rb", "lib/journey/core-ext/hash.rb", "lib/journey/formatter.rb", "lib/journey/gtg/builder.rb", "lib/journey/gtg/simulator.rb", "lib/journey/gtg/transition_table.rb", "lib/journey/nfa/builder.rb", "lib/journey/nfa/dot.rb", "lib/journey/nfa/simulator.rb", "lib/journey/nfa/transition_table.rb", "lib/journey/nodes/node.rb", "lib/journey/parser.rb", "lib/journey/parser.y", "lib/journey/parser_extras.rb", "lib/journey/path/pattern.rb", "lib/journey/route.rb", "lib/journey/router.rb", "lib/journey/router/strexp.rb", "lib/journey/router/utils.rb", "lib/journey/routes.rb", "lib/journey/scanner.rb", "lib/journey/visitors.rb", "lib/journey/visualizer/d3.min.js", "lib/journey/visualizer/fsm.css", "lib/journey/visualizer/fsm.js", "lib/journey/visualizer/index.html.erb", "lib/journey/visualizer/reset.css", "test/gtg/test_builder.rb", "test/gtg/test_transition_table.rb", "test/helper.rb", "test/nfa/test_simulator.rb", "test/nfa/test_transition_table.rb", "test/nodes/test_symbol.rb", "test/path/test_pattern.rb", "test/route/definition/test_parser.rb", "test/route/definition/test_scanner.rb", "test/router/test_strexp.rb", "test/router/test_utils.rb", "test/test_route.rb", "test/test_router.rb", "test/test_routes.rb"]
14
14
  s.homepage = "http://github.com/tenderlove/journey"
15
15
  s.rdoc_options = ["--main", "README.rdoc"]
16
16
  s.require_paths = ["lib"]
@@ -23,20 +23,26 @@ Gem::Specification.new do |s|
23
23
  s.specification_version = 3
24
24
 
25
25
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
26
- s.add_development_dependency(%q<minitest>, ["~> 2.6"])
26
+ s.add_development_dependency(%q<minitest>, ["~> 2.9"])
27
27
  s.add_development_dependency(%q<racc>, [">= 1.4.6"])
28
+ s.add_development_dependency(%q<rdoc>, ["~> 3.11"])
28
29
  s.add_development_dependency(%q<json>, [">= 0"])
29
30
  s.add_development_dependency(%q<hoe>, ["~> 2.12"])
31
+ s.add_development_dependency(%q<rdoc>, ["~> 3.10"])
30
32
  else
31
- s.add_dependency(%q<minitest>, ["~> 2.6"])
33
+ s.add_dependency(%q<minitest>, ["~> 2.9"])
32
34
  s.add_dependency(%q<racc>, [">= 1.4.6"])
35
+ s.add_dependency(%q<rdoc>, ["~> 3.11"])
33
36
  s.add_dependency(%q<json>, [">= 0"])
34
37
  s.add_dependency(%q<hoe>, ["~> 2.12"])
38
+ s.add_dependency(%q<rdoc>, ["~> 3.10"])
35
39
  end
36
40
  else
37
- s.add_dependency(%q<minitest>, ["~> 2.6"])
41
+ s.add_dependency(%q<minitest>, ["~> 2.9"])
38
42
  s.add_dependency(%q<racc>, [">= 1.4.6"])
43
+ s.add_dependency(%q<rdoc>, ["~> 3.11"])
39
44
  s.add_dependency(%q<json>, [">= 0"])
40
45
  s.add_dependency(%q<hoe>, ["~> 2.12"])
46
+ s.add_dependency(%q<rdoc>, ["~> 3.10"])
41
47
  end
42
48
  end
@@ -109,7 +109,7 @@ module Journey
109
109
  end
110
110
 
111
111
  def alphabet
112
- inverted.values.map(&:keys).flatten.compact.uniq
112
+ inverted.values.map(&:keys).flatten.compact.uniq.sort_by { |x| x.to_s }
113
113
  end
114
114
 
115
115
  ###
data/lib/journey/route.rb CHANGED
@@ -5,6 +5,8 @@ module Journey
5
5
  attr_reader :constraints
6
6
  alias :conditions :constraints
7
7
 
8
+ attr_accessor :precidence
9
+
8
10
  ##
9
11
  # +path+ is a path constraint.
10
12
  # +constraints+ is a hash of constraints to be applied to this route.
@@ -23,6 +25,7 @@ module Journey
23
25
  @required_parts = nil
24
26
  @parts = nil
25
27
  @decorated_ast = nil
28
+ @precidence = 0
26
29
  end
27
30
 
28
31
  def ast
@@ -17,7 +17,7 @@ module Journey
17
17
  class RoutingError < ::StandardError
18
18
  end
19
19
 
20
- VERSION = '1.0.0.rc1'
20
+ VERSION = '1.0.0.rc2'
21
21
 
22
22
  class NullReq # :nodoc:
23
23
  attr_reader :env
@@ -122,7 +122,7 @@ module Journey
122
122
  r.path.match(env['PATH_INFO'])
123
123
  }
124
124
 
125
- routes.find_all { |r|
125
+ routes.sort_by(&:precidence).find_all { |r|
126
126
  r.constraints.all? { |k,v| v === req.send(k) } &&
127
127
  r.verb === env['REQUEST_METHOD']
128
128
  }.reject { |r| addr && !(r.ip === addr) }.map { |r|
@@ -58,6 +58,7 @@ module Journey
58
58
  def add_route app, path, conditions, defaults, name = nil
59
59
  route = Route.new(name, app, path, conditions, defaults)
60
60
 
61
+ route.precidence = routes.length
61
62
  routes << route
62
63
  named_routes[name] = route if name && !named_routes[name]
63
64
  clear_cache!
@@ -53,7 +53,7 @@ module Journey
53
53
 
54
54
  def test_alphabet
55
55
  table = tt 'a|:a'
56
- assert_equal ['a', /[^\.\/\?]+/], table.alphabet
56
+ assert_equal [/[^\.\/\?]+/, 'a'], table.alphabet
57
57
 
58
58
  table = tt 'a|a'
59
59
  assert_equal ['a'], table.alphabet
data/test/test_router.rb CHANGED
@@ -85,6 +85,25 @@ module Journey
85
85
  assert_equal env.env, klass.env
86
86
  end
87
87
 
88
+ def test_regexp_first_precedence
89
+ add_routes @router, [
90
+ Router::Strexp.new("/whois/:domain", {:domain => /\w+\.[\w\.]+/}, ['/', '.', '?']),
91
+ Router::Strexp.new("/whois/:id(.:format)", {}, ['/', '.', '?'])
92
+ ]
93
+
94
+ env = rails_env 'PATH_INFO' => '/whois/example.com'
95
+
96
+ list = []
97
+ @router.recognize(env) do |r, _, params|
98
+ list << r
99
+ end
100
+ assert_equal 2, list.length
101
+
102
+ r = list.first
103
+
104
+ assert_equal '/whois/:domain', r.path.spec.to_s
105
+ end
106
+
88
107
  def test_required_parts_verified_are_anchored
89
108
  add_routes @router, [
90
109
  Router::Strexp.new("/foo/:id", { :id => /\d/ }, ['/', '.', '?'], false)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: journey
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0.rc1
4
+ version: 1.0.0.rc2
5
5
  prerelease: 6
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2011-12-14 00:00:00.000000000 Z
12
+ date: 2011-12-21 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: minitest
16
- requirement: &70241724096100 !ruby/object:Gem::Requirement
16
+ requirement: &70190462428740 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ~>
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '2.9'
22
22
  type: :development
23
23
  prerelease: false
24
- version_requirements: *70241724096100
24
+ version_requirements: *70190462428740
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: racc
27
- requirement: &70241724104520 !ruby/object:Gem::Requirement
27
+ requirement: &70190462428320 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,21 @@ dependencies:
32
32
  version: 1.4.6
33
33
  type: :development
34
34
  prerelease: false
35
- version_requirements: *70241724104520
35
+ version_requirements: *70190462428320
36
+ - !ruby/object:Gem::Dependency
37
+ name: rdoc
38
+ requirement: &70190462427900 !ruby/object:Gem::Requirement
39
+ none: false
40
+ requirements:
41
+ - - ~>
42
+ - !ruby/object:Gem::Version
43
+ version: '3.11'
44
+ type: :development
45
+ prerelease: false
46
+ version_requirements: *70190462427900
36
47
  - !ruby/object:Gem::Dependency
37
48
  name: json
38
- requirement: &70241724098840 !ruby/object:Gem::Requirement
49
+ requirement: &70190462427540 !ruby/object:Gem::Requirement
39
50
  none: false
40
51
  requirements:
41
52
  - - ! '>='
@@ -43,10 +54,10 @@ dependencies:
43
54
  version: '0'
44
55
  type: :development
45
56
  prerelease: false
46
- version_requirements: *70241724098840
57
+ version_requirements: *70190462427540
47
58
  - !ruby/object:Gem::Dependency
48
59
  name: hoe
49
- requirement: &70241724109020 !ruby/object:Gem::Requirement
60
+ requirement: &70190462427080 !ruby/object:Gem::Requirement
50
61
  none: false
51
62
  requirements:
52
63
  - - ~>
@@ -54,10 +65,10 @@ dependencies:
54
65
  version: '2.12'
55
66
  type: :development
56
67
  prerelease: false
57
- version_requirements: *70241724109020
68
+ version_requirements: *70190462427080
58
69
  - !ruby/object:Gem::Dependency
59
70
  name: rdoc
60
- requirement: &70241729404380 !ruby/object:Gem::Requirement
71
+ requirement: &70190462693860 !ruby/object:Gem::Requirement
61
72
  none: false
62
73
  requirements:
63
74
  - - ~>
@@ -65,7 +76,7 @@ dependencies:
65
76
  version: '3.10'
66
77
  type: :development
67
78
  prerelease: false
68
- version_requirements: *70241729404380
79
+ version_requirements: *70190462693860
69
80
  description: Journey is a router. It routes requests.
70
81
  email:
71
82
  - aaron@tenderlovemaking.com
@@ -78,6 +89,7 @@ extra_rdoc_files:
78
89
  files:
79
90
  - .autotest
80
91
  - .gemtest
92
+ - .travis.yml
81
93
  - CHANGELOG.rdoc
82
94
  - Gemfile
83
95
  - Manifest.txt