ratis 3.2.1 → 3.3.0

Sign up to get free protection for your applications and to get access to all the features.
data/Gemfile.lock CHANGED
@@ -1,37 +1,38 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- ratis (3.1.8)
4
+ ratis (3.3.0)
5
5
  savon (< 2.0)
6
6
 
7
7
  GEM
8
8
  remote: http://rubygems.org/
9
9
  specs:
10
- activesupport (3.2.6)
11
- i18n (~> 0.6)
10
+ activesupport (3.2.13)
11
+ i18n (= 0.6.1)
12
12
  multi_json (~> 1.0)
13
- addressable (2.2.8)
13
+ addressable (2.3.5)
14
14
  akami (1.2.0)
15
15
  gyoku (>= 0.4.0)
16
16
  nokogiri (>= 1.4.0)
17
- builder (3.2.0)
17
+ builder (3.2.2)
18
18
  chronic (0.9.1)
19
19
  columnize (0.3.6)
20
- crack (0.3.1)
21
- diff-lcs (1.2.3)
20
+ crack (0.4.0)
21
+ safe_yaml (~> 0.9.0)
22
+ diff-lcs (1.2.4)
22
23
  gyoku (0.4.6)
23
24
  builder (>= 2.1.2)
24
- hashdiff (0.0.5)
25
+ hashdiff (0.0.6)
25
26
  httpi (1.1.1)
26
27
  rack
27
- i18n (0.6.0)
28
+ i18n (0.6.1)
28
29
  linecache (0.46)
29
30
  rbx-require-relative (> 0.0.4)
30
- multi_json (1.3.6)
31
- nokogiri (1.5.9)
31
+ multi_json (1.7.7)
32
+ nokogiri (1.5.10)
32
33
  nori (1.1.5)
33
34
  rack (1.5.2)
34
- rake (10.0.4)
35
+ rake (10.1.0)
35
36
  rbx-require-relative (0.0.9)
36
37
  redcarpet (2.1.1)
37
38
  rspec (2.13.0)
@@ -48,6 +49,7 @@ GEM
48
49
  ruby-debug-base (~> 0.10.4.0)
49
50
  ruby-debug-base (0.10.4)
50
51
  linecache (>= 0.3)
52
+ safe_yaml (0.9.4)
51
53
  savon (1.2.0)
52
54
  akami (~> 1.2.0)
53
55
  builder (>= 2.1.2)
@@ -56,34 +58,30 @@ GEM
56
58
  nokogiri (>= 1.4.0)
57
59
  nori (~> 1.1.0)
58
60
  wasabi (~> 2.5.0)
59
- simplecov (0.6.4)
60
- multi_json (~> 1.0)
61
- simplecov-html (~> 0.5.3)
62
- simplecov-html (0.5.3)
63
- vcr (2.4.0)
61
+ vcr (2.5.0)
64
62
  wasabi (2.5.1)
65
63
  httpi (~> 1.0)
66
64
  nokogiri (>= 1.4.0)
67
- webmock (1.8.7)
65
+ webmock (1.13.0)
68
66
  addressable (>= 2.2.7)
69
- crack (>= 0.1.7)
70
- yard (0.8.2.1)
67
+ crack (>= 0.3.2)
68
+ yard (0.8.6.2)
71
69
 
72
70
  PLATFORMS
73
71
  ruby
74
72
 
75
73
  DEPENDENCIES
76
- activesupport
74
+ activesupport (< 4.0)
77
75
  bundler (>= 1.0.0)
78
76
  chronic
79
77
  hashdiff
78
+ nokogiri (< 1.6.0)
80
79
  rake
81
80
  ratis!
82
- redcarpet
81
+ redcarpet (~> 2.1.1)
83
82
  rspec (~> 2.13.0)
84
83
  rspec-instafail
85
84
  ruby-debug
86
- simplecov
87
85
  vcr
88
86
  webmock
89
87
  yard
@@ -61,8 +61,6 @@ module Ratis
61
61
  end
62
62
 
63
63
  def self.parse_routes_only_no(response)
64
- return nil unless response.success?
65
-
66
64
  atis_schedule = Point2Point::StandardResponse.new
67
65
 
68
66
  atis_schedule.groups = response.to_array(:point2point_response, :groups, :group).map do |group|
@@ -70,8 +68,8 @@ module Ratis
70
68
 
71
69
  # Point2point 1.3 uses inconsistent tag naming, thus: <onstop> <onwalk...>, but <offstop> <offstopwalk...>
72
70
  # this docs says this is fixed in 1.4, so watch out
73
- atis_schedule_group.on_stop = atis_stop_from_hash 'on', group[:onstop]
74
- atis_schedule_group.off_stop = atis_stop_from_hash 'offstop', group[:offstop]
71
+ atis_schedule_group.on_stop = atis_stop_from_hash('on', group[:onstop])
72
+ atis_schedule_group.off_stop = atis_stop_from_hash('offstop', group[:offstop])
75
73
 
76
74
  atis_schedule_group.trips = group.to_array(:trips, :trip).map do |trip|
77
75
  atis_trip = Point2Point::Trip.new
data/lib/ratis/route.rb CHANGED
@@ -1,23 +1,7 @@
1
1
  module Ratis
2
-
3
2
  class Route
4
-
5
3
  attr_accessor :short_name, :directions
6
4
 
7
- def self.all
8
- response = Request.get 'Allroutes'
9
- return [] unless response.success?
10
-
11
- routes = response.to_hash[:allroutes_response][:routes].split(/\n/)
12
- atis_routes = routes.map do |r|
13
- r.strip!
14
- next if r.blank?
15
- r = r.split(/,/)
16
- Route.new r[0].strip, r[1..-1].map(&:strip)
17
- end
18
- atis_routes.compact
19
- end
20
-
21
5
  def initialize(short_name, directions)
22
6
  self.short_name = short_name
23
7
  self.directions = directions
@@ -28,4 +12,26 @@ module Ratis
28
12
  end
29
13
  end
30
14
 
15
+ class Routes
16
+ def self.all
17
+ response = Request.get 'Allroutes2'
18
+
19
+ return [] unless response.success?
20
+
21
+ # {:hexcolor=>"0", :route=>"0", :operator=>"AP", :description=>"0 - route", :publicroute=>"0", :hasrealtime=>"Y", :direction=>"*", :operatorname=>"VEOLIA-PHOENIX", :color=>"#000000"}
22
+ routes = {}
23
+ response.to_hash[:allroutes2_response][:routes][:item].each do |item|
24
+ if routes.has_key? item[:route]
25
+ routes[item[:route]] << item
26
+ else
27
+ routes[item[:route]] = [item]
28
+ end
29
+ end
30
+
31
+ routes.map do |short_name, _routes|
32
+ directions = _routes.map{|rte| rte[:direction] }.reject{|dir| dir == '*' }
33
+ Route.new(short_name, directions)
34
+ end.compact.sort_by{|rte| rte.short_name }
35
+ end
36
+ end
31
37
  end
@@ -0,0 +1,25 @@
1
+ module Ratis
2
+ class Routes
3
+ def self.all
4
+ response = Request.get 'Allroutes2'
5
+
6
+ return [] unless response.success?
7
+
8
+ # {:hexcolor=>"0", :route=>"0", :operator=>"AP", :description=>"0 - route", :publicroute=>"0", :hasrealtime=>"Y", :direction=>"*", :operatorname=>"VEOLIA-PHOENIX", :color=>"#000000"}
9
+ routes = {}
10
+ response.to_hash[:allroutes2_response][:routes][:item].each do |item|
11
+ if routes.has_key? item[:route]
12
+ routes[item[:route]] << item
13
+ else
14
+ routes[item[:route]] = [item]
15
+ end
16
+ end
17
+
18
+ routes.map do |short_name, _routes|
19
+ directions = _routes.map{|rte| rte[:direction] }.reject{|dir| dir == '*' }
20
+ Route.new(short_name, directions)
21
+ end.compact.sort_by{|rte| rte.short_name }
22
+ end
23
+ end
24
+
25
+ end
data/lib/ratis/version.rb CHANGED
@@ -5,7 +5,7 @@ module Ratis
5
5
  def version
6
6
  @version ||= begin
7
7
 
8
- string = '3.2.1'
8
+ string = '3.3.0'
9
9
 
10
10
  def string.parts
11
11
  split('.').map { |p| p.to_i }
data/ratis.gemspec CHANGED
@@ -16,16 +16,17 @@ Gem::Specification.new do |s|
16
16
 
17
17
  s.add_dependency 'savon', '<2.0'
18
18
 
19
- s.add_development_dependency 'activesupport'
19
+ s.add_development_dependency 'activesupport', '< 4.0'
20
20
  s.add_development_dependency 'bundler', '>= 1.0.0'
21
21
  s.add_development_dependency 'chronic'
22
22
  s.add_development_dependency 'hashdiff'
23
23
  s.add_development_dependency 'rake'
24
- s.add_development_dependency 'redcarpet'
24
+ s.add_development_dependency 'redcarpet', '~> 2.1.1'
25
25
  s.add_development_dependency 'rspec', '~> 2.13.0'
26
26
  s.add_development_dependency 'rspec-instafail'
27
27
  s.add_development_dependency 'ruby-debug'
28
- s.add_development_dependency 'simplecov'
28
+ s.add_development_dependency 'nokogiri', '< 1.6.0'
29
+ # s.add_development_dependency 'simplecov'
29
30
  s.add_development_dependency 'vcr'
30
31
  s.add_development_dependency 'webmock'
31
32
  s.add_development_dependency 'yard'
@@ -188,7 +188,7 @@ describe Ratis::NextBus do
188
188
  expect(service.direction).to eq('W')
189
189
  expect(service.servicetype).to eq('W')
190
190
  expect(service.route).to eq('108')
191
- expect(service.operator).to eq('AT')
191
+ expect(service.operator).to eq('FTE')
192
192
 
193
193
  service = response.services.last
194
194
  expect(service).to be_a(OpenStruct)
@@ -200,7 +200,7 @@ describe Ratis::NextBus do
200
200
  expect(service.direction).to eq('W')
201
201
  expect(service.servicetype).to eq('W')
202
202
  expect(service.route).to eq('108')
203
- expect(service.operator).to eq('AT')
203
+ expect(service.operator).to eq('FTE')
204
204
  end
205
205
 
206
206
  it "should raise error if datetime condition is not a DateTime or Time" do
@@ -126,7 +126,7 @@ describe Ratis::Point2Point do
126
126
 
127
127
  it 'gets the trips within each group' do
128
128
  schedule = Ratis::Point2Point.where(@conditions.dup)
129
- schedule.groups[0].should have(15).trips
129
+ schedule.groups[0].should have(18).trips
130
130
  schedule.groups[1].should have(16).trips
131
131
  schedule.groups[2].should have(4).trips
132
132
  end
@@ -4,72 +4,21 @@ describe Ratis::Route do
4
4
  before do
5
5
  Ratis.reset
6
6
  Ratis.configure do |config|
7
- config.endpoint = 'http://example.com/soap.cgi'
8
- config.namespace = 'TEST_NS'
7
+ config.endpoint = 'http://soap.valleymetro.org/cgi-bin-soap-web-262/soap.cgi'
8
+ config.namespace = 'PX_WEB'
9
9
  end
10
10
  end
11
11
 
12
- describe '#all' do
13
12
 
14
- before do
15
- stub_atis_request.to_return( atis_response 'Allroutes', '1.5', '0', <<-BODY )
16
- <Routes>
17
- 0, N, S
18
- 1, E, W
19
- </Routes>
20
- BODY
21
-
22
- @all_routes = Ratis::Route.all
23
- end
24
-
25
- it 'only makes one request' do
26
- an_atis_request.should have_been_made.times 1
13
+ describe '#initialize' do
14
+ it "description" do
15
+ pending
27
16
  end
28
-
29
- it 'gets all routes' do
30
- @all_routes.should have(2).items
31
- end
32
-
33
- it 'gets all route directions' do
34
- @all_routes.each do |route|
35
- route.should have(2).directions
36
- end
37
- end
38
-
39
17
  end
40
18
 
41
19
  describe '#timetable' do
42
-
43
- let(:route) { Ratis::Route.new '0', ['N', 'S'] }
44
-
45
- before do
46
- resp = atis_response_timetable({ :route => '0', :direction => 'N', :service_type => 'W', :operator => 'OP', :effective => '01/15/12' })
47
- stub_atis_request.to_return( atis_response 'Timetable', '1.1', '0', resp)
48
-
49
- @timetable = route.timetable :direction => 'N', :service_type => 'W'
20
+ it "description" do
21
+ pending
50
22
  end
51
-
52
- it 'only makes one request' do
53
- an_atis_request.should have_been_made.times 1
54
- end
55
-
56
- it 'assigns settings correctly' do
57
- @timetable.should_not be_nil
58
-
59
- @timetable.route_short_name.should eql '0'
60
- @timetable.direction.should eql 'N'
61
- @timetable.service_type.should eql 'W'
62
- @timetable.operator.should eql 'OP'
63
- @timetable.effective.should eql '01/15/12'
64
- end
65
-
66
23
  end
67
-
68
- it 'should initialize' do
69
- route = Ratis::Route.new '123', ['N', 'S']
70
-
71
- route.short_name.should eql '123'
72
- route.directions.should eql ['N', 'S']
73
- end
74
-
75
- end
24
+ end
@@ -0,0 +1,54 @@
1
+ require 'spec_helper'
2
+
3
+ describe Ratis::Routes do
4
+ before do
5
+ Ratis.reset
6
+ Ratis.configure do |config|
7
+ config.endpoint = 'http://soap.valleymetro.org/cgi-bin-soap-web-262/soap.cgi'
8
+ config.namespace = 'PX_WEB'
9
+ end
10
+ end
11
+
12
+ let(:empty_body){ {:allroutes2_response => {:routes => []}} }
13
+
14
+ describe '#all' do
15
+ it 'returns all routes' do
16
+ response = Ratis::Routes.all
17
+ expect(response).to have(111).items
18
+ expect(response.all?{|rte| rte.is_a?(Ratis::Route) }).to be_true
19
+ end
20
+
21
+ it 'only makes one request' do
22
+ Ratis::Request.should_receive(:get).once.and_call_original
23
+ Ratis::Routes.all
24
+ end
25
+
26
+ it 'requests the correct SOAP action' do
27
+ Ratis::Request.should_receive(:get) do |action, options|
28
+ action.should eq('Allroutes2')
29
+ end.and_return(double('response', :success? => false, :body => empty_body)) # false only to stop further running
30
+
31
+ Ratis::Routes.all
32
+ end
33
+
34
+ it 'should set directions and short_name to variables' do
35
+ response = Ratis::Routes.all
36
+ route = response.first
37
+
38
+ expect(response).to be_a(Array)
39
+ expect(route).to be_a(Ratis::Route)
40
+ expect(route.short_name).to eq('0')
41
+ expect(route.directions).to have(2).directions
42
+ expect(route.directions).to include('N')
43
+ expect(route.directions).to include('S')
44
+ end
45
+
46
+ end
47
+
48
+ describe '#timetable' do
49
+ it "description" do
50
+ pending
51
+ end
52
+ end
53
+
54
+ end
data/spec/spec_helper.rb CHANGED
@@ -1,5 +1,5 @@
1
- require 'simplecov'
2
- SimpleCov.start
1
+ # require 'simplecov'
2
+ # SimpleCov.start
3
3
 
4
4
  project_root = File.expand_path(File.dirname(__FILE__) + "/..")
5
5
  $LOAD_PATH << "#{project_root}/lib"
@@ -12,6 +12,7 @@ require 'ratis'
12
12
  require 'vcr'
13
13
  require 'chronic'
14
14
 
15
+ # Dir[("#{project_root}/lib/ratis/**/*.rb")].each { |f| require f }
15
16
  Dir[("#{project_root}/spec/support/**/*.rb")].each { |f| require f }
16
17
 
17
18
  RSpec.configure do |config|
@@ -1,4 +1,5 @@
1
1
  ---
2
+ recorded_with: VCR 2.5.0
2
3
  http_interactions:
3
4
  - request:
4
5
  method: post
@@ -20,12 +21,12 @@ http_interactions:
20
21
  aW50MnBvaW50PjwvZW52OkJvZHk+PC9lbnY6RW52ZWxvcGU+
21
22
 
22
23
  headers:
23
- Content-Type:
24
- - text/xml;charset=UTF-8
25
- Content-Length:
26
- - "576"
27
24
  Soapaction:
28
25
  - "\"PX_WEB#Point2point\""
26
+ Content-Length:
27
+ - "576"
28
+ Content-Type:
29
+ - text/xml;charset=UTF-8
29
30
  Accept:
30
31
  - "*/*"
31
32
  response:
@@ -35,12 +36,12 @@ http_interactions:
35
36
  headers:
36
37
  Content-Length:
37
38
  - "0"
38
- Location:
39
- - http://www.iana.org/domains/example/
40
39
  Connection:
41
40
  - Keep-Alive
42
41
  Server:
43
42
  - BigIP
43
+ Location:
44
+ - http://www.iana.org/domains/example/
44
45
  body:
45
46
  base64_string: ""
46
47
  http_version:
@@ -51,26 +52,26 @@ http_interactions:
51
52
  body:
52
53
  base64_string: |
53
54
  PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48ZW52OkVu
54
- dmVsb3BlIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxT
55
- Y2hlbWEiIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxT
56
- Y2hlbWEtaW5zdGFuY2UiIHhtbG5zOndzZGw9IlBYX1dFQiIgeG1sbnM6ZW52
57
- PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2VudmVsb3BlLyI+
58
- PGVudjpCb2R5PjxQb2ludDJwb2ludCB4bWxucz0iUFhfV0VCIj48RW5kdGlt
59
- ZT4xODAwPC9FbmR0aW1lPjxEYXRlPjA2LzE3LzIwMTM8L0RhdGU+PE9yaWdp
60
- bmxhdD4zMy40NDY5MzE8L09yaWdpbmxhdD48T3JpZ2lubG9uZz4tMTEyLjA5
61
- NzkwMzwvT3JpZ2lubG9uZz48U3RhcnR0aW1lPjE3MDA8L1N0YXJ0dGltZT48
62
- RGVzdGluYXRpb25sYXQ+MzMuNDQ3MDk4PC9EZXN0aW5hdGlvbmxhdD48Um91
63
- dGVzb25seT5ZPC9Sb3V0ZXNvbmx5PjxSb3V0ZXM+MTwvUm91dGVzPjxEZXN0
64
- aW5hdGlvbmxvbmc+LTExMi4wNzcyMTM8L0Rlc3RpbmF0aW9ubG9uZz48L1Bv
55
+ dmVsb3BlIHhtbG5zOndzZGw9IlBYX1dFQiIgeG1sbnM6ZW52PSJodHRwOi8v
56
+ c2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2VudmVsb3BlLyIgeG1sbnM6eHNk
57
+ PSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6eHNp
58
+ PSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSI+
59
+ PGVudjpCb2R5PjxQb2ludDJwb2ludCB4bWxucz0iUFhfV0VCIj48T3JpZ2lu
60
+ bGF0PjMzLjQ0NjkzMTwvT3JpZ2lubGF0PjxEZXN0aW5hdGlvbmxhdD4zMy40
61
+ NDcwOTg8L0Rlc3RpbmF0aW9ubGF0PjxSb3V0ZXNvbmx5Plk8L1JvdXRlc29u
62
+ bHk+PFN0YXJ0dGltZT4xNzAwPC9TdGFydHRpbWU+PE9yaWdpbmxvbmc+LTEx
63
+ Mi4wOTc5MDM8L09yaWdpbmxvbmc+PERlc3RpbmF0aW9ubG9uZz4tMTEyLjA3
64
+ NzIxMzwvRGVzdGluYXRpb25sb25nPjxEYXRlPjA3LzE1LzIwMTM8L0RhdGU+
65
+ PEVuZHRpbWU+MTgwMDwvRW5kdGltZT48Um91dGVzPjE8L1JvdXRlcz48L1Bv
65
66
  aW50MnBvaW50PjwvZW52OkJvZHk+PC9lbnY6RW52ZWxvcGU+
66
67
 
67
68
  headers:
68
- Content-Type:
69
- - text/xml;charset=UTF-8
70
69
  Soapaction:
71
70
  - "\"PX_WEB#Point2point\""
72
71
  Content-Length:
73
72
  - "576"
73
+ Content-Type:
74
+ - text/xml;charset=UTF-8
74
75
  Accept:
75
76
  - "*/*"
76
77
  response:
@@ -78,18 +79,18 @@ http_interactions:
78
79
  code: 200
79
80
  message: OK
80
81
  headers:
81
- Content-Type:
82
- - text/xml; charset=utf-8
83
- Date:
84
- - Fri, 14 Jun 2013 17:03:34 GMT
82
+ Soapserver:
83
+ - SOAP::Lite/Perl/0.55
85
84
  Content-Length:
86
85
  - "4558"
87
86
  Connection:
88
87
  - close
88
+ Content-Type:
89
+ - text/xml; charset=utf-8
90
+ Date:
91
+ - Fri, 12 Jul 2013 00:35:04 GMT
89
92
  Server:
90
93
  - Apache/2.2.3 (CentOS)
91
- Soapserver:
92
- - SOAP::Lite/Perl/0.55
93
94
  body:
94
95
  base64_string: |
95
96
  PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48U09BUC1F
@@ -196,5 +197,4 @@ http_interactions:
196
197
  RU5WOkVudmVsb3BlPg==
197
198
 
198
199
  http_version:
199
- recorded_at: Fri, 14 Jun 2013 17:03:34 GMT
200
- recorded_with: VCR 2.4.0
200
+ recorded_at: Fri, 12 Jul 2013 00:35:04 GMT
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ratis
3
3
  version: !ruby/object:Gem::Version
4
- hash: 13
4
+ hash: 11
5
5
  prerelease:
6
6
  segments:
7
7
  - 3
8
- - 2
9
- - 1
10
- version: 3.2.1
8
+ - 3
9
+ - 0
10
+ version: 3.3.0
11
11
  platform: ruby
12
12
  authors:
13
13
  - Burst Software
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2013-06-22 00:00:00 Z
18
+ date: 2013-07-12 00:00:00 Z
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
21
21
  name: savon
@@ -38,12 +38,13 @@ dependencies:
38
38
  requirement: &id002 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
- - - ">="
41
+ - - <
42
42
  - !ruby/object:Gem::Version
43
- hash: 3
43
+ hash: 27
44
44
  segments:
45
+ - 4
45
46
  - 0
46
- version: "0"
47
+ version: "4.0"
47
48
  type: :development
48
49
  version_requirements: *id002
49
50
  - !ruby/object:Gem::Dependency
@@ -110,12 +111,14 @@ dependencies:
110
111
  requirement: &id007 !ruby/object:Gem::Requirement
111
112
  none: false
112
113
  requirements:
113
- - - ">="
114
+ - - ~>
114
115
  - !ruby/object:Gem::Version
115
- hash: 3
116
+ hash: 9
116
117
  segments:
117
- - 0
118
- version: "0"
118
+ - 2
119
+ - 1
120
+ - 1
121
+ version: 2.1.1
119
122
  type: :development
120
123
  version_requirements: *id007
121
124
  - !ruby/object:Gem::Dependency
@@ -163,17 +166,19 @@ dependencies:
163
166
  type: :development
164
167
  version_requirements: *id010
165
168
  - !ruby/object:Gem::Dependency
166
- name: simplecov
169
+ name: nokogiri
167
170
  prerelease: false
168
171
  requirement: &id011 !ruby/object:Gem::Requirement
169
172
  none: false
170
173
  requirements:
171
- - - ">="
174
+ - - <
172
175
  - !ruby/object:Gem::Version
173
- hash: 3
176
+ hash: 15
174
177
  segments:
178
+ - 1
179
+ - 6
175
180
  - 0
176
- version: "0"
181
+ version: 1.6.0
177
182
  type: :development
178
183
  version_requirements: *id011
179
184
  - !ruby/object:Gem::Dependency
@@ -263,6 +268,7 @@ files:
263
268
  - lib/ratis/route_pattern/stop.rb
264
269
  - lib/ratis/route_stops.rb
265
270
  - lib/ratis/route_stops/stop.rb
271
+ - lib/ratis/routes.rb
266
272
  - lib/ratis/schedule_nearby.rb
267
273
  - lib/ratis/stop.rb
268
274
  - lib/ratis/timetable.rb
@@ -287,6 +293,7 @@ files:
287
293
  - spec/ratis/route_pattern_spec.rb
288
294
  - spec/ratis/route_spec.rb
289
295
  - spec/ratis/route_stops_spec.rb
296
+ - spec/ratis/routes_spec.rb
290
297
  - spec/ratis/schedule_nearby_spec.rb
291
298
  - spec/ratis/timetable_spec.rb
292
299
  - spec/ratis/walk_spec.rb