class SportsDataApi::Ncaafb::Teams
Attributes
conferences[R]
divisions[R]
subdivisions[R]
Public Class Methods
new(teams_hash)
click to toggle source
# 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
Public Instance Methods
[](search_index)
click to toggle source
# 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() { |team| ... }
click to toggle source
Make the class Enumerable
# 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
method_missing(method, *args, &block)
click to toggle source
Calls superclass method
# 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
respond_to?(method)
click to toggle source
# 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
Private Instance Methods
concat_allowed_methods(list)
click to toggle source
# File lib/sports_data_api/ncaafb/teams.rb, line 96 def concat_allowed_methods(list) list.map { |str| str.to_sym }.concat(list.map { |str| str.downcase.to_sym }) end
select_by(type, method)
click to toggle source
# File lib/sports_data_api/ncaafb/teams.rb, line 85 def select_by(type, method) normalize_method = method.downcase.to_sym @teams.select do |team| normalize_method == team.send(type).to_s.downcase.to_sym end end
select_divisions_by_type(division_type)
click to toggle source
# File lib/sports_data_api/ncaafb/teams.rb, line 92 def select_divisions_by_type(division_type) (@teams.map { |team| team.send(division_type).to_s.upcase.to_sym }.uniq - [:"", nil]) end