Sha256: 5d89e730281cbd2bf0f607878acca41f5d38c7e48e876fe2e44ed329b24fb8cc

Contents?: true

Size: 1.96 KB

Versions: 1

Compression:

Stored size: 1.96 KB

Contents

# 到着ホームの情報を扱うクラス
class TokyoMetro::Api::StationTimetable::Info::TrainTime::Info::Note::ArriveAt

  # Constructor
  # @param sta [String] 到着駅
  # @param number [Integer] 到着ホーム
  def initialize( sta , number )
    @station = sta
    @number = number
  end

  # @return [String] 到着駅
  attr_reader :station
  # @return [Integer] 到着ホーム
  attr_reader :number
  alias :sta :station

  # 自身の情報を文字列に変換して返すメソッド
  # @return [String]
  def to_s
    "#{@station}では#{@number}番線に到着"
  end

  # 他のインスタンスとの比較に使用するメソッド
  # @param other_instance [ArriveAt] 比較対象のインスタンス
  # @return [Integer]
  def <=>( other_instance )
    if @station == other_instance.station
      if @number == other_instance.number
        0
      else
        @number <=> other_instance.number
      end
    else
      @station <=> other_instance.station
    end
  end

  def seed_and_get_id( railway_line_ids )
    station_info_in_db = ::Station::Info.find_by( name_ja: @station , railway_line_id: railway_line_ids )
    h = {
      station_info_id: station_info_in_db.id ,
      platform_number: @number
    }
    ::TrainTimetableArrivalInfo.find_or_create_by(h).id
  end

  # 複数の定数を定義するメソッド
  # @return [nil]
  def self.set_constants
    set_constant( :ASAKUSA , "浅草" , 1 , 2 )
    return nil
  end

  # 駅名と到着ホームからインスタンスを取得するメソッド
  # @param str [String] 駅名
  # @param i [Integer] 到着ホーム
  # @return [ArriveAt]
  def self.set_from_string( str , i )
    case str
    when "浅草"
      ASAKUSA[i]
    else
      raise "Error"
    end
  end

  class << self

    private

    def set_constant( const_name , sta , min_i , max_i )
      h = Hash.new
      ( min_i..max_i ).each do |i|
        h[i] = self.new( sta , i )
      end
      const_set( const_name , h )
    end

  end

end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
tokyo_metro-0.10.1 lib/tokyo_metro/api/station_timetable/info/train_time/info/note/arrive_at.rb