journey 1.0.0.rc1 → 1.0.0.rc2

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/.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