class NpbResult::Results

Attributes

size[R]

Public Class Methods

new(date: Date.today) click to toggle source
# File lib/npb_result/results.rb, line 6
def initialize(date: Date.today)
  @date = date

  doc = read_url(date)
  away_team = away_team(doc)
  away_score = away_score(doc)
  home_team = home_team(doc)
  home_score = home_score(doc)
  status = status(doc)
  start_time = start_time(doc)

  @size = status.size
  @results = []

  @size.times do |i|
    @results << Game.new(
      away_team[i], away_score[i],
      home_team[i], home_score[i],
      status[i], start_time[i]
    )
  end
end

Public Instance Methods

[](idx) click to toggle source
# File lib/npb_result/results.rb, line 49
def [](idx)
  @results[idx]
end
display() click to toggle source
# File lib/npb_result/results.rb, line 34
def display
  if @results.empty?
    "試合なし"
  else
    inject("") do |display, result|
      display << "【#{result.status}】#{result.away_team} (#{result.away_score})" \
                " - (#{result.home_score}) #{result.home_team}\n"
    end
  end
end
each() { |result| ... } click to toggle source
# File lib/npb_result/results.rb, line 45
def each
  @results.each { |result| yield(result) }
end
select_team(team) click to toggle source
# File lib/npb_result/results.rb, line 29
def select_team(team)
  selected_team = @results.select { |game| game.home_team == team || game.away_team == team }
  selected_team ? selected_team[0] : nil
end

Private Instance Methods

away_score(doc) click to toggle source
# File lib/npb_result/results.rb, line 70
def away_score(doc)
  doc.css(".score_r").map(&:text).map(&:to_i).select.with_index { |_, i| i.even? }
end
away_team(doc) click to toggle source
# File lib/npb_result/results.rb, line 62
def away_team(doc)
  doc.css(".yjMS.bb").map(&:text).select.with_index { |_, i| i.even? }
end
home_score(doc) click to toggle source
# File lib/npb_result/results.rb, line 74
def home_score(doc)
  doc.css(".score_r").map(&:text).map(&:to_i).select.with_index { |_, i| i.odd? }
end
home_team(doc) click to toggle source
# File lib/npb_result/results.rb, line 66
def home_team(doc)
  doc.css(".yjMS.bb").map(&:text).select.with_index { |_, i| i.odd? }
end
read_url(date) click to toggle source
# File lib/npb_result/results.rb, line 55
def read_url(date)
  d = date
  input_url = "https://baseball.yahoo.co.jp/npb/schedule/?date=" \
              "#{d.strftime("%Y")}#{d.strftime("%m")}#{d.strftime("%d")}"
  Nokogiri::HTML.parse(open(input_url).read)
end
start_time(doc) click to toggle source
# File lib/npb_result/results.rb, line 82
def start_time(doc)
  times = doc.css("td.yjSt.bl em").map(&:text).map { |e| e.split(":") }
  d = @date
  times.map do |time|
    Time.new(d.strftime("%Y"), d.strftime("%m"), d.strftime("%d"), time[0], time[1])
  end
end
status(doc) click to toggle source
# File lib/npb_result/results.rb, line 78
def status(doc)
  doc.css("td.yjMSt").map(&:text)
end