Class: SportsDataApi::Ncaafb::Teams

Inherits:
Object
  • Object
show all
Includes:
Enumerable
Defined in:
lib/sports_data_api/ncaafb/teams.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(teams_hash) ⇒ Teams

Returns a new instance of Teams.



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
# File 'lib/sports_data_api/ncaafb/teams.rb', line 8

def initialize(teams_hash)
  @teams = []
  @allowed_divisions = []
  @allowed_conferences = []
  @allowed_subdivisions = []
  did = teams_hash['id']
  teams_hash['conferences'].each do |conference_hash|
    # Conference ID. e.g ACC
    cid = conference_hash['id']
    @teams << Array(conference_hash['teams']).map { |team_hash| Team.new(team_hash, cid) }

    # If Sub Division
    Array(conference_hash['subdivisions']).each do |subdivision|
      # SUB Division ID, e.g., ACC-ATLANTIC
      sdid = subdivision['id']
      @teams << subdivision['teams'].map { |team_hash| Team.new(team_hash, cid, did, sdid) }
    end
  end

  @teams.flatten!

  uniq_conferences = @teams.map { |team| team.conference.upcase }.uniq
  @allowed_conferences = concat_allowed_methods(uniq_conferences)
  @conferences = uniq_conferences.map(&:to_sym)

  @divisions = select_divisions_by_type(:division)
  @subdivisions = select_divisions_by_type(:subdivision)

  @allowed_divisions.concat(concat_allowed_methods(@divisions))
  @allowed_subdivisions.concat(concat_allowed_methods(@subdivisions))
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(method, *args, &block) ⇒ Object



57
58
59
60
61
62
63
64
65
66
67
68
# File 'lib/sports_data_api/ncaafb/teams.rb', line 57

def method_missing(method, *args, &block)
  case true
  when @allowed_conferences.include?(method)
    select_by(:conference, method)
  when @allowed_divisions.include?(method)
    select_by(:division, method)
  when @allowed_subdivisions.include?(method)
    select_by(:subdivision, method)
  else
    super(method, *args, &block)
  end
end

Instance Attribute Details

#conferencesObject (readonly)

Returns the value of attribute conferences.



6
7
8
# File 'lib/sports_data_api/ncaafb/teams.rb', line 6

def conferences
  @conferences
end

#divisionsObject (readonly)

Returns the value of attribute divisions.



6
7
8
# File 'lib/sports_data_api/ncaafb/teams.rb', line 6

def divisions
  @divisions
end

#subdivisionsObject (readonly)

Returns the value of attribute subdivisions.



6
7
8
# File 'lib/sports_data_api/ncaafb/teams.rb', line 6

def subdivisions
  @subdivisions
end

Instance Method Details

#[](search_index) ⇒ Object



42
43
44
45
46
47
# File 'lib/sports_data_api/ncaafb/teams.rb', line 42

def [](search_index)
  found_index = @teams.index(search_index)
  unless found_index.nil?
    @teams[found_index]
  end
end

#each(&block) ⇒ Object

Make the class Enumerable



74
75
76
77
78
79
80
81
82
# File 'lib/sports_data_api/ncaafb/teams.rb', line 74

def each(&block)
  @teams.each do |team|
    if block_given?
      block.call team
    else
      yield team
    end
  end
end

#respond_to?(method) ⇒ Boolean

Returns:

  • (Boolean)


51
52
53
# File 'lib/sports_data_api/ncaafb/teams.rb', line 51

def respond_to?(method)
  @allowed_conferences.include?(method) || @allowed_divisions.include?(method) || @allowed_subdivisions
end