Sha256: edd52ca4c1cdd0b63748baa11acf3ad79a69ee875653417065e66eb9d77344e9

Contents?: true

Size: 1.43 KB

Versions: 20

Compression:

Stored size: 1.43 KB

Contents

module SportsDataApi
  module Ncaafb
    class Polls
      include Enumerable

      attr_reader :id, :name, :season, :season_type, :week, :rankings, :candidates
      def initialize(polls_hash)
        @id = polls_hash['id']
        @name = polls_hash['name']
        @season = polls_hash['season']
        @season_type = polls_hash['season_type']
        @week = polls_hash['week']
        @rankings = []
        @candidates = []
        add_poll_teams_to(@rankings, polls_hash['rankings'])
        add_poll_teams_to(@candidates, polls_hash['candidates'])
      end

      ##
      # Make the class Enumerable
      def each(&block)
        @rankings.each do |team|
          if block_given?
            block.call team
          else
            yield team
          end
        end
      end

      class << self
        ##
        # Check if the requested poll is a valid
        # Ncaafb poll type.
        #
        # The only valid polls are: :AP25, :EU25, :CFP25, :FCSC25, :H25, :FCS25
        def valid_name?(poll)
          [:AP25, :EU25, :CFP25, :FCSC25, :H25, :FCS25].include?(poll.upcase.to_sym)
        end

        # The only valid week nr is 1..21
        def valid_week?(week)
          (1..21).include?(week.to_i)
        end
      end

      private
      def add_poll_teams_to(collection, hash_colection)
        Array(hash_colection).each do |poll_team|
          collection << PollTeam.new(poll_team)
        end
      end
    end
  end
end

Version data entries

20 entries across 20 versions & 1 rubygems

Version Path
sports_data_api-0.15.3 lib/sports_data_api/ncaafb/polls.rb
sports_data_api-0.15.2 lib/sports_data_api/ncaafb/polls.rb
sports_data_api-0.15.1 lib/sports_data_api/ncaafb/polls.rb
sports_data_api-0.15.0 lib/sports_data_api/ncaafb/polls.rb
sports_data_api-0.14.1 lib/sports_data_api/ncaafb/polls.rb
sports_data_api-0.14.0 lib/sports_data_api/ncaafb/polls.rb
sports_data_api-0.13.0 lib/sports_data_api/ncaafb/polls.rb
sports_data_api-0.12.1 lib/sports_data_api/ncaafb/polls.rb
sports_data_api-0.12.0 lib/sports_data_api/ncaafb/polls.rb
sports_data_api-0.11.6 lib/sports_data_api/ncaafb/polls.rb
sports_data_api-0.11.5 lib/sports_data_api/ncaafb/polls.rb
sports_data_api-0.11.3 lib/sports_data_api/ncaafb/polls.rb
sports_data_api-0.11.2 lib/sports_data_api/ncaafb/polls.rb
sports_data_api-0.11.1 lib/sports_data_api/ncaafb/polls.rb
sports_data_api-0.11.0 lib/sports_data_api/ncaafb/polls.rb
sports_data_api-0.10.1 lib/sports_data_api/ncaafb/polls.rb
sports_data_api-0.10.0 lib/sports_data_api/ncaafb/polls.rb
sports_data_api-0.9.2 lib/sports_data_api/ncaafb/polls.rb
sports_data_api-0.2.4 lib/sports_data_api/ncaafb/polls.rb
sports_data_api-0.2.3 lib/sports_data_api/ncaafb/polls.rb