Class: SodaXmlTeam::Standings

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

Class Method Summary collapse

Class Method Details

.parse_standings(document = {}) ⇒ Object



7
8
9
10
11
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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
# File 'lib/soda_xml_team/standings.rb', line 7

def self.parse_standings(document={})

  output = []

  unless document.is_a? Nokogiri::XML::Document
    raise "Invalid XML standings."
  end

  document.css('sports-content standing').each do |division|

    row = {}
    row[:division] = division['content-label']

    division.css('standing-metadata sports-content-codes sports-content-code[code-type="conference"]').each do ||
      row[:conference] = ['code-name']
    end

    row[:teams] = []

    division.css('team').each do |team|

      team_record = {}

      team.css('team-metadata name').each do |teammetaname|
        team_record[:name] = "#{teammetaname[:first]} #{teammetaname[:last]}"
      end

      team.css('team-stats').each do |teamstats|
        next if teamstats['standing-points'].nil?
        team_record[:standing_points] = teamstats['standing-points'].to_i
      end

      team.css('team-stats rank').each do |teamstatsrank|
        team_record[:division_rank] = teamstatsrank[:value].to_i
        team_record[:conference_rank] = teamstatsrank['xts:conference-rank'].to_i
      end

      team.css('team-stats outcome-totals').each do |outcometotals|
        next if outcometotals['competition-scope'] != "league"
        next if outcometotals['date-coverage-type'] != "season-regular"
        next if !outcometotals['duration-scope'].nil?
        next if !outcometotals['alignment-scope'].nil?
        outcometotals.keys.each do |outcometotalskey|
          team_record[outcometotalskey] = outcometotals[outcometotalskey].to_i if Float(outcometotals[outcometotalskey]) rescue team_record[outcometotalskey] = outcometotals[outcometotalskey]
        end
      end

      row[:teams] << team_record

    end

    output << row
  end

  return output

end