Class: SportsDataApi::Ncaafb::Teams
- Inherits:
-
Object
- Object
- SportsDataApi::Ncaafb::Teams
- Includes:
- Enumerable
- Defined in:
- lib/sports_data_api/ncaafb/teams.rb
Instance Attribute Summary collapse
-
#conferences ⇒ Object
readonly
Returns the value of attribute conferences.
-
#divisions ⇒ Object
readonly
Returns the value of attribute divisions.
-
#subdivisions ⇒ Object
readonly
Returns the value of attribute subdivisions.
Instance Method Summary collapse
- #[](search_index) ⇒ Object
-
#each(&block) ⇒ Object
Make the class Enumerable.
-
#initialize(teams_hash) ⇒ Teams
constructor
A new instance of Teams.
- #method_missing(method, *args, &block) ⇒ Object
- #respond_to?(method) ⇒ Boolean
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
#conferences ⇒ Object (readonly)
Returns the value of attribute conferences.
6 7 8 |
# File 'lib/sports_data_api/ncaafb/teams.rb', line 6 def conferences @conferences end |
#divisions ⇒ Object (readonly)
Returns the value of attribute divisions.
6 7 8 |
# File 'lib/sports_data_api/ncaafb/teams.rb', line 6 def divisions @divisions end |
#subdivisions ⇒ Object (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
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 |