gtfs 0.2.4 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 5cd7389dfe80a4addc7b99867ac12201c8689eea
4
- data.tar.gz: 3457996a10d87333f0b04e22d562dc9a43988320
2
+ SHA256:
3
+ metadata.gz: dc9d7e6c89a8e5a32b02fa4beeb688871c6f341bc1e019148f3fd4fdc0ba077b
4
+ data.tar.gz: 2850718a407d7fba536d7d0472e0b886713d4a5c387594d5ad94a52175d0d10a
5
5
  SHA512:
6
- metadata.gz: 93a13541208945c3aafefb5af383ce5b3e6e1663063961f9986c03faa7791f08dfe78d86cea743fc3999e3ea56ab4954698ee4be7957f5af8dff5bcf2bbc21f4
7
- data.tar.gz: 3bb9e8a44a3d2faa83b7b246b63e81c094637af104a37fbb86ae4e5c88c9c728e31fb0d52254456443eda8205566d7f058117b41162537d16e0317f8328b29c9
6
+ metadata.gz: f8990b4d336656ef5b02c1cd2acdcf1e1886533f35534cbd9acd5b384b9aee2d386320a671d781a6576e18f746f4b9920f26e3cea88f7c27f3af9af2ebd65053
7
+ data.tar.gz: 3f2f724cd7d8cf336cd8aabef553d21d036e0c1769053324afca22872d504a2cc792b9144b8eafdd1c96092b6864a055ae89ff36a1143514c566cda6e9366dd0
@@ -0,0 +1,28 @@
1
+ name: Run CI Tasks
2
+
3
+ on:
4
+ push:
5
+ branches: [ master ]
6
+ pull_request:
7
+ branches: [ master ]
8
+
9
+ jobs:
10
+ test:
11
+ runs-on: ubuntu-latest
12
+
13
+ strategy:
14
+ matrix:
15
+ ruby-version: ['2.7', '3.0', '3.1']
16
+
17
+ steps:
18
+ - uses: actions/checkout@v2
19
+
20
+ - name: Set up Ruby
21
+ uses: ruby/setup-ruby@v1
22
+ with:
23
+ ruby-version: ${{ matrix.ruby-version }}
24
+ bundler-cache: true # runs 'bundle install' and caches installed gems automatically
25
+
26
+ - name: Run Tests
27
+ run: |
28
+ bundle exec rake -t
data/Gemfile CHANGED
@@ -1,9 +1,12 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
- gem 'rake'
4
- gem 'rspec'
5
- gem 'multi_json', '1.0.4'
6
- gem 'simplecov', :require => false
7
- gem 'rubyzip', '~> 1.1'
8
- gem 'vcr'
9
- gem 'fakeweb'
3
+ gemspec
4
+
5
+ group :test, :development do
6
+ gem 'simplecov', :require => false
7
+ gem 'rake'
8
+ gem 'rspec-its'
9
+ gem 'rspec'
10
+ gem 'vcr'
11
+ gem 'webmock'
12
+ end
data/Gemfile.lock CHANGED
@@ -1,33 +1,69 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ gtfs (0.3.0)
5
+ multi_json
6
+ rake
7
+ rubyzip (~> 1.1)
8
+
1
9
  GEM
2
10
  remote: https://rubygems.org/
3
11
  specs:
4
- diff-lcs (1.1.3)
12
+ addressable (2.8.0)
13
+ public_suffix (>= 2.0.2, < 5.0)
14
+ byebug (11.1.3)
15
+ crack (0.4.5)
16
+ rexml
17
+ diff-lcs (1.5.0)
18
+ docile (1.4.0)
5
19
  fakeweb (1.3.0)
6
- multi_json (1.0.4)
7
- rake (0.9.2.2)
8
- rspec (2.8.0)
9
- rspec-core (~> 2.8.0)
10
- rspec-expectations (~> 2.8.0)
11
- rspec-mocks (~> 2.8.0)
12
- rspec-core (2.8.0)
13
- rspec-expectations (2.8.0)
14
- diff-lcs (~> 1.1.2)
15
- rspec-mocks (2.8.0)
16
- rubyzip (1.1.6)
17
- simplecov (0.6.1)
18
- multi_json (~> 1.0)
19
- simplecov-html (~> 0.5.3)
20
- simplecov-html (0.5.3)
21
- vcr (1.11.3)
20
+ hashdiff (1.0.1)
21
+ multi_json (1.15.0)
22
+ public_suffix (4.0.7)
23
+ rake (13.0.6)
24
+ rexml (3.2.5)
25
+ rspec (3.11.0)
26
+ rspec-core (~> 3.11.0)
27
+ rspec-expectations (~> 3.11.0)
28
+ rspec-mocks (~> 3.11.0)
29
+ rspec-core (3.11.0)
30
+ rspec-support (~> 3.11.0)
31
+ rspec-expectations (3.11.0)
32
+ diff-lcs (>= 1.2.0, < 2.0)
33
+ rspec-support (~> 3.11.0)
34
+ rspec-its (1.3.0)
35
+ rspec-core (>= 3.0.0)
36
+ rspec-expectations (>= 3.0.0)
37
+ rspec-mocks (3.11.1)
38
+ diff-lcs (>= 1.2.0, < 2.0)
39
+ rspec-support (~> 3.11.0)
40
+ rspec-support (3.11.0)
41
+ rubyzip (1.3.0)
42
+ simplecov (0.21.2)
43
+ docile (~> 1.1)
44
+ simplecov-html (~> 0.11)
45
+ simplecov_json_formatter (~> 0.1)
46
+ simplecov-html (0.12.3)
47
+ simplecov_json_formatter (0.1.4)
48
+ vcr (6.1.0)
49
+ webmock (3.14.0)
50
+ addressable (>= 2.8.0)
51
+ crack (>= 0.3.2)
52
+ hashdiff (>= 0.4.0, < 2.0.0)
22
53
 
23
54
  PLATFORMS
24
55
  ruby
25
56
 
26
57
  DEPENDENCIES
58
+ byebug
27
59
  fakeweb
28
- multi_json (= 1.0.4)
60
+ gtfs!
29
61
  rake
30
62
  rspec
31
- rubyzip (~> 1.1)
63
+ rspec-its
32
64
  simplecov
33
65
  vcr
66
+ webmock
67
+
68
+ BUNDLED WITH
69
+ 2.3.6
data/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2012 Ed Schmalzle
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
data/README.md CHANGED
@@ -1,5 +1,7 @@
1
1
  ### GTFS Ruby
2
2
 
3
+ [![Run CI Tasks](https://github.com/nerdEd/gtfs/actions/workflows/ci.yml/badge.svg)](https://github.com/nerdEd/gtfs/actions/workflows/ci.yml)
4
+
3
5
  A Ruby wrapper for the [General Transit Feed Specification](https://developers.google.com/transit/gtfs/)
4
6
 
5
7
  ### Getting started
@@ -33,23 +35,9 @@ Alternatively:
33
35
  ...
34
36
  source.each_transfer {|transfer| puts transfer}
35
37
 
36
- ### License
37
-
38
- Copyright (C) 2012 Ed Schmalzle
39
38
 
40
- Permission is hereby granted, free of charge, to any person obtaining a
41
- copy of this software and associated documentation files (the "Software"), to
42
- deal in the Software without restriction, including without limitation the
43
- rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
44
- copies of the Software, and to permit persons to whom the Software is furnished
45
- to do so, subject to the following conditions:
39
+ ### License
46
40
 
47
- The above copyright notice and this permission notice shall be included in
48
- all copies or substantial portions of the Software.
41
+ This project is licensed under the terms of the MIT license.
49
42
 
50
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
51
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
52
- FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
53
- COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
54
- IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
55
- CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
43
+ See this license at [`LICENSE`](LICENSE).
data/Rakefile CHANGED
@@ -4,3 +4,5 @@ require 'rspec/core/rake_task'
4
4
  RSpec::Core::RakeTask.new do |t|
5
5
  t.pattern = './spec/**/*_spec.rb'
6
6
  end
7
+
8
+ task :default => [:spec]
data/gtfs.gemspec CHANGED
@@ -5,7 +5,6 @@ require './lib/gtfs/version'
5
5
  Gem::Specification.new do |gem|
6
6
  gem.name = 'gtfs'
7
7
  gem.version = GTFS::VERSION
8
- gem.date = Date.today.to_s
9
8
 
10
9
  gem.summary = 'Load and read GTFS data from zip bundles'
11
10
  gem.description = 'gtfs reads GTFS data from a google-compliant Zip bundle
@@ -15,6 +14,8 @@ Gem::Specification.new do |gem|
15
14
  gem.email = ['ed@nerded.net']
16
15
  gem.homepage = 'https://github.com/nerdEd/gtfs'
17
16
 
17
+ gem.license = 'MIT'
18
+
18
19
  gem.required_ruby_version = '>= 1.9.2'
19
20
 
20
21
  gem.add_dependency 'rake'
@@ -23,7 +24,7 @@ Gem::Specification.new do |gem|
23
24
 
24
25
  gem.add_development_dependency 'rspec', ['>= 2.0.0']
25
26
  gem.add_development_dependency 'simplecov'
26
- gem.add_development_dependency 'ruby-debug19'
27
+ gem.add_development_dependency 'byebug'
27
28
  gem.add_development_dependency 'vcr'
28
29
  gem.add_development_dependency 'fakeweb'
29
30
 
data/lib/gtfs/agency.rb CHANGED
@@ -3,7 +3,7 @@ module GTFS
3
3
  include GTFS::Model
4
4
 
5
5
  has_required_attrs :name, :url, :timezone
6
- has_optional_attrs :id, :lang, :phone, :fare_url
6
+ has_optional_attrs :id, :lang, :phone, :fare_url, :email
7
7
  attr_accessor *attrs
8
8
 
9
9
  column_prefix :agency_
@@ -0,0 +1,20 @@
1
+ module GTFS
2
+ class Attribution
3
+ include GTFS::Model
4
+
5
+ has_required_attrs :organization_name
6
+ has_optional_attrs :attribution_id, :agency_id, :route_id, :trip_id, :is_producer,
7
+ :is_operator, :is_authority, :attribution_url, :attribution_email, :attribution_phone
8
+
9
+ attr_accessor *attrs
10
+
11
+ collection_name :attributions
12
+
13
+ required_file false
14
+ uses_filename 'attributions.txt'
15
+
16
+ def self.parse_attributions(data, options={})
17
+ return parse_models(data, options)
18
+ end
19
+ end
20
+ end
@@ -2,8 +2,8 @@ module GTFS
2
2
  class FareAttribute
3
3
  include GTFS::Model
4
4
 
5
- has_required_attrs :fare_id, :price, :currency_type, :payment_method
6
- has_optional_attrs :transfer_duration, :transfers
5
+ has_required_attrs :fare_id, :price, :currency_type, :payment_method, :transfers
6
+ has_optional_attrs :transfer_duration, :agency_id
7
7
  attr_accessor *attrs
8
8
 
9
9
  collection_name :fare_attributes
@@ -0,0 +1,19 @@
1
+ module GTFS
2
+ class FeedInfo
3
+ include GTFS::Model
4
+
5
+ has_required_attrs :publisher_name, :publisher_url, :lang
6
+ has_optional_attrs :start_date, :end_date, :version, :contact_email, :contact_url, :default_lang
7
+ attr_accessor *attrs
8
+
9
+ column_prefix :feed_
10
+
11
+ collection_name :feed_infos
12
+ required_file false
13
+ uses_filename 'feed_info.txt'
14
+
15
+ def self.parse_feed_infos(data, options={})
16
+ return parse_models(data, options)
17
+ end
18
+ end
19
+ end
data/lib/gtfs/level.rb ADDED
@@ -0,0 +1,17 @@
1
+ module GTFS
2
+ class Level
3
+ include GTFS::Model
4
+
5
+ has_required_attrs :level_id, :level_index
6
+ has_optional_attrs :level_name
7
+ attr_accessor *attrs
8
+
9
+ collection_name :levels
10
+ required_file false
11
+ uses_filename 'levels.txt'
12
+
13
+ def self.parse_levels(data, options={})
14
+ return parse_models(data, options)
15
+ end
16
+ end
17
+ end
data/lib/gtfs/model.rb CHANGED
@@ -39,7 +39,7 @@ module GTFS
39
39
  end
40
40
 
41
41
  def attrs
42
- required_attrs + optional_attrs
42
+ required_attrs + optional_attrs
43
43
  end
44
44
 
45
45
  #####################################
@@ -77,8 +77,8 @@ module GTFS
77
77
  self.define_singleton_method(:filename) {filename}
78
78
  end
79
79
 
80
- def each(filename)
81
- CSV.foreach(filename, :headers => true) do |row|
80
+ def each(filename, options)
81
+ CSV.foreach(filename, :headers => true, :encoding => options[:encoding]) do |row|
82
82
  yield parse_model(row.to_hash)
83
83
  end
84
84
  end
@@ -0,0 +1,19 @@
1
+ module GTFS
2
+ class Pathway
3
+ include GTFS::Model
4
+
5
+ has_required_attrs :pathway_id, :from_stop_id, :to_stop_id, :pathway_mode, :is_bidirectional
6
+ has_optional_attrs :length, :traversal_time, :stair_count, :max_slope, :min_width, :signposted_as,
7
+ :reversed_signposted_as
8
+
9
+ attr_accessor *attrs
10
+ collection_name :pathways
11
+
12
+ required_file false
13
+ uses_filename 'pathways.txt'
14
+
15
+ def self.parse_pathways(data, options={})
16
+ return parse_models(data, options)
17
+ end
18
+ end
19
+ end
data/lib/gtfs/route.rb CHANGED
@@ -3,7 +3,7 @@ module GTFS
3
3
  include GTFS::Model
4
4
 
5
5
  has_required_attrs :id, :short_name, :long_name, :type
6
- has_optional_attrs :agency_id, :desc, :url, :color, :text_color
6
+ has_optional_attrs :agency_id, :desc, :url, :color, :text_color, :sort_order
7
7
  attr_accessor *attrs
8
8
 
9
9
  column_prefix :route_
data/lib/gtfs/source.rb CHANGED
@@ -5,15 +5,15 @@ require 'zip'
5
5
  module GTFS
6
6
  class Source
7
7
 
8
- ENTITIES = [GTFS::Agency, GTFS::Stop, GTFS::Route, GTFS::Trip, GTFS::StopTime,
9
- GTFS::Calendar, GTFS::CalendarDate, GTFS::Shape, GTFS::FareAttribute,
10
- GTFS::FareRule, GTFS::Frequency, GTFS::Transfer]
8
+ ENTITIES = [GTFS::Agency, GTFS::Stop, GTFS::Route, GTFS::Trip, GTFS::StopTime, GTFS::Calendar, GTFS::CalendarDate,
9
+ GTFS::Shape, GTFS::FareAttribute, GTFS::FareRule, GTFS::Frequency, GTFS::Transfer, GTFS::FeedInfo,
10
+ GTFS::Attribution, GTFS::Pathway, GTFS::Translation, GTFS::Level]
11
11
 
12
12
  REQUIRED_SOURCE_FILES = ENTITIES.select(&:required_file?).map(&:filename)
13
13
  OPTIONAL_SOURCE_FILES = ENTITIES.reject(&:required_file?).map(&:filename)
14
14
  SOURCE_FILES = ENTITIES.map(&:filename)
15
15
 
16
- DEFAULT_OPTIONS = {strict: true}
16
+ DEFAULT_OPTIONS = {strict: true, encoding: "utf-8"}
17
17
 
18
18
  attr_accessor :source, :archive, :options
19
19
 
@@ -64,13 +64,13 @@ module GTFS
64
64
 
65
65
  ENTITIES.each do |entity|
66
66
  define_method entity.name.to_sym do
67
- parse_file entity.filename do |f|
67
+ parse_file entity.filename, options do |f|
68
68
  entity.send("parse_#{entity.name}".to_sym, f.read, options)
69
69
  end
70
70
  end
71
71
 
72
72
  define_method "each_#{entity.singular_name}".to_sym do |&block|
73
- entity.each(File.join(@tmp_dir, entity.filename)) { |model| block.call model }
73
+ entity.each(File.join(@tmp_dir, entity.filename), options) { |model| block.call model }
74
74
  end
75
75
  end
76
76
 
@@ -78,9 +78,9 @@ module GTFS
78
78
  @files ||= {}
79
79
  end
80
80
 
81
- def parse_file(filename)
81
+ def parse_file(filename, options)
82
82
  raise_if_missing_source filename
83
- open File.join(@tmp_dir, '/', filename), 'r:bom|utf-8' do |f|
83
+ open File.join(@tmp_dir, '/', filename), "r:#{options[:encoding]}" do |f|
84
84
  files[filename] ||= yield f
85
85
  end
86
86
  end
data/lib/gtfs/stop.rb CHANGED
@@ -3,7 +3,8 @@ module GTFS
3
3
  include GTFS::Model
4
4
 
5
5
  has_required_attrs :id, :name, :lat, :lon
6
- has_optional_attrs :code, :desc, :zone_id, :url, :location_type, :parent_station, :timezone, :wheelchair_boarding
6
+ has_optional_attrs :code, :desc, :zone_id, :url, :location_type, :parent_station, :timezone, :wheelchair_boarding,
7
+ :level_id, :platform_code
7
8
  column_prefix :stop_
8
9
  attr_accessor *attrs
9
10
 
@@ -3,7 +3,7 @@ module GTFS
3
3
  include GTFS::Model
4
4
 
5
5
  has_required_attrs :trip_id, :arrival_time, :departure_time, :stop_id, :stop_sequence
6
- has_optional_attrs :stop_headsign, :pickup_type, :drop_off_type, :shape_dist_traveled
6
+ has_optional_attrs :stop_headsign, :pickup_type, :drop_off_type, :shape_dist_traveled, :timepoint
7
7
  attr_accessor *attrs
8
8
 
9
9
  collection_name :stop_times
@@ -0,0 +1,18 @@
1
+ module GTFS
2
+ class Translation
3
+ include GTFS::Model
4
+
5
+ has_required_attrs :table_name, :field_name, :language, :translation
6
+ has_optional_attrs :record_id, :record_sub_id, :field_value
7
+
8
+ attr_accessor *attrs
9
+ collection_name :translations
10
+
11
+ required_file false
12
+ uses_filename 'translations.txt'
13
+
14
+ def self.parse_translations(data, options={})
15
+ return parse_models(data, options)
16
+ end
17
+ end
18
+ end
data/lib/gtfs/trip.rb CHANGED
@@ -3,7 +3,7 @@ module GTFS
3
3
  include GTFS::Model
4
4
 
5
5
  has_required_attrs :route_id, :service_id, :id
6
- has_optional_attrs :headsign, :short_name, :direction_id, :block_id, :shape_id, :wheelchair_accessible
6
+ has_optional_attrs :headsign, :short_name, :direction_id, :block_id, :shape_id, :wheelchair_accessible, :bikes_allowed
7
7
  attr_accessor *attrs
8
8
 
9
9
  column_prefix :trip_
data/lib/gtfs/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module GTFS
2
- VERSION = '0.2.4'
2
+ VERSION = '0.4.0'
3
3
  end
data/lib/gtfs.rb CHANGED
@@ -3,6 +3,7 @@ require 'gtfs/model'
3
3
  require 'gtfs/agency'
4
4
  require 'gtfs/calendar'
5
5
  require 'gtfs/calendar_date'
6
+ require 'gtfs/feed_info'
6
7
  require 'gtfs/route'
7
8
  require 'gtfs/shape'
8
9
  require 'gtfs/stop'
@@ -13,6 +14,10 @@ require 'gtfs/fare_attribute'
13
14
  require 'gtfs/fare_rule'
14
15
  require 'gtfs/frequency'
15
16
  require 'gtfs/transfer'
17
+ require 'gtfs/translation'
18
+ require 'gtfs/pathway'
19
+ require 'gtfs/attribution'
20
+ require 'gtfs/level'
16
21
 
17
22
  require 'gtfs/source'
18
23
  require 'gtfs/url_source'
@@ -1,70 +1,63 @@
1
1
  ---
2
- - !ruby/struct:VCR::HTTPInteraction
3
- request: !ruby/struct:VCR::Request
4
- method: :get
5
- uri: http://www.edschmalzle.com:80/gtfs.zip
6
- body: !!null
7
- headers: !!null
8
- response: !ruby/struct:VCR::Response
9
- status: !ruby/struct:VCR::ResponseStatus
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: https://example.org/gtfs.zip
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers:
10
+ Accept-Encoding:
11
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
12
+ Accept:
13
+ - "*/*"
14
+ User-Agent:
15
+ - Ruby
16
+ Host:
17
+ - example.org
18
+ response:
19
+ status:
10
20
  code: 404
11
21
  message: Not Found
12
22
  headers:
13
- date:
14
- - Wed, 18 Jan 2012 05:04:53 GMT
15
- server:
16
- - Apache
17
- vary:
18
- - Cookie,Accept-Encoding
19
- x-pingback:
20
- - http://www.edschmalzle.com/xmlrpc.php
21
- expires:
22
- - Wed, 11 Jan 1984 05:00:00 GMT
23
- cache-control:
24
- - no-cache, must-revalidate, max-age=0
25
- pragma:
26
- - no-cache
27
- last-modified:
28
- - Wed, 18 Jan 2012 05:04:54 GMT
29
- transfer-encoding:
30
- - chunked
31
- content-type:
23
+ Age:
24
+ - '164717'
25
+ Cache-Control:
26
+ - max-age=604800
27
+ Content-Type:
32
28
  - text/html; charset=UTF-8
33
- body: ! "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\r\n<html
34
- xmlns=\"http://www.w3.org/1999/xhtml\" dir=\"ltr\" lang=\"en-US\">\r\n<head
35
- profile=\"http://gmpg.org/xfn/11\">\r\n<meta http-equiv=\"Content-Type\" content=\"text/html;
36
- charset=UTF-8\" />\r\n<title>Ed Schmalzle &raquo; Page not found</title>\r\n<link
37
- rel=\"stylesheet\" href=\"http://www.edschmalzle.com/wp-content/themes/shallowgrunge/shallowgrunge/style.css\"
38
- type=\"text/css\" media=\"screen\" />\r\n<link rel=\"alternate\" type=\"application/rss+xml\"
39
- title=\"Ed Schmalzle RSS Feed\" href=\"http://www.edschmalzle.com/feed/\" />\r\n<link
40
- rel=\"pingback\" href=\"http://www.edschmalzle.com/xmlrpc.php\" />\r\n<script
41
- type='text/javascript' src='http://www.edschmalzle.com/wp-includes/js/jquery/jquery.js?ver=1.7.1'></script>\n<script
42
- type='text/javascript' src='http://www.edschmalzle.com/wp-content/plugins/google-analyticator/external-tracking.min.js?ver=6.2'></script>\n<link
43
- rel=\"EditURI\" type=\"application/rsd+xml\" title=\"RSD\" href=\"http://www.edschmalzle.com/xmlrpc.php?rsd\"
44
- />\n<link rel=\"wlwmanifest\" type=\"application/wlwmanifest+xml\" href=\"http://www.edschmalzle.com/wp-includes/wlwmanifest.xml\"
45
- /> \n<meta name=\"generator\" content=\"WordPress 3.3.1\" />\n<!-- Google Analytics
46
- Tracking by Google Analyticator 6.2: http://ronaldheft.com/code/analyticator/
47
- -->\n<script type=\"text/javascript\">\n\tvar analyticsFileTypes = [''];\n\tvar
48
- analyticsEventTracking = 'enabled';\n</script>\n<script type=\"text/javascript\">\n\tvar
49
- _gaq = _gaq || [];\n\t_gaq.push(['_setAccount', 'UA-378745-4']);\n\t_gaq.push(['_trackPageview']);\n\t_gaq.push(['_trackPageLoadTime']);\n\n\t(function()
50
- {\n\t\tvar ga = document.createElement('script'); ga.type = 'text/javascript';
51
- ga.async = true;\n\t\tga.src = ('https:' == document.location.protocol ? 'https://ssl'
52
- : 'http://www') + '.google-analytics.com/ga.js';\n\t\tvar s = document.getElementsByTagName('script')[0];
53
- s.parentNode.insertBefore(ga, s);\n\t})();\n</script>\n</head>\r\n<body>\r\n<div
54
- id=\"wrapper\">\r\n<div id=\"wrapper2\">\r\n\r\n<div id=\"header\">\r\n\t<div
55
- id=\"logo\">\r\n\t\t<h1><a href=\"http://www.edschmalzle.com/\">Ed Schmalzle</a></h1>\r\n\t\t<p></p>\r\n\t</div>\r\n</div>\r\n<!--
56
- end #header -->\r\n<div id=\"menu\">\r\n\t<ul>\r\n\t\t<li class=\"page_item\"><a
57
- href=\"http://www.edschmalzle.com/\">Blog</a></li>\r\n\t\t<li class=\"page_item
58
- page-item-60\"><a href=\"http://www.edschmalzle.com/projects/\">Projects</a></li>\n<li
59
- class=\"page_item page-item-5\"><a href=\"http://www.edschmalzle.com/resume/\">Resume</a></li>\n<li
60
- class=\"page_item page-item-6\"><a href=\"http://www.edschmalzle.com/contact/\">Contact</a></li>\n<li
61
- class=\"page_item page-item-75\"><a href=\"http://www.edschmalzle.com/archives/\">Archives</a></li>\n\t\t<li
62
- class=\"page_item\"><a href=\"http://www.edschmalzle.com/feed/\">RSS</a></li>\r\n\t</ul>\r\n</div>\r\n<!--
63
- end #menu -->\r\n</div>\r\n<hr />\r\n\r\n<div id=\"page\">\r\n\t<div id=\"content\"
64
- class=\"narrowcolumn\">\r\n\r\n\t\t<h2 class=\"center\">Error 404 - Not Found</h2>\r\n\r\n\t</div>\r\n\r\n<div
65
- id=\"sidebar\">\r\n\t<ul>\r\n\t</ul>\r\n</div>\r\n<!-- end #sidebar -->\r\n\r\n<div
66
- style=\"clear: both;\">&nbsp;</div>\r\n</div>\r\n<!-- end #page -->\r\n<hr />\r\n</div>\r\n</div>\r\n<!--
67
- end #footer -->\r\n<div id=\"footer\">\r\n\t<div>\r\n\t\t<p>Copyright (c) 2008\r\n\t\t\tEd
68
- Schmalzle\t\t\tAll rights reserved. Design by <a href=\"http://www.freewpthemes.net/\">Free
69
- WordPress Themes</a> &nbsp;&bull;&nbsp;\r\n\t\t\tPowered by <a href=\"http://wordpress.org/\">WordPress</a></p>\r\n\t</div>\r\n</div>\r\n</body></html>"
70
- http_version: '1.1'
29
+ Date:
30
+ - Fri, 23 Oct 2020 23:02:49 GMT
31
+ Expires:
32
+ - Fri, 30 Oct 2020 23:02:49 GMT
33
+ Last-Modified:
34
+ - Thu, 22 Oct 2020 01:17:32 GMT
35
+ Server:
36
+ - ECS (oxr/837A)
37
+ Vary:
38
+ - Accept-Encoding
39
+ X-Cache:
40
+ - 404-HIT
41
+ Content-Length:
42
+ - '648'
43
+ body:
44
+ encoding: ASCII-8BIT
45
+ string: "<!doctype html>\n<html>\n<head>\n <title>Example Domain</title>\n\n
46
+ \ <meta charset=\"utf-8\" />\n <meta http-equiv=\"Content-type\" content=\"text/html;
47
+ charset=utf-8\" />\n <meta name=\"viewport\" content=\"width=device-width,
48
+ initial-scale=1\" />\n <style type=\"text/css\">\n body {\n background-color:
49
+ #f0f0f2;\n margin: 0;\n padding: 0;\n font-family: -apple-system,
50
+ system-ui, BlinkMacSystemFont, \"Segoe UI\", \"Open Sans\", \"Helvetica Neue\",
51
+ Helvetica, Arial, sans-serif;\n \n }\n div {\n width:
52
+ 600px;\n margin: 5em auto;\n padding: 2em;\n background-color:
53
+ #fdfdff;\n border-radius: 0.5em;\n box-shadow: 2px 3px 7px 2px
54
+ rgba(0,0,0,0.02);\n }\n a:link, a:visited {\n color: #38488f;\n
55
+ \ text-decoration: none;\n }\n @media (max-width: 700px) {\n div
56
+ {\n margin: 0 auto;\n width: auto;\n }\n }\n
57
+ \ </style> \n</head>\n\n<body>\n<div>\n <h1>Example Domain</h1>\n
58
+ \ <p>This domain is for use in illustrative examples in documents. You may
59
+ use this\n domain in literature without prior coordination or asking for
60
+ permission.</p>\n <p><a href=\"https://www.iana.org/domains/example\">More
61
+ information...</a></p>\n</div>\n</body>\n</html>\n"
62
+ recorded_at: Fri, 23 Oct 2020 23:02:49 GMT
63
+ recorded_with: VCR 6.0.0
@@ -1,127 +1,60 @@
1
1
  ---
2
- - !ruby/struct:VCR::HTTPInteraction
3
- request: !ruby/struct:VCR::Request
4
- method: :get
5
- uri: http://dl.dropbox.com:80/u/416235/work/valid_gtfs.zip
6
- body: !!null
7
- headers: !!null
8
- response: !ruby/struct:VCR::Response
9
- status: !ruby/struct:VCR::ResponseStatus
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: https://developers.google.com/transit/gtfs/examples/sample-feed.zip
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers:
10
+ Accept-Encoding:
11
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
12
+ Accept:
13
+ - "*/*"
14
+ User-Agent:
15
+ - Ruby
16
+ Host:
17
+ - developers.google.com
18
+ response:
19
+ status:
10
20
  code: 200
11
21
  message: OK
12
22
  headers:
13
- server:
14
- - nginx/1.0.14
15
- date:
16
- - Fri, 13 Apr 2012 21:52:30 GMT
17
- content-type:
23
+ Content-Type:
18
24
  - application/zip
19
- connection:
20
- - keep-alive
21
- content-length:
22
- - '4147'
23
- x-robots-tag:
24
- - noindex,nofollow
25
- accept-ranges:
26
- - bytes
27
- etag:
28
- - 1380046134n
29
- pragma:
30
- - public
31
- cache-control:
32
- - max-age=0
33
- body: !binary |-
34
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- +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
- 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
- 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
- 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
- UEsDBBQAAAAIAG12JkCHn2pHkQYAAJATAAAKABwAcm91dGVzLnR4dFVUCQAD
46
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- bWUnW19aqGTTyNYa7W/K0oRIEQX3quyd7o5YqTGQ2Z1yRslpq5w7shqDET3B
56
- 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
- 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
- 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
- cr62B+Z0tbnNXJoQOGnO97X2yDZp9tZWPszo5C5S9akgclJk0Mh/yZHDtORt
60
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- pgpJsHtQ7sNW/QeoZIRKMefvyJp6L6nILvGOFGlG0BQL7tqRLYSKZ6HkIypi
69
- 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
- vfT1dOOUak4eEZmeYJoJflacnJo6GziCUR49w9BvRvQE1Cznl2aGpOAKHQ58
71
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- Jv6HrlxVpbSUsuwMdSQiTDrjY1aTeWBiMgIRjNFfb0svjKiRDZee9ju959K0
98
- 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
- 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
- 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
- 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
- pdI0f8jz2By9SuUjWiqtUVXXqNmC2KkO/muH5bOQ+HDtQBAOcUSYcurhpbyV
103
- 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
- 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
- 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
- AwQUAAAACADNjI1AkY7neagAAADfAQAACQAcAHRyaXBzLnR4dFVUCQAD0pyI
107
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
126
- AJENAAAAAA==
127
- http_version: '1.1'
25
+ Last-Modified:
26
+ - Wed, 11 Jan 2012 14:31:33 GMT
27
+ Content-Disposition:
28
+ - attachment; filename="sample-feed.zip"
29
+ Cache-Control:
30
+ - no-cache, must-revalidate
31
+ Expires:
32
+ - '0'
33
+ Pragma:
34
+ - no-cache
35
+ Strict-Transport-Security:
36
+ - max-age=31536000; includeSubdomains
37
+ X-Frame-Options:
38
+ - SAMEORIGIN
39
+ X-Xss-Protection:
40
+ - '0'
41
+ X-Content-Type-Options:
42
+ - nosniff
43
+ X-Cloud-Trace-Context:
44
+ - 9d9cd729a1af3deba482f46f3a68c263
45
+ Date:
46
+ - Fri, 23 Oct 2020 23:02:49 GMT
47
+ Server:
48
+ - Google Frontend
49
+ Content-Length:
50
+ - '3217'
51
+ Alt-Svc:
52
+ - h3-Q050=":443"; ma=2592000,h3-29=":443"; ma=2592000,h3-T051=":443"; ma=2592000,h3-T050=":443";
53
+ ma=2592000,h3-Q046=":443"; ma=2592000,h3-Q043=":443"; ma=2592000,quic=":443";
54
+ ma=2592000; v="46,43"
55
+ body:
56
+ encoding: ASCII-8BIT
57
+ string: !binary |-
58
+ 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
59
+ recorded_at: Fri, 23 Oct 2020 23:02:49 GMT
60
+ recorded_with: VCR 6.0.0
@@ -2,7 +2,7 @@ require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
2
2
 
3
3
  describe GTFS::Agency do
4
4
  describe 'Agency.parse_agencies' do
5
- let(:header_line) {"agency_id,agency_name,agency_url,agency_timezone,agency_lang,agency_phone\n"}
5
+ let(:header_line) {"agency_id,agency_name,agency_url,agency_timezone,agency_lang,agency_phone,agency_email\n"}
6
6
  let(:invalid_header_line) {"agency_id,agency_url,agency_timezone,agency_lang,agency_phone\n"}
7
7
  let(:valid_line) {"1,Maryland Transit Administration,http://www.mta.maryland.gov,America/New_York,en,410-539-5000\n"}
8
8
  let(:invalid_line) {"1,,http://www.mta.maryland.gov,America/New_York,en,410-539-5000\n"}
@@ -0,0 +1,14 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
2
+
3
+ describe GTFS::Attribution do
4
+ describe 'Attribution.parse_attributions' do
5
+ let(:header_line) {"organization_name\n"}
6
+ let(:invalid_header_line) {"\n"}
7
+ let(:valid_line) {"Transit Feed Solutions Tokyo\n"}
8
+ let(:invalid_line) {"\n"}
9
+
10
+ subject {GTFS::Attribution.parse_attributions(source_text, opts)}
11
+
12
+ include_examples 'models'
13
+ end
14
+ end
@@ -0,0 +1,14 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
2
+
3
+ describe GTFS::FeedInfo do
4
+ describe 'FeedInfo.parse_feed_infos' do
5
+ let(:header_line) {"feed_publisher_name,feed_publisher_url,feed_lang,feed_start_date,feed_end_date,feed_version\n"}
6
+ let(:invalid_header_line) {"feed_publisher_name,feed_publisher_url,feed_start_date,feed_end_date,feed_version\n"}
7
+ let(:valid_line) {"Torrance Transit,http://Transit.TorranceCA.gov,en,20141102,20151003,1413\n"}
8
+ let(:invalid_line) {"Torrance Transit,http://Transit.TorranceCA.gov\n"}
9
+
10
+ subject {GTFS::FeedInfo.parse_feed_infos(source_text, opts)}
11
+
12
+ include_examples 'models'
13
+ end
14
+ end
@@ -0,0 +1,14 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
2
+
3
+ describe GTFS::Level do
4
+ describe 'Level.parse_levels' do
5
+ let(:header_line) {"level_id,level_index\n"}
6
+ let(:invalid_header_line) {",level_index\n"}
7
+ let(:valid_line) {"L0,0\n"}
8
+ let(:invalid_line) {",1\n"}
9
+
10
+ subject {GTFS::Level.parse_levels(source_text, opts)}
11
+
12
+ include_examples 'models'
13
+ end
14
+ end
@@ -2,24 +2,28 @@ require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
2
2
 
3
3
  describe GTFS::LocalSource do
4
4
  describe '#new' do
5
- subject {lambda{GTFS::LocalSource.new(source_path)}}
6
-
7
5
  context 'with a local source path that is invalid' do
8
6
  let(:source_path) {File.expand_path(File.dirname(__FILE__) + '/../fixtures/not_here.zip')}
9
7
 
10
- it {should raise_error(GTFS::InvalidSourceException)}
8
+ it 'throws an exception' do
9
+ expect { GTFS::LocalSource.new(source_path) }.to raise_error(GTFS::InvalidSourceException)
10
+ end
11
11
  end
12
12
 
13
13
  context 'with a local source path to a zip w/o required files' do
14
14
  let(:source_path) {File.expand_path(File.dirname(__FILE__) + '/../fixtures/missing_files_gtfs.zip')}
15
15
 
16
- it {should raise_error(GTFS::InvalidSourceException)}
16
+ it 'throws an exception' do
17
+ expect { GTFS::LocalSource.new(source_path) }.to raise_error(GTFS::InvalidSourceException)
18
+ end
17
19
  end
18
20
 
19
21
  context 'with a local source path to a valid source zip' do
20
22
  let(:source_path) {File.expand_path(File.dirname(__FILE__) + '/../fixtures/valid_gtfs.zip')}
21
23
 
22
- it {should_not raise_error(GTFS::InvalidSourceException)}
24
+ it 'throws an exception' do
25
+ expect { GTFS::LocalSource.new(source_path) }.to_not raise_error(GTFS::InvalidSourceException)
26
+ end
23
27
  end
24
28
  end
25
29
  end
@@ -0,0 +1,14 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
2
+
3
+ describe GTFS::Pathway do
4
+ describe 'Pathway.parse_pathways' do
5
+ let(:header_line) {"pathway_id,from_stop_id,to_stop_id,pathway_mode,is_bidirectional\n"}
6
+ let(:invalid_header_line) {",rom_stop_id,to_stop_id,pathway_mode,is_bidirectional\n"}
7
+ let(:valid_line) {"E1N1,E1,N1,2,1\n"}
8
+ let(:invalid_line) {"E1N1,E1,,,1\n"}
9
+
10
+ subject {GTFS::Pathway.parse_pathways(source_text, opts)}
11
+
12
+ include_examples 'models'
13
+ end
14
+ end
@@ -1,6 +1,13 @@
1
1
  require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
2
2
 
3
3
  describe GTFS::Source do
4
+ before(:each) do
5
+ VCR.insert_cassette 'valid_gtfs_uri'
6
+ end
7
+ after(:each) do
8
+ VCR.eject_cassette
9
+ end
10
+
4
11
  let(:valid_local_source) do
5
12
  File.expand_path(File.dirname(__FILE__) + '/../fixtures/valid_gtfs.zip')
6
13
  end
@@ -15,8 +22,7 @@ describe GTFS::Source do
15
22
  subject {GTFS::Source.build(data_source, opts)}
16
23
 
17
24
  context 'with a url as a data root' do
18
- use_vcr_cassette('valid_gtfs_uri')
19
- let(:data_source) {'http://dl.dropbox.com/u/416235/work/valid_gtfs.zip'}
25
+ let(:data_source) {'https://developers.google.com/transit/gtfs/examples/sample-feed.zip'}
20
26
 
21
27
  it {should be_instance_of GTFS::URLSource}
22
28
  its(:options) {should == GTFS::Source::DEFAULT_OPTIONS}
@@ -39,7 +45,7 @@ describe GTFS::Source do
39
45
  context 'with options to disable strict checks' do
40
46
  let(:opts) {{strict: false}}
41
47
 
42
- its(:options) {should == {strict: false}}
48
+ its(:options) {should == GTFS::Source::DEFAULT_OPTIONS.merge({strict: false})}
43
49
  end
44
50
  end
45
51
 
@@ -2,7 +2,7 @@ require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
2
2
 
3
3
  describe GTFS::StopTime do
4
4
  describe 'StopTime.parse_stop_times' do
5
- let(:header_line) {"trip_id,arrival_time,departure_time,stop_id,stop_sequence,stop_headsign,pickup_type,drop_off_type,shape_dist_traveled\n"}
5
+ let(:header_line) {"trip_id,arrival_time,departure_time,stop_id,stop_sequence,stop_headsign,pickup_type,drop_off_type,shape_dist_traveled,timepoint\n"}
6
6
  let(:invalid_header_line) {",arrival_time,,stop_id,,stop_headsign,,drop_off_type,\n"}
7
7
  let(:valid_line) {"982385,4:34:00,4:34:00,277,1,,0,0,\n"}
8
8
  let(:invalid_line) {",,4:34:00,,1,,,0,\n"}
@@ -0,0 +1,14 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
2
+
3
+ describe GTFS::Translation do
4
+ describe 'Translation.parse_translations' do
5
+ let(:header_line) {"table_name,field_name,language,translation\n"}
6
+ let(:invalid_header_line) {",stop_name,,translation\n"}
7
+ let(:valid_line) {"stops,stop_name,en,Tokyo Station\n"}
8
+ let(:invalid_line) {",,,en\n"}
9
+
10
+ subject {GTFS::Translation.parse_translations(source_text, opts)}
11
+
12
+ include_examples 'models'
13
+ end
14
+ end
@@ -2,7 +2,7 @@ require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
2
2
 
3
3
  describe GTFS::Trip do
4
4
  describe 'Trip.parse_trips' do
5
- let(:header_line) {"route_id,service_id,trip_id,trip_headsign,direction_id,block_id,shape_id\n"}
5
+ let(:header_line) {"route_id,service_id,trip_id,trip_headsign,direction_id,block_id,shape_id,bikes_allowed\n"}
6
6
  let(:invalid_header_line) {",,,,direction_id,block_id,shape_id\n"}
7
7
  let(:valid_line) {"4679,1,982394,1 FT McHENRY,0,189021,59135\n"}
8
8
  let(:invalid_line) {",1,,1 FT McHENRY,,189021,\n"}
@@ -2,7 +2,7 @@ require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
2
2
 
3
3
  describe GTFS::URLSource do
4
4
  context 'with a URI to a valid source zip' do
5
- let(:source_path) {'http://dl.dropbox.com/u/416235/work/valid_gtfs.zip'}
5
+ let(:source_path) {'https://developers.google.com/transit/gtfs/examples/sample-feed.zip'}
6
6
  it 'should create a new source successfully' do
7
7
  VCR.use_cassette('valid_gtfs_uri') do
8
8
  lambda {GTFS::URLSource.new(source_path, {})}.should_not raise_error(GTFS::InvalidSourceException)
@@ -11,7 +11,7 @@ describe GTFS::URLSource do
11
11
  end
12
12
 
13
13
  context 'with a non-existent URI' do
14
- let(:source_path) {'http://www.edschmalzle.com/gtfs.zip'}
14
+ let(:source_path) {'https://example.org/gtfs.zip'}
15
15
  it 'should raise an exception' do
16
16
  VCR.use_cassette('invalid_gtfs_uri') do
17
17
  lambda {GTFS::URLSource.new(source_path, {})}.should raise_error(GTFS::InvalidSourceException)
data/spec/spec_helper.rb CHANGED
@@ -6,16 +6,21 @@ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
6
6
 
7
7
  require 'bundler/setup'
8
8
  require 'rspec'
9
+ require 'rspec/its'
9
10
  require 'vcr'
10
11
  require 'gtfs'
11
12
 
12
13
  require File.expand_path(File.dirname(__FILE__) + '/support/model_shared_examples')
13
14
 
14
15
  RSpec.configure do |config|
15
- config.extend VCR::RSpec::Macros
16
+ config.expect_with :rspec do |expectations|
17
+ expectations.syntax = [:should , :expect]
18
+ expectations.on_potential_false_positives = :nothing
19
+ end
20
+ config.raise_errors_for_deprecations!
16
21
  end
17
22
 
18
- VCR.config do |c|
23
+ VCR.configure do |c|
19
24
  c.cassette_library_dir = File.join(File.dirname(__FILE__), '/fixtures/cassettes')
20
- c.stub_with :fakeweb
25
+ c.hook_into :webmock
21
26
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gtfs
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.4
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - nerdEd
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-11-17 00:00:00.000000000 Z
11
+ date: 2022-04-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -81,7 +81,7 @@ dependencies:
81
81
  - !ruby/object:Gem::Version
82
82
  version: '0'
83
83
  - !ruby/object:Gem::Dependency
84
- name: ruby-debug19
84
+ name: byebug
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
87
  - - ">="
@@ -130,29 +130,35 @@ executables: []
130
130
  extensions: []
131
131
  extra_rdoc_files: []
132
132
  files:
133
+ - ".github/workflows/ci.yml"
133
134
  - ".gitignore"
134
- - ".travis.yml"
135
135
  - Gemfile
136
136
  - Gemfile.lock
137
+ - LICENSE
137
138
  - README.md
138
139
  - Rakefile
139
140
  - gtfs.gemspec
140
141
  - lib/gtfs.rb
141
142
  - lib/gtfs/agency.rb
143
+ - lib/gtfs/attribution.rb
142
144
  - lib/gtfs/calendar.rb
143
145
  - lib/gtfs/calendar_date.rb
144
146
  - lib/gtfs/custom_exceptions.rb
145
147
  - lib/gtfs/fare_attribute.rb
146
148
  - lib/gtfs/fare_rule.rb
149
+ - lib/gtfs/feed_info.rb
147
150
  - lib/gtfs/frequency.rb
151
+ - lib/gtfs/level.rb
148
152
  - lib/gtfs/local_source.rb
149
153
  - lib/gtfs/model.rb
154
+ - lib/gtfs/pathway.rb
150
155
  - lib/gtfs/route.rb
151
156
  - lib/gtfs/shape.rb
152
157
  - lib/gtfs/source.rb
153
158
  - lib/gtfs/stop.rb
154
159
  - lib/gtfs/stop_time.rb
155
160
  - lib/gtfs/transfer.rb
161
+ - lib/gtfs/translation.rb
156
162
  - lib/gtfs/trip.rb
157
163
  - lib/gtfs/url_source.rb
158
164
  - lib/gtfs/version.rb
@@ -161,26 +167,32 @@ files:
161
167
  - spec/fixtures/missing_files.zip
162
168
  - spec/fixtures/valid_gtfs.zip
163
169
  - spec/gtfs/agency_spec.rb
170
+ - spec/gtfs/attribution_spec.rb
164
171
  - spec/gtfs/calendar_date_spec.rb
165
172
  - spec/gtfs/calendar_spec.rb
166
173
  - spec/gtfs/fare_attribute_spec.rb
167
174
  - spec/gtfs/fare_rule_spec.rb
175
+ - spec/gtfs/feed_info_spec.rb
168
176
  - spec/gtfs/frequency_spec.rb
177
+ - spec/gtfs/level_spec.rb
169
178
  - spec/gtfs/local_source_spec.rb
179
+ - spec/gtfs/pathway_spec.rb
170
180
  - spec/gtfs/route_spec.rb
171
181
  - spec/gtfs/shape_spec.rb
172
182
  - spec/gtfs/source_spec.rb
173
183
  - spec/gtfs/stop_spec.rb
174
184
  - spec/gtfs/stop_time_spec.rb
175
185
  - spec/gtfs/transfer_spec.rb
186
+ - spec/gtfs/translation_spec.rb
176
187
  - spec/gtfs/trip_spec.rb
177
188
  - spec/gtfs/url_source_spec.rb
178
189
  - spec/spec_helper.rb
179
190
  - spec/support/model_shared_examples.rb
180
191
  homepage: https://github.com/nerdEd/gtfs
181
- licenses: []
192
+ licenses:
193
+ - MIT
182
194
  metadata: {}
183
- post_install_message:
195
+ post_install_message:
184
196
  rdoc_options: []
185
197
  require_paths:
186
198
  - lib
@@ -195,9 +207,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
195
207
  - !ruby/object:Gem::Version
196
208
  version: '0'
197
209
  requirements: []
198
- rubyforge_project:
199
- rubygems_version: 2.2.2
200
- signing_key:
210
+ rubygems_version: 3.2.32
211
+ signing_key:
201
212
  specification_version: 4
202
213
  summary: Load and read GTFS data from zip bundles
203
214
  test_files:
@@ -206,20 +217,24 @@ test_files:
206
217
  - spec/fixtures/missing_files.zip
207
218
  - spec/fixtures/valid_gtfs.zip
208
219
  - spec/gtfs/agency_spec.rb
220
+ - spec/gtfs/attribution_spec.rb
209
221
  - spec/gtfs/calendar_date_spec.rb
210
222
  - spec/gtfs/calendar_spec.rb
211
223
  - spec/gtfs/fare_attribute_spec.rb
212
224
  - spec/gtfs/fare_rule_spec.rb
225
+ - spec/gtfs/feed_info_spec.rb
213
226
  - spec/gtfs/frequency_spec.rb
227
+ - spec/gtfs/level_spec.rb
214
228
  - spec/gtfs/local_source_spec.rb
229
+ - spec/gtfs/pathway_spec.rb
215
230
  - spec/gtfs/route_spec.rb
216
231
  - spec/gtfs/shape_spec.rb
217
232
  - spec/gtfs/source_spec.rb
218
233
  - spec/gtfs/stop_spec.rb
219
234
  - spec/gtfs/stop_time_spec.rb
220
235
  - spec/gtfs/transfer_spec.rb
236
+ - spec/gtfs/translation_spec.rb
221
237
  - spec/gtfs/trip_spec.rb
222
238
  - spec/gtfs/url_source_spec.rb
223
239
  - spec/spec_helper.rb
224
240
  - spec/support/model_shared_examples.rb
225
- has_rdoc:
data/.travis.yml DELETED
@@ -1,4 +0,0 @@
1
- language: ruby
2
- rvm:
3
- - 1.9.2
4
- - 1.9.3