class TokyoMetro::Api::Station::List

各駅の情報を格納する配列

Public Instance Methods

basenames() click to toggle source
# File lib/tokyo_metro/api/station/list.rb, line 20
def basenames
  list_up( :basename )
end
basenames_to_display() click to toggle source
# File lib/tokyo_metro/api/station/list.rb, line 24
def basenames_to_display
  list_up( :basename_to_display )
end
connecting_railway_lines() click to toggle source

@return [::Array]

# File lib/tokyo_metro/api/station/list.rb, line 16
def connecting_railway_lines
  list_up( :connecting_railway_lines )
end
seed() click to toggle source

配列の各要素のインスタンスの情報をDBに流し込むメソッド @return [nil] @note {TokyoMetro::Static::Station::RailwayLines.seed} を呼び出している。

Calls superclass method
# File lib/tokyo_metro/api/station/list.rb, line 31
def seed
  super( ::Operator.all , ::RailwayLine.all , ::StationFacility::Info.all , display_number: true )
end
seed_connecting_railway_lines() click to toggle source

配列に含まれる {TokyoMetro::Api::Station::Info} の各インスタンスの乗換路線情報を DB に流し込むメソッド @note 各駅の基本情報をすべて流し込んでから、乗換路線情報のみを流し込む。(乗換駅の情報を流し込む際に ::Station::Info.find_by を利用しており、既知のすべての駅の流し込みが済んでいなければならないため) @example

TokyoMetro::Api::Station::List.factory_for_seeding_connecting_railway_lines
  => TokyoMetro::Factory::Seed::Api::Station::List::ConnectingRailwayLine
# File lib/tokyo_metro/api/station/list.rb, line 40
def seed_connecting_railway_lines
  seed_sub_infos( :factory_for_seeding_connecting_railway_lines , __method__ )
end
seed_exits() click to toggle source

出入口の情報をDBに流し込むメソッド @return [nil]

# File lib/tokyo_metro/api/station/list.rb, line 46
def seed_exits
  seed_sub_infos( :factory_for_seeding_exits , __method__ )
end
to_seed() click to toggle source

データベースへの流し込みの際に使用する配列(路線・駅のID順に整列している) @return [::TokyoMetro::Api::Station::List]

# File lib/tokyo_metro/api/station/list.rb, line 58
def to_seed
  railway_lines = ::RailwayLine.all
  stations_in_each_line = self.group_by { | station_info |
    railway_line = railway_lines.find_by( same_as: station_info.railway_line )
    if railway_line.nil?
      raise "Error: data of the railway_line same as \"#{ station_info.railway_line }\" does not exist."
    end
    railway_line.id
  }

  ary = ::Array.new

  stations_in_each_line.keys.sort.each do | line |
    ary += stations_in_each_line[ line ].sort_by( &:station_code )
  end

  self.class.new( ary )
end
to_strf( indent = 0 ) click to toggle source

インスタンスの情報を整形した文字列にして返すメソッド @param indent [Integer (>=0)] インデントの幅 @return [String]

# File lib/tokyo_metro/api/station/list.rb, line 11
def to_strf( indent = 0 )
  super( indent , 2 )
end

Private Instance Methods

list_up( procedure ) click to toggle source
# File lib/tokyo_metro/api/station/list.rb, line 79
def list_up( procedure )
  ary = self.map( &procedure ).flatten.uniq.sort
  ::Array.new( ary )
end
seed_sub_infos( factory_name , method_name ) click to toggle source
# File lib/tokyo_metro/api/station/list.rb, line 84
def seed_sub_infos( factory_name , method_name )
  __seed__(
    factory_name: factory_name ,
    method_name: method_name ,
    indent: 0 ,
    not_on_the_top_layer: false ,
    display_number: true
  )
end