nba 0.1.1 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +5 -5
- data/AGENTS.md +362 -0
- data/CHANGELOG.md +169 -0
- data/CLAUDE.md +1 -0
- data/LICENSE +21 -0
- data/README.md +501 -101
- data/bin/console +10 -0
- data/bin/setup +6 -0
- data/exe/nba +8 -0
- data/lib/nba/all_time_leader.rb +77 -0
- data/lib/nba/all_time_leaders.rb +185 -0
- data/lib/nba/assist_leader.rb +92 -0
- data/lib/nba/assist_leaders.rb +64 -0
- data/lib/nba/assist_tracker.rb +108 -0
- data/lib/nba/assist_tracker_entry.rb +206 -0
- data/lib/nba/award.rb +128 -0
- data/lib/nba/box_score.rb +2 -0
- data/lib/nba/box_score_advanced.rb +114 -0
- data/lib/nba/box_score_advanced_player_stat.rb +297 -0
- data/lib/nba/box_score_advanced_team_stat.rb +237 -0
- data/lib/nba/box_score_advanced_v3.rb +124 -0
- data/lib/nba/box_score_defensive_player_stat.rb +281 -0
- data/lib/nba/box_score_defensive_team_stat.rb +85 -0
- data/lib/nba/box_score_defensive_v2.rb +190 -0
- data/lib/nba/box_score_four_factors.rb +91 -0
- data/lib/nba/box_score_four_factors_player_stat.rb +185 -0
- data/lib/nba/box_score_four_factors_team_stat.rb +141 -0
- data/lib/nba/box_score_four_factors_v3.rb +133 -0
- data/lib/nba/box_score_hustle.rb +226 -0
- data/lib/nba/box_score_hustle_player_stat.rb +233 -0
- data/lib/nba/box_score_hustle_team_stat.rb +189 -0
- data/lib/nba/box_score_matchup_stat.rb +417 -0
- data/lib/nba/box_score_matchups_v3.rb +184 -0
- data/lib/nba/box_score_misc.rb +100 -0
- data/lib/nba/box_score_misc_player_stat.rb +217 -0
- data/lib/nba/box_score_misc_team_stat.rb +173 -0
- data/lib/nba/box_score_misc_v3.rb +163 -0
- data/lib/nba/box_score_player_stat.rb +273 -0
- data/lib/nba/box_score_player_track.rb +223 -0
- data/lib/nba/box_score_player_track_stat.rb +273 -0
- data/lib/nba/box_score_player_track_team_stat.rb +229 -0
- data/lib/nba/box_score_scoring.rb +103 -0
- data/lib/nba/box_score_scoring_player_stat.rb +241 -0
- data/lib/nba/box_score_scoring_team_stat.rb +197 -0
- data/lib/nba/box_score_scoring_v3.rb +170 -0
- data/lib/nba/box_score_similarity_score.rb +119 -0
- data/lib/nba/box_score_similarity_stat.rb +76 -0
- data/lib/nba/box_score_starter_bench_stat.rb +257 -0
- data/lib/nba/box_score_summary.rb +285 -0
- data/lib/nba/box_score_summary_v2.rb +202 -0
- data/lib/nba/box_score_summary_v3.rb +120 -0
- data/lib/nba/box_score_summary_v3_data.rb +419 -0
- data/lib/nba/box_score_team_stat.rb +229 -0
- data/lib/nba/box_score_traditional.rb +101 -0
- data/lib/nba/box_score_traditional_v3.rb +195 -0
- data/lib/nba/box_score_usage.rb +102 -0
- data/lib/nba/box_score_usage_player_stat.rb +265 -0
- data/lib/nba/box_score_usage_team_stat.rb +221 -0
- data/lib/nba/box_score_usage_v3.rb +169 -0
- data/lib/nba/box_score_v3_helpers.rb +144 -0
- data/lib/nba/career_stats.rb +217 -0
- data/lib/nba/cli/display/player_display.rb +98 -0
- data/lib/nba/cli/display.rb +178 -0
- data/lib/nba/cli/formatters/game_formatters.rb +86 -0
- data/lib/nba/cli/formatters/leaders_formatters.rb +26 -0
- data/lib/nba/cli/formatters/player_formatters.rb +52 -0
- data/lib/nba/cli/formatters/standings_formatters.rb +26 -0
- data/lib/nba/cli/formatters/team_formatters.rb +67 -0
- data/lib/nba/cli/formatters/time_formatters.rb +82 -0
- data/lib/nba/cli/formatters.rb +56 -0
- data/lib/nba/cli/helpers.rb +135 -0
- data/lib/nba/cli.rb +171 -20
- data/lib/nba/client.rb +35 -0
- data/lib/nba/collection.rb +89 -0
- data/lib/nba/college_player_stat.rb +200 -0
- data/lib/nba/common_player_info.rb +142 -0
- data/lib/nba/common_playoff_series.rb +90 -0
- data/lib/nba/common_team_years.rb +113 -0
- data/lib/nba/conference.rb +39 -0
- data/lib/nba/connection.rb +84 -0
- data/lib/nba/cume_stats_player.rb +358 -0
- data/lib/nba/cume_stats_player_game.rb +217 -0
- data/lib/nba/cume_stats_player_games.rb +99 -0
- data/lib/nba/cume_stats_player_games_entry.rb +25 -0
- data/lib/nba/cume_stats_player_total.rb +481 -0
- data/lib/nba/cume_stats_team.rb +349 -0
- data/lib/nba/cume_stats_team_games.rb +145 -0
- data/lib/nba/cume_stats_team_games_entry.rb +25 -0
- data/lib/nba/cume_stats_team_player.rb +485 -0
- data/lib/nba/cume_stats_team_total.rb +267 -0
- data/lib/nba/data.rb +73 -0
- data/lib/nba/defense_hub.rb +109 -0
- data/lib/nba/defense_hub_stat.rb +57 -0
- data/lib/nba/defensive_shot_stat.rb +102 -0
- data/lib/nba/division.rb +49 -0
- data/lib/nba/draft_board.rb +126 -0
- data/lib/nba/draft_board_pick.rb +173 -0
- data/lib/nba/draft_combine_anthro_measurement.rb +163 -0
- data/lib/nba/draft_combine_drill_result.rb +115 -0
- data/lib/nba/draft_combine_drill_results.rb +112 -0
- data/lib/nba/draft_combine_non_stationary_shooting.rb +268 -0
- data/lib/nba/draft_combine_non_stationary_shooting_result.rb +355 -0
- data/lib/nba/draft_combine_player_anthro.rb +133 -0
- data/lib/nba/draft_combine_spot_shooting.rb +243 -0
- data/lib/nba/draft_combine_spot_shooting_result.rb +419 -0
- data/lib/nba/draft_combine_stat.rb +211 -0
- data/lib/nba/draft_combine_stats.rb +160 -0
- data/lib/nba/draft_history.rb +142 -0
- data/lib/nba/draft_pick.rb +154 -0
- data/lib/nba/dunk_score_leader.rb +93 -0
- data/lib/nba/dunk_score_leaders.rb +77 -0
- data/lib/nba/estimated_metrics_stat.rb +152 -0
- data/lib/nba/fantasy_profile_stat.rb +142 -0
- data/lib/nba/fantasy_widget.rb +72 -0
- data/lib/nba/fantasy_widget_player.rb +98 -0
- data/lib/nba/found_game.rb +260 -0
- data/lib/nba/franchise.rb +136 -0
- data/lib/nba/franchise_history.rb +142 -0
- data/lib/nba/franchise_leader.rb +147 -0
- data/lib/nba/franchise_leaders.rb +162 -0
- data/lib/nba/franchise_player.rb +224 -0
- data/lib/nba/franchise_players.rb +147 -0
- data/lib/nba/game.rb +80 -64
- data/lib/nba/game_log.rb +349 -0
- data/lib/nba/game_rotation.rb +152 -0
- data/lib/nba/game_streak.rb +102 -0
- data/lib/nba/games.rb +46 -0
- data/lib/nba/home_page_leader.rb +99 -0
- data/lib/nba/home_page_leaders.rb +75 -0
- data/lib/nba/home_page_stat.rb +57 -0
- data/lib/nba/home_page_v2.rb +110 -0
- data/lib/nba/hustle_stats_box_score.rb +182 -0
- data/lib/nba/infographic_fan_duel_player.rb +139 -0
- data/lib/nba/infographic_fan_duel_player_stat.rb +311 -0
- data/lib/nba/ist_standing.rb +167 -0
- data/lib/nba/ist_standings.rb +81 -0
- data/lib/nba/leader.rb +103 -0
- data/lib/nba/leaders.rb +110 -0
- data/lib/nba/leaders_tile.rb +57 -0
- data/lib/nba/leaders_tiles.rb +90 -0
- data/lib/nba/league.rb +37 -0
- data/lib/nba/league_dash_lineup_stat.rb +270 -0
- data/lib/nba/league_dash_lineups.rb +177 -0
- data/lib/nba/league_dash_opp_pt_shot.rb +150 -0
- data/lib/nba/league_dash_player_bio_stat.rb +217 -0
- data/lib/nba/league_dash_player_bio_stats.rb +164 -0
- data/lib/nba/league_dash_player_clutch.rb +212 -0
- data/lib/nba/league_dash_player_clutch_stat.rb +271 -0
- data/lib/nba/league_dash_player_pt_shot.rb +152 -0
- data/lib/nba/league_dash_player_pt_shot_stat.rb +193 -0
- data/lib/nba/league_dash_player_shot_location_stat.rb +265 -0
- data/lib/nba/league_dash_player_shot_locations.rb +210 -0
- data/lib/nba/league_dash_player_stat.rb +306 -0
- data/lib/nba/league_dash_player_stats.rb +176 -0
- data/lib/nba/league_dash_pt_defend.rb +160 -0
- data/lib/nba/league_dash_pt_defend_stat.rb +145 -0
- data/lib/nba/league_dash_pt_stats.rb +152 -0
- data/lib/nba/league_dash_pt_stats_stat.rb +169 -0
- data/lib/nba/league_dash_pt_team_defend.rb +158 -0
- data/lib/nba/league_dash_pt_team_defend_stat.rb +110 -0
- data/lib/nba/league_dash_team_clutch.rb +211 -0
- data/lib/nba/league_dash_team_clutch_stat.rb +237 -0
- data/lib/nba/league_dash_team_pt_shot.rb +150 -0
- data/lib/nba/league_dash_team_pt_shot_stat.rb +166 -0
- data/lib/nba/league_dash_team_shot_location_stat.rb +230 -0
- data/lib/nba/league_dash_team_shot_locations.rb +208 -0
- data/lib/nba/league_dash_team_stat.rb +275 -0
- data/lib/nba/league_dash_team_stats.rb +172 -0
- data/lib/nba/league_game_finder.rb +170 -0
- data/lib/nba/league_game_log.rb +224 -0
- data/lib/nba/league_hustle_stats_player.rb +161 -0
- data/lib/nba/league_hustle_stats_player_stat.rb +253 -0
- data/lib/nba/league_hustle_stats_team.rb +157 -0
- data/lib/nba/league_hustle_stats_team_stat.rb +179 -0
- data/lib/nba/league_lineup_viz.rb +184 -0
- data/lib/nba/league_lineup_viz_stat.rb +214 -0
- data/lib/nba/league_player_on_details.rb +175 -0
- data/lib/nba/league_player_on_details_stat.rb +313 -0
- data/lib/nba/league_season_matchup_stat.rb +241 -0
- data/lib/nba/league_season_matchups.rb +181 -0
- data/lib/nba/league_standing.rb +284 -0
- data/lib/nba/league_standings.rb +159 -0
- data/lib/nba/league_wide_shot_stat.rb +62 -0
- data/lib/nba/live_action.rb +240 -0
- data/lib/nba/live_box_score.rb +143 -0
- data/lib/nba/live_connection.rb +84 -0
- data/lib/nba/live_game.rb +230 -0
- data/lib/nba/live_play_by_play.rb +120 -0
- data/lib/nba/live_player_stat.rb +276 -0
- data/lib/nba/live_scoreboard.rb +102 -0
- data/lib/nba/matchup_rollup.rb +98 -0
- data/lib/nba/matchups_rollup.rb +81 -0
- data/lib/nba/pass_stat.rb +209 -0
- data/lib/nba/play.rb +258 -0
- data/lib/nba/play_by_play.rb +85 -0
- data/lib/nba/play_by_play_v3.rb +91 -0
- data/lib/nba/play_type_stat.rb +206 -0
- data/lib/nba/player.rb +242 -24
- data/lib/nba/player_awards.rb +110 -0
- data/lib/nba/player_career_by_college.rb +86 -0
- data/lib/nba/player_career_by_college_rollup.rb +143 -0
- data/lib/nba/player_career_stats.rb +77 -0
- data/lib/nba/player_compare.rb +156 -0
- data/lib/nba/player_comparison_stat.rb +242 -0
- data/lib/nba/player_dash_pt_pass.rb +164 -0
- data/lib/nba/player_dash_pt_reb.rb +235 -0
- data/lib/nba/player_dash_pt_shot_defend.rb +119 -0
- data/lib/nba/player_dash_pt_shots.rb +279 -0
- data/lib/nba/player_dashboard.rb +259 -0
- data/lib/nba/player_dashboard_stat.rb +248 -0
- data/lib/nba/player_estimated_metrics.rb +84 -0
- data/lib/nba/player_fantasy_profile_bar_graph.rb +147 -0
- data/lib/nba/player_game_log.rb +72 -0
- data/lib/nba/player_game_logs.rb +117 -0
- data/lib/nba/player_game_streak_finder.rb +108 -0
- data/lib/nba/player_index.rb +135 -0
- data/lib/nba/player_index_entry.rb +266 -0
- data/lib/nba/player_info.rb +225 -0
- data/lib/nba/player_next_n_games.rb +64 -0
- data/lib/nba/player_profile_v2.rb +169 -0
- data/lib/nba/player_vs_player.rb +153 -0
- data/lib/nba/players.rb +107 -0
- data/lib/nba/playoff_matchup.rb +84 -0
- data/lib/nba/playoff_picture.rb +98 -0
- data/lib/nba/playoff_series.rb +76 -0
- data/lib/nba/position.rb +48 -0
- data/lib/nba/rebound_stat.rb +189 -0
- data/lib/nba/response_parser.rb +116 -0
- data/lib/nba/roster.rb +74 -0
- data/lib/nba/rotation_entry.rb +154 -0
- data/lib/nba/schedule.rb +183 -0
- data/lib/nba/schedule_international.rb +182 -0
- data/lib/nba/scheduled_game.rb +240 -0
- data/lib/nba/scoreboard.rb +183 -0
- data/lib/nba/scoreboard_v3.rb +104 -0
- data/lib/nba/shot.rb +208 -0
- data/lib/nba/shot_chart.rb +75 -0
- data/lib/nba/shot_chart_league_wide.rb +102 -0
- data/lib/nba/shot_chart_lineup_detail.rb +109 -0
- data/lib/nba/shot_stat.rb +174 -0
- data/lib/nba/standing.rb +129 -0
- data/lib/nba/standings.rb +75 -0
- data/lib/nba/static.rb +107 -0
- data/lib/nba/synergy_play_types.rb +211 -0
- data/lib/nba/team.rb +203 -127
- data/lib/nba/team_and_players_vs_players.rb +227 -0
- data/lib/nba/team_and_players_vs_players_stat.rb +155 -0
- data/lib/nba/team_dash_pt_pass.rb +157 -0
- data/lib/nba/team_dash_pt_reb.rb +216 -0
- data/lib/nba/team_dash_pt_shots.rb +244 -0
- data/lib/nba/team_dashboard.rb +275 -0
- data/lib/nba/team_dashboard_stat.rb +248 -0
- data/lib/nba/team_detail.rb +117 -0
- data/lib/nba/team_details.rb +173 -0
- data/lib/nba/team_estimated_metrics.rb +91 -0
- data/lib/nba/team_estimated_metrics_stat.rb +146 -0
- data/lib/nba/team_game_log.rb +143 -0
- data/lib/nba/team_game_log_entry.rb +246 -0
- data/lib/nba/team_game_log_stat.rb +275 -0
- data/lib/nba/team_game_logs.rb +163 -0
- data/lib/nba/team_game_streak.rb +111 -0
- data/lib/nba/team_game_streak_finder.rb +109 -0
- data/lib/nba/team_historical_leader.rb +207 -0
- data/lib/nba/team_historical_leaders.rb +98 -0
- data/lib/nba/team_historical_record.rb +139 -0
- data/lib/nba/team_info.rb +150 -0
- data/lib/nba/team_info_common.rb +177 -0
- data/lib/nba/team_on_off_overall_stat.rb +477 -0
- data/lib/nba/team_on_off_player_stat.rb +523 -0
- data/lib/nba/team_on_off_player_summary.rb +135 -0
- data/lib/nba/team_pass_stat.rb +183 -0
- data/lib/nba/team_player_dashboard.rb +212 -0
- data/lib/nba/team_player_on_off_details.rb +218 -0
- data/lib/nba/team_player_on_off_summary.rb +214 -0
- data/lib/nba/team_player_stat.rb +275 -0
- data/lib/nba/team_rebound_stat.rb +189 -0
- data/lib/nba/team_season_rank.rb +110 -0
- data/lib/nba/team_shot_stat.rb +173 -0
- data/lib/nba/team_vs_player.rb +151 -0
- data/lib/nba/team_vs_player_stat.rb +157 -0
- data/lib/nba/team_year.rb +55 -0
- data/lib/nba/team_year_by_year_stats.rb +152 -0
- data/lib/nba/team_year_stat.rb +282 -0
- data/lib/nba/teams.rb +33 -0
- data/lib/nba/upcoming_game.rb +115 -0
- data/lib/nba/utils.rb +94 -0
- data/lib/nba/version.rb +5 -2
- data/lib/nba/video_detail.rb +103 -0
- data/lib/nba/video_details.rb +118 -0
- data/lib/nba/video_details_asset.rb +115 -0
- data/lib/nba/video_details_asset_entry.rb +91 -0
- data/lib/nba/video_event.rb +83 -0
- data/lib/nba/video_event_asset.rb +91 -0
- data/lib/nba/video_events.rb +106 -0
- data/lib/nba/video_events_asset.rb +107 -0
- data/lib/nba/video_status.rb +129 -0
- data/lib/nba/video_status_entry.rb +161 -0
- data/lib/nba/vs_player_stat.rb +156 -0
- data/lib/nba/win_probability.rb +117 -0
- data/lib/nba/win_probability_point.rb +140 -0
- data/lib/nba.rb +249 -5
- data/sig/equalizer.rbs +3 -0
- data/sig/nba.rbs +7297 -0
- data/sig/shale.rbs +24 -0
- data/sig/thor.rbs +19 -0
- metadata +324 -95
- data/.gitignore +0 -18
- data/.travis.yml +0 -22
- data/Gemfile +0 -23
- data/LICENSE.md +0 -22
- data/Rakefile +0 -18
- data/bin/nba +0 -7
- data/cache/teams.json +0 -16529
- data/lib/faraday_middleware/scrape_game.rb +0 -41
- data/lib/nba/request.rb +0 -37
- data/nba.gemspec +0 -28
- data/spec/fixtures/games.html +0 -785
- data/spec/fixtures/teams.json +0 -16529
- data/spec/game_spec.rb +0 -40
- data/spec/spec_helper.rb +0 -25
- data/spec/team_spec.rb +0 -93
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
require "equalizer"
|
|
2
|
+
require "shale"
|
|
3
|
+
|
|
4
|
+
module NBA
|
|
5
|
+
# Represents a team's game streak statistics
|
|
6
|
+
#
|
|
7
|
+
# @api public
|
|
8
|
+
class TeamGameStreak < Shale::Mapper
|
|
9
|
+
include Equalizer.new(:team_id, :start_date, :end_date)
|
|
10
|
+
|
|
11
|
+
# @!attribute [rw] team_name
|
|
12
|
+
# Returns the team name
|
|
13
|
+
# @api public
|
|
14
|
+
# @example
|
|
15
|
+
# streak.team_name #=> "Warriors"
|
|
16
|
+
# @return [String, nil] the team's name
|
|
17
|
+
attribute :team_name, Shale::Type::String
|
|
18
|
+
|
|
19
|
+
# @!attribute [rw] team_id
|
|
20
|
+
# Returns the team ID
|
|
21
|
+
# @api public
|
|
22
|
+
# @example
|
|
23
|
+
# streak.team_id #=> 1610612744
|
|
24
|
+
# @return [Integer, nil] the team ID
|
|
25
|
+
attribute :team_id, Shale::Type::Integer
|
|
26
|
+
|
|
27
|
+
# @!attribute [rw] abbreviation
|
|
28
|
+
# Returns the team abbreviation
|
|
29
|
+
# @api public
|
|
30
|
+
# @example
|
|
31
|
+
# streak.abbreviation #=> "GSW"
|
|
32
|
+
# @return [String, nil] the team abbreviation
|
|
33
|
+
attribute :abbreviation, Shale::Type::String
|
|
34
|
+
|
|
35
|
+
# @!attribute [rw] game_streak
|
|
36
|
+
# Returns the number of consecutive games in the streak
|
|
37
|
+
# @api public
|
|
38
|
+
# @example
|
|
39
|
+
# streak.game_streak #=> 10
|
|
40
|
+
# @return [Integer, nil] the number of consecutive games in the streak
|
|
41
|
+
attribute :game_streak, Shale::Type::Integer
|
|
42
|
+
|
|
43
|
+
# @!attribute [rw] start_date
|
|
44
|
+
# Returns the start date of the streak
|
|
45
|
+
# @api public
|
|
46
|
+
# @example
|
|
47
|
+
# streak.start_date #=> "2024-01-15"
|
|
48
|
+
# @return [String, nil] the start date of the streak
|
|
49
|
+
attribute :start_date, Shale::Type::String
|
|
50
|
+
|
|
51
|
+
# @!attribute [rw] end_date
|
|
52
|
+
# Returns the end date of the streak
|
|
53
|
+
# @api public
|
|
54
|
+
# @example
|
|
55
|
+
# streak.end_date #=> "2024-02-10"
|
|
56
|
+
# @return [String, nil] the end date of the streak
|
|
57
|
+
attribute :end_date, Shale::Type::String
|
|
58
|
+
|
|
59
|
+
# @!attribute [rw] active_streak
|
|
60
|
+
# Returns whether the streak is active (1 for active, 0 for inactive)
|
|
61
|
+
# @api public
|
|
62
|
+
# @example
|
|
63
|
+
# streak.active_streak #=> 1
|
|
64
|
+
# @return [Integer, nil] 1 for active, 0 for inactive
|
|
65
|
+
attribute :active_streak, Shale::Type::Integer
|
|
66
|
+
|
|
67
|
+
# @!attribute [rw] num_seasons
|
|
68
|
+
# Returns the number of seasons the streak spans
|
|
69
|
+
# @api public
|
|
70
|
+
# @example
|
|
71
|
+
# streak.num_seasons #=> 2
|
|
72
|
+
# @return [Integer, nil] the number of seasons the streak spans
|
|
73
|
+
attribute :num_seasons, Shale::Type::Integer
|
|
74
|
+
|
|
75
|
+
# @!attribute [rw] last_season
|
|
76
|
+
# Returns the last season of the streak
|
|
77
|
+
# @api public
|
|
78
|
+
# @example
|
|
79
|
+
# streak.last_season #=> "2024-25"
|
|
80
|
+
# @return [String, nil] the last season of the streak
|
|
81
|
+
attribute :last_season, Shale::Type::String
|
|
82
|
+
|
|
83
|
+
# @!attribute [rw] first_season
|
|
84
|
+
# Returns the first season of the streak
|
|
85
|
+
# @api public
|
|
86
|
+
# @example
|
|
87
|
+
# streak.first_season #=> "2023-24"
|
|
88
|
+
# @return [String, nil] the first season of the streak
|
|
89
|
+
attribute :first_season, Shale::Type::String
|
|
90
|
+
|
|
91
|
+
# Returns whether the streak is currently active
|
|
92
|
+
#
|
|
93
|
+
# @api public
|
|
94
|
+
# @example
|
|
95
|
+
# streak.active? #=> true
|
|
96
|
+
# @return [Boolean] true if the streak is active
|
|
97
|
+
def active?
|
|
98
|
+
active_streak.eql?(1)
|
|
99
|
+
end
|
|
100
|
+
|
|
101
|
+
# Returns the team associated with this streak
|
|
102
|
+
#
|
|
103
|
+
# @api public
|
|
104
|
+
# @example
|
|
105
|
+
# streak.team #=> #<NBA::Team>
|
|
106
|
+
# @return [Team, nil] the team object for this streak
|
|
107
|
+
def team
|
|
108
|
+
Teams.find(team_id)
|
|
109
|
+
end
|
|
110
|
+
end
|
|
111
|
+
end
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
require "json"
|
|
2
|
+
require_relative "client"
|
|
3
|
+
require_relative "response_parser"
|
|
4
|
+
require_relative "team_game_streak"
|
|
5
|
+
require_relative "utils"
|
|
6
|
+
|
|
7
|
+
module NBA
|
|
8
|
+
# Provides methods to find team game streaks
|
|
9
|
+
#
|
|
10
|
+
# @api public
|
|
11
|
+
module TeamGameStreakFinder
|
|
12
|
+
# Result set name for streak finder results
|
|
13
|
+
# @return [String] the result set name
|
|
14
|
+
RESULT_SET_NAME = "TeamGameStreakFinderParametersResults".freeze
|
|
15
|
+
|
|
16
|
+
# Stat filter parameter mappings
|
|
17
|
+
# @return [Hash] mapping of Ruby method parameters to API parameters
|
|
18
|
+
STAT_FILTERS = {gt_pts: :GtPTS, gt_reb: :GtREB, gt_ast: :GtAST, gt_stl: :GtSTL, gt_blk: :GtBLK,
|
|
19
|
+
gt_fg3m: :GtFG3M, w_streak: :WStreak, l_streak: :LStreak}.freeze
|
|
20
|
+
|
|
21
|
+
# Finds team game streaks matching the specified criteria
|
|
22
|
+
#
|
|
23
|
+
# @api public
|
|
24
|
+
# @example Find active 100+ point streaks
|
|
25
|
+
# NBA::TeamGameStreakFinder.find(gt_pts: 100, active_streaks_only: true)
|
|
26
|
+
# @param season [String, nil] the season to search (e.g., "2024-25")
|
|
27
|
+
# @param team [Integer, Team, nil] filter by team ID or Team object
|
|
28
|
+
# @param active_streaks_only [Boolean, nil] only return active streaks
|
|
29
|
+
# @param gt_pts [Integer, nil] minimum points per game
|
|
30
|
+
# @param gt_reb [Integer, nil] minimum rebounds per game
|
|
31
|
+
# @param gt_ast [Integer, nil] minimum assists per game
|
|
32
|
+
# @param gt_stl [Integer, nil] minimum steals per game
|
|
33
|
+
# @param gt_blk [Integer, nil] minimum blocks per game
|
|
34
|
+
# @param gt_fg3m [Integer, nil] minimum 3-pointers made per game
|
|
35
|
+
# @param w_streak [Integer, nil] minimum consecutive wins
|
|
36
|
+
# @param l_streak [Integer, nil] minimum consecutive losses
|
|
37
|
+
# @param client [Client] the API client to use
|
|
38
|
+
# @return [Collection] collection of TeamGameStreak objects
|
|
39
|
+
def self.find(season: nil, team: nil, active_streaks_only: nil, gt_pts: nil, gt_reb: nil,
|
|
40
|
+
gt_ast: nil, gt_stl: nil, gt_blk: nil, gt_fg3m: nil, w_streak: nil, l_streak: nil, client: CLIENT)
|
|
41
|
+
filters = {gt_pts: gt_pts, gt_reb: gt_reb, gt_ast: gt_ast, gt_stl: gt_stl, gt_blk: gt_blk,
|
|
42
|
+
gt_fg3m: gt_fg3m, w_streak: w_streak, l_streak: l_streak}
|
|
43
|
+
path = build_path(season, team, active_streaks_only, filters)
|
|
44
|
+
ResponseParser.parse(client.get(path), result_set: RESULT_SET_NAME) { |data| build_streak(data) }
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
# Builds the API path with query parameters
|
|
48
|
+
#
|
|
49
|
+
# @api private
|
|
50
|
+
# @return [String] the API endpoint path
|
|
51
|
+
def self.build_path(season, team, active_only, filters)
|
|
52
|
+
params = base_params(season, team, active_only)
|
|
53
|
+
add_stat_filters(params, filters)
|
|
54
|
+
"teamgamestreakfinder?#{URI.encode_www_form(params)}"
|
|
55
|
+
end
|
|
56
|
+
private_class_method :build_path
|
|
57
|
+
|
|
58
|
+
# Returns base parameters for the endpoint
|
|
59
|
+
#
|
|
60
|
+
# @api private
|
|
61
|
+
# @return [Hash] the base parameters hash
|
|
62
|
+
def self.base_params(season, team, active_only)
|
|
63
|
+
params = {LeagueID: "00", MinGames: 1}
|
|
64
|
+
params[:SeasonNullable] = season if season
|
|
65
|
+
params[:TeamIDNullable] = Utils.extract_id(team) if team
|
|
66
|
+
params[:ActiveStreaksOnly] = "Y" if active_only
|
|
67
|
+
params
|
|
68
|
+
end
|
|
69
|
+
private_class_method :base_params
|
|
70
|
+
|
|
71
|
+
# Adds stat filter parameters
|
|
72
|
+
#
|
|
73
|
+
# @api private
|
|
74
|
+
# @return [void]
|
|
75
|
+
def self.add_stat_filters(params, filters)
|
|
76
|
+
STAT_FILTERS.each { |key, param| params[param] = filters.fetch(key) if filters.fetch(key) }
|
|
77
|
+
end
|
|
78
|
+
private_class_method :add_stat_filters
|
|
79
|
+
|
|
80
|
+
# Builds a TeamGameStreak from API data
|
|
81
|
+
#
|
|
82
|
+
# @api private
|
|
83
|
+
# @return [TeamGameStreak] the team game streak object
|
|
84
|
+
def self.build_streak(data)
|
|
85
|
+
TeamGameStreak.new(**team_info(data), **streak_info(data))
|
|
86
|
+
end
|
|
87
|
+
private_class_method :build_streak
|
|
88
|
+
|
|
89
|
+
# Extracts team information from data
|
|
90
|
+
#
|
|
91
|
+
# @api private
|
|
92
|
+
# @return [Hash] the team information hash
|
|
93
|
+
def self.team_info(data)
|
|
94
|
+
{team_name: data["TEAM_NAME"], team_id: data["TEAM_ID"], abbreviation: data["ABBREVIATION"]}
|
|
95
|
+
end
|
|
96
|
+
private_class_method :team_info
|
|
97
|
+
|
|
98
|
+
# Extracts streak information from data
|
|
99
|
+
#
|
|
100
|
+
# @api private
|
|
101
|
+
# @return [Hash] the streak information hash
|
|
102
|
+
def self.streak_info(data)
|
|
103
|
+
{game_streak: data["GAMESTREAK"], start_date: data["STARTDATE"], end_date: data["ENDDATE"],
|
|
104
|
+
active_streak: data["ACTIVESTREAK"], num_seasons: data["NUMSEASONS"],
|
|
105
|
+
last_season: data["LASTSEASON"], first_season: data["FIRSTSEASON"]}
|
|
106
|
+
end
|
|
107
|
+
private_class_method :streak_info
|
|
108
|
+
end
|
|
109
|
+
end
|
|
@@ -0,0 +1,207 @@
|
|
|
1
|
+
require "equalizer"
|
|
2
|
+
require "shale"
|
|
3
|
+
|
|
4
|
+
module NBA
|
|
5
|
+
# Represents a team's all-time statistical leaders
|
|
6
|
+
#
|
|
7
|
+
# @api public
|
|
8
|
+
class TeamHistoricalLeader < Shale::Mapper
|
|
9
|
+
include Equalizer.new(:team_id)
|
|
10
|
+
|
|
11
|
+
# @!attribute [rw] team_id
|
|
12
|
+
# Returns the team ID
|
|
13
|
+
# @api public
|
|
14
|
+
# @example
|
|
15
|
+
# leader.team_id #=> 1610612744
|
|
16
|
+
# @return [Integer, nil] the team ID
|
|
17
|
+
attribute :team_id, Shale::Type::Integer
|
|
18
|
+
|
|
19
|
+
# @!attribute [rw] season_year
|
|
20
|
+
# Returns the season year
|
|
21
|
+
# @api public
|
|
22
|
+
# @example
|
|
23
|
+
# leader.season_year #=> 2024
|
|
24
|
+
# @return [Integer, nil] the season year
|
|
25
|
+
attribute :season_year, Shale::Type::Integer
|
|
26
|
+
|
|
27
|
+
# @!attribute [rw] pts
|
|
28
|
+
# Returns the all-time points total
|
|
29
|
+
# @api public
|
|
30
|
+
# @example
|
|
31
|
+
# leader.pts #=> 25000
|
|
32
|
+
# @return [Integer, nil] all-time points total
|
|
33
|
+
attribute :pts, Shale::Type::Integer
|
|
34
|
+
|
|
35
|
+
# @!attribute [rw] pts_person_id
|
|
36
|
+
# Returns the points leader player ID
|
|
37
|
+
# @api public
|
|
38
|
+
# @example
|
|
39
|
+
# leader.pts_person_id #=> 201939
|
|
40
|
+
# @return [Integer, nil] points leader player ID
|
|
41
|
+
attribute :pts_person_id, Shale::Type::Integer
|
|
42
|
+
|
|
43
|
+
# @!attribute [rw] pts_player
|
|
44
|
+
# Returns the points leader player name
|
|
45
|
+
# @api public
|
|
46
|
+
# @example
|
|
47
|
+
# leader.pts_player #=> "Stephen Curry"
|
|
48
|
+
# @return [String, nil] points leader player name
|
|
49
|
+
attribute :pts_player, Shale::Type::String
|
|
50
|
+
|
|
51
|
+
# @!attribute [rw] ast
|
|
52
|
+
# Returns the all-time assists total
|
|
53
|
+
# @api public
|
|
54
|
+
# @example
|
|
55
|
+
# leader.ast #=> 5000
|
|
56
|
+
# @return [Integer, nil] all-time assists total
|
|
57
|
+
attribute :ast, Shale::Type::Integer
|
|
58
|
+
|
|
59
|
+
# @!attribute [rw] ast_person_id
|
|
60
|
+
# Returns the assists leader player ID
|
|
61
|
+
# @api public
|
|
62
|
+
# @example
|
|
63
|
+
# leader.ast_person_id #=> 201939
|
|
64
|
+
# @return [Integer, nil] assists leader player ID
|
|
65
|
+
attribute :ast_person_id, Shale::Type::Integer
|
|
66
|
+
|
|
67
|
+
# @!attribute [rw] ast_player
|
|
68
|
+
# Returns the assists leader player name
|
|
69
|
+
# @api public
|
|
70
|
+
# @example
|
|
71
|
+
# leader.ast_player #=> "Stephen Curry"
|
|
72
|
+
# @return [String, nil] assists leader player name
|
|
73
|
+
attribute :ast_player, Shale::Type::String
|
|
74
|
+
|
|
75
|
+
# @!attribute [rw] reb
|
|
76
|
+
# Returns the all-time rebounds total
|
|
77
|
+
# @api public
|
|
78
|
+
# @example
|
|
79
|
+
# leader.reb #=> 8000
|
|
80
|
+
# @return [Integer, nil] all-time rebounds total
|
|
81
|
+
attribute :reb, Shale::Type::Integer
|
|
82
|
+
|
|
83
|
+
# @!attribute [rw] reb_person_id
|
|
84
|
+
# Returns the rebounds leader player ID
|
|
85
|
+
# @api public
|
|
86
|
+
# @example
|
|
87
|
+
# leader.reb_person_id #=> 201142
|
|
88
|
+
# @return [Integer, nil] rebounds leader player ID
|
|
89
|
+
attribute :reb_person_id, Shale::Type::Integer
|
|
90
|
+
|
|
91
|
+
# @!attribute [rw] reb_player
|
|
92
|
+
# Returns the rebounds leader player name
|
|
93
|
+
# @api public
|
|
94
|
+
# @example
|
|
95
|
+
# leader.reb_player #=> "Wilt Chamberlain"
|
|
96
|
+
# @return [String, nil] rebounds leader player name
|
|
97
|
+
attribute :reb_player, Shale::Type::String
|
|
98
|
+
|
|
99
|
+
# @!attribute [rw] blk
|
|
100
|
+
# Returns the all-time blocks total
|
|
101
|
+
# @api public
|
|
102
|
+
# @example
|
|
103
|
+
# leader.blk #=> 1500
|
|
104
|
+
# @return [Integer, nil] all-time blocks total
|
|
105
|
+
attribute :blk, Shale::Type::Integer
|
|
106
|
+
|
|
107
|
+
# @!attribute [rw] blk_person_id
|
|
108
|
+
# Returns the blocks leader player ID
|
|
109
|
+
# @api public
|
|
110
|
+
# @example
|
|
111
|
+
# leader.blk_person_id #=> 201142
|
|
112
|
+
# @return [Integer, nil] blocks leader player ID
|
|
113
|
+
attribute :blk_person_id, Shale::Type::Integer
|
|
114
|
+
|
|
115
|
+
# @!attribute [rw] blk_player
|
|
116
|
+
# Returns the blocks leader player name
|
|
117
|
+
# @api public
|
|
118
|
+
# @example
|
|
119
|
+
# leader.blk_player #=> "Nate Thurmond"
|
|
120
|
+
# @return [String, nil] blocks leader player name
|
|
121
|
+
attribute :blk_player, Shale::Type::String
|
|
122
|
+
|
|
123
|
+
# @!attribute [rw] stl
|
|
124
|
+
# Returns the all-time steals total
|
|
125
|
+
# @api public
|
|
126
|
+
# @example
|
|
127
|
+
# leader.stl #=> 1200
|
|
128
|
+
# @return [Integer, nil] all-time steals total
|
|
129
|
+
attribute :stl, Shale::Type::Integer
|
|
130
|
+
|
|
131
|
+
# @!attribute [rw] stl_person_id
|
|
132
|
+
# Returns the steals leader player ID
|
|
133
|
+
# @api public
|
|
134
|
+
# @example
|
|
135
|
+
# leader.stl_person_id #=> 201939
|
|
136
|
+
# @return [Integer, nil] steals leader player ID
|
|
137
|
+
attribute :stl_person_id, Shale::Type::Integer
|
|
138
|
+
|
|
139
|
+
# @!attribute [rw] stl_player
|
|
140
|
+
# Returns the steals leader player name
|
|
141
|
+
# @api public
|
|
142
|
+
# @example
|
|
143
|
+
# leader.stl_player #=> "Chris Mullin"
|
|
144
|
+
# @return [String, nil] steals leader player name
|
|
145
|
+
attribute :stl_player, Shale::Type::String
|
|
146
|
+
|
|
147
|
+
# Returns the team for this leader record
|
|
148
|
+
#
|
|
149
|
+
# @api public
|
|
150
|
+
# @example
|
|
151
|
+
# leader.team #=> #<NBA::Team ...>
|
|
152
|
+
# @return [Team, nil] the team
|
|
153
|
+
def team
|
|
154
|
+
Teams.find(team_id)
|
|
155
|
+
end
|
|
156
|
+
|
|
157
|
+
# Returns the points leader player
|
|
158
|
+
#
|
|
159
|
+
# @api public
|
|
160
|
+
# @example
|
|
161
|
+
# leader.pts_leader #=> #<NBA::Player ...>
|
|
162
|
+
# @return [Player, nil] the points leader
|
|
163
|
+
def pts_leader
|
|
164
|
+
Players.find(pts_person_id)
|
|
165
|
+
end
|
|
166
|
+
|
|
167
|
+
# Returns the assists leader player
|
|
168
|
+
#
|
|
169
|
+
# @api public
|
|
170
|
+
# @example
|
|
171
|
+
# leader.ast_leader #=> #<NBA::Player ...>
|
|
172
|
+
# @return [Player, nil] the assists leader
|
|
173
|
+
def ast_leader
|
|
174
|
+
Players.find(ast_person_id)
|
|
175
|
+
end
|
|
176
|
+
|
|
177
|
+
# Returns the rebounds leader player
|
|
178
|
+
#
|
|
179
|
+
# @api public
|
|
180
|
+
# @example
|
|
181
|
+
# leader.reb_leader #=> #<NBA::Player ...>
|
|
182
|
+
# @return [Player, nil] the rebounds leader
|
|
183
|
+
def reb_leader
|
|
184
|
+
Players.find(reb_person_id)
|
|
185
|
+
end
|
|
186
|
+
|
|
187
|
+
# Returns the blocks leader player
|
|
188
|
+
#
|
|
189
|
+
# @api public
|
|
190
|
+
# @example
|
|
191
|
+
# leader.blk_leader #=> #<NBA::Player ...>
|
|
192
|
+
# @return [Player, nil] the blocks leader
|
|
193
|
+
def blk_leader
|
|
194
|
+
Players.find(blk_person_id)
|
|
195
|
+
end
|
|
196
|
+
|
|
197
|
+
# Returns the steals leader player
|
|
198
|
+
#
|
|
199
|
+
# @api public
|
|
200
|
+
# @example
|
|
201
|
+
# leader.stl_leader #=> #<NBA::Player ...>
|
|
202
|
+
# @return [Player, nil] the steals leader
|
|
203
|
+
def stl_leader
|
|
204
|
+
Players.find(stl_person_id)
|
|
205
|
+
end
|
|
206
|
+
end
|
|
207
|
+
end
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
require_relative "client"
|
|
2
|
+
require_relative "collection"
|
|
3
|
+
require_relative "response_parser"
|
|
4
|
+
require_relative "utils"
|
|
5
|
+
|
|
6
|
+
module NBA
|
|
7
|
+
# Provides methods to retrieve team historical career leaders
|
|
8
|
+
#
|
|
9
|
+
# @api public
|
|
10
|
+
module TeamHistoricalLeaders
|
|
11
|
+
# Result set name in API response
|
|
12
|
+
# @return [String] the result set name
|
|
13
|
+
RESULT_SET_NAME = "CareerLeadersByTeam".freeze
|
|
14
|
+
|
|
15
|
+
# Retrieves historical leaders for a team
|
|
16
|
+
#
|
|
17
|
+
# @api public
|
|
18
|
+
# @example
|
|
19
|
+
# leaders = NBA::TeamHistoricalLeaders.find(team: 1610612744)
|
|
20
|
+
# leaders.pts_player #=> "Stephen Curry"
|
|
21
|
+
# @param team [Integer, Team] the team or team ID
|
|
22
|
+
# @param season [Integer] the season year (defaults to current season)
|
|
23
|
+
# @param client [Client] the API client to use
|
|
24
|
+
# @return [TeamHistoricalLeader, nil] the team historical leaders
|
|
25
|
+
def self.find(team:, season: Utils.current_season, client: CLIENT)
|
|
26
|
+
id = Utils.extract_id(team)
|
|
27
|
+
return unless id
|
|
28
|
+
|
|
29
|
+
path = build_path(id, season)
|
|
30
|
+
ResponseParser.parse_single(client.get(path), result_set: RESULT_SET_NAME) { |data| build_leader(data) }
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
# Builds the API path
|
|
34
|
+
# @api private
|
|
35
|
+
# @return [String]
|
|
36
|
+
def self.build_path(team_id, season)
|
|
37
|
+
"teamhistoricalleaders?TeamID=#{team_id}&LeagueID=00&SeasonID=#{Utils.format_season_id(season)}"
|
|
38
|
+
end
|
|
39
|
+
private_class_method :build_path
|
|
40
|
+
|
|
41
|
+
# Builds a TeamHistoricalLeader from API data
|
|
42
|
+
# @api private
|
|
43
|
+
# @return [TeamHistoricalLeader]
|
|
44
|
+
def self.build_leader(data)
|
|
45
|
+
TeamHistoricalLeader.new(**identity_info(data), **pts_info(data), **ast_info(data), **reb_info(data),
|
|
46
|
+
**blk_info(data), **stl_info(data))
|
|
47
|
+
end
|
|
48
|
+
private_class_method :build_leader
|
|
49
|
+
|
|
50
|
+
# Extracts identity fields
|
|
51
|
+
# @api private
|
|
52
|
+
# @return [Hash]
|
|
53
|
+
def self.identity_info(data)
|
|
54
|
+
{team_id: data["TEAM_ID"], season_year: data["SEASON_YEAR"]}
|
|
55
|
+
end
|
|
56
|
+
private_class_method :identity_info
|
|
57
|
+
|
|
58
|
+
# Extracts points leader fields
|
|
59
|
+
# @api private
|
|
60
|
+
# @return [Hash]
|
|
61
|
+
def self.pts_info(data)
|
|
62
|
+
{pts: data["PTS"], pts_person_id: data["PTS_PERSON_ID"], pts_player: data["PTS_PLAYER"]}
|
|
63
|
+
end
|
|
64
|
+
private_class_method :pts_info
|
|
65
|
+
|
|
66
|
+
# Extracts assists leader fields
|
|
67
|
+
# @api private
|
|
68
|
+
# @return [Hash]
|
|
69
|
+
def self.ast_info(data)
|
|
70
|
+
{ast: data["AST"], ast_person_id: data["AST_PERSON_ID"], ast_player: data["AST_PLAYER"]}
|
|
71
|
+
end
|
|
72
|
+
private_class_method :ast_info
|
|
73
|
+
|
|
74
|
+
# Extracts rebounds leader fields
|
|
75
|
+
# @api private
|
|
76
|
+
# @return [Hash]
|
|
77
|
+
def self.reb_info(data)
|
|
78
|
+
{reb: data["REB"], reb_person_id: data["REB_PERSON_ID"], reb_player: data["REB_PLAYER"]}
|
|
79
|
+
end
|
|
80
|
+
private_class_method :reb_info
|
|
81
|
+
|
|
82
|
+
# Extracts blocks leader fields
|
|
83
|
+
# @api private
|
|
84
|
+
# @return [Hash]
|
|
85
|
+
def self.blk_info(data)
|
|
86
|
+
{blk: data["BLK"], blk_person_id: data["BLK_PERSON_ID"], blk_player: data["BLK_PLAYER"]}
|
|
87
|
+
end
|
|
88
|
+
private_class_method :blk_info
|
|
89
|
+
|
|
90
|
+
# Extracts steals leader fields
|
|
91
|
+
# @api private
|
|
92
|
+
# @return [Hash]
|
|
93
|
+
def self.stl_info(data)
|
|
94
|
+
{stl: data["STL"], stl_person_id: data["STL_PERSON_ID"], stl_player: data["STL_PLAYER"]}
|
|
95
|
+
end
|
|
96
|
+
private_class_method :stl_info
|
|
97
|
+
end
|
|
98
|
+
end
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
require "equalizer"
|
|
2
|
+
require "shale"
|
|
3
|
+
|
|
4
|
+
module NBA
|
|
5
|
+
# Represents a team's historical record
|
|
6
|
+
class TeamHistoricalRecord < Shale::Mapper
|
|
7
|
+
include Equalizer.new(:team_id, :season_id)
|
|
8
|
+
|
|
9
|
+
# @!attribute [rw] team_id
|
|
10
|
+
# Returns the team ID
|
|
11
|
+
# @api public
|
|
12
|
+
# @example
|
|
13
|
+
# record.team_id #=> 1610612744
|
|
14
|
+
# @return [Integer] the team ID
|
|
15
|
+
attribute :team_id, Shale::Type::Integer
|
|
16
|
+
|
|
17
|
+
# @!attribute [rw] city
|
|
18
|
+
# Returns the team city
|
|
19
|
+
# @api public
|
|
20
|
+
# @example
|
|
21
|
+
# record.city #=> "Golden State"
|
|
22
|
+
# @return [String] the city
|
|
23
|
+
attribute :city, Shale::Type::String
|
|
24
|
+
|
|
25
|
+
# @!attribute [rw] nickname
|
|
26
|
+
# Returns the team nickname
|
|
27
|
+
# @api public
|
|
28
|
+
# @example
|
|
29
|
+
# record.nickname #=> "Warriors"
|
|
30
|
+
# @return [String] the nickname
|
|
31
|
+
attribute :nickname, Shale::Type::String
|
|
32
|
+
|
|
33
|
+
# @!attribute [rw] season_id
|
|
34
|
+
# Returns the season ID
|
|
35
|
+
# @api public
|
|
36
|
+
# @example
|
|
37
|
+
# record.season_id #=> "22024"
|
|
38
|
+
# @return [String] the season ID
|
|
39
|
+
attribute :season_id, Shale::Type::String
|
|
40
|
+
|
|
41
|
+
# @!attribute [rw] year
|
|
42
|
+
# Returns the year
|
|
43
|
+
# @api public
|
|
44
|
+
# @example
|
|
45
|
+
# record.year #=> 2024
|
|
46
|
+
# @return [Integer] the year
|
|
47
|
+
attribute :year, Shale::Type::Integer
|
|
48
|
+
|
|
49
|
+
# @!attribute [rw] wins
|
|
50
|
+
# Returns the number of wins
|
|
51
|
+
# @api public
|
|
52
|
+
# @example
|
|
53
|
+
# record.wins #=> 46
|
|
54
|
+
# @return [Integer] the wins
|
|
55
|
+
attribute :wins, Shale::Type::Integer
|
|
56
|
+
|
|
57
|
+
# @!attribute [rw] losses
|
|
58
|
+
# Returns the number of losses
|
|
59
|
+
# @api public
|
|
60
|
+
# @example
|
|
61
|
+
# record.losses #=> 36
|
|
62
|
+
# @return [Integer] the losses
|
|
63
|
+
attribute :losses, Shale::Type::Integer
|
|
64
|
+
|
|
65
|
+
# @!attribute [rw] win_pct
|
|
66
|
+
# Returns the win percentage
|
|
67
|
+
# @api public
|
|
68
|
+
# @example
|
|
69
|
+
# record.win_pct #=> 0.561
|
|
70
|
+
# @return [Float] the win percentage
|
|
71
|
+
attribute :win_pct, Shale::Type::Float
|
|
72
|
+
|
|
73
|
+
# @!attribute [rw] conf_rank
|
|
74
|
+
# Returns the conference rank
|
|
75
|
+
# @api public
|
|
76
|
+
# @example
|
|
77
|
+
# record.conf_rank #=> 10
|
|
78
|
+
# @return [Integer] the conference rank
|
|
79
|
+
attribute :conf_rank, Shale::Type::Integer
|
|
80
|
+
|
|
81
|
+
# @!attribute [rw] div_rank
|
|
82
|
+
# Returns the division rank
|
|
83
|
+
# @api public
|
|
84
|
+
# @example
|
|
85
|
+
# record.div_rank #=> 3
|
|
86
|
+
# @return [Integer] the division rank
|
|
87
|
+
attribute :div_rank, Shale::Type::Integer
|
|
88
|
+
|
|
89
|
+
# @!attribute [rw] po_wins
|
|
90
|
+
# Returns playoff wins
|
|
91
|
+
# @api public
|
|
92
|
+
# @example
|
|
93
|
+
# record.po_wins #=> 0
|
|
94
|
+
# @return [Integer] the playoff wins
|
|
95
|
+
attribute :po_wins, Shale::Type::Integer
|
|
96
|
+
|
|
97
|
+
# @!attribute [rw] po_losses
|
|
98
|
+
# Returns playoff losses
|
|
99
|
+
# @api public
|
|
100
|
+
# @example
|
|
101
|
+
# record.po_losses #=> 0
|
|
102
|
+
# @return [Integer] the playoff losses
|
|
103
|
+
attribute :po_losses, Shale::Type::Integer
|
|
104
|
+
|
|
105
|
+
# @!attribute [rw] conf_count
|
|
106
|
+
# Returns conference titles
|
|
107
|
+
# @api public
|
|
108
|
+
# @example
|
|
109
|
+
# record.conf_count #=> 0
|
|
110
|
+
# @return [Integer] the conference titles
|
|
111
|
+
attribute :conf_count, Shale::Type::Integer
|
|
112
|
+
|
|
113
|
+
# @!attribute [rw] div_count
|
|
114
|
+
# Returns division titles
|
|
115
|
+
# @api public
|
|
116
|
+
# @example
|
|
117
|
+
# record.div_count #=> 0
|
|
118
|
+
# @return [Integer] the division titles
|
|
119
|
+
attribute :div_count, Shale::Type::Integer
|
|
120
|
+
|
|
121
|
+
# @!attribute [rw] nba_finals_appearance
|
|
122
|
+
# Returns NBA Finals appearances
|
|
123
|
+
# @api public
|
|
124
|
+
# @example
|
|
125
|
+
# record.nba_finals_appearance #=> "N/A"
|
|
126
|
+
# @return [String] the Finals appearances
|
|
127
|
+
attribute :nba_finals_appearance, Shale::Type::String
|
|
128
|
+
|
|
129
|
+
# Returns the team object
|
|
130
|
+
#
|
|
131
|
+
# @api public
|
|
132
|
+
# @example
|
|
133
|
+
# record.team #=> #<NBA::Team>
|
|
134
|
+
# @return [Team, nil] the team object
|
|
135
|
+
def team
|
|
136
|
+
Teams.find(team_id)
|
|
137
|
+
end
|
|
138
|
+
end
|
|
139
|
+
end
|