Class: SodaXmlTeam::Schedule

Inherits:
Object
  • Object
show all
Defined in:
lib/soda_xml_team/schedule.rb

Overview

Schedule class

Class Method Summary collapse

Class Method Details

.parse_schedule(document = {}) ⇒ Object

Parses schedule documents into hashes

  • document: a Nokegiri::XML::Document



12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# File 'lib/soda_xml_team/schedule.rb', line 12

def self.parse_schedule(document = {})
  output = []
  fail 'Invalid XML schedule.' unless document.is_a? Nokogiri::XML::Document
  document.css('schedule sports-event').each do |event|
    row = {}
    event.css('event-metadata').each do |eventmeta|
      next if eventmeta['event-key'].empty? || eventmeta['start-date-time'].empty?
      row[:event_key] = eventmeta['event-key']
      row[:start_date_time] = DateTime.parse(eventmeta['start-date-time'])
      row[:time_certainty] = eventmeta['time-certainty']
      eventmeta.css('site name').each do |sitemeta|
        row[:site] = sitemeta['full']
      end
    end
    event.css('team team-metadata[alignment="away"]').each do |away_team|
      team_name = away_team.css('name').first
      row[:away_team_id] = away_team['team-key']
      row[:away_team] = "#{team_name['first']} #{team_name['last']}"
    end
    event.css('team team-metadata[alignment="home"]').each do |home_team|
      team_name = home_team.css('name').first
      row[:home_team_id] = home_team['team-key']
      row[:home_team] = "#{team_name['first']} #{team_name['last']}"
    end
    output << row
  end
  output
end