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.
Files changed (321) hide show
  1. checksums.yaml +5 -5
  2. data/AGENTS.md +362 -0
  3. data/CHANGELOG.md +169 -0
  4. data/CLAUDE.md +1 -0
  5. data/LICENSE +21 -0
  6. data/README.md +501 -101
  7. data/bin/console +10 -0
  8. data/bin/setup +6 -0
  9. data/exe/nba +8 -0
  10. data/lib/nba/all_time_leader.rb +77 -0
  11. data/lib/nba/all_time_leaders.rb +185 -0
  12. data/lib/nba/assist_leader.rb +92 -0
  13. data/lib/nba/assist_leaders.rb +64 -0
  14. data/lib/nba/assist_tracker.rb +108 -0
  15. data/lib/nba/assist_tracker_entry.rb +206 -0
  16. data/lib/nba/award.rb +128 -0
  17. data/lib/nba/box_score.rb +2 -0
  18. data/lib/nba/box_score_advanced.rb +114 -0
  19. data/lib/nba/box_score_advanced_player_stat.rb +297 -0
  20. data/lib/nba/box_score_advanced_team_stat.rb +237 -0
  21. data/lib/nba/box_score_advanced_v3.rb +124 -0
  22. data/lib/nba/box_score_defensive_player_stat.rb +281 -0
  23. data/lib/nba/box_score_defensive_team_stat.rb +85 -0
  24. data/lib/nba/box_score_defensive_v2.rb +190 -0
  25. data/lib/nba/box_score_four_factors.rb +91 -0
  26. data/lib/nba/box_score_four_factors_player_stat.rb +185 -0
  27. data/lib/nba/box_score_four_factors_team_stat.rb +141 -0
  28. data/lib/nba/box_score_four_factors_v3.rb +133 -0
  29. data/lib/nba/box_score_hustle.rb +226 -0
  30. data/lib/nba/box_score_hustle_player_stat.rb +233 -0
  31. data/lib/nba/box_score_hustle_team_stat.rb +189 -0
  32. data/lib/nba/box_score_matchup_stat.rb +417 -0
  33. data/lib/nba/box_score_matchups_v3.rb +184 -0
  34. data/lib/nba/box_score_misc.rb +100 -0
  35. data/lib/nba/box_score_misc_player_stat.rb +217 -0
  36. data/lib/nba/box_score_misc_team_stat.rb +173 -0
  37. data/lib/nba/box_score_misc_v3.rb +163 -0
  38. data/lib/nba/box_score_player_stat.rb +273 -0
  39. data/lib/nba/box_score_player_track.rb +223 -0
  40. data/lib/nba/box_score_player_track_stat.rb +273 -0
  41. data/lib/nba/box_score_player_track_team_stat.rb +229 -0
  42. data/lib/nba/box_score_scoring.rb +103 -0
  43. data/lib/nba/box_score_scoring_player_stat.rb +241 -0
  44. data/lib/nba/box_score_scoring_team_stat.rb +197 -0
  45. data/lib/nba/box_score_scoring_v3.rb +170 -0
  46. data/lib/nba/box_score_similarity_score.rb +119 -0
  47. data/lib/nba/box_score_similarity_stat.rb +76 -0
  48. data/lib/nba/box_score_starter_bench_stat.rb +257 -0
  49. data/lib/nba/box_score_summary.rb +285 -0
  50. data/lib/nba/box_score_summary_v2.rb +202 -0
  51. data/lib/nba/box_score_summary_v3.rb +120 -0
  52. data/lib/nba/box_score_summary_v3_data.rb +419 -0
  53. data/lib/nba/box_score_team_stat.rb +229 -0
  54. data/lib/nba/box_score_traditional.rb +101 -0
  55. data/lib/nba/box_score_traditional_v3.rb +195 -0
  56. data/lib/nba/box_score_usage.rb +102 -0
  57. data/lib/nba/box_score_usage_player_stat.rb +265 -0
  58. data/lib/nba/box_score_usage_team_stat.rb +221 -0
  59. data/lib/nba/box_score_usage_v3.rb +169 -0
  60. data/lib/nba/box_score_v3_helpers.rb +144 -0
  61. data/lib/nba/career_stats.rb +217 -0
  62. data/lib/nba/cli/display/player_display.rb +98 -0
  63. data/lib/nba/cli/display.rb +178 -0
  64. data/lib/nba/cli/formatters/game_formatters.rb +86 -0
  65. data/lib/nba/cli/formatters/leaders_formatters.rb +26 -0
  66. data/lib/nba/cli/formatters/player_formatters.rb +52 -0
  67. data/lib/nba/cli/formatters/standings_formatters.rb +26 -0
  68. data/lib/nba/cli/formatters/team_formatters.rb +67 -0
  69. data/lib/nba/cli/formatters/time_formatters.rb +82 -0
  70. data/lib/nba/cli/formatters.rb +56 -0
  71. data/lib/nba/cli/helpers.rb +135 -0
  72. data/lib/nba/cli.rb +171 -20
  73. data/lib/nba/client.rb +35 -0
  74. data/lib/nba/collection.rb +89 -0
  75. data/lib/nba/college_player_stat.rb +200 -0
  76. data/lib/nba/common_player_info.rb +142 -0
  77. data/lib/nba/common_playoff_series.rb +90 -0
  78. data/lib/nba/common_team_years.rb +113 -0
  79. data/lib/nba/conference.rb +39 -0
  80. data/lib/nba/connection.rb +84 -0
  81. data/lib/nba/cume_stats_player.rb +358 -0
  82. data/lib/nba/cume_stats_player_game.rb +217 -0
  83. data/lib/nba/cume_stats_player_games.rb +99 -0
  84. data/lib/nba/cume_stats_player_games_entry.rb +25 -0
  85. data/lib/nba/cume_stats_player_total.rb +481 -0
  86. data/lib/nba/cume_stats_team.rb +349 -0
  87. data/lib/nba/cume_stats_team_games.rb +145 -0
  88. data/lib/nba/cume_stats_team_games_entry.rb +25 -0
  89. data/lib/nba/cume_stats_team_player.rb +485 -0
  90. data/lib/nba/cume_stats_team_total.rb +267 -0
  91. data/lib/nba/data.rb +73 -0
  92. data/lib/nba/defense_hub.rb +109 -0
  93. data/lib/nba/defense_hub_stat.rb +57 -0
  94. data/lib/nba/defensive_shot_stat.rb +102 -0
  95. data/lib/nba/division.rb +49 -0
  96. data/lib/nba/draft_board.rb +126 -0
  97. data/lib/nba/draft_board_pick.rb +173 -0
  98. data/lib/nba/draft_combine_anthro_measurement.rb +163 -0
  99. data/lib/nba/draft_combine_drill_result.rb +115 -0
  100. data/lib/nba/draft_combine_drill_results.rb +112 -0
  101. data/lib/nba/draft_combine_non_stationary_shooting.rb +268 -0
  102. data/lib/nba/draft_combine_non_stationary_shooting_result.rb +355 -0
  103. data/lib/nba/draft_combine_player_anthro.rb +133 -0
  104. data/lib/nba/draft_combine_spot_shooting.rb +243 -0
  105. data/lib/nba/draft_combine_spot_shooting_result.rb +419 -0
  106. data/lib/nba/draft_combine_stat.rb +211 -0
  107. data/lib/nba/draft_combine_stats.rb +160 -0
  108. data/lib/nba/draft_history.rb +142 -0
  109. data/lib/nba/draft_pick.rb +154 -0
  110. data/lib/nba/dunk_score_leader.rb +93 -0
  111. data/lib/nba/dunk_score_leaders.rb +77 -0
  112. data/lib/nba/estimated_metrics_stat.rb +152 -0
  113. data/lib/nba/fantasy_profile_stat.rb +142 -0
  114. data/lib/nba/fantasy_widget.rb +72 -0
  115. data/lib/nba/fantasy_widget_player.rb +98 -0
  116. data/lib/nba/found_game.rb +260 -0
  117. data/lib/nba/franchise.rb +136 -0
  118. data/lib/nba/franchise_history.rb +142 -0
  119. data/lib/nba/franchise_leader.rb +147 -0
  120. data/lib/nba/franchise_leaders.rb +162 -0
  121. data/lib/nba/franchise_player.rb +224 -0
  122. data/lib/nba/franchise_players.rb +147 -0
  123. data/lib/nba/game.rb +80 -64
  124. data/lib/nba/game_log.rb +349 -0
  125. data/lib/nba/game_rotation.rb +152 -0
  126. data/lib/nba/game_streak.rb +102 -0
  127. data/lib/nba/games.rb +46 -0
  128. data/lib/nba/home_page_leader.rb +99 -0
  129. data/lib/nba/home_page_leaders.rb +75 -0
  130. data/lib/nba/home_page_stat.rb +57 -0
  131. data/lib/nba/home_page_v2.rb +110 -0
  132. data/lib/nba/hustle_stats_box_score.rb +182 -0
  133. data/lib/nba/infographic_fan_duel_player.rb +139 -0
  134. data/lib/nba/infographic_fan_duel_player_stat.rb +311 -0
  135. data/lib/nba/ist_standing.rb +167 -0
  136. data/lib/nba/ist_standings.rb +81 -0
  137. data/lib/nba/leader.rb +103 -0
  138. data/lib/nba/leaders.rb +110 -0
  139. data/lib/nba/leaders_tile.rb +57 -0
  140. data/lib/nba/leaders_tiles.rb +90 -0
  141. data/lib/nba/league.rb +37 -0
  142. data/lib/nba/league_dash_lineup_stat.rb +270 -0
  143. data/lib/nba/league_dash_lineups.rb +177 -0
  144. data/lib/nba/league_dash_opp_pt_shot.rb +150 -0
  145. data/lib/nba/league_dash_player_bio_stat.rb +217 -0
  146. data/lib/nba/league_dash_player_bio_stats.rb +164 -0
  147. data/lib/nba/league_dash_player_clutch.rb +212 -0
  148. data/lib/nba/league_dash_player_clutch_stat.rb +271 -0
  149. data/lib/nba/league_dash_player_pt_shot.rb +152 -0
  150. data/lib/nba/league_dash_player_pt_shot_stat.rb +193 -0
  151. data/lib/nba/league_dash_player_shot_location_stat.rb +265 -0
  152. data/lib/nba/league_dash_player_shot_locations.rb +210 -0
  153. data/lib/nba/league_dash_player_stat.rb +306 -0
  154. data/lib/nba/league_dash_player_stats.rb +176 -0
  155. data/lib/nba/league_dash_pt_defend.rb +160 -0
  156. data/lib/nba/league_dash_pt_defend_stat.rb +145 -0
  157. data/lib/nba/league_dash_pt_stats.rb +152 -0
  158. data/lib/nba/league_dash_pt_stats_stat.rb +169 -0
  159. data/lib/nba/league_dash_pt_team_defend.rb +158 -0
  160. data/lib/nba/league_dash_pt_team_defend_stat.rb +110 -0
  161. data/lib/nba/league_dash_team_clutch.rb +211 -0
  162. data/lib/nba/league_dash_team_clutch_stat.rb +237 -0
  163. data/lib/nba/league_dash_team_pt_shot.rb +150 -0
  164. data/lib/nba/league_dash_team_pt_shot_stat.rb +166 -0
  165. data/lib/nba/league_dash_team_shot_location_stat.rb +230 -0
  166. data/lib/nba/league_dash_team_shot_locations.rb +208 -0
  167. data/lib/nba/league_dash_team_stat.rb +275 -0
  168. data/lib/nba/league_dash_team_stats.rb +172 -0
  169. data/lib/nba/league_game_finder.rb +170 -0
  170. data/lib/nba/league_game_log.rb +224 -0
  171. data/lib/nba/league_hustle_stats_player.rb +161 -0
  172. data/lib/nba/league_hustle_stats_player_stat.rb +253 -0
  173. data/lib/nba/league_hustle_stats_team.rb +157 -0
  174. data/lib/nba/league_hustle_stats_team_stat.rb +179 -0
  175. data/lib/nba/league_lineup_viz.rb +184 -0
  176. data/lib/nba/league_lineup_viz_stat.rb +214 -0
  177. data/lib/nba/league_player_on_details.rb +175 -0
  178. data/lib/nba/league_player_on_details_stat.rb +313 -0
  179. data/lib/nba/league_season_matchup_stat.rb +241 -0
  180. data/lib/nba/league_season_matchups.rb +181 -0
  181. data/lib/nba/league_standing.rb +284 -0
  182. data/lib/nba/league_standings.rb +159 -0
  183. data/lib/nba/league_wide_shot_stat.rb +62 -0
  184. data/lib/nba/live_action.rb +240 -0
  185. data/lib/nba/live_box_score.rb +143 -0
  186. data/lib/nba/live_connection.rb +84 -0
  187. data/lib/nba/live_game.rb +230 -0
  188. data/lib/nba/live_play_by_play.rb +120 -0
  189. data/lib/nba/live_player_stat.rb +276 -0
  190. data/lib/nba/live_scoreboard.rb +102 -0
  191. data/lib/nba/matchup_rollup.rb +98 -0
  192. data/lib/nba/matchups_rollup.rb +81 -0
  193. data/lib/nba/pass_stat.rb +209 -0
  194. data/lib/nba/play.rb +258 -0
  195. data/lib/nba/play_by_play.rb +85 -0
  196. data/lib/nba/play_by_play_v3.rb +91 -0
  197. data/lib/nba/play_type_stat.rb +206 -0
  198. data/lib/nba/player.rb +242 -24
  199. data/lib/nba/player_awards.rb +110 -0
  200. data/lib/nba/player_career_by_college.rb +86 -0
  201. data/lib/nba/player_career_by_college_rollup.rb +143 -0
  202. data/lib/nba/player_career_stats.rb +77 -0
  203. data/lib/nba/player_compare.rb +156 -0
  204. data/lib/nba/player_comparison_stat.rb +242 -0
  205. data/lib/nba/player_dash_pt_pass.rb +164 -0
  206. data/lib/nba/player_dash_pt_reb.rb +235 -0
  207. data/lib/nba/player_dash_pt_shot_defend.rb +119 -0
  208. data/lib/nba/player_dash_pt_shots.rb +279 -0
  209. data/lib/nba/player_dashboard.rb +259 -0
  210. data/lib/nba/player_dashboard_stat.rb +248 -0
  211. data/lib/nba/player_estimated_metrics.rb +84 -0
  212. data/lib/nba/player_fantasy_profile_bar_graph.rb +147 -0
  213. data/lib/nba/player_game_log.rb +72 -0
  214. data/lib/nba/player_game_logs.rb +117 -0
  215. data/lib/nba/player_game_streak_finder.rb +108 -0
  216. data/lib/nba/player_index.rb +135 -0
  217. data/lib/nba/player_index_entry.rb +266 -0
  218. data/lib/nba/player_info.rb +225 -0
  219. data/lib/nba/player_next_n_games.rb +64 -0
  220. data/lib/nba/player_profile_v2.rb +169 -0
  221. data/lib/nba/player_vs_player.rb +153 -0
  222. data/lib/nba/players.rb +107 -0
  223. data/lib/nba/playoff_matchup.rb +84 -0
  224. data/lib/nba/playoff_picture.rb +98 -0
  225. data/lib/nba/playoff_series.rb +76 -0
  226. data/lib/nba/position.rb +48 -0
  227. data/lib/nba/rebound_stat.rb +189 -0
  228. data/lib/nba/response_parser.rb +116 -0
  229. data/lib/nba/roster.rb +74 -0
  230. data/lib/nba/rotation_entry.rb +154 -0
  231. data/lib/nba/schedule.rb +183 -0
  232. data/lib/nba/schedule_international.rb +182 -0
  233. data/lib/nba/scheduled_game.rb +240 -0
  234. data/lib/nba/scoreboard.rb +183 -0
  235. data/lib/nba/scoreboard_v3.rb +104 -0
  236. data/lib/nba/shot.rb +208 -0
  237. data/lib/nba/shot_chart.rb +75 -0
  238. data/lib/nba/shot_chart_league_wide.rb +102 -0
  239. data/lib/nba/shot_chart_lineup_detail.rb +109 -0
  240. data/lib/nba/shot_stat.rb +174 -0
  241. data/lib/nba/standing.rb +129 -0
  242. data/lib/nba/standings.rb +75 -0
  243. data/lib/nba/static.rb +107 -0
  244. data/lib/nba/synergy_play_types.rb +211 -0
  245. data/lib/nba/team.rb +203 -127
  246. data/lib/nba/team_and_players_vs_players.rb +227 -0
  247. data/lib/nba/team_and_players_vs_players_stat.rb +155 -0
  248. data/lib/nba/team_dash_pt_pass.rb +157 -0
  249. data/lib/nba/team_dash_pt_reb.rb +216 -0
  250. data/lib/nba/team_dash_pt_shots.rb +244 -0
  251. data/lib/nba/team_dashboard.rb +275 -0
  252. data/lib/nba/team_dashboard_stat.rb +248 -0
  253. data/lib/nba/team_detail.rb +117 -0
  254. data/lib/nba/team_details.rb +173 -0
  255. data/lib/nba/team_estimated_metrics.rb +91 -0
  256. data/lib/nba/team_estimated_metrics_stat.rb +146 -0
  257. data/lib/nba/team_game_log.rb +143 -0
  258. data/lib/nba/team_game_log_entry.rb +246 -0
  259. data/lib/nba/team_game_log_stat.rb +275 -0
  260. data/lib/nba/team_game_logs.rb +163 -0
  261. data/lib/nba/team_game_streak.rb +111 -0
  262. data/lib/nba/team_game_streak_finder.rb +109 -0
  263. data/lib/nba/team_historical_leader.rb +207 -0
  264. data/lib/nba/team_historical_leaders.rb +98 -0
  265. data/lib/nba/team_historical_record.rb +139 -0
  266. data/lib/nba/team_info.rb +150 -0
  267. data/lib/nba/team_info_common.rb +177 -0
  268. data/lib/nba/team_on_off_overall_stat.rb +477 -0
  269. data/lib/nba/team_on_off_player_stat.rb +523 -0
  270. data/lib/nba/team_on_off_player_summary.rb +135 -0
  271. data/lib/nba/team_pass_stat.rb +183 -0
  272. data/lib/nba/team_player_dashboard.rb +212 -0
  273. data/lib/nba/team_player_on_off_details.rb +218 -0
  274. data/lib/nba/team_player_on_off_summary.rb +214 -0
  275. data/lib/nba/team_player_stat.rb +275 -0
  276. data/lib/nba/team_rebound_stat.rb +189 -0
  277. data/lib/nba/team_season_rank.rb +110 -0
  278. data/lib/nba/team_shot_stat.rb +173 -0
  279. data/lib/nba/team_vs_player.rb +151 -0
  280. data/lib/nba/team_vs_player_stat.rb +157 -0
  281. data/lib/nba/team_year.rb +55 -0
  282. data/lib/nba/team_year_by_year_stats.rb +152 -0
  283. data/lib/nba/team_year_stat.rb +282 -0
  284. data/lib/nba/teams.rb +33 -0
  285. data/lib/nba/upcoming_game.rb +115 -0
  286. data/lib/nba/utils.rb +94 -0
  287. data/lib/nba/version.rb +5 -2
  288. data/lib/nba/video_detail.rb +103 -0
  289. data/lib/nba/video_details.rb +118 -0
  290. data/lib/nba/video_details_asset.rb +115 -0
  291. data/lib/nba/video_details_asset_entry.rb +91 -0
  292. data/lib/nba/video_event.rb +83 -0
  293. data/lib/nba/video_event_asset.rb +91 -0
  294. data/lib/nba/video_events.rb +106 -0
  295. data/lib/nba/video_events_asset.rb +107 -0
  296. data/lib/nba/video_status.rb +129 -0
  297. data/lib/nba/video_status_entry.rb +161 -0
  298. data/lib/nba/vs_player_stat.rb +156 -0
  299. data/lib/nba/win_probability.rb +117 -0
  300. data/lib/nba/win_probability_point.rb +140 -0
  301. data/lib/nba.rb +249 -5
  302. data/sig/equalizer.rbs +3 -0
  303. data/sig/nba.rbs +7297 -0
  304. data/sig/shale.rbs +24 -0
  305. data/sig/thor.rbs +19 -0
  306. metadata +324 -95
  307. data/.gitignore +0 -18
  308. data/.travis.yml +0 -22
  309. data/Gemfile +0 -23
  310. data/LICENSE.md +0 -22
  311. data/Rakefile +0 -18
  312. data/bin/nba +0 -7
  313. data/cache/teams.json +0 -16529
  314. data/lib/faraday_middleware/scrape_game.rb +0 -41
  315. data/lib/nba/request.rb +0 -37
  316. data/nba.gemspec +0 -28
  317. data/spec/fixtures/games.html +0 -785
  318. data/spec/fixtures/teams.json +0 -16529
  319. data/spec/game_spec.rb +0 -40
  320. data/spec/spec_helper.rb +0 -25
  321. data/spec/team_spec.rb +0 -93
@@ -0,0 +1,419 @@
1
+ require "equalizer"
2
+ require "shale"
3
+
4
+ module NBA
5
+ # Represents a draft combine spot shooting result
6
+ class DraftCombineSpotShootingResult < Shale::Mapper
7
+ include Equalizer.new(:player_id)
8
+
9
+ # @!attribute [rw] player_id
10
+ # Returns the player ID
11
+ # @api public
12
+ # @example
13
+ # result.player_id #=> 1630162
14
+ # @return [Integer] the player ID
15
+ attribute :player_id, Shale::Type::Integer
16
+
17
+ # @!attribute [rw] player_name
18
+ # Returns the player name
19
+ # @api public
20
+ # @example
21
+ # result.player_name #=> "Victor Wembanyama"
22
+ # @return [String] the player name
23
+ attribute :player_name, Shale::Type::String
24
+
25
+ # @!attribute [rw] first_name
26
+ # Returns the player's first name
27
+ # @api public
28
+ # @example
29
+ # result.first_name #=> "Victor"
30
+ # @return [String] the first name
31
+ attribute :first_name, Shale::Type::String
32
+
33
+ # @!attribute [rw] last_name
34
+ # Returns the player's last name
35
+ # @api public
36
+ # @example
37
+ # result.last_name #=> "Wembanyama"
38
+ # @return [String] the last name
39
+ attribute :last_name, Shale::Type::String
40
+
41
+ # @!attribute [rw] position
42
+ # Returns the player's position
43
+ # @api public
44
+ # @example
45
+ # result.position #=> "C"
46
+ # @return [String] the position
47
+ attribute :position, Shale::Type::String
48
+
49
+ # @!attribute [rw] fifteen_corner_left_made
50
+ # Returns 15-foot corner left shots made
51
+ # @api public
52
+ # @example
53
+ # result.fifteen_corner_left_made #=> 3
54
+ # @return [Integer] shots made
55
+ attribute :fifteen_corner_left_made, Shale::Type::Integer
56
+
57
+ # @!attribute [rw] fifteen_corner_left_attempt
58
+ # Returns 15-foot corner left shot attempts
59
+ # @api public
60
+ # @example
61
+ # result.fifteen_corner_left_attempt #=> 5
62
+ # @return [Integer] shot attempts
63
+ attribute :fifteen_corner_left_attempt, Shale::Type::Integer
64
+
65
+ # @!attribute [rw] fifteen_corner_left_pct
66
+ # Returns 15-foot corner left shooting percentage
67
+ # @api public
68
+ # @example
69
+ # result.fifteen_corner_left_pct #=> 0.600
70
+ # @return [Float] shooting percentage
71
+ attribute :fifteen_corner_left_pct, Shale::Type::Float
72
+
73
+ # @!attribute [rw] fifteen_break_left_made
74
+ # Returns 15-foot break left shots made
75
+ # @api public
76
+ # @example
77
+ # result.fifteen_break_left_made #=> 4
78
+ # @return [Integer] shots made
79
+ attribute :fifteen_break_left_made, Shale::Type::Integer
80
+
81
+ # @!attribute [rw] fifteen_break_left_attempt
82
+ # Returns 15-foot break left shot attempts
83
+ # @api public
84
+ # @example
85
+ # result.fifteen_break_left_attempt #=> 5
86
+ # @return [Integer] shot attempts
87
+ attribute :fifteen_break_left_attempt, Shale::Type::Integer
88
+
89
+ # @!attribute [rw] fifteen_break_left_pct
90
+ # Returns 15-foot break left shooting percentage
91
+ # @api public
92
+ # @example
93
+ # result.fifteen_break_left_pct #=> 0.800
94
+ # @return [Float] shooting percentage
95
+ attribute :fifteen_break_left_pct, Shale::Type::Float
96
+
97
+ # @!attribute [rw] fifteen_top_key_made
98
+ # Returns 15-foot top key shots made
99
+ # @api public
100
+ # @example
101
+ # result.fifteen_top_key_made #=> 5
102
+ # @return [Integer] shots made
103
+ attribute :fifteen_top_key_made, Shale::Type::Integer
104
+
105
+ # @!attribute [rw] fifteen_top_key_attempt
106
+ # Returns 15-foot top key shot attempts
107
+ # @api public
108
+ # @example
109
+ # result.fifteen_top_key_attempt #=> 5
110
+ # @return [Integer] shot attempts
111
+ attribute :fifteen_top_key_attempt, Shale::Type::Integer
112
+
113
+ # @!attribute [rw] fifteen_top_key_pct
114
+ # Returns 15-foot top key shooting percentage
115
+ # @api public
116
+ # @example
117
+ # result.fifteen_top_key_pct #=> 1.000
118
+ # @return [Float] shooting percentage
119
+ attribute :fifteen_top_key_pct, Shale::Type::Float
120
+
121
+ # @!attribute [rw] fifteen_break_right_made
122
+ # Returns 15-foot break right shots made
123
+ # @api public
124
+ # @example
125
+ # result.fifteen_break_right_made #=> 3
126
+ # @return [Integer] shots made
127
+ attribute :fifteen_break_right_made, Shale::Type::Integer
128
+
129
+ # @!attribute [rw] fifteen_break_right_attempt
130
+ # Returns 15-foot break right shot attempts
131
+ # @api public
132
+ # @example
133
+ # result.fifteen_break_right_attempt #=> 5
134
+ # @return [Integer] shot attempts
135
+ attribute :fifteen_break_right_attempt, Shale::Type::Integer
136
+
137
+ # @!attribute [rw] fifteen_break_right_pct
138
+ # Returns 15-foot break right shooting percentage
139
+ # @api public
140
+ # @example
141
+ # result.fifteen_break_right_pct #=> 0.600
142
+ # @return [Float] shooting percentage
143
+ attribute :fifteen_break_right_pct, Shale::Type::Float
144
+
145
+ # @!attribute [rw] fifteen_corner_right_made
146
+ # Returns 15-foot corner right shots made
147
+ # @api public
148
+ # @example
149
+ # result.fifteen_corner_right_made #=> 4
150
+ # @return [Integer] shots made
151
+ attribute :fifteen_corner_right_made, Shale::Type::Integer
152
+
153
+ # @!attribute [rw] fifteen_corner_right_attempt
154
+ # Returns 15-foot corner right shot attempts
155
+ # @api public
156
+ # @example
157
+ # result.fifteen_corner_right_attempt #=> 5
158
+ # @return [Integer] shot attempts
159
+ attribute :fifteen_corner_right_attempt, Shale::Type::Integer
160
+
161
+ # @!attribute [rw] fifteen_corner_right_pct
162
+ # Returns 15-foot corner right shooting percentage
163
+ # @api public
164
+ # @example
165
+ # result.fifteen_corner_right_pct #=> 0.800
166
+ # @return [Float] shooting percentage
167
+ attribute :fifteen_corner_right_pct, Shale::Type::Float
168
+
169
+ # @!attribute [rw] college_corner_left_made
170
+ # Returns college range corner left shots made
171
+ # @api public
172
+ # @example
173
+ # result.college_corner_left_made #=> 3
174
+ # @return [Integer] shots made
175
+ attribute :college_corner_left_made, Shale::Type::Integer
176
+
177
+ # @!attribute [rw] college_corner_left_attempt
178
+ # Returns college range corner left shot attempts
179
+ # @api public
180
+ # @example
181
+ # result.college_corner_left_attempt #=> 5
182
+ # @return [Integer] shot attempts
183
+ attribute :college_corner_left_attempt, Shale::Type::Integer
184
+
185
+ # @!attribute [rw] college_corner_left_pct
186
+ # Returns college range corner left shooting percentage
187
+ # @api public
188
+ # @example
189
+ # result.college_corner_left_pct #=> 0.600
190
+ # @return [Float] shooting percentage
191
+ attribute :college_corner_left_pct, Shale::Type::Float
192
+
193
+ # @!attribute [rw] college_break_left_made
194
+ # Returns college range break left shots made
195
+ # @api public
196
+ # @example
197
+ # result.college_break_left_made #=> 4
198
+ # @return [Integer] shots made
199
+ attribute :college_break_left_made, Shale::Type::Integer
200
+
201
+ # @!attribute [rw] college_break_left_attempt
202
+ # Returns college range break left shot attempts
203
+ # @api public
204
+ # @example
205
+ # result.college_break_left_attempt #=> 5
206
+ # @return [Integer] shot attempts
207
+ attribute :college_break_left_attempt, Shale::Type::Integer
208
+
209
+ # @!attribute [rw] college_break_left_pct
210
+ # Returns college range break left shooting percentage
211
+ # @api public
212
+ # @example
213
+ # result.college_break_left_pct #=> 0.800
214
+ # @return [Float] shooting percentage
215
+ attribute :college_break_left_pct, Shale::Type::Float
216
+
217
+ # @!attribute [rw] college_top_key_made
218
+ # Returns college range top key shots made
219
+ # @api public
220
+ # @example
221
+ # result.college_top_key_made #=> 5
222
+ # @return [Integer] shots made
223
+ attribute :college_top_key_made, Shale::Type::Integer
224
+
225
+ # @!attribute [rw] college_top_key_attempt
226
+ # Returns college range top key shot attempts
227
+ # @api public
228
+ # @example
229
+ # result.college_top_key_attempt #=> 5
230
+ # @return [Integer] shot attempts
231
+ attribute :college_top_key_attempt, Shale::Type::Integer
232
+
233
+ # @!attribute [rw] college_top_key_pct
234
+ # Returns college range top key shooting percentage
235
+ # @api public
236
+ # @example
237
+ # result.college_top_key_pct #=> 1.000
238
+ # @return [Float] shooting percentage
239
+ attribute :college_top_key_pct, Shale::Type::Float
240
+
241
+ # @!attribute [rw] college_break_right_made
242
+ # Returns college range break right shots made
243
+ # @api public
244
+ # @example
245
+ # result.college_break_right_made #=> 3
246
+ # @return [Integer] shots made
247
+ attribute :college_break_right_made, Shale::Type::Integer
248
+
249
+ # @!attribute [rw] college_break_right_attempt
250
+ # Returns college range break right shot attempts
251
+ # @api public
252
+ # @example
253
+ # result.college_break_right_attempt #=> 5
254
+ # @return [Integer] shot attempts
255
+ attribute :college_break_right_attempt, Shale::Type::Integer
256
+
257
+ # @!attribute [rw] college_break_right_pct
258
+ # Returns college range break right shooting percentage
259
+ # @api public
260
+ # @example
261
+ # result.college_break_right_pct #=> 0.600
262
+ # @return [Float] shooting percentage
263
+ attribute :college_break_right_pct, Shale::Type::Float
264
+
265
+ # @!attribute [rw] college_corner_right_made
266
+ # Returns college range corner right shots made
267
+ # @api public
268
+ # @example
269
+ # result.college_corner_right_made #=> 4
270
+ # @return [Integer] shots made
271
+ attribute :college_corner_right_made, Shale::Type::Integer
272
+
273
+ # @!attribute [rw] college_corner_right_attempt
274
+ # Returns college range corner right shot attempts
275
+ # @api public
276
+ # @example
277
+ # result.college_corner_right_attempt #=> 5
278
+ # @return [Integer] shot attempts
279
+ attribute :college_corner_right_attempt, Shale::Type::Integer
280
+
281
+ # @!attribute [rw] college_corner_right_pct
282
+ # Returns college range corner right shooting percentage
283
+ # @api public
284
+ # @example
285
+ # result.college_corner_right_pct #=> 0.800
286
+ # @return [Float] shooting percentage
287
+ attribute :college_corner_right_pct, Shale::Type::Float
288
+
289
+ # @!attribute [rw] nba_corner_left_made
290
+ # Returns NBA range corner left shots made
291
+ # @api public
292
+ # @example
293
+ # result.nba_corner_left_made #=> 3
294
+ # @return [Integer] shots made
295
+ attribute :nba_corner_left_made, Shale::Type::Integer
296
+
297
+ # @!attribute [rw] nba_corner_left_attempt
298
+ # Returns NBA range corner left shot attempts
299
+ # @api public
300
+ # @example
301
+ # result.nba_corner_left_attempt #=> 5
302
+ # @return [Integer] shot attempts
303
+ attribute :nba_corner_left_attempt, Shale::Type::Integer
304
+
305
+ # @!attribute [rw] nba_corner_left_pct
306
+ # Returns NBA range corner left shooting percentage
307
+ # @api public
308
+ # @example
309
+ # result.nba_corner_left_pct #=> 0.600
310
+ # @return [Float] shooting percentage
311
+ attribute :nba_corner_left_pct, Shale::Type::Float
312
+
313
+ # @!attribute [rw] nba_break_left_made
314
+ # Returns NBA range break left shots made
315
+ # @api public
316
+ # @example
317
+ # result.nba_break_left_made #=> 4
318
+ # @return [Integer] shots made
319
+ attribute :nba_break_left_made, Shale::Type::Integer
320
+
321
+ # @!attribute [rw] nba_break_left_attempt
322
+ # Returns NBA range break left shot attempts
323
+ # @api public
324
+ # @example
325
+ # result.nba_break_left_attempt #=> 5
326
+ # @return [Integer] shot attempts
327
+ attribute :nba_break_left_attempt, Shale::Type::Integer
328
+
329
+ # @!attribute [rw] nba_break_left_pct
330
+ # Returns NBA range break left shooting percentage
331
+ # @api public
332
+ # @example
333
+ # result.nba_break_left_pct #=> 0.800
334
+ # @return [Float] shooting percentage
335
+ attribute :nba_break_left_pct, Shale::Type::Float
336
+
337
+ # @!attribute [rw] nba_top_key_made
338
+ # Returns NBA range top key shots made
339
+ # @api public
340
+ # @example
341
+ # result.nba_top_key_made #=> 5
342
+ # @return [Integer] shots made
343
+ attribute :nba_top_key_made, Shale::Type::Integer
344
+
345
+ # @!attribute [rw] nba_top_key_attempt
346
+ # Returns NBA range top key shot attempts
347
+ # @api public
348
+ # @example
349
+ # result.nba_top_key_attempt #=> 5
350
+ # @return [Integer] shot attempts
351
+ attribute :nba_top_key_attempt, Shale::Type::Integer
352
+
353
+ # @!attribute [rw] nba_top_key_pct
354
+ # Returns NBA range top key shooting percentage
355
+ # @api public
356
+ # @example
357
+ # result.nba_top_key_pct #=> 1.000
358
+ # @return [Float] shooting percentage
359
+ attribute :nba_top_key_pct, Shale::Type::Float
360
+
361
+ # @!attribute [rw] nba_break_right_made
362
+ # Returns NBA range break right shots made
363
+ # @api public
364
+ # @example
365
+ # result.nba_break_right_made #=> 3
366
+ # @return [Integer] shots made
367
+ attribute :nba_break_right_made, Shale::Type::Integer
368
+
369
+ # @!attribute [rw] nba_break_right_attempt
370
+ # Returns NBA range break right shot attempts
371
+ # @api public
372
+ # @example
373
+ # result.nba_break_right_attempt #=> 5
374
+ # @return [Integer] shot attempts
375
+ attribute :nba_break_right_attempt, Shale::Type::Integer
376
+
377
+ # @!attribute [rw] nba_break_right_pct
378
+ # Returns NBA range break right shooting percentage
379
+ # @api public
380
+ # @example
381
+ # result.nba_break_right_pct #=> 0.600
382
+ # @return [Float] shooting percentage
383
+ attribute :nba_break_right_pct, Shale::Type::Float
384
+
385
+ # @!attribute [rw] nba_corner_right_made
386
+ # Returns NBA range corner right shots made
387
+ # @api public
388
+ # @example
389
+ # result.nba_corner_right_made #=> 4
390
+ # @return [Integer] shots made
391
+ attribute :nba_corner_right_made, Shale::Type::Integer
392
+
393
+ # @!attribute [rw] nba_corner_right_attempt
394
+ # Returns NBA range corner right shot attempts
395
+ # @api public
396
+ # @example
397
+ # result.nba_corner_right_attempt #=> 5
398
+ # @return [Integer] shot attempts
399
+ attribute :nba_corner_right_attempt, Shale::Type::Integer
400
+
401
+ # @!attribute [rw] nba_corner_right_pct
402
+ # Returns NBA range corner right shooting percentage
403
+ # @api public
404
+ # @example
405
+ # result.nba_corner_right_pct #=> 0.800
406
+ # @return [Float] shooting percentage
407
+ attribute :nba_corner_right_pct, Shale::Type::Float
408
+
409
+ # Returns the player object
410
+ #
411
+ # @api public
412
+ # @example
413
+ # result.player #=> #<NBA::Player>
414
+ # @return [Player, nil] the player object
415
+ def player
416
+ Players.find(player_id)
417
+ end
418
+ end
419
+ end
@@ -0,0 +1,211 @@
1
+ require "equalizer"
2
+ require "shale"
3
+
4
+ module NBA
5
+ # Represents a draft combine stat
6
+ class DraftCombineStat < Shale::Mapper
7
+ include Equalizer.new(:player_id)
8
+
9
+ # @!attribute [rw] season
10
+ # Returns the season
11
+ # @api public
12
+ # @example
13
+ # stat.season #=> "2023-24"
14
+ # @return [String] the season
15
+ attribute :season, Shale::Type::String
16
+
17
+ # @!attribute [rw] player_id
18
+ # Returns the player ID
19
+ # @api public
20
+ # @example
21
+ # stat.player_id #=> 1630162
22
+ # @return [Integer] the player ID
23
+ attribute :player_id, Shale::Type::Integer
24
+
25
+ # @!attribute [rw] first_name
26
+ # Returns the player's first name
27
+ # @api public
28
+ # @example
29
+ # stat.first_name #=> "Victor"
30
+ # @return [String] the first name
31
+ attribute :first_name, Shale::Type::String
32
+
33
+ # @!attribute [rw] last_name
34
+ # Returns the player's last name
35
+ # @api public
36
+ # @example
37
+ # stat.last_name #=> "Wembanyama"
38
+ # @return [String] the last name
39
+ attribute :last_name, Shale::Type::String
40
+
41
+ # @!attribute [rw] player_name
42
+ # Returns the player name
43
+ # @api public
44
+ # @example
45
+ # stat.player_name #=> "Victor Wembanyama"
46
+ # @return [String] the player name
47
+ attribute :player_name, Shale::Type::String
48
+
49
+ # @!attribute [rw] position
50
+ # Returns the player's position
51
+ # @api public
52
+ # @example
53
+ # stat.position #=> "C"
54
+ # @return [String] the position
55
+ attribute :position, Shale::Type::String
56
+
57
+ # @!attribute [rw] height_wo_shoes
58
+ # Returns height without shoes in inches
59
+ # @api public
60
+ # @example
61
+ # stat.height_wo_shoes #=> 83.5
62
+ # @return [Float] height without shoes
63
+ attribute :height_wo_shoes, Shale::Type::Float
64
+
65
+ # @!attribute [rw] height_wo_shoes_ft_in
66
+ # Returns height without shoes in feet and inches
67
+ # @api public
68
+ # @example
69
+ # stat.height_wo_shoes_ft_in #=> "6-11.5"
70
+ # @return [String] height without shoes
71
+ attribute :height_wo_shoes_ft_in, Shale::Type::String
72
+
73
+ # @!attribute [rw] height_w_shoes
74
+ # Returns height with shoes in inches
75
+ # @api public
76
+ # @example
77
+ # stat.height_w_shoes #=> 84.5
78
+ # @return [Float] height with shoes
79
+ attribute :height_w_shoes, Shale::Type::Float
80
+
81
+ # @!attribute [rw] height_w_shoes_ft_in
82
+ # Returns height with shoes in feet and inches
83
+ # @api public
84
+ # @example
85
+ # stat.height_w_shoes_ft_in #=> "7-0.5"
86
+ # @return [String] height with shoes
87
+ attribute :height_w_shoes_ft_in, Shale::Type::String
88
+
89
+ # @!attribute [rw] weight
90
+ # Returns weight in pounds
91
+ # @api public
92
+ # @example
93
+ # stat.weight #=> 209.0
94
+ # @return [Float] weight
95
+ attribute :weight, Shale::Type::Float
96
+
97
+ # @!attribute [rw] wingspan
98
+ # Returns wingspan in inches
99
+ # @api public
100
+ # @example
101
+ # stat.wingspan #=> 94.0
102
+ # @return [Float] wingspan
103
+ attribute :wingspan, Shale::Type::Float
104
+
105
+ # @!attribute [rw] wingspan_ft_in
106
+ # Returns wingspan in feet and inches
107
+ # @api public
108
+ # @example
109
+ # stat.wingspan_ft_in #=> "7-10"
110
+ # @return [String] wingspan
111
+ attribute :wingspan_ft_in, Shale::Type::String
112
+
113
+ # @!attribute [rw] standing_reach
114
+ # Returns standing reach in inches
115
+ # @api public
116
+ # @example
117
+ # stat.standing_reach #=> 112.0
118
+ # @return [Float] standing reach
119
+ attribute :standing_reach, Shale::Type::Float
120
+
121
+ # @!attribute [rw] standing_reach_ft_in
122
+ # Returns standing reach in feet and inches
123
+ # @api public
124
+ # @example
125
+ # stat.standing_reach_ft_in #=> "9-4"
126
+ # @return [String] standing reach
127
+ attribute :standing_reach_ft_in, Shale::Type::String
128
+
129
+ # @!attribute [rw] body_fat_pct
130
+ # Returns body fat percentage
131
+ # @api public
132
+ # @example
133
+ # stat.body_fat_pct #=> 6.8
134
+ # @return [Float] body fat percentage
135
+ attribute :body_fat_pct, Shale::Type::Float
136
+
137
+ # @!attribute [rw] hand_length
138
+ # Returns hand length in inches
139
+ # @api public
140
+ # @example
141
+ # stat.hand_length #=> 9.75
142
+ # @return [Float] hand length
143
+ attribute :hand_length, Shale::Type::Float
144
+
145
+ # @!attribute [rw] hand_width
146
+ # Returns hand width in inches
147
+ # @api public
148
+ # @example
149
+ # stat.hand_width #=> 10.5
150
+ # @return [Float] hand width
151
+ attribute :hand_width, Shale::Type::Float
152
+
153
+ # @!attribute [rw] standing_vertical_leap
154
+ # Returns standing vertical leap in inches
155
+ # @api public
156
+ # @example
157
+ # stat.standing_vertical_leap #=> 32.0
158
+ # @return [Float] standing vertical leap
159
+ attribute :standing_vertical_leap, Shale::Type::Float
160
+
161
+ # @!attribute [rw] max_vertical_leap
162
+ # Returns maximum vertical leap in inches
163
+ # @api public
164
+ # @example
165
+ # stat.max_vertical_leap #=> 40.5
166
+ # @return [Float] maximum vertical leap
167
+ attribute :max_vertical_leap, Shale::Type::Float
168
+
169
+ # @!attribute [rw] lane_agility_time
170
+ # Returns lane agility time in seconds
171
+ # @api public
172
+ # @example
173
+ # stat.lane_agility_time #=> 10.75
174
+ # @return [Float] lane agility time
175
+ attribute :lane_agility_time, Shale::Type::Float
176
+
177
+ # @!attribute [rw] modified_lane_agility_time
178
+ # Returns modified lane agility time in seconds
179
+ # @api public
180
+ # @example
181
+ # stat.modified_lane_agility_time #=> 10.5
182
+ # @return [Float] modified lane agility time
183
+ attribute :modified_lane_agility_time, Shale::Type::Float
184
+
185
+ # @!attribute [rw] three_quarter_sprint
186
+ # Returns three quarter sprint time in seconds
187
+ # @api public
188
+ # @example
189
+ # stat.three_quarter_sprint #=> 3.25
190
+ # @return [Float] three quarter sprint time
191
+ attribute :three_quarter_sprint, Shale::Type::Float
192
+
193
+ # @!attribute [rw] bench_press
194
+ # Returns bench press repetitions
195
+ # @api public
196
+ # @example
197
+ # stat.bench_press #=> 15
198
+ # @return [Integer] bench press repetitions
199
+ attribute :bench_press, Shale::Type::Integer
200
+
201
+ # Returns the player object
202
+ #
203
+ # @api public
204
+ # @example
205
+ # stat.player #=> #<NBA::Player>
206
+ # @return [Player, nil] the player object
207
+ def player
208
+ Players.find(player_id)
209
+ end
210
+ end
211
+ end