Module: GtfsReader::Config::Defaults

Defined in:
lib/gtfs_reader/config/defaults/gtfs_feed_definition.rb

Constant Summary collapse

FEED_DEFINITION =
FeedDefinition.new.tap do |feed|
  feed.instance_exec do
    file :agency, required: true do
      col :agency_name,     required: true
      col :agency_url,      required: true
      col :agency_timezone, required: true
      col :agency_id,                       unique: true
      col :agency_lang
      col :agency_phone
      col :agency_fare_url
    end

    file :stops, required: true do
      col :stop_id,       required: true, unique: true
      col :stop_code
      col :stop_name,     required: true
      col :stop_desc
      col :stop_lat,      required: true
      col :stop_lon,      required: true
      col :stop_url
      col :stop_timezone
      col :zone_id
      col :location_type, &output_map( :stop, station: ?1 )
      col :parent_station

      col :wheelchair_boarding do |val|
        if parent_station
          case val
          when ?2 then :no
          when ?1 then :yes
          else :inherit
          end
        else
          case val
          when ?2 then :no_vehicles
          when ?1 then :some_vehicles
          else :unknown
          end
        end
      end
    end

    file :routes, required: true do
      col :route_id,         required: true, unique: true
      col :route_short_name, required: true
      col :route_long_name,  required: true
      col :route_desc
      col :route_type,       required: true,
          &output_map(   :unknown,
                         tram: ?0,
                         subway: ?1,
                         rail: ?2,
                         bus: ?3,
                         ferry: ?4,
                         cable_car: ?5,
                         gondola: ?6,
                         funicular: ?7 )
      col :route_url
      col :route_color
      col :route_text_color
      col :agency_id
    end

    file :trips, required: true do
      col :trip_id,               required: true, unique: true
      col :trip_headsign
      col :trip_short_name
      col :trip_long_name
      col :route_id,              required: true
      col :service_id,            required: true
      col :direction_id,          &output_map( primary: ?0, opposite: ?1 )
      col :block_id
      col :shape_id
      col :wheelchair_accessible, &output_map( :unknown, yes: ?1, no: ?2 )
      col :bikes_allowed,         &output_map( :unknown, yes: ?1, no: ?2 )
    end

    file :stop_times, required: true do
      col :trip_id,        required: true
      col :arrival_time,   required: true
      col :departure_time, required: true
      col :stop_id,        required: true
      col :stop_sequence,  required: true
      col :stop_headsign

      col :pickup_type,
        &output_map(    :regular,
                            none: ?1,
                    phone_agency: ?2,
          coordinate_with_driver: ?3 )

      col :drop_off_type,
        &output_map(    :regular,
                            none: ?1,
                    phone_agency: ?2,
          coordinate_with_driver: ?3 )

      col :shape_dist_traveled
    end

    file :calendar, required: true do
      col :service_id, required: true, unique: true
      col :monday,     required: true, &output_map( yes: ?1, no: ?0 )
      col :tuesday,    required: true, &output_map( yes: ?1, no: ?0 )
      col :wednesday,  required: true, &output_map( yes: ?1, no: ?0 )
      col :thursday,   required: true, &output_map( yes: ?1, no: ?0 )
      col :friday,     required: true, &output_map( yes: ?1, no: ?0 )
      col :saturday,   required: true, &output_map( yes: ?1, no: ?0 )
      col :sunday,     required: true, &output_map( yes: ?1, no: ?0 )
      col :start_date
      col :end_date
    end

    file :calendar_dates do
      col :service_id,     required: true
      col :date,           required: true
      col :exception_type, required: true,
        &output_map( added: ?1, removed: ?2 )
    end

    file :fare_attributes do
      col :fare_id,        required: true, unique: true
      col :price,          required: true
      col :currency_type,  required: true
      col :payment_method, required: true,
        &output_map( on_board: 0, before: 1 )
      col :transfers,      required: true,
        &output_map( :unlimited, none: 0, once: 1, twice: 2 )
      col :transfer_duration
    end

    file :fare_rules do
      col :fare_id,        required: true
      col :route_id
      col :origin_id
      col :destination_id
      col :contains_id
    end

    file :shapes do
      col :shape_id,            required: true
      col :shape_pt_lat,        required: true
      col :shape_pt_lon,        required: true
      col :shape_pt_sequence,   required: true
      col :shape_dist_traveled
    end

    file :frequencies do
      col :trip_id,      required: true
      col :start_time,   required: true
      col :end_time,     required: true
      col :headway_secs, required: true
      col :exact_times,  &output_map( :inexact, exact: 1 )
    end

    file :transfers do
      col :from_stop_id,      required: true
      col :to_stop_id,        required: true
      col :transfer_type,     required: true,
        &output_map( :recommended,
                   timed_transfer: 1,
            minimum_time_required: 2,
                       impossible: 3 )
      col :min_transfer_time
    end

    file :feed_info do
      col :feed_publisher_name, required: true
      col :feed_publisher_url,  required: true
      col :feed_lang,           required: true
      col :feed_start_date
      col :feed_end_date
      col :feed_version
    end
  end
end