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,260 @@
|
|
|
1
|
+
module NBA
|
|
2
|
+
# Represents a found game from the league game finder
|
|
3
|
+
class FoundGame < Shale::Mapper
|
|
4
|
+
include Equalizer.new(:game_id)
|
|
5
|
+
|
|
6
|
+
# @!attribute [rw] season_id
|
|
7
|
+
# Returns the season ID
|
|
8
|
+
# @api public
|
|
9
|
+
# @example
|
|
10
|
+
# game.season_id #=> "22024"
|
|
11
|
+
# @return [String] the season ID
|
|
12
|
+
attribute :season_id, Shale::Type::String
|
|
13
|
+
|
|
14
|
+
# @!attribute [rw] team_id
|
|
15
|
+
# Returns the team ID
|
|
16
|
+
# @api public
|
|
17
|
+
# @example
|
|
18
|
+
# game.team_id #=> 1610612744
|
|
19
|
+
# @return [Integer] the team ID
|
|
20
|
+
attribute :team_id, Shale::Type::Integer
|
|
21
|
+
|
|
22
|
+
# @!attribute [rw] team_abbreviation
|
|
23
|
+
# Returns the team abbreviation
|
|
24
|
+
# @api public
|
|
25
|
+
# @example
|
|
26
|
+
# game.team_abbreviation #=> "GSW"
|
|
27
|
+
# @return [String] the team abbreviation
|
|
28
|
+
attribute :team_abbreviation, Shale::Type::String
|
|
29
|
+
|
|
30
|
+
# @!attribute [rw] team_name
|
|
31
|
+
# Returns the team name
|
|
32
|
+
# @api public
|
|
33
|
+
# @example
|
|
34
|
+
# game.team_name #=> "Warriors"
|
|
35
|
+
# @return [String] the team name
|
|
36
|
+
attribute :team_name, Shale::Type::String
|
|
37
|
+
|
|
38
|
+
# @!attribute [rw] game_id
|
|
39
|
+
# Returns the game ID
|
|
40
|
+
# @api public
|
|
41
|
+
# @example
|
|
42
|
+
# game.game_id #=> "0022400001"
|
|
43
|
+
# @return [String] the game ID
|
|
44
|
+
attribute :game_id, Shale::Type::String
|
|
45
|
+
|
|
46
|
+
# @!attribute [rw] game_date
|
|
47
|
+
# Returns the game date
|
|
48
|
+
# @api public
|
|
49
|
+
# @example
|
|
50
|
+
# game.game_date #=> "2024-10-22"
|
|
51
|
+
# @return [String] the game date
|
|
52
|
+
attribute :game_date, Shale::Type::String
|
|
53
|
+
|
|
54
|
+
# @!attribute [rw] matchup
|
|
55
|
+
# Returns the matchup string
|
|
56
|
+
# @api public
|
|
57
|
+
# @example
|
|
58
|
+
# game.matchup #=> "GSW vs. LAL"
|
|
59
|
+
# @return [String] the matchup
|
|
60
|
+
attribute :matchup, Shale::Type::String
|
|
61
|
+
|
|
62
|
+
# @!attribute [rw] wl
|
|
63
|
+
# Returns win/loss result
|
|
64
|
+
# @api public
|
|
65
|
+
# @example
|
|
66
|
+
# game.wl #=> "W"
|
|
67
|
+
# @return [String] W or L
|
|
68
|
+
attribute :wl, Shale::Type::String
|
|
69
|
+
|
|
70
|
+
# @!attribute [rw] min
|
|
71
|
+
# Returns minutes played
|
|
72
|
+
# @api public
|
|
73
|
+
# @example
|
|
74
|
+
# game.min #=> 240
|
|
75
|
+
# @return [Integer] minutes
|
|
76
|
+
attribute :min, Shale::Type::Integer
|
|
77
|
+
|
|
78
|
+
# @!attribute [rw] pts
|
|
79
|
+
# Returns points scored
|
|
80
|
+
# @api public
|
|
81
|
+
# @example
|
|
82
|
+
# game.pts #=> 110
|
|
83
|
+
# @return [Integer] points
|
|
84
|
+
attribute :pts, Shale::Type::Integer
|
|
85
|
+
|
|
86
|
+
# @!attribute [rw] fgm
|
|
87
|
+
# Returns field goals made
|
|
88
|
+
# @api public
|
|
89
|
+
# @example
|
|
90
|
+
# game.fgm #=> 42
|
|
91
|
+
# @return [Integer] field goals made
|
|
92
|
+
attribute :fgm, Shale::Type::Integer
|
|
93
|
+
|
|
94
|
+
# @!attribute [rw] fga
|
|
95
|
+
# Returns field goals attempted
|
|
96
|
+
# @api public
|
|
97
|
+
# @example
|
|
98
|
+
# game.fga #=> 85
|
|
99
|
+
# @return [Integer] field goals attempted
|
|
100
|
+
attribute :fga, Shale::Type::Integer
|
|
101
|
+
|
|
102
|
+
# @!attribute [rw] fg_pct
|
|
103
|
+
# Returns field goal percentage
|
|
104
|
+
# @api public
|
|
105
|
+
# @example
|
|
106
|
+
# game.fg_pct #=> 0.494
|
|
107
|
+
# @return [Float] field goal percentage
|
|
108
|
+
attribute :fg_pct, Shale::Type::Float
|
|
109
|
+
|
|
110
|
+
# @!attribute [rw] fg3m
|
|
111
|
+
# Returns three-pointers made
|
|
112
|
+
# @api public
|
|
113
|
+
# @example
|
|
114
|
+
# game.fg3m #=> 14
|
|
115
|
+
# @return [Integer] three-pointers made
|
|
116
|
+
attribute :fg3m, Shale::Type::Integer
|
|
117
|
+
|
|
118
|
+
# @!attribute [rw] fg3a
|
|
119
|
+
# Returns three-pointers attempted
|
|
120
|
+
# @api public
|
|
121
|
+
# @example
|
|
122
|
+
# game.fg3a #=> 35
|
|
123
|
+
# @return [Integer] three-pointers attempted
|
|
124
|
+
attribute :fg3a, Shale::Type::Integer
|
|
125
|
+
|
|
126
|
+
# @!attribute [rw] fg3_pct
|
|
127
|
+
# Returns three-point percentage
|
|
128
|
+
# @api public
|
|
129
|
+
# @example
|
|
130
|
+
# game.fg3_pct #=> 0.4
|
|
131
|
+
# @return [Float] three-point percentage
|
|
132
|
+
attribute :fg3_pct, Shale::Type::Float
|
|
133
|
+
|
|
134
|
+
# @!attribute [rw] ftm
|
|
135
|
+
# Returns free throws made
|
|
136
|
+
# @api public
|
|
137
|
+
# @example
|
|
138
|
+
# game.ftm #=> 12
|
|
139
|
+
# @return [Integer] free throws made
|
|
140
|
+
attribute :ftm, Shale::Type::Integer
|
|
141
|
+
|
|
142
|
+
# @!attribute [rw] fta
|
|
143
|
+
# Returns free throws attempted
|
|
144
|
+
# @api public
|
|
145
|
+
# @example
|
|
146
|
+
# game.fta #=> 15
|
|
147
|
+
# @return [Integer] free throws attempted
|
|
148
|
+
attribute :fta, Shale::Type::Integer
|
|
149
|
+
|
|
150
|
+
# @!attribute [rw] ft_pct
|
|
151
|
+
# Returns free throw percentage
|
|
152
|
+
# @api public
|
|
153
|
+
# @example
|
|
154
|
+
# game.ft_pct #=> 0.8
|
|
155
|
+
# @return [Float] free throw percentage
|
|
156
|
+
attribute :ft_pct, Shale::Type::Float
|
|
157
|
+
|
|
158
|
+
# @!attribute [rw] oreb
|
|
159
|
+
# Returns offensive rebounds
|
|
160
|
+
# @api public
|
|
161
|
+
# @example
|
|
162
|
+
# game.oreb #=> 10
|
|
163
|
+
# @return [Integer] offensive rebounds
|
|
164
|
+
attribute :oreb, Shale::Type::Integer
|
|
165
|
+
|
|
166
|
+
# @!attribute [rw] dreb
|
|
167
|
+
# Returns defensive rebounds
|
|
168
|
+
# @api public
|
|
169
|
+
# @example
|
|
170
|
+
# game.dreb #=> 32
|
|
171
|
+
# @return [Integer] defensive rebounds
|
|
172
|
+
attribute :dreb, Shale::Type::Integer
|
|
173
|
+
|
|
174
|
+
# @!attribute [rw] reb
|
|
175
|
+
# Returns total rebounds
|
|
176
|
+
# @api public
|
|
177
|
+
# @example
|
|
178
|
+
# game.reb #=> 42
|
|
179
|
+
# @return [Integer] total rebounds
|
|
180
|
+
attribute :reb, Shale::Type::Integer
|
|
181
|
+
|
|
182
|
+
# @!attribute [rw] ast
|
|
183
|
+
# Returns assists
|
|
184
|
+
# @api public
|
|
185
|
+
# @example
|
|
186
|
+
# game.ast #=> 28
|
|
187
|
+
# @return [Integer] assists
|
|
188
|
+
attribute :ast, Shale::Type::Integer
|
|
189
|
+
|
|
190
|
+
# @!attribute [rw] stl
|
|
191
|
+
# Returns steals
|
|
192
|
+
# @api public
|
|
193
|
+
# @example
|
|
194
|
+
# game.stl #=> 8
|
|
195
|
+
# @return [Integer] steals
|
|
196
|
+
attribute :stl, Shale::Type::Integer
|
|
197
|
+
|
|
198
|
+
# @!attribute [rw] blk
|
|
199
|
+
# Returns blocks
|
|
200
|
+
# @api public
|
|
201
|
+
# @example
|
|
202
|
+
# game.blk #=> 5
|
|
203
|
+
# @return [Integer] blocks
|
|
204
|
+
attribute :blk, Shale::Type::Integer
|
|
205
|
+
|
|
206
|
+
# @!attribute [rw] tov
|
|
207
|
+
# Returns turnovers
|
|
208
|
+
# @api public
|
|
209
|
+
# @example
|
|
210
|
+
# game.tov #=> 12
|
|
211
|
+
# @return [Integer] turnovers
|
|
212
|
+
attribute :tov, Shale::Type::Integer
|
|
213
|
+
|
|
214
|
+
# @!attribute [rw] pf
|
|
215
|
+
# Returns personal fouls
|
|
216
|
+
# @api public
|
|
217
|
+
# @example
|
|
218
|
+
# game.pf #=> 18
|
|
219
|
+
# @return [Integer] personal fouls
|
|
220
|
+
attribute :pf, Shale::Type::Integer
|
|
221
|
+
|
|
222
|
+
# @!attribute [rw] plus_minus
|
|
223
|
+
# Returns plus/minus
|
|
224
|
+
# @api public
|
|
225
|
+
# @example
|
|
226
|
+
# game.plus_minus #=> 10
|
|
227
|
+
# @return [Integer] plus/minus
|
|
228
|
+
attribute :plus_minus, Shale::Type::Integer
|
|
229
|
+
|
|
230
|
+
# Returns the team object
|
|
231
|
+
#
|
|
232
|
+
# @api public
|
|
233
|
+
# @example
|
|
234
|
+
# game.team #=> #<NBA::Team>
|
|
235
|
+
# @return [Team, nil] the team object
|
|
236
|
+
def team
|
|
237
|
+
Teams.find(team_id)
|
|
238
|
+
end
|
|
239
|
+
|
|
240
|
+
# Returns whether the game was a win
|
|
241
|
+
#
|
|
242
|
+
# @api public
|
|
243
|
+
# @example
|
|
244
|
+
# game.win? #=> true
|
|
245
|
+
# @return [Boolean] true if win
|
|
246
|
+
def win?
|
|
247
|
+
wl.eql?("W")
|
|
248
|
+
end
|
|
249
|
+
|
|
250
|
+
# Returns whether the game was a loss
|
|
251
|
+
#
|
|
252
|
+
# @api public
|
|
253
|
+
# @example
|
|
254
|
+
# game.loss? #=> true
|
|
255
|
+
# @return [Boolean] true if loss
|
|
256
|
+
def loss?
|
|
257
|
+
wl.eql?("L")
|
|
258
|
+
end
|
|
259
|
+
end
|
|
260
|
+
end
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
module NBA
|
|
2
|
+
# Represents franchise history data
|
|
3
|
+
class Franchise < Shale::Mapper
|
|
4
|
+
include Equalizer.new(:team_id)
|
|
5
|
+
|
|
6
|
+
# @!attribute [rw] league_id
|
|
7
|
+
# Returns the league ID
|
|
8
|
+
# @api public
|
|
9
|
+
# @example
|
|
10
|
+
# franchise.league_id #=> "00"
|
|
11
|
+
# @return [String] the league ID
|
|
12
|
+
attribute :league_id, Shale::Type::String
|
|
13
|
+
|
|
14
|
+
# @!attribute [rw] team_id
|
|
15
|
+
# Returns the team ID
|
|
16
|
+
# @api public
|
|
17
|
+
# @example
|
|
18
|
+
# franchise.team_id #=> 1610612744
|
|
19
|
+
# @return [Integer] the team ID
|
|
20
|
+
attribute :team_id, Shale::Type::Integer
|
|
21
|
+
|
|
22
|
+
# @!attribute [rw] team_city
|
|
23
|
+
# Returns the team city
|
|
24
|
+
# @api public
|
|
25
|
+
# @example
|
|
26
|
+
# franchise.team_city #=> "Golden State"
|
|
27
|
+
# @return [String] the team city
|
|
28
|
+
attribute :team_city, Shale::Type::String
|
|
29
|
+
|
|
30
|
+
# @!attribute [rw] team_name
|
|
31
|
+
# Returns the team name
|
|
32
|
+
# @api public
|
|
33
|
+
# @example
|
|
34
|
+
# franchise.team_name #=> "Warriors"
|
|
35
|
+
# @return [String] the team name
|
|
36
|
+
attribute :team_name, Shale::Type::String
|
|
37
|
+
|
|
38
|
+
# @!attribute [rw] start_year
|
|
39
|
+
# Returns the franchise start year
|
|
40
|
+
# @api public
|
|
41
|
+
# @example
|
|
42
|
+
# franchise.start_year #=> 1946
|
|
43
|
+
# @return [Integer] the start year
|
|
44
|
+
attribute :start_year, Shale::Type::Integer
|
|
45
|
+
|
|
46
|
+
# @!attribute [rw] end_year
|
|
47
|
+
# Returns the franchise end year
|
|
48
|
+
# @api public
|
|
49
|
+
# @example
|
|
50
|
+
# franchise.end_year #=> 2024
|
|
51
|
+
# @return [Integer] the end year
|
|
52
|
+
attribute :end_year, Shale::Type::Integer
|
|
53
|
+
|
|
54
|
+
# @!attribute [rw] years
|
|
55
|
+
# Returns the number of years the franchise has existed
|
|
56
|
+
# @api public
|
|
57
|
+
# @example
|
|
58
|
+
# franchise.years #=> 78
|
|
59
|
+
# @return [Integer] the number of years
|
|
60
|
+
attribute :years, Shale::Type::Integer
|
|
61
|
+
|
|
62
|
+
# @!attribute [rw] games
|
|
63
|
+
# Returns the total games played
|
|
64
|
+
# @api public
|
|
65
|
+
# @example
|
|
66
|
+
# franchise.games #=> 5832
|
|
67
|
+
# @return [Integer] the total games
|
|
68
|
+
attribute :games, Shale::Type::Integer
|
|
69
|
+
|
|
70
|
+
# @!attribute [rw] wins
|
|
71
|
+
# Returns the total wins
|
|
72
|
+
# @api public
|
|
73
|
+
# @example
|
|
74
|
+
# franchise.wins #=> 2980
|
|
75
|
+
# @return [Integer] the total wins
|
|
76
|
+
attribute :wins, Shale::Type::Integer
|
|
77
|
+
|
|
78
|
+
# @!attribute [rw] losses
|
|
79
|
+
# Returns the total losses
|
|
80
|
+
# @api public
|
|
81
|
+
# @example
|
|
82
|
+
# franchise.losses #=> 2852
|
|
83
|
+
# @return [Integer] the total losses
|
|
84
|
+
attribute :losses, Shale::Type::Integer
|
|
85
|
+
|
|
86
|
+
# @!attribute [rw] win_pct
|
|
87
|
+
# Returns the all-time win percentage
|
|
88
|
+
# @api public
|
|
89
|
+
# @example
|
|
90
|
+
# franchise.win_pct #=> 0.511
|
|
91
|
+
# @return [Float] the win percentage
|
|
92
|
+
attribute :win_pct, Shale::Type::Float
|
|
93
|
+
|
|
94
|
+
# @!attribute [rw] po_appearances
|
|
95
|
+
# Returns the number of playoff appearances
|
|
96
|
+
# @api public
|
|
97
|
+
# @example
|
|
98
|
+
# franchise.po_appearances #=> 35
|
|
99
|
+
# @return [Integer] the playoff appearances
|
|
100
|
+
attribute :po_appearances, Shale::Type::Integer
|
|
101
|
+
|
|
102
|
+
# @!attribute [rw] div_titles
|
|
103
|
+
# Returns the number of division titles
|
|
104
|
+
# @api public
|
|
105
|
+
# @example
|
|
106
|
+
# franchise.div_titles #=> 12
|
|
107
|
+
# @return [Integer] the division titles
|
|
108
|
+
attribute :div_titles, Shale::Type::Integer
|
|
109
|
+
|
|
110
|
+
# @!attribute [rw] conf_titles
|
|
111
|
+
# Returns the number of conference titles
|
|
112
|
+
# @api public
|
|
113
|
+
# @example
|
|
114
|
+
# franchise.conf_titles #=> 7
|
|
115
|
+
# @return [Integer] the conference titles
|
|
116
|
+
attribute :conf_titles, Shale::Type::Integer
|
|
117
|
+
|
|
118
|
+
# @!attribute [rw] league_titles
|
|
119
|
+
# Returns the number of league/NBA championships
|
|
120
|
+
# @api public
|
|
121
|
+
# @example
|
|
122
|
+
# franchise.league_titles #=> 7
|
|
123
|
+
# @return [Integer] the league championships
|
|
124
|
+
attribute :league_titles, Shale::Type::Integer
|
|
125
|
+
|
|
126
|
+
# Returns the team object for this franchise
|
|
127
|
+
#
|
|
128
|
+
# @api public
|
|
129
|
+
# @example
|
|
130
|
+
# franchise.team #=> #<NBA::Team>
|
|
131
|
+
# @return [Team, nil] the team object
|
|
132
|
+
def team
|
|
133
|
+
Teams.find(team_id)
|
|
134
|
+
end
|
|
135
|
+
end
|
|
136
|
+
end
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
require "json"
|
|
2
|
+
require_relative "client"
|
|
3
|
+
require_relative "collection"
|
|
4
|
+
require_relative "franchise"
|
|
5
|
+
|
|
6
|
+
module NBA
|
|
7
|
+
# Provides methods to retrieve franchise history
|
|
8
|
+
module FranchiseHistory
|
|
9
|
+
# Result set name for franchise history
|
|
10
|
+
# @return [String] the result set name
|
|
11
|
+
FRANCHISE_HISTORY = "FranchiseHistory".freeze
|
|
12
|
+
|
|
13
|
+
# Result set name for defunct teams
|
|
14
|
+
# @return [String] the result set name
|
|
15
|
+
DEFUNCT_TEAMS = "DefunctTeams".freeze
|
|
16
|
+
|
|
17
|
+
# Retrieves all franchise history data
|
|
18
|
+
#
|
|
19
|
+
# @api public
|
|
20
|
+
# @example
|
|
21
|
+
# franchises = NBA::FranchiseHistory.all
|
|
22
|
+
# franchises.each { |f| puts "#{f.team_city} #{f.team_name}: #{f.league_titles} titles" }
|
|
23
|
+
# @param league [String, League] the league ID or League object (default NBA)
|
|
24
|
+
# @param client [Client] the API client to use
|
|
25
|
+
# @return [Collection] a collection of franchises
|
|
26
|
+
def self.all(league: League::NBA, client: CLIENT)
|
|
27
|
+
league_id = Utils.extract_league_id(league)
|
|
28
|
+
path = "franchisehistory?LeagueID=#{league_id}"
|
|
29
|
+
response = client.get(path)
|
|
30
|
+
parse_response(response, FRANCHISE_HISTORY)
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
# Retrieves defunct team history data
|
|
34
|
+
#
|
|
35
|
+
# @api public
|
|
36
|
+
# @example
|
|
37
|
+
# defunct = NBA::FranchiseHistory.defunct
|
|
38
|
+
# defunct.each { |f| puts "#{f.team_city} #{f.team_name}: #{f.start_year}-#{f.end_year}" }
|
|
39
|
+
# @param league [String, League] the league ID or League object (default NBA)
|
|
40
|
+
# @param client [Client] the API client to use
|
|
41
|
+
# @return [Collection] a collection of defunct franchises
|
|
42
|
+
def self.defunct(league: League::NBA, client: CLIENT)
|
|
43
|
+
league_id = Utils.extract_league_id(league)
|
|
44
|
+
path = "franchisehistory?LeagueID=#{league_id}"
|
|
45
|
+
response = client.get(path)
|
|
46
|
+
parse_response(response, DEFUNCT_TEAMS)
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
# Parses the API response
|
|
50
|
+
#
|
|
51
|
+
# @api private
|
|
52
|
+
# @param response [String] the JSON response body
|
|
53
|
+
# @param result_set_name [String] the name of the result set to extract
|
|
54
|
+
# @return [Collection] a collection of franchises
|
|
55
|
+
def self.parse_response(response, result_set_name)
|
|
56
|
+
return Collection.new unless response
|
|
57
|
+
|
|
58
|
+
data = JSON.parse(response)
|
|
59
|
+
result_set = find_result_set(data, result_set_name)
|
|
60
|
+
return Collection.new unless result_set
|
|
61
|
+
|
|
62
|
+
headers = result_set["headers"]
|
|
63
|
+
rows = result_set["rowSet"]
|
|
64
|
+
return Collection.new unless headers && rows
|
|
65
|
+
|
|
66
|
+
franchises = rows.map { |row| build_franchise(headers, row) }
|
|
67
|
+
Collection.new(franchises)
|
|
68
|
+
end
|
|
69
|
+
private_class_method :parse_response
|
|
70
|
+
|
|
71
|
+
# Finds a result set by name
|
|
72
|
+
#
|
|
73
|
+
# @api private
|
|
74
|
+
# @param data [Hash] the parsed JSON data
|
|
75
|
+
# @param name [String] the result set name
|
|
76
|
+
# @return [Hash, nil] the result set
|
|
77
|
+
def self.find_result_set(data, name)
|
|
78
|
+
result_sets = data["resultSets"]
|
|
79
|
+
return unless result_sets
|
|
80
|
+
|
|
81
|
+
result_sets.find { |rs| rs["name"].eql?(name) }
|
|
82
|
+
end
|
|
83
|
+
private_class_method :find_result_set
|
|
84
|
+
|
|
85
|
+
# Builds a franchise from a row
|
|
86
|
+
#
|
|
87
|
+
# @api private
|
|
88
|
+
# @param headers [Array<String>] the column headers
|
|
89
|
+
# @param row [Array] the row data
|
|
90
|
+
# @return [Franchise] the franchise object
|
|
91
|
+
def self.build_franchise(headers, row)
|
|
92
|
+
data = headers.zip(row).to_h
|
|
93
|
+
Franchise.new(**franchise_attributes(data))
|
|
94
|
+
end
|
|
95
|
+
private_class_method :build_franchise
|
|
96
|
+
|
|
97
|
+
# Extracts franchise attributes from row data
|
|
98
|
+
#
|
|
99
|
+
# @api private
|
|
100
|
+
# @param data [Hash] the franchise row data
|
|
101
|
+
# @return [Hash] the franchise attributes
|
|
102
|
+
def self.franchise_attributes(data)
|
|
103
|
+
identity_attributes(data).merge(history_attributes(data), title_attributes(data))
|
|
104
|
+
end
|
|
105
|
+
private_class_method :franchise_attributes
|
|
106
|
+
|
|
107
|
+
# Extracts identity attributes
|
|
108
|
+
#
|
|
109
|
+
# @api private
|
|
110
|
+
# @param data [Hash] the franchise data
|
|
111
|
+
# @return [Hash] the identity attributes
|
|
112
|
+
def self.identity_attributes(data)
|
|
113
|
+
{league_id: data["LEAGUE_ID"], team_id: data["TEAM_ID"], team_city: data["TEAM_CITY"],
|
|
114
|
+
team_name: data["TEAM_NAME"]}
|
|
115
|
+
end
|
|
116
|
+
private_class_method :identity_attributes
|
|
117
|
+
|
|
118
|
+
# Extracts history attributes
|
|
119
|
+
#
|
|
120
|
+
# @api private
|
|
121
|
+
# @param data [Hash] the franchise data
|
|
122
|
+
# @return [Hash] the history attributes
|
|
123
|
+
def self.history_attributes(data)
|
|
124
|
+
{start_year: data["START_YEAR"], end_year: data["END_YEAR"],
|
|
125
|
+
years: data["YEARS"], games: data["GAMES"],
|
|
126
|
+
wins: data["WINS"], losses: data["LOSSES"],
|
|
127
|
+
win_pct: data["WIN_PCT"]}
|
|
128
|
+
end
|
|
129
|
+
private_class_method :history_attributes
|
|
130
|
+
|
|
131
|
+
# Extracts title/championship attributes
|
|
132
|
+
#
|
|
133
|
+
# @api private
|
|
134
|
+
# @param data [Hash] the franchise data
|
|
135
|
+
# @return [Hash] the title attributes
|
|
136
|
+
def self.title_attributes(data)
|
|
137
|
+
{po_appearances: data["PO_APPEARANCES"], div_titles: data["DIV_TITLES"],
|
|
138
|
+
conf_titles: data["CONF_TITLES"], league_titles: data["LEAGUE_TITLES"]}
|
|
139
|
+
end
|
|
140
|
+
private_class_method :title_attributes
|
|
141
|
+
end
|
|
142
|
+
end
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
require "equalizer"
|
|
2
|
+
require "shale"
|
|
3
|
+
|
|
4
|
+
module NBA
|
|
5
|
+
# Represents franchise leaders in various statistical categories
|
|
6
|
+
class FranchiseLeader < Shale::Mapper
|
|
7
|
+
include Equalizer.new(:team_id)
|
|
8
|
+
|
|
9
|
+
# @!attribute [rw] team_id
|
|
10
|
+
# Returns the team ID
|
|
11
|
+
# @api public
|
|
12
|
+
# @example
|
|
13
|
+
# leader.team_id #=> 1610612744
|
|
14
|
+
# @return [Integer] the team ID
|
|
15
|
+
attribute :team_id, Shale::Type::Integer
|
|
16
|
+
|
|
17
|
+
# @!attribute [rw] pts_person_id
|
|
18
|
+
# Returns the person ID of the points leader
|
|
19
|
+
# @api public
|
|
20
|
+
# @example
|
|
21
|
+
# leader.pts_person_id #=> 201939
|
|
22
|
+
# @return [Integer] the points leader's person ID
|
|
23
|
+
attribute :pts_person_id, Shale::Type::Integer
|
|
24
|
+
|
|
25
|
+
# @!attribute [rw] pts_player_name
|
|
26
|
+
# Returns the name of the points leader
|
|
27
|
+
# @api public
|
|
28
|
+
# @example
|
|
29
|
+
# leader.pts_player_name #=> "Stephen Curry"
|
|
30
|
+
# @return [String] the points leader's name
|
|
31
|
+
attribute :pts_player_name, Shale::Type::String
|
|
32
|
+
|
|
33
|
+
# @!attribute [rw] pts
|
|
34
|
+
# Returns the total points scored by the leader
|
|
35
|
+
# @api public
|
|
36
|
+
# @example
|
|
37
|
+
# leader.pts #=> 23668
|
|
38
|
+
# @return [Integer] the total points
|
|
39
|
+
attribute :pts, Shale::Type::Integer
|
|
40
|
+
|
|
41
|
+
# @!attribute [rw] ast_person_id
|
|
42
|
+
# Returns the person ID of the assists leader
|
|
43
|
+
# @api public
|
|
44
|
+
# @example
|
|
45
|
+
# leader.ast_person_id #=> 201939
|
|
46
|
+
# @return [Integer] the assists leader's person ID
|
|
47
|
+
attribute :ast_person_id, Shale::Type::Integer
|
|
48
|
+
|
|
49
|
+
# @!attribute [rw] ast_player_name
|
|
50
|
+
# Returns the name of the assists leader
|
|
51
|
+
# @api public
|
|
52
|
+
# @example
|
|
53
|
+
# leader.ast_player_name #=> "Stephen Curry"
|
|
54
|
+
# @return [String] the assists leader's name
|
|
55
|
+
attribute :ast_player_name, Shale::Type::String
|
|
56
|
+
|
|
57
|
+
# @!attribute [rw] ast
|
|
58
|
+
# Returns the total assists by the leader
|
|
59
|
+
# @api public
|
|
60
|
+
# @example
|
|
61
|
+
# leader.ast #=> 5845
|
|
62
|
+
# @return [Integer] the total assists
|
|
63
|
+
attribute :ast, Shale::Type::Integer
|
|
64
|
+
|
|
65
|
+
# @!attribute [rw] reb_person_id
|
|
66
|
+
# Returns the person ID of the rebounds leader
|
|
67
|
+
# @api public
|
|
68
|
+
# @example
|
|
69
|
+
# leader.reb_person_id #=> 600015
|
|
70
|
+
# @return [Integer] the rebounds leader's person ID
|
|
71
|
+
attribute :reb_person_id, Shale::Type::Integer
|
|
72
|
+
|
|
73
|
+
# @!attribute [rw] reb_player_name
|
|
74
|
+
# Returns the name of the rebounds leader
|
|
75
|
+
# @api public
|
|
76
|
+
# @example
|
|
77
|
+
# leader.reb_player_name #=> "Nate Thurmond"
|
|
78
|
+
# @return [String] the rebounds leader's name
|
|
79
|
+
attribute :reb_player_name, Shale::Type::String
|
|
80
|
+
|
|
81
|
+
# @!attribute [rw] reb
|
|
82
|
+
# Returns the total rebounds by the leader
|
|
83
|
+
# @api public
|
|
84
|
+
# @example
|
|
85
|
+
# leader.reb #=> 12771
|
|
86
|
+
# @return [Integer] the total rebounds
|
|
87
|
+
attribute :reb, Shale::Type::Integer
|
|
88
|
+
|
|
89
|
+
# @!attribute [rw] blk_person_id
|
|
90
|
+
# Returns the person ID of the blocks leader
|
|
91
|
+
# @api public
|
|
92
|
+
# @example
|
|
93
|
+
# leader.blk_person_id #=> 2442
|
|
94
|
+
# @return [Integer] the blocks leader's person ID
|
|
95
|
+
attribute :blk_person_id, Shale::Type::Integer
|
|
96
|
+
|
|
97
|
+
# @!attribute [rw] blk_player_name
|
|
98
|
+
# Returns the name of the blocks leader
|
|
99
|
+
# @api public
|
|
100
|
+
# @example
|
|
101
|
+
# leader.blk_player_name #=> "Manute Bol"
|
|
102
|
+
# @return [String] the blocks leader's name
|
|
103
|
+
attribute :blk_player_name, Shale::Type::String
|
|
104
|
+
|
|
105
|
+
# @!attribute [rw] blk
|
|
106
|
+
# Returns the total blocks by the leader
|
|
107
|
+
# @api public
|
|
108
|
+
# @example
|
|
109
|
+
# leader.blk #=> 2086
|
|
110
|
+
# @return [Integer] the total blocks
|
|
111
|
+
attribute :blk, Shale::Type::Integer
|
|
112
|
+
|
|
113
|
+
# @!attribute [rw] stl_person_id
|
|
114
|
+
# Returns the person ID of the steals leader
|
|
115
|
+
# @api public
|
|
116
|
+
# @example
|
|
117
|
+
# leader.stl_person_id #=> 959
|
|
118
|
+
# @return [Integer] the steals leader's person ID
|
|
119
|
+
attribute :stl_person_id, Shale::Type::Integer
|
|
120
|
+
|
|
121
|
+
# @!attribute [rw] stl_player_name
|
|
122
|
+
# Returns the name of the steals leader
|
|
123
|
+
# @api public
|
|
124
|
+
# @example
|
|
125
|
+
# leader.stl_player_name #=> "Chris Mullin"
|
|
126
|
+
# @return [String] the steals leader's name
|
|
127
|
+
attribute :stl_player_name, Shale::Type::String
|
|
128
|
+
|
|
129
|
+
# @!attribute [rw] stl
|
|
130
|
+
# Returns the total steals by the leader
|
|
131
|
+
# @api public
|
|
132
|
+
# @example
|
|
133
|
+
# leader.stl #=> 1360
|
|
134
|
+
# @return [Integer] the total steals
|
|
135
|
+
attribute :stl, Shale::Type::Integer
|
|
136
|
+
|
|
137
|
+
# Returns the team object for this franchise
|
|
138
|
+
#
|
|
139
|
+
# @api public
|
|
140
|
+
# @example
|
|
141
|
+
# leader.team #=> #<NBA::Team>
|
|
142
|
+
# @return [Team, nil] the team object
|
|
143
|
+
def team
|
|
144
|
+
Teams.find(team_id)
|
|
145
|
+
end
|
|
146
|
+
end
|
|
147
|
+
end
|