gtfs 0.2.1 → 0.3.0
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.
- checksums.yaml +7 -0
- data/.travis.yml +13 -2
- data/Gemfile +11 -8
- data/Gemfile.lock +41 -29
- data/LICENSE +21 -0
- data/README.md +15 -17
- data/Rakefile +2 -0
- data/gtfs.gemspec +5 -2
- data/lib/gtfs.rb +1 -0
- data/lib/gtfs/agency.rb +3 -3
- data/lib/gtfs/calendar.rb +2 -2
- data/lib/gtfs/calendar_date.rb +2 -2
- data/lib/gtfs/fare_attribute.rb +3 -3
- data/lib/gtfs/fare_rule.rb +2 -2
- data/lib/gtfs/feed_info.rb +19 -0
- data/lib/gtfs/frequency.rb +2 -2
- data/lib/gtfs/model.rb +28 -9
- data/lib/gtfs/route.rb +2 -2
- data/lib/gtfs/shape.rb +2 -2
- data/lib/gtfs/source.rb +19 -11
- data/lib/gtfs/stop.rb +3 -3
- data/lib/gtfs/stop_time.rb +3 -3
- data/lib/gtfs/transfer.rb +2 -2
- data/lib/gtfs/trip.rb +3 -3
- data/lib/gtfs/url_source.rb +1 -1
- data/lib/gtfs/version.rb +1 -2
- data/spec/fixtures/cassettes/invalid_gtfs_uri.yml +58 -65
- data/spec/fixtures/cassettes/valid_gtfs_uri.yml +55 -122
- data/spec/gtfs/agency_spec.rb +2 -2
- data/spec/gtfs/calendar_date_spec.rb +1 -1
- data/spec/gtfs/calendar_spec.rb +1 -1
- data/spec/gtfs/fare_attribute_spec.rb +14 -0
- data/spec/gtfs/fare_rule_spec.rb +13 -0
- data/spec/gtfs/feed_info_spec.rb +14 -0
- data/spec/gtfs/frequency_spec.rb +14 -0
- data/spec/gtfs/route_spec.rb +1 -1
- data/spec/gtfs/shape_spec.rb +1 -1
- data/spec/gtfs/source_spec.rb +23 -11
- data/spec/gtfs/stop_spec.rb +1 -1
- data/spec/gtfs/stop_time_spec.rb +2 -2
- data/spec/gtfs/transfer_spec.rb +14 -0
- data/spec/gtfs/trip_spec.rb +2 -2
- data/spec/gtfs/url_source_spec.rb +4 -4
- data/spec/spec_helper.rb +7 -3
- data/spec/support/model_shared_examples.rb +46 -22
- metadata +46 -52
| @@ -0,0 +1,13 @@ | |
| 1 | 
            +
            require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            describe GTFS::FareRule do
         | 
| 4 | 
            +
              describe '.parse_fare_rules' do
         | 
| 5 | 
            +
                let(:header_line) {"fare_id,route_id,origin_id,destination_id,contains_id\n"}
         | 
| 6 | 
            +
                let(:invalid_header_line) {",route_id,origin_id,destination_id,contains_id\n"}
         | 
| 7 | 
            +
                let(:valid_line) {"1,2,TWS,,\n"}
         | 
| 8 | 
            +
                let(:invalid_line) {",2,TWS,,\n"}
         | 
| 9 | 
            +
                subject {GTFS::FareRule.parse_fare_rules(source_text, opts)}
         | 
| 10 | 
            +
             | 
| 11 | 
            +
                include_examples 'models'
         | 
| 12 | 
            +
              end
         | 
| 13 | 
            +
            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::Frequency do
         | 
| 4 | 
            +
              describe '#parse_frequncies' do
         | 
| 5 | 
            +
                let(:header_line) {"trip_id,start_time,end_time,headway_secs\n"}
         | 
| 6 | 
            +
                let(:invalid_header_line) {",,end_time,headway_secs\n"}
         | 
| 7 | 
            +
                let(:valid_line) {"AWE1,05:30:00,06:30:00,300\n"}
         | 
| 8 | 
            +
                let(:invalid_line) {",,06:30:00,300\n"}
         | 
| 9 | 
            +
             | 
| 10 | 
            +
                subject {GTFS::Frequency.parse_frequencies(source_text, opts)}
         | 
| 11 | 
            +
             | 
| 12 | 
            +
                include_examples 'models'
         | 
| 13 | 
            +
              end
         | 
| 14 | 
            +
            end
         | 
    
        data/spec/gtfs/route_spec.rb
    CHANGED
    
    | @@ -7,7 +7,7 @@ describe GTFS::Route do | |
| 7 7 | 
             
                let(:valid_line) {"4679,1,001,SINAI - FORT McHENRY,,3,,0000FF,FFFFFF\n"}
         | 
| 8 8 | 
             
                let(:invalid_line) {",1,,,,3,,,FFFFFF\n"}
         | 
| 9 9 |  | 
| 10 | 
            -
                subject {GTFS::Route.parse_routes(source_text)}
         | 
| 10 | 
            +
                subject {GTFS::Route.parse_routes(source_text, opts)}
         | 
| 11 11 |  | 
| 12 12 | 
             
                include_examples 'models'
         | 
| 13 13 | 
             
              end
         | 
    
        data/spec/gtfs/shape_spec.rb
    CHANGED
    
    | @@ -7,7 +7,7 @@ describe GTFS::Shape do | |
| 7 7 | 
             
                let(:valid_line) {"59135,39.354286,-76.662453,19,0.8136\n"}
         | 
| 8 8 | 
             
                let(:invalid_line) {",39.354286,,,0.8136\n"}
         | 
| 9 9 |  | 
| 10 | 
            -
                subject {GTFS::Shape.parse_shapes(source_text)}
         | 
| 10 | 
            +
                subject {GTFS::Shape.parse_shapes(source_text, opts)}
         | 
| 11 11 |  | 
| 12 12 | 
             
                include_examples 'models'
         | 
| 13 13 | 
             
              end
         | 
    
        data/spec/gtfs/source_spec.rb
    CHANGED
    
    | @@ -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
         | 
| @@ -10,29 +17,35 @@ describe GTFS::Source do | |
| 10 17 | 
             
              end
         | 
| 11 18 |  | 
| 12 19 | 
             
              describe '#build' do
         | 
| 13 | 
            -
                 | 
| 14 | 
            -
             | 
| 15 | 
            -
                 | 
| 16 | 
            -
                  GTFS::URLSource.stub(:new).and_return('URLSource')
         | 
| 17 | 
            -
                  GTFS::LocalSource.stub(:new).and_return('LocalSource')
         | 
| 18 | 
            -
                end
         | 
| 20 | 
            +
                let(:opts) {{}}
         | 
| 21 | 
            +
                let(:data_source) {valid_local_source}
         | 
| 22 | 
            +
                subject {GTFS::Source.build(data_source, opts)}
         | 
| 19 23 |  | 
| 20 24 | 
             
                context 'with a url as a data root' do
         | 
| 21 | 
            -
                  let(:data_source) {' | 
| 25 | 
            +
                  let(:data_source) {'https://developers.google.com/transit/gtfs/examples/sample-feed.zip'}
         | 
| 22 26 |  | 
| 23 | 
            -
                  it {should  | 
| 27 | 
            +
                  it {should be_instance_of GTFS::URLSource}
         | 
| 28 | 
            +
                  its(:options) {should == GTFS::Source::DEFAULT_OPTIONS}
         | 
| 24 29 | 
             
                end
         | 
| 25 30 |  | 
| 26 31 | 
             
                context 'with a file path as a data root' do
         | 
| 27 32 | 
             
                  let(:data_source) {valid_local_source}
         | 
| 28 33 |  | 
| 29 | 
            -
                  it {should  | 
| 34 | 
            +
                  it {should be_instance_of GTFS::LocalSource}
         | 
| 35 | 
            +
                  its(:options) {should == GTFS::Source::DEFAULT_OPTIONS}
         | 
| 30 36 | 
             
                end
         | 
| 31 37 |  | 
| 32 38 | 
             
                context 'with a file object as a data root' do
         | 
| 33 39 | 
             
                  let(:data_source) {File.open(valid_local_source)}
         | 
| 34 40 |  | 
| 35 | 
            -
                  it {should  | 
| 41 | 
            +
                  it {should be_instance_of GTFS::LocalSource}
         | 
| 42 | 
            +
                  its(:options) {should == GTFS::Source::DEFAULT_OPTIONS}
         | 
| 43 | 
            +
                end
         | 
| 44 | 
            +
             | 
| 45 | 
            +
                context 'with options to disable strict checks' do
         | 
| 46 | 
            +
                  let(:opts) {{strict: false}}
         | 
| 47 | 
            +
             | 
| 48 | 
            +
                  its(:options) {should == {strict: false}}
         | 
| 36 49 | 
             
                end
         | 
| 37 50 | 
             
              end
         | 
| 38 51 |  | 
| @@ -51,7 +64,6 @@ describe GTFS::Source do | |
| 51 64 | 
             
                  it {should_not be_empty}
         | 
| 52 65 | 
             
                  its(:first) {should be_an_instance_of(GTFS::Agency)}
         | 
| 53 66 | 
             
                end
         | 
| 54 | 
            -
             | 
| 55 67 | 
             
              end
         | 
| 56 68 |  | 
| 57 69 | 
             
              describe '#stops' do
         | 
    
        data/spec/gtfs/stop_spec.rb
    CHANGED
    
    | @@ -7,7 +7,7 @@ describe GTFS::Stop do | |
| 7 7 | 
             
                let(:valid_line) {"3,C093,LANIER & SINAI HOSPITAL,39.351145,-76.663113,,,,\n"}
         | 
| 8 8 | 
             
                let(:invalid_line) {"3,,,,-76.663113,,,,\n"}
         | 
| 9 9 |  | 
| 10 | 
            -
                subject {GTFS::Stop.parse_stops(source_text)}
         | 
| 10 | 
            +
                subject {GTFS::Stop.parse_stops(source_text, opts)}
         | 
| 11 11 |  | 
| 12 12 | 
             
                include_examples 'models'
         | 
| 13 13 | 
             
              end
         | 
    
        data/spec/gtfs/stop_time_spec.rb
    CHANGED
    
    | @@ -2,12 +2,12 @@ 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"}
         | 
| 9 9 |  | 
| 10 | 
            -
                subject {GTFS::StopTime.parse_stop_times(source_text)}
         | 
| 10 | 
            +
                subject {GTFS::StopTime.parse_stop_times(source_text, opts)}
         | 
| 11 11 |  | 
| 12 12 | 
             
                include_examples 'models'
         | 
| 13 13 | 
             
              end
         | 
| @@ -0,0 +1,14 @@ | |
| 1 | 
            +
            require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            describe GTFS::Transfer do
         | 
| 4 | 
            +
              describe '#parse_transfers' do
         | 
| 5 | 
            +
                let(:header_line) {"from_stop_id,to_stop_id,transfer_type,min_transfer_time\n"}
         | 
| 6 | 
            +
                let(:invalid_header_line) {",toxxtop_id,transfer_type,min_transfer_time\n"}
         | 
| 7 | 
            +
                let(:valid_line) {"S6,S7,2,300\n"}
         | 
| 8 | 
            +
                let(:invalid_line) {",S7,2,300\n"}
         | 
| 9 | 
            +
             | 
| 10 | 
            +
                subject {GTFS::Transfer.parse_transfers(source_text, opts)}
         | 
| 11 | 
            +
                
         | 
| 12 | 
            +
                include_examples 'models'
         | 
| 13 | 
            +
              end
         | 
| 14 | 
            +
            end
         | 
    
        data/spec/gtfs/trip_spec.rb
    CHANGED
    
    | @@ -2,12 +2,12 @@ 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"}
         | 
| 9 9 |  | 
| 10 | 
            -
                subject {GTFS::Trip.parse_trips(source_text)}
         | 
| 10 | 
            +
                subject {GTFS::Trip.parse_trips(source_text, opts)}
         | 
| 11 11 |  | 
| 12 12 | 
             
                include_examples 'models'
         | 
| 13 13 | 
             
              end
         | 
| @@ -2,19 +2,19 @@ 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) {' | 
| 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 | 
            -
                    lambda {GTFS::URLSource.new(source_path)}.should_not raise_error(GTFS::InvalidSourceException)
         | 
| 8 | 
            +
                    lambda {GTFS::URLSource.new(source_path, {})}.should_not raise_error(GTFS::InvalidSourceException)
         | 
| 9 9 | 
             
                  end
         | 
| 10 10 | 
             
                end
         | 
| 11 11 | 
             
              end
         | 
| 12 12 |  | 
| 13 13 | 
             
              context 'with a non-existent URI' do
         | 
| 14 | 
            -
                let(:source_path) {' | 
| 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 | 
            -
                    lambda {GTFS::URLSource.new(source_path)}.should raise_error(GTFS::InvalidSourceException)
         | 
| 17 | 
            +
                    lambda {GTFS::URLSource.new(source_path, {})}.should raise_error(GTFS::InvalidSourceException)
         | 
| 18 18 | 
             
                  end
         | 
| 19 19 | 
             
                end
         | 
| 20 20 | 
             
              end
         | 
    
        data/spec/spec_helper.rb
    CHANGED
    
    | @@ -6,16 +6,20 @@ $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 | 
            -
               | 
| 16 | 
            +
              config.expect_with :rspec do |expectations|
         | 
| 17 | 
            +
                expectations.syntax = [:should , :expect]
         | 
| 18 | 
            +
                expectations.on_potential_false_positives = :nothing
         | 
| 19 | 
            +
              end
         | 
| 16 20 | 
             
            end
         | 
| 17 21 |  | 
| 18 | 
            -
            VCR. | 
| 22 | 
            +
            VCR.configure do |c|
         | 
| 19 23 | 
             
              c.cassette_library_dir = File.join(File.dirname(__FILE__), '/fixtures/cassettes')
         | 
| 20 | 
            -
              c. | 
| 24 | 
            +
              c.hook_into :webmock
         | 
| 21 25 | 
             
            end
         | 
| @@ -1,31 +1,55 @@ | |
| 1 1 | 
             
            shared_examples 'models' do |collection_class|
         | 
| 2 | 
            -
              context 'with a nil source' do
         | 
| 3 | 
            -
                let(:source_text) {nil}
         | 
| 4 | 
            -
                it {should == []}
         | 
| 5 | 
            -
              end
         | 
| 6 2 |  | 
| 7 | 
            -
              context 'with  | 
| 8 | 
            -
                let(: | 
| 9 | 
            -
                it {should == []}
         | 
| 10 | 
            -
              end
         | 
| 3 | 
            +
              context 'with default options' do
         | 
| 4 | 
            +
                let(:opts) {{}}
         | 
| 11 5 |  | 
| 12 | 
            -
             | 
| 13 | 
            -
             | 
| 14 | 
            -
             | 
| 15 | 
            -
             | 
| 6 | 
            +
                context 'with a nil source' do
         | 
| 7 | 
            +
                  let(:source_text) {nil}
         | 
| 8 | 
            +
                  it {should == []}
         | 
| 9 | 
            +
                end
         | 
| 16 10 |  | 
| 17 | 
            -
             | 
| 18 | 
            -
             | 
| 19 | 
            -
             | 
| 20 | 
            -
             | 
| 11 | 
            +
                context 'with an empty source' do
         | 
| 12 | 
            +
                  let(:source_text) {''}
         | 
| 13 | 
            +
                  it {should == []}
         | 
| 14 | 
            +
                end
         | 
| 15 | 
            +
             | 
| 16 | 
            +
                context 'with a source w/ only headers' do
         | 
| 17 | 
            +
                  let(:source_text) {header_line}
         | 
| 18 | 
            +
                  it {should == []}
         | 
| 19 | 
            +
                end
         | 
| 21 20 |  | 
| 22 | 
            -
             | 
| 23 | 
            -
             | 
| 24 | 
            -
             | 
| 21 | 
            +
                context 'with a valid row of data' do
         | 
| 22 | 
            +
                  let(:source_text) {header_line + valid_line}
         | 
| 23 | 
            +
                  its(:size) {should == 1}
         | 
| 24 | 
            +
                end
         | 
| 25 | 
            +
             | 
| 26 | 
            +
                context 'with multiple valid rows of data' do
         | 
| 27 | 
            +
                  let(:source_text) {header_line + valid_line + valid_line}
         | 
| 28 | 
            +
                  its(:size) {should == 2}
         | 
| 29 | 
            +
                end
         | 
| 30 | 
            +
             | 
| 31 | 
            +
                context 'with 1 invalid and 1 valid row of data' do
         | 
| 32 | 
            +
                  let(:source_text) {header_line + valid_line + invalid_line}
         | 
| 33 | 
            +
                  its(:size) {should == 1}
         | 
| 34 | 
            +
                end
         | 
| 35 | 
            +
             | 
| 36 | 
            +
                context 'with an invalid line' do
         | 
| 37 | 
            +
                  let(:source_text) {header_line + invalid_line}
         | 
| 38 | 
            +
                  its(:size) {should == 0}
         | 
| 39 | 
            +
                end
         | 
| 25 40 | 
             
              end
         | 
| 26 41 |  | 
| 27 | 
            -
              context 'with  | 
| 28 | 
            -
                let(: | 
| 29 | 
            -
             | 
| 42 | 
            +
              context 'with options set to turn off strict checking' do
         | 
| 43 | 
            +
                let(:opts) {{strict: false}}
         | 
| 44 | 
            +
             | 
| 45 | 
            +
                context 'with an invalid line' do
         | 
| 46 | 
            +
                  let(:source_text) {header_line + invalid_line}
         | 
| 47 | 
            +
                  its(:size) {should == 1}
         | 
| 48 | 
            +
                end
         | 
| 49 | 
            +
             | 
| 50 | 
            +
                context 'with 1 invalid and 1 valid row of data' do
         | 
| 51 | 
            +
                  let(:source_text) {header_line + valid_line + invalid_line}
         | 
| 52 | 
            +
                  its(:size) {should == 2}
         | 
| 53 | 
            +
                end
         | 
| 30 54 | 
             
              end
         | 
| 31 55 | 
             
            end
         | 
    
        metadata
    CHANGED
    
    | @@ -1,145 +1,128 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: gtfs
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0. | 
| 5 | 
            -
              prerelease: 
         | 
| 4 | 
            +
              version: 0.3.0
         | 
| 6 5 | 
             
            platform: ruby
         | 
| 7 6 | 
             
            authors:
         | 
| 8 7 | 
             
            - nerdEd
         | 
| 9 | 
            -
            autorequire: | 
| 8 | 
            +
            autorequire:
         | 
| 10 9 | 
             
            bindir: bin
         | 
| 11 10 | 
             
            cert_chain: []
         | 
| 12 | 
            -
            date:  | 
| 11 | 
            +
            date: 2021-02-19 00:00:00.000000000 Z
         | 
| 13 12 | 
             
            dependencies:
         | 
| 14 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 15 14 | 
             
              name: rake
         | 
| 16 15 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 17 | 
            -
                none: false
         | 
| 18 16 | 
             
                requirements:
         | 
| 19 | 
            -
                - -  | 
| 17 | 
            +
                - - ">="
         | 
| 20 18 | 
             
                  - !ruby/object:Gem::Version
         | 
| 21 19 | 
             
                    version: '0'
         | 
| 22 20 | 
             
              type: :runtime
         | 
| 23 21 | 
             
              prerelease: false
         | 
| 24 22 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 25 | 
            -
                none: false
         | 
| 26 23 | 
             
                requirements:
         | 
| 27 | 
            -
                - -  | 
| 24 | 
            +
                - - ">="
         | 
| 28 25 | 
             
                  - !ruby/object:Gem::Version
         | 
| 29 26 | 
             
                    version: '0'
         | 
| 30 27 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 31 28 | 
             
              name: multi_json
         | 
| 32 29 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 33 | 
            -
                none: false
         | 
| 34 30 | 
             
                requirements:
         | 
| 35 | 
            -
                - -  | 
| 31 | 
            +
                - - ">="
         | 
| 36 32 | 
             
                  - !ruby/object:Gem::Version
         | 
| 37 33 | 
             
                    version: '0'
         | 
| 38 34 | 
             
              type: :runtime
         | 
| 39 35 | 
             
              prerelease: false
         | 
| 40 36 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 41 | 
            -
                none: false
         | 
| 42 37 | 
             
                requirements:
         | 
| 43 | 
            -
                - -  | 
| 38 | 
            +
                - - ">="
         | 
| 44 39 | 
             
                  - !ruby/object:Gem::Version
         | 
| 45 40 | 
             
                    version: '0'
         | 
| 46 41 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 47 42 | 
             
              name: rubyzip
         | 
| 48 43 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 49 | 
            -
                none: false
         | 
| 50 44 | 
             
                requirements:
         | 
| 51 | 
            -
                - -  | 
| 45 | 
            +
                - - "~>"
         | 
| 52 46 | 
             
                  - !ruby/object:Gem::Version
         | 
| 53 | 
            -
                    version: ' | 
| 47 | 
            +
                    version: '1.1'
         | 
| 54 48 | 
             
              type: :runtime
         | 
| 55 49 | 
             
              prerelease: false
         | 
| 56 50 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 57 | 
            -
                none: false
         | 
| 58 51 | 
             
                requirements:
         | 
| 59 | 
            -
                - -  | 
| 52 | 
            +
                - - "~>"
         | 
| 60 53 | 
             
                  - !ruby/object:Gem::Version
         | 
| 61 | 
            -
                    version: ' | 
| 54 | 
            +
                    version: '1.1'
         | 
| 62 55 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 63 56 | 
             
              name: rspec
         | 
| 64 57 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 65 | 
            -
                none: false
         | 
| 66 58 | 
             
                requirements:
         | 
| 67 | 
            -
                - -  | 
| 59 | 
            +
                - - ">="
         | 
| 68 60 | 
             
                  - !ruby/object:Gem::Version
         | 
| 69 61 | 
             
                    version: 2.0.0
         | 
| 70 62 | 
             
              type: :development
         | 
| 71 63 | 
             
              prerelease: false
         | 
| 72 64 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 73 | 
            -
                none: false
         | 
| 74 65 | 
             
                requirements:
         | 
| 75 | 
            -
                - -  | 
| 66 | 
            +
                - - ">="
         | 
| 76 67 | 
             
                  - !ruby/object:Gem::Version
         | 
| 77 68 | 
             
                    version: 2.0.0
         | 
| 78 69 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 79 70 | 
             
              name: simplecov
         | 
| 80 71 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 81 | 
            -
                none: false
         | 
| 82 72 | 
             
                requirements:
         | 
| 83 | 
            -
                - -  | 
| 73 | 
            +
                - - ">="
         | 
| 84 74 | 
             
                  - !ruby/object:Gem::Version
         | 
| 85 75 | 
             
                    version: '0'
         | 
| 86 76 | 
             
              type: :development
         | 
| 87 77 | 
             
              prerelease: false
         | 
| 88 78 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 89 | 
            -
                none: false
         | 
| 90 79 | 
             
                requirements:
         | 
| 91 | 
            -
                - -  | 
| 80 | 
            +
                - - ">="
         | 
| 92 81 | 
             
                  - !ruby/object:Gem::Version
         | 
| 93 82 | 
             
                    version: '0'
         | 
| 94 83 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 95 84 | 
             
              name: ruby-debug19
         | 
| 96 85 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 97 | 
            -
                none: false
         | 
| 98 86 | 
             
                requirements:
         | 
| 99 | 
            -
                - -  | 
| 87 | 
            +
                - - ">="
         | 
| 100 88 | 
             
                  - !ruby/object:Gem::Version
         | 
| 101 89 | 
             
                    version: '0'
         | 
| 102 90 | 
             
              type: :development
         | 
| 103 91 | 
             
              prerelease: false
         | 
| 104 92 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 105 | 
            -
                none: false
         | 
| 106 93 | 
             
                requirements:
         | 
| 107 | 
            -
                - -  | 
| 94 | 
            +
                - - ">="
         | 
| 108 95 | 
             
                  - !ruby/object:Gem::Version
         | 
| 109 96 | 
             
                    version: '0'
         | 
| 110 97 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 111 98 | 
             
              name: vcr
         | 
| 112 99 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 113 | 
            -
                none: false
         | 
| 114 100 | 
             
                requirements:
         | 
| 115 | 
            -
                - -  | 
| 101 | 
            +
                - - ">="
         | 
| 116 102 | 
             
                  - !ruby/object:Gem::Version
         | 
| 117 103 | 
             
                    version: '0'
         | 
| 118 104 | 
             
              type: :development
         | 
| 119 105 | 
             
              prerelease: false
         | 
| 120 106 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 121 | 
            -
                none: false
         | 
| 122 107 | 
             
                requirements:
         | 
| 123 | 
            -
                - -  | 
| 108 | 
            +
                - - ">="
         | 
| 124 109 | 
             
                  - !ruby/object:Gem::Version
         | 
| 125 110 | 
             
                    version: '0'
         | 
| 126 111 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 127 112 | 
             
              name: fakeweb
         | 
| 128 113 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 129 | 
            -
                none: false
         | 
| 130 114 | 
             
                requirements:
         | 
| 131 | 
            -
                - -  | 
| 115 | 
            +
                - - ">="
         | 
| 132 116 | 
             
                  - !ruby/object:Gem::Version
         | 
| 133 117 | 
             
                    version: '0'
         | 
| 134 118 | 
             
              type: :development
         | 
| 135 119 | 
             
              prerelease: false
         | 
| 136 120 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 137 | 
            -
                none: false
         | 
| 138 121 | 
             
                requirements:
         | 
| 139 | 
            -
                - -  | 
| 122 | 
            +
                - - ">="
         | 
| 140 123 | 
             
                  - !ruby/object:Gem::Version
         | 
| 141 124 | 
             
                    version: '0'
         | 
| 142 | 
            -
            description:  | 
| 125 | 
            +
            description: "gtfs reads GTFS data from a google-compliant Zip bundle \n                     and
         | 
| 143 126 | 
             
              returns an object representing the CSV data inside"
         | 
| 144 127 | 
             
            email:
         | 
| 145 128 | 
             
            - ed@nerded.net
         | 
| @@ -147,10 +130,11 @@ executables: [] | |
| 147 130 | 
             
            extensions: []
         | 
| 148 131 | 
             
            extra_rdoc_files: []
         | 
| 149 132 | 
             
            files:
         | 
| 150 | 
            -
            - .gitignore
         | 
| 151 | 
            -
            - .travis.yml
         | 
| 133 | 
            +
            - ".gitignore"
         | 
| 134 | 
            +
            - ".travis.yml"
         | 
| 152 135 | 
             
            - Gemfile
         | 
| 153 136 | 
             
            - Gemfile.lock
         | 
| 137 | 
            +
            - LICENSE
         | 
| 154 138 | 
             
            - README.md
         | 
| 155 139 | 
             
            - Rakefile
         | 
| 156 140 | 
             
            - gtfs.gemspec
         | 
| @@ -161,6 +145,7 @@ files: | |
| 161 145 | 
             
            - lib/gtfs/custom_exceptions.rb
         | 
| 162 146 | 
             
            - lib/gtfs/fare_attribute.rb
         | 
| 163 147 | 
             
            - lib/gtfs/fare_rule.rb
         | 
| 148 | 
            +
            - lib/gtfs/feed_info.rb
         | 
| 164 149 | 
             
            - lib/gtfs/frequency.rb
         | 
| 165 150 | 
             
            - lib/gtfs/local_source.rb
         | 
| 166 151 | 
             
            - lib/gtfs/model.rb
         | 
| @@ -180,39 +165,43 @@ files: | |
| 180 165 | 
             
            - spec/gtfs/agency_spec.rb
         | 
| 181 166 | 
             
            - spec/gtfs/calendar_date_spec.rb
         | 
| 182 167 | 
             
            - spec/gtfs/calendar_spec.rb
         | 
| 168 | 
            +
            - spec/gtfs/fare_attribute_spec.rb
         | 
| 169 | 
            +
            - spec/gtfs/fare_rule_spec.rb
         | 
| 170 | 
            +
            - spec/gtfs/feed_info_spec.rb
         | 
| 171 | 
            +
            - spec/gtfs/frequency_spec.rb
         | 
| 183 172 | 
             
            - spec/gtfs/local_source_spec.rb
         | 
| 184 173 | 
             
            - spec/gtfs/route_spec.rb
         | 
| 185 174 | 
             
            - spec/gtfs/shape_spec.rb
         | 
| 186 175 | 
             
            - spec/gtfs/source_spec.rb
         | 
| 187 176 | 
             
            - spec/gtfs/stop_spec.rb
         | 
| 188 177 | 
             
            - spec/gtfs/stop_time_spec.rb
         | 
| 178 | 
            +
            - spec/gtfs/transfer_spec.rb
         | 
| 189 179 | 
             
            - spec/gtfs/trip_spec.rb
         | 
| 190 180 | 
             
            - spec/gtfs/url_source_spec.rb
         | 
| 191 181 | 
             
            - spec/spec_helper.rb
         | 
| 192 182 | 
             
            - spec/support/model_shared_examples.rb
         | 
| 193 183 | 
             
            homepage: https://github.com/nerdEd/gtfs
         | 
| 194 | 
            -
            licenses: | 
| 195 | 
            -
             | 
| 184 | 
            +
            licenses:
         | 
| 185 | 
            +
            - MIT
         | 
| 186 | 
            +
            metadata: {}
         | 
| 187 | 
            +
            post_install_message:
         | 
| 196 188 | 
             
            rdoc_options: []
         | 
| 197 189 | 
             
            require_paths:
         | 
| 198 190 | 
             
            - lib
         | 
| 199 191 | 
             
            required_ruby_version: !ruby/object:Gem::Requirement
         | 
| 200 | 
            -
              none: false
         | 
| 201 192 | 
             
              requirements:
         | 
| 202 | 
            -
              - -  | 
| 193 | 
            +
              - - ">="
         | 
| 203 194 | 
             
                - !ruby/object:Gem::Version
         | 
| 204 | 
            -
                  version:  | 
| 195 | 
            +
                  version: 1.9.2
         | 
| 205 196 | 
             
            required_rubygems_version: !ruby/object:Gem::Requirement
         | 
| 206 | 
            -
              none: false
         | 
| 207 197 | 
             
              requirements:
         | 
| 208 | 
            -
              - -  | 
| 198 | 
            +
              - - ">="
         | 
| 209 199 | 
             
                - !ruby/object:Gem::Version
         | 
| 210 200 | 
             
                  version: '0'
         | 
| 211 201 | 
             
            requirements: []
         | 
| 212 | 
            -
             | 
| 213 | 
            -
             | 
| 214 | 
            -
             | 
| 215 | 
            -
            specification_version: 3
         | 
| 202 | 
            +
            rubygems_version: 3.1.2
         | 
| 203 | 
            +
            signing_key:
         | 
| 204 | 
            +
            specification_version: 4
         | 
| 216 205 | 
             
            summary: Load and read GTFS data from zip bundles
         | 
| 217 206 | 
             
            test_files:
         | 
| 218 207 | 
             
            - spec/fixtures/cassettes/invalid_gtfs_uri.yml
         | 
| @@ -222,12 +211,17 @@ test_files: | |
| 222 211 | 
             
            - spec/gtfs/agency_spec.rb
         | 
| 223 212 | 
             
            - spec/gtfs/calendar_date_spec.rb
         | 
| 224 213 | 
             
            - spec/gtfs/calendar_spec.rb
         | 
| 214 | 
            +
            - spec/gtfs/fare_attribute_spec.rb
         | 
| 215 | 
            +
            - spec/gtfs/fare_rule_spec.rb
         | 
| 216 | 
            +
            - spec/gtfs/feed_info_spec.rb
         | 
| 217 | 
            +
            - spec/gtfs/frequency_spec.rb
         | 
| 225 218 | 
             
            - spec/gtfs/local_source_spec.rb
         | 
| 226 219 | 
             
            - spec/gtfs/route_spec.rb
         | 
| 227 220 | 
             
            - spec/gtfs/shape_spec.rb
         | 
| 228 221 | 
             
            - spec/gtfs/source_spec.rb
         | 
| 229 222 | 
             
            - spec/gtfs/stop_spec.rb
         | 
| 230 223 | 
             
            - spec/gtfs/stop_time_spec.rb
         | 
| 224 | 
            +
            - spec/gtfs/transfer_spec.rb
         | 
| 231 225 | 
             
            - spec/gtfs/trip_spec.rb
         | 
| 232 226 | 
             
            - spec/gtfs/url_source_spec.rb
         | 
| 233 227 | 
             
            - spec/spec_helper.rb
         |