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,311 @@
|
|
|
1
|
+
require "equalizer"
|
|
2
|
+
require "shale"
|
|
3
|
+
|
|
4
|
+
module NBA
|
|
5
|
+
# Represents FanDuel infographic statistics for a player in a game
|
|
6
|
+
class InfographicFanDuelPlayerStat < Shale::Mapper
|
|
7
|
+
include Equalizer.new(:game_id, :player_id)
|
|
8
|
+
|
|
9
|
+
# @!attribute [rw] game_id
|
|
10
|
+
# Returns the game ID
|
|
11
|
+
# @api public
|
|
12
|
+
# @example
|
|
13
|
+
# stat.game_id #=> "0022400001"
|
|
14
|
+
# @return [String] the game ID
|
|
15
|
+
attribute :game_id, Shale::Type::String
|
|
16
|
+
|
|
17
|
+
# @!attribute [rw] player_id
|
|
18
|
+
# Returns the player ID
|
|
19
|
+
# @api public
|
|
20
|
+
# @example
|
|
21
|
+
# stat.player_id #=> 201939
|
|
22
|
+
# @return [Integer] the player ID
|
|
23
|
+
attribute :player_id, Shale::Type::Integer
|
|
24
|
+
|
|
25
|
+
# @!attribute [rw] player_name
|
|
26
|
+
# Returns the player name
|
|
27
|
+
# @api public
|
|
28
|
+
# @example
|
|
29
|
+
# stat.player_name #=> "Stephen Curry"
|
|
30
|
+
# @return [String] the player name
|
|
31
|
+
attribute :player_name, Shale::Type::String
|
|
32
|
+
|
|
33
|
+
# @!attribute [rw] team_id
|
|
34
|
+
# Returns the team ID
|
|
35
|
+
# @api public
|
|
36
|
+
# @example
|
|
37
|
+
# stat.team_id #=> 1610612744
|
|
38
|
+
# @return [Integer] the team ID
|
|
39
|
+
attribute :team_id, Shale::Type::Integer
|
|
40
|
+
|
|
41
|
+
# @!attribute [rw] team_name
|
|
42
|
+
# Returns the team name
|
|
43
|
+
# @api public
|
|
44
|
+
# @example
|
|
45
|
+
# stat.team_name #=> "Warriors"
|
|
46
|
+
# @return [String] the team name
|
|
47
|
+
attribute :team_name, Shale::Type::String
|
|
48
|
+
|
|
49
|
+
# @!attribute [rw] team_abbreviation
|
|
50
|
+
# Returns the team abbreviation
|
|
51
|
+
# @api public
|
|
52
|
+
# @example
|
|
53
|
+
# stat.team_abbreviation #=> "GSW"
|
|
54
|
+
# @return [String] the team abbreviation
|
|
55
|
+
attribute :team_abbreviation, Shale::Type::String
|
|
56
|
+
|
|
57
|
+
# @!attribute [rw] jersey_num
|
|
58
|
+
# Returns the jersey number
|
|
59
|
+
# @api public
|
|
60
|
+
# @example
|
|
61
|
+
# stat.jersey_num #=> "30"
|
|
62
|
+
# @return [String] the jersey number
|
|
63
|
+
attribute :jersey_num, Shale::Type::String
|
|
64
|
+
|
|
65
|
+
# @!attribute [rw] player_position
|
|
66
|
+
# Returns the player position
|
|
67
|
+
# @api public
|
|
68
|
+
# @example
|
|
69
|
+
# stat.player_position #=> "G"
|
|
70
|
+
# @return [String] the player position
|
|
71
|
+
attribute :player_position, Shale::Type::String
|
|
72
|
+
|
|
73
|
+
# @!attribute [rw] location
|
|
74
|
+
# Returns the location (home/away)
|
|
75
|
+
# @api public
|
|
76
|
+
# @example
|
|
77
|
+
# stat.location #=> "Home"
|
|
78
|
+
# @return [String] the location
|
|
79
|
+
attribute :location, Shale::Type::String
|
|
80
|
+
|
|
81
|
+
# @!attribute [rw] fan_duel_pts
|
|
82
|
+
# Returns the FanDuel fantasy points
|
|
83
|
+
# @api public
|
|
84
|
+
# @example
|
|
85
|
+
# stat.fan_duel_pts #=> 52.3
|
|
86
|
+
# @return [Float] FanDuel points
|
|
87
|
+
attribute :fan_duel_pts, Shale::Type::Float
|
|
88
|
+
|
|
89
|
+
# @!attribute [rw] nba_fantasy_pts
|
|
90
|
+
# Returns the NBA fantasy points
|
|
91
|
+
# @api public
|
|
92
|
+
# @example
|
|
93
|
+
# stat.nba_fantasy_pts #=> 48.5
|
|
94
|
+
# @return [Float] NBA fantasy points
|
|
95
|
+
attribute :nba_fantasy_pts, Shale::Type::Float
|
|
96
|
+
|
|
97
|
+
# @!attribute [rw] usg_pct
|
|
98
|
+
# Returns the usage percentage
|
|
99
|
+
# @api public
|
|
100
|
+
# @example
|
|
101
|
+
# stat.usg_pct #=> 0.312
|
|
102
|
+
# @return [Float] usage percentage
|
|
103
|
+
attribute :usg_pct, Shale::Type::Float
|
|
104
|
+
|
|
105
|
+
# @!attribute [rw] min
|
|
106
|
+
# Returns the minutes played
|
|
107
|
+
# @api public
|
|
108
|
+
# @example
|
|
109
|
+
# stat.min #=> 34.5
|
|
110
|
+
# @return [Float] minutes
|
|
111
|
+
attribute :min, Shale::Type::Float
|
|
112
|
+
|
|
113
|
+
# @!attribute [rw] fgm
|
|
114
|
+
# Returns the field goals made
|
|
115
|
+
# @api public
|
|
116
|
+
# @example
|
|
117
|
+
# stat.fgm #=> 10
|
|
118
|
+
# @return [Integer] field goals made
|
|
119
|
+
attribute :fgm, Shale::Type::Integer
|
|
120
|
+
|
|
121
|
+
# @!attribute [rw] fga
|
|
122
|
+
# Returns the field goals attempted
|
|
123
|
+
# @api public
|
|
124
|
+
# @example
|
|
125
|
+
# stat.fga #=> 20
|
|
126
|
+
# @return [Integer] field goals attempted
|
|
127
|
+
attribute :fga, Shale::Type::Integer
|
|
128
|
+
|
|
129
|
+
# @!attribute [rw] fg_pct
|
|
130
|
+
# Returns the field goal percentage
|
|
131
|
+
# @api public
|
|
132
|
+
# @example
|
|
133
|
+
# stat.fg_pct #=> 0.500
|
|
134
|
+
# @return [Float] field goal percentage
|
|
135
|
+
attribute :fg_pct, Shale::Type::Float
|
|
136
|
+
|
|
137
|
+
# @!attribute [rw] fg3m
|
|
138
|
+
# Returns the three-pointers made
|
|
139
|
+
# @api public
|
|
140
|
+
# @example
|
|
141
|
+
# stat.fg3m #=> 5
|
|
142
|
+
# @return [Integer] three-pointers made
|
|
143
|
+
attribute :fg3m, Shale::Type::Integer
|
|
144
|
+
|
|
145
|
+
# @!attribute [rw] fg3a
|
|
146
|
+
# Returns the three-pointers attempted
|
|
147
|
+
# @api public
|
|
148
|
+
# @example
|
|
149
|
+
# stat.fg3a #=> 11
|
|
150
|
+
# @return [Integer] three-pointers attempted
|
|
151
|
+
attribute :fg3a, Shale::Type::Integer
|
|
152
|
+
|
|
153
|
+
# @!attribute [rw] fg3_pct
|
|
154
|
+
# Returns the three-point percentage
|
|
155
|
+
# @api public
|
|
156
|
+
# @example
|
|
157
|
+
# stat.fg3_pct #=> 0.455
|
|
158
|
+
# @return [Float] three-point percentage
|
|
159
|
+
attribute :fg3_pct, Shale::Type::Float
|
|
160
|
+
|
|
161
|
+
# @!attribute [rw] ftm
|
|
162
|
+
# Returns the free throws made
|
|
163
|
+
# @api public
|
|
164
|
+
# @example
|
|
165
|
+
# stat.ftm #=> 5
|
|
166
|
+
# @return [Integer] free throws made
|
|
167
|
+
attribute :ftm, Shale::Type::Integer
|
|
168
|
+
|
|
169
|
+
# @!attribute [rw] fta
|
|
170
|
+
# Returns the free throws attempted
|
|
171
|
+
# @api public
|
|
172
|
+
# @example
|
|
173
|
+
# stat.fta #=> 6
|
|
174
|
+
# @return [Integer] free throws attempted
|
|
175
|
+
attribute :fta, Shale::Type::Integer
|
|
176
|
+
|
|
177
|
+
# @!attribute [rw] ft_pct
|
|
178
|
+
# Returns the free throw percentage
|
|
179
|
+
# @api public
|
|
180
|
+
# @example
|
|
181
|
+
# stat.ft_pct #=> 0.833
|
|
182
|
+
# @return [Float] free throw percentage
|
|
183
|
+
attribute :ft_pct, Shale::Type::Float
|
|
184
|
+
|
|
185
|
+
# @!attribute [rw] oreb
|
|
186
|
+
# Returns the offensive rebounds
|
|
187
|
+
# @api public
|
|
188
|
+
# @example
|
|
189
|
+
# stat.oreb #=> 1
|
|
190
|
+
# @return [Integer] offensive rebounds
|
|
191
|
+
attribute :oreb, Shale::Type::Integer
|
|
192
|
+
|
|
193
|
+
# @!attribute [rw] dreb
|
|
194
|
+
# Returns the defensive rebounds
|
|
195
|
+
# @api public
|
|
196
|
+
# @example
|
|
197
|
+
# stat.dreb #=> 5
|
|
198
|
+
# @return [Integer] defensive rebounds
|
|
199
|
+
attribute :dreb, Shale::Type::Integer
|
|
200
|
+
|
|
201
|
+
# @!attribute [rw] reb
|
|
202
|
+
# Returns the total rebounds
|
|
203
|
+
# @api public
|
|
204
|
+
# @example
|
|
205
|
+
# stat.reb #=> 6
|
|
206
|
+
# @return [Integer] total rebounds
|
|
207
|
+
attribute :reb, Shale::Type::Integer
|
|
208
|
+
|
|
209
|
+
# @!attribute [rw] ast
|
|
210
|
+
# Returns the assists
|
|
211
|
+
# @api public
|
|
212
|
+
# @example
|
|
213
|
+
# stat.ast #=> 8
|
|
214
|
+
# @return [Integer] assists
|
|
215
|
+
attribute :ast, Shale::Type::Integer
|
|
216
|
+
|
|
217
|
+
# @!attribute [rw] tov
|
|
218
|
+
# Returns the turnovers
|
|
219
|
+
# @api public
|
|
220
|
+
# @example
|
|
221
|
+
# stat.tov #=> 3
|
|
222
|
+
# @return [Integer] turnovers
|
|
223
|
+
attribute :tov, Shale::Type::Integer
|
|
224
|
+
|
|
225
|
+
# @!attribute [rw] stl
|
|
226
|
+
# Returns the steals
|
|
227
|
+
# @api public
|
|
228
|
+
# @example
|
|
229
|
+
# stat.stl #=> 2
|
|
230
|
+
# @return [Integer] steals
|
|
231
|
+
attribute :stl, Shale::Type::Integer
|
|
232
|
+
|
|
233
|
+
# @!attribute [rw] blk
|
|
234
|
+
# Returns the blocks
|
|
235
|
+
# @api public
|
|
236
|
+
# @example
|
|
237
|
+
# stat.blk #=> 0
|
|
238
|
+
# @return [Integer] blocks
|
|
239
|
+
attribute :blk, Shale::Type::Integer
|
|
240
|
+
|
|
241
|
+
# @!attribute [rw] blka
|
|
242
|
+
# Returns the blocked attempts
|
|
243
|
+
# @api public
|
|
244
|
+
# @example
|
|
245
|
+
# stat.blka #=> 1
|
|
246
|
+
# @return [Integer] blocked attempts
|
|
247
|
+
attribute :blka, Shale::Type::Integer
|
|
248
|
+
|
|
249
|
+
# @!attribute [rw] pf
|
|
250
|
+
# Returns the personal fouls
|
|
251
|
+
# @api public
|
|
252
|
+
# @example
|
|
253
|
+
# stat.pf #=> 2
|
|
254
|
+
# @return [Integer] personal fouls
|
|
255
|
+
attribute :pf, Shale::Type::Integer
|
|
256
|
+
|
|
257
|
+
# @!attribute [rw] pfd
|
|
258
|
+
# Returns the personal fouls drawn
|
|
259
|
+
# @api public
|
|
260
|
+
# @example
|
|
261
|
+
# stat.pfd #=> 4
|
|
262
|
+
# @return [Integer] personal fouls drawn
|
|
263
|
+
attribute :pfd, Shale::Type::Integer
|
|
264
|
+
|
|
265
|
+
# @!attribute [rw] pts
|
|
266
|
+
# Returns the points scored
|
|
267
|
+
# @api public
|
|
268
|
+
# @example
|
|
269
|
+
# stat.pts #=> 30
|
|
270
|
+
# @return [Integer] points
|
|
271
|
+
attribute :pts, Shale::Type::Integer
|
|
272
|
+
|
|
273
|
+
# @!attribute [rw] plus_minus
|
|
274
|
+
# Returns the plus/minus
|
|
275
|
+
# @api public
|
|
276
|
+
# @example
|
|
277
|
+
# stat.plus_minus #=> 15
|
|
278
|
+
# @return [Integer] plus/minus
|
|
279
|
+
attribute :plus_minus, Shale::Type::Integer
|
|
280
|
+
|
|
281
|
+
# Returns the player object
|
|
282
|
+
#
|
|
283
|
+
# @api public
|
|
284
|
+
# @example
|
|
285
|
+
# stat.player #=> #<NBA::Player>
|
|
286
|
+
# @return [Player, nil] the player object
|
|
287
|
+
def player
|
|
288
|
+
Players.find(player_id)
|
|
289
|
+
end
|
|
290
|
+
|
|
291
|
+
# Returns the team object
|
|
292
|
+
#
|
|
293
|
+
# @api public
|
|
294
|
+
# @example
|
|
295
|
+
# stat.team #=> #<NBA::Team>
|
|
296
|
+
# @return [Team, nil] the team object
|
|
297
|
+
def team
|
|
298
|
+
Teams.find(team_id)
|
|
299
|
+
end
|
|
300
|
+
|
|
301
|
+
# Returns the game object
|
|
302
|
+
#
|
|
303
|
+
# @api public
|
|
304
|
+
# @example
|
|
305
|
+
# stat.game #=> #<NBA::Game>
|
|
306
|
+
# @return [Game, nil] the game object
|
|
307
|
+
def game
|
|
308
|
+
Games.find(game_id)
|
|
309
|
+
end
|
|
310
|
+
end
|
|
311
|
+
end
|
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
require "equalizer"
|
|
2
|
+
require "shale"
|
|
3
|
+
require_relative "teams"
|
|
4
|
+
|
|
5
|
+
module NBA
|
|
6
|
+
# Represents an In-Season Tournament standing entry
|
|
7
|
+
class IstStanding < Shale::Mapper
|
|
8
|
+
include Equalizer.new(:team_id, :season_id)
|
|
9
|
+
|
|
10
|
+
# @!attribute [rw] season_id
|
|
11
|
+
# Returns the season ID
|
|
12
|
+
# @api public
|
|
13
|
+
# @example
|
|
14
|
+
# standing.season_id #=> "2023-24"
|
|
15
|
+
# @return [String] the season ID
|
|
16
|
+
attribute :season_id, Shale::Type::String
|
|
17
|
+
|
|
18
|
+
# @!attribute [rw] team_id
|
|
19
|
+
# Returns the team ID
|
|
20
|
+
# @api public
|
|
21
|
+
# @example
|
|
22
|
+
# standing.team_id #=> 1610612747
|
|
23
|
+
# @return [Integer] the team ID
|
|
24
|
+
attribute :team_id, Shale::Type::Integer
|
|
25
|
+
|
|
26
|
+
# @!attribute [rw] team_city
|
|
27
|
+
# Returns the team city
|
|
28
|
+
# @api public
|
|
29
|
+
# @example
|
|
30
|
+
# standing.team_city #=> "Los Angeles"
|
|
31
|
+
# @return [String] the team city
|
|
32
|
+
attribute :team_city, Shale::Type::String
|
|
33
|
+
|
|
34
|
+
# @!attribute [rw] team_name
|
|
35
|
+
# Returns the team name
|
|
36
|
+
# @api public
|
|
37
|
+
# @example
|
|
38
|
+
# standing.team_name #=> "Lakers"
|
|
39
|
+
# @return [String] the team name
|
|
40
|
+
attribute :team_name, Shale::Type::String
|
|
41
|
+
|
|
42
|
+
# @!attribute [rw] team_abbreviation
|
|
43
|
+
# Returns the team abbreviation
|
|
44
|
+
# @api public
|
|
45
|
+
# @example
|
|
46
|
+
# standing.team_abbreviation #=> "LAL"
|
|
47
|
+
# @return [String] the team abbreviation
|
|
48
|
+
attribute :team_abbreviation, Shale::Type::String
|
|
49
|
+
|
|
50
|
+
# @!attribute [rw] team_slug
|
|
51
|
+
# Returns the team slug
|
|
52
|
+
# @api public
|
|
53
|
+
# @example
|
|
54
|
+
# standing.team_slug #=> "lakers"
|
|
55
|
+
# @return [String] the team slug
|
|
56
|
+
attribute :team_slug, Shale::Type::String
|
|
57
|
+
|
|
58
|
+
# @!attribute [rw] conference
|
|
59
|
+
# Returns the conference
|
|
60
|
+
# @api public
|
|
61
|
+
# @example
|
|
62
|
+
# standing.conference #=> "West"
|
|
63
|
+
# @return [String] the conference
|
|
64
|
+
attribute :conference, Shale::Type::String
|
|
65
|
+
|
|
66
|
+
# @!attribute [rw] ist_group
|
|
67
|
+
# Returns the IST group
|
|
68
|
+
# @api public
|
|
69
|
+
# @example
|
|
70
|
+
# standing.ist_group #=> "West Group A"
|
|
71
|
+
# @return [String] the IST group
|
|
72
|
+
attribute :ist_group, Shale::Type::String
|
|
73
|
+
|
|
74
|
+
# @!attribute [rw] ist_group_rank
|
|
75
|
+
# Returns the rank within IST group
|
|
76
|
+
# @api public
|
|
77
|
+
# @example
|
|
78
|
+
# standing.ist_group_rank #=> 1
|
|
79
|
+
# @return [Integer] the IST group rank
|
|
80
|
+
attribute :ist_group_rank, Shale::Type::Integer
|
|
81
|
+
|
|
82
|
+
# @!attribute [rw] wins
|
|
83
|
+
# Returns the number of wins
|
|
84
|
+
# @api public
|
|
85
|
+
# @example
|
|
86
|
+
# standing.wins #=> 3
|
|
87
|
+
# @return [Integer] the number of wins
|
|
88
|
+
attribute :wins, Shale::Type::Integer
|
|
89
|
+
|
|
90
|
+
# @!attribute [rw] losses
|
|
91
|
+
# Returns the number of losses
|
|
92
|
+
# @api public
|
|
93
|
+
# @example
|
|
94
|
+
# standing.losses #=> 1
|
|
95
|
+
# @return [Integer] the number of losses
|
|
96
|
+
attribute :losses, Shale::Type::Integer
|
|
97
|
+
|
|
98
|
+
# @!attribute [rw] win_pct
|
|
99
|
+
# Returns the win percentage
|
|
100
|
+
# @api public
|
|
101
|
+
# @example
|
|
102
|
+
# standing.win_pct #=> 0.750
|
|
103
|
+
# @return [Float] the win percentage
|
|
104
|
+
attribute :win_pct, Shale::Type::Float
|
|
105
|
+
|
|
106
|
+
# @!attribute [rw] pts_for
|
|
107
|
+
# Returns total points scored
|
|
108
|
+
# @api public
|
|
109
|
+
# @example
|
|
110
|
+
# standing.pts_for #=> 450
|
|
111
|
+
# @return [Integer] points scored
|
|
112
|
+
attribute :pts_for, Shale::Type::Integer
|
|
113
|
+
|
|
114
|
+
# @!attribute [rw] pts_against
|
|
115
|
+
# Returns total points allowed
|
|
116
|
+
# @api public
|
|
117
|
+
# @example
|
|
118
|
+
# standing.pts_against #=> 420
|
|
119
|
+
# @return [Integer] points allowed
|
|
120
|
+
attribute :pts_against, Shale::Type::Integer
|
|
121
|
+
|
|
122
|
+
# @!attribute [rw] pts_diff
|
|
123
|
+
# Returns the point differential
|
|
124
|
+
# @api public
|
|
125
|
+
# @example
|
|
126
|
+
# standing.pts_diff #=> 30
|
|
127
|
+
# @return [Integer] the point differential
|
|
128
|
+
attribute :pts_diff, Shale::Type::Integer
|
|
129
|
+
|
|
130
|
+
# @!attribute [rw] clinch_indicator
|
|
131
|
+
# Returns the clinch indicator
|
|
132
|
+
# @api public
|
|
133
|
+
# @example
|
|
134
|
+
# standing.clinch_indicator #=> "z"
|
|
135
|
+
# @return [String] the clinch indicator
|
|
136
|
+
attribute :clinch_indicator, Shale::Type::String
|
|
137
|
+
|
|
138
|
+
# Returns the team object
|
|
139
|
+
#
|
|
140
|
+
# @api public
|
|
141
|
+
# @example
|
|
142
|
+
# standing.team #=> #<NBA::Team>
|
|
143
|
+
# @return [Team, nil] the team object
|
|
144
|
+
def team
|
|
145
|
+
Teams.find(team_id)
|
|
146
|
+
end
|
|
147
|
+
|
|
148
|
+
json do
|
|
149
|
+
map "season_id", to: :season_id
|
|
150
|
+
map "team_id", to: :team_id
|
|
151
|
+
map "team_city", to: :team_city
|
|
152
|
+
map "team_name", to: :team_name
|
|
153
|
+
map "team_abbreviation", to: :team_abbreviation
|
|
154
|
+
map "team_slug", to: :team_slug
|
|
155
|
+
map "conference", to: :conference
|
|
156
|
+
map "ist_group", to: :ist_group
|
|
157
|
+
map "ist_group_rank", to: :ist_group_rank
|
|
158
|
+
map "wins", to: :wins
|
|
159
|
+
map "losses", to: :losses
|
|
160
|
+
map "win_pct", to: :win_pct
|
|
161
|
+
map "pts_for", to: :pts_for
|
|
162
|
+
map "pts_against", to: :pts_against
|
|
163
|
+
map "pts_diff", to: :pts_diff
|
|
164
|
+
map "clinch_indicator", to: :clinch_indicator
|
|
165
|
+
end
|
|
166
|
+
end
|
|
167
|
+
end
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
require "json"
|
|
2
|
+
require_relative "client"
|
|
3
|
+
require_relative "collection"
|
|
4
|
+
require_relative "ist_standing"
|
|
5
|
+
require_relative "response_parser"
|
|
6
|
+
require_relative "utils"
|
|
7
|
+
|
|
8
|
+
module NBA
|
|
9
|
+
# Provides methods to retrieve NBA In-Season Tournament standings
|
|
10
|
+
module IstStandings
|
|
11
|
+
# Result set name for IST standings
|
|
12
|
+
# @return [String] the result set name
|
|
13
|
+
RESULT_SET = "Standings".freeze
|
|
14
|
+
|
|
15
|
+
# Retrieves In-Season Tournament standings for a season
|
|
16
|
+
#
|
|
17
|
+
# @api public
|
|
18
|
+
# @example
|
|
19
|
+
# standings = NBA::IstStandings.all(season: 2023)
|
|
20
|
+
# standings.each { |s| puts "#{s.team_name}: #{s.wins}-#{s.losses}" }
|
|
21
|
+
# @param season [Integer] the season year (defaults to current season)
|
|
22
|
+
# @param league [String, League] the league ID or League object (default NBA)
|
|
23
|
+
# @param client [Client] the API client to use
|
|
24
|
+
# @return [Collection] a collection of IST standings
|
|
25
|
+
def self.all(season: Utils.current_season, league: League::NBA, client: CLIENT)
|
|
26
|
+
league_id = Utils.extract_league_id(league)
|
|
27
|
+
path = build_path(season, league_id)
|
|
28
|
+
ResponseParser.parse(client.get(path), result_set: RESULT_SET) { |data| build_standing(data) }
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
# Builds the API request path
|
|
32
|
+
# @api private
|
|
33
|
+
# @return [String] the request path
|
|
34
|
+
def self.build_path(season, league_id)
|
|
35
|
+
"iststandings?LeagueID=#{league_id}&Season=#{Utils.format_season(season)}"
|
|
36
|
+
end
|
|
37
|
+
private_class_method :build_path
|
|
38
|
+
|
|
39
|
+
# Builds an IstStanding object from raw data
|
|
40
|
+
# @api private
|
|
41
|
+
# @param data [Hash] the row data
|
|
42
|
+
# @return [IstStanding] the standing object
|
|
43
|
+
def self.build_standing(data)
|
|
44
|
+
IstStanding.new(**team_attrs(data), **record_attrs(data), **pts_attrs(data))
|
|
45
|
+
end
|
|
46
|
+
private_class_method :build_standing
|
|
47
|
+
|
|
48
|
+
# Extracts team attributes from data
|
|
49
|
+
# @api private
|
|
50
|
+
# @param data [Hash] the row data
|
|
51
|
+
# @return [Hash] team attributes
|
|
52
|
+
def self.team_attrs(data)
|
|
53
|
+
{season_id: data["SEASON_ID"], team_id: data["TEAM_ID"],
|
|
54
|
+
team_city: data["TEAM_CITY"], team_name: data["TEAM_NAME"],
|
|
55
|
+
team_abbreviation: data["TEAM_ABBREVIATION"], team_slug: data["TEAM_SLUG"],
|
|
56
|
+
conference: data["CONFERENCE"], ist_group: data["IST_GROUP"]}
|
|
57
|
+
end
|
|
58
|
+
private_class_method :team_attrs
|
|
59
|
+
|
|
60
|
+
# Extracts record attributes from data
|
|
61
|
+
# @api private
|
|
62
|
+
# @param data [Hash] the row data
|
|
63
|
+
# @return [Hash] record attributes
|
|
64
|
+
def self.record_attrs(data)
|
|
65
|
+
{ist_group_rank: data["IST_GROUP_RANK"], wins: data["WINS"],
|
|
66
|
+
losses: data["LOSSES"], win_pct: data["WIN_PCT"],
|
|
67
|
+
clinch_indicator: data["CLINCH_INDICATOR"]}
|
|
68
|
+
end
|
|
69
|
+
private_class_method :record_attrs
|
|
70
|
+
|
|
71
|
+
# Extracts point attributes from data
|
|
72
|
+
# @api private
|
|
73
|
+
# @param data [Hash] the row data
|
|
74
|
+
# @return [Hash] point attributes
|
|
75
|
+
def self.pts_attrs(data)
|
|
76
|
+
{pts_for: data["PTS_FOR"], pts_against: data["PTS_AGAINST"],
|
|
77
|
+
pts_diff: data["PTS_DIFF"]}
|
|
78
|
+
end
|
|
79
|
+
private_class_method :pts_attrs
|
|
80
|
+
end
|
|
81
|
+
end
|
data/lib/nba/leader.rb
ADDED
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
require "equalizer"
|
|
2
|
+
require "shale"
|
|
3
|
+
require_relative "players"
|
|
4
|
+
require_relative "teams"
|
|
5
|
+
|
|
6
|
+
module NBA
|
|
7
|
+
# Represents a statistical leader entry
|
|
8
|
+
class Leader < Shale::Mapper
|
|
9
|
+
include Equalizer.new(:player_id, :category)
|
|
10
|
+
|
|
11
|
+
# @!attribute [rw] player_id
|
|
12
|
+
# Returns the player ID
|
|
13
|
+
# @api public
|
|
14
|
+
# @example
|
|
15
|
+
# leader.player_id #=> 201939
|
|
16
|
+
# @return [Integer] the player ID
|
|
17
|
+
attribute :player_id, Shale::Type::Integer
|
|
18
|
+
|
|
19
|
+
# @!attribute [rw] player_name
|
|
20
|
+
# Returns the player name
|
|
21
|
+
# @api public
|
|
22
|
+
# @example
|
|
23
|
+
# leader.player_name #=> "Stephen Curry"
|
|
24
|
+
# @return [String] the player name
|
|
25
|
+
attribute :player_name, Shale::Type::String
|
|
26
|
+
|
|
27
|
+
# @!attribute [rw] team_id
|
|
28
|
+
# Returns the team ID
|
|
29
|
+
# @api public
|
|
30
|
+
# @example
|
|
31
|
+
# leader.team_id #=> 1610612744
|
|
32
|
+
# @return [Integer] the team ID
|
|
33
|
+
attribute :team_id, Shale::Type::Integer
|
|
34
|
+
|
|
35
|
+
# @!attribute [rw] team_abbreviation
|
|
36
|
+
# Returns the team abbreviation
|
|
37
|
+
# @api public
|
|
38
|
+
# @example
|
|
39
|
+
# leader.team_abbreviation #=> "GSW"
|
|
40
|
+
# @return [String] the team abbreviation
|
|
41
|
+
attribute :team_abbreviation, Shale::Type::String
|
|
42
|
+
|
|
43
|
+
# @!attribute [rw] category
|
|
44
|
+
# Returns the statistical category
|
|
45
|
+
# @api public
|
|
46
|
+
# @example
|
|
47
|
+
# leader.category #=> "PTS"
|
|
48
|
+
# @return [String] the statistical category
|
|
49
|
+
attribute :category, Shale::Type::String
|
|
50
|
+
|
|
51
|
+
# @!attribute [rw] rank
|
|
52
|
+
# Returns the rank in the category
|
|
53
|
+
# @api public
|
|
54
|
+
# @example
|
|
55
|
+
# leader.rank #=> 1
|
|
56
|
+
# @return [Integer] the rank
|
|
57
|
+
attribute :rank, Shale::Type::Integer
|
|
58
|
+
|
|
59
|
+
# @!attribute [rw] value
|
|
60
|
+
# Returns the statistical value
|
|
61
|
+
# @api public
|
|
62
|
+
# @example
|
|
63
|
+
# leader.value #=> 32.4
|
|
64
|
+
# @return [Float] the statistical value
|
|
65
|
+
attribute :value, Shale::Type::Float
|
|
66
|
+
|
|
67
|
+
# Returns the player object for this leader
|
|
68
|
+
#
|
|
69
|
+
# @api public
|
|
70
|
+
# @example
|
|
71
|
+
# leader.player #=> #<NBA::Player>
|
|
72
|
+
# leader.player.college #=> "Davidson"
|
|
73
|
+
# @return [Player, nil] the hydrated player object
|
|
74
|
+
def player
|
|
75
|
+
Players.find(player_id)
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
# Returns the team object for this leader
|
|
79
|
+
#
|
|
80
|
+
# @api public
|
|
81
|
+
# @example
|
|
82
|
+
# leader.team #=> #<NBA::Team>
|
|
83
|
+
# leader.team.name #=> "Golden State Warriors"
|
|
84
|
+
# @return [Team, nil] the team object
|
|
85
|
+
def team
|
|
86
|
+
Teams.find(team_id)
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
json do
|
|
90
|
+
map "player_id", to: :player_id
|
|
91
|
+
map "playerId", to: :player_id
|
|
92
|
+
map "player_name", to: :player_name
|
|
93
|
+
map "playerName", to: :player_name
|
|
94
|
+
map "team_id", to: :team_id
|
|
95
|
+
map "teamId", to: :team_id
|
|
96
|
+
map "team_abbreviation", to: :team_abbreviation
|
|
97
|
+
map "teamAbbreviation", to: :team_abbreviation
|
|
98
|
+
map "category", to: :category
|
|
99
|
+
map "rank", to: :rank
|
|
100
|
+
map "value", to: :value
|
|
101
|
+
end
|
|
102
|
+
end
|
|
103
|
+
end
|