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,523 @@
1
+ require "equalizer"
2
+ require "shale"
3
+
4
+ module NBA
5
+ # Represents team statistics when a specific player is on or off the court
6
+ #
7
+ # @api public
8
+ class TeamOnOffPlayerStat < Shale::Mapper
9
+ include Equalizer.new(:team_id, :vs_player_id, :court_status)
10
+
11
+ # @!attribute [rw] group_set
12
+ # Returns the group set name
13
+ # @api public
14
+ # @example
15
+ # stat.group_set #=> "Off"
16
+ # @return [String, nil] the group set
17
+ attribute :group_set, Shale::Type::String
18
+
19
+ # @!attribute [rw] team_id
20
+ # Returns the team ID
21
+ # @api public
22
+ # @example
23
+ # stat.team_id #=> 1610612744
24
+ # @return [Integer, nil] the team ID
25
+ attribute :team_id, Shale::Type::Integer
26
+
27
+ # @!attribute [rw] team_abbreviation
28
+ # Returns the team abbreviation
29
+ # @api public
30
+ # @example
31
+ # stat.team_abbreviation #=> "GSW"
32
+ # @return [String, nil] the team abbreviation
33
+ attribute :team_abbreviation, Shale::Type::String
34
+
35
+ # @!attribute [rw] team_name
36
+ # Returns the team name
37
+ # @api public
38
+ # @example
39
+ # stat.team_name #=> "Warriors"
40
+ # @return [String, nil] the team name
41
+ attribute :team_name, Shale::Type::String
42
+
43
+ # @!attribute [rw] vs_player_id
44
+ # Returns the opponent player ID
45
+ # @api public
46
+ # @example
47
+ # stat.vs_player_id #=> 201566
48
+ # @return [Integer, nil] the opponent player ID
49
+ attribute :vs_player_id, Shale::Type::Integer
50
+
51
+ # @!attribute [rw] vs_player_name
52
+ # Returns the opponent player name
53
+ # @api public
54
+ # @example
55
+ # stat.vs_player_name #=> "Russell Westbrook"
56
+ # @return [String, nil] the opponent player name
57
+ attribute :vs_player_name, Shale::Type::String
58
+
59
+ # @!attribute [rw] court_status
60
+ # Returns the court status (On or Off)
61
+ # @api public
62
+ # @example
63
+ # stat.court_status #=> "Off"
64
+ # @return [String, nil] the court status
65
+ attribute :court_status, Shale::Type::String
66
+
67
+ # @!attribute [rw] gp
68
+ # Returns games played
69
+ # @api public
70
+ # @example
71
+ # stat.gp #=> 82
72
+ # @return [Integer, nil] games played
73
+ attribute :gp, Shale::Type::Integer
74
+
75
+ # @!attribute [rw] w
76
+ # Returns wins
77
+ # @api public
78
+ # @example
79
+ # stat.w #=> 46
80
+ # @return [Integer, nil] wins
81
+ attribute :w, Shale::Type::Integer
82
+
83
+ # @!attribute [rw] l
84
+ # Returns losses
85
+ # @api public
86
+ # @example
87
+ # stat.l #=> 36
88
+ # @return [Integer, nil] losses
89
+ attribute :l, Shale::Type::Integer
90
+
91
+ # @!attribute [rw] w_pct
92
+ # Returns win percentage
93
+ # @api public
94
+ # @example
95
+ # stat.w_pct #=> 0.561
96
+ # @return [Float, nil] win percentage
97
+ attribute :w_pct, Shale::Type::Float
98
+
99
+ # @!attribute [rw] min
100
+ # Returns minutes
101
+ # @api public
102
+ # @example
103
+ # stat.min #=> 240.0
104
+ # @return [Float, nil] minutes
105
+ attribute :min, Shale::Type::Float
106
+
107
+ # @!attribute [rw] fgm
108
+ # Returns field goals made
109
+ # @api public
110
+ # @example
111
+ # stat.fgm #=> 39.6
112
+ # @return [Float, nil] field goals made
113
+ attribute :fgm, Shale::Type::Float
114
+
115
+ # @!attribute [rw] fga
116
+ # Returns field goals attempted
117
+ # @api public
118
+ # @example
119
+ # stat.fga #=> 87.8
120
+ # @return [Float, nil] field goals attempted
121
+ attribute :fga, Shale::Type::Float
122
+
123
+ # @!attribute [rw] fg_pct
124
+ # Returns field goal percentage
125
+ # @api public
126
+ # @example
127
+ # stat.fg_pct #=> 0.451
128
+ # @return [Float, nil] field goal percentage
129
+ attribute :fg_pct, Shale::Type::Float
130
+
131
+ # @!attribute [rw] fg3m
132
+ # Returns three-pointers made
133
+ # @api public
134
+ # @example
135
+ # stat.fg3m #=> 14.8
136
+ # @return [Float, nil] three-pointers made
137
+ attribute :fg3m, Shale::Type::Float
138
+
139
+ # @!attribute [rw] fg3a
140
+ # Returns three-pointers attempted
141
+ # @api public
142
+ # @example
143
+ # stat.fg3a #=> 40.2
144
+ # @return [Float, nil] three-pointers attempted
145
+ attribute :fg3a, Shale::Type::Float
146
+
147
+ # @!attribute [rw] fg3_pct
148
+ # Returns three-point percentage
149
+ # @api public
150
+ # @example
151
+ # stat.fg3_pct #=> 0.368
152
+ # @return [Float, nil] three-point percentage
153
+ attribute :fg3_pct, Shale::Type::Float
154
+
155
+ # @!attribute [rw] ftm
156
+ # Returns free throws made
157
+ # @api public
158
+ # @example
159
+ # stat.ftm #=> 17.8
160
+ # @return [Float, nil] free throws made
161
+ attribute :ftm, Shale::Type::Float
162
+
163
+ # @!attribute [rw] fta
164
+ # Returns free throws attempted
165
+ # @api public
166
+ # @example
167
+ # stat.fta #=> 22.1
168
+ # @return [Float, nil] free throws attempted
169
+ attribute :fta, Shale::Type::Float
170
+
171
+ # @!attribute [rw] ft_pct
172
+ # Returns free throw percentage
173
+ # @api public
174
+ # @example
175
+ # stat.ft_pct #=> 0.805
176
+ # @return [Float, nil] free throw percentage
177
+ attribute :ft_pct, Shale::Type::Float
178
+
179
+ # @!attribute [rw] oreb
180
+ # Returns offensive rebounds
181
+ # @api public
182
+ # @example
183
+ # stat.oreb #=> 9.1
184
+ # @return [Float, nil] offensive rebounds
185
+ attribute :oreb, Shale::Type::Float
186
+
187
+ # @!attribute [rw] dreb
188
+ # Returns defensive rebounds
189
+ # @api public
190
+ # @example
191
+ # stat.dreb #=> 34.8
192
+ # @return [Float, nil] defensive rebounds
193
+ attribute :dreb, Shale::Type::Float
194
+
195
+ # @!attribute [rw] reb
196
+ # Returns total rebounds
197
+ # @api public
198
+ # @example
199
+ # stat.reb #=> 43.9
200
+ # @return [Float, nil] total rebounds
201
+ attribute :reb, Shale::Type::Float
202
+
203
+ # @!attribute [rw] ast
204
+ # Returns assists
205
+ # @api public
206
+ # @example
207
+ # stat.ast #=> 27.5
208
+ # @return [Float, nil] assists
209
+ attribute :ast, Shale::Type::Float
210
+
211
+ # @!attribute [rw] tov
212
+ # Returns turnovers
213
+ # @api public
214
+ # @example
215
+ # stat.tov #=> 14.1
216
+ # @return [Float, nil] turnovers
217
+ attribute :tov, Shale::Type::Float
218
+
219
+ # @!attribute [rw] stl
220
+ # Returns steals
221
+ # @api public
222
+ # @example
223
+ # stat.stl #=> 7.6
224
+ # @return [Float, nil] steals
225
+ attribute :stl, Shale::Type::Float
226
+
227
+ # @!attribute [rw] blk
228
+ # Returns blocks
229
+ # @api public
230
+ # @example
231
+ # stat.blk #=> 4.8
232
+ # @return [Float, nil] blocks
233
+ attribute :blk, Shale::Type::Float
234
+
235
+ # @!attribute [rw] blka
236
+ # Returns blocked attempts
237
+ # @api public
238
+ # @example
239
+ # stat.blka #=> 4.2
240
+ # @return [Float, nil] blocked attempts
241
+ attribute :blka, Shale::Type::Float
242
+
243
+ # @!attribute [rw] pf
244
+ # Returns personal fouls
245
+ # @api public
246
+ # @example
247
+ # stat.pf #=> 20.1
248
+ # @return [Float, nil] personal fouls
249
+ attribute :pf, Shale::Type::Float
250
+
251
+ # @!attribute [rw] pfd
252
+ # Returns personal fouls drawn
253
+ # @api public
254
+ # @example
255
+ # stat.pfd #=> 18.9
256
+ # @return [Float, nil] personal fouls drawn
257
+ attribute :pfd, Shale::Type::Float
258
+
259
+ # @!attribute [rw] pts
260
+ # Returns points
261
+ # @api public
262
+ # @example
263
+ # stat.pts #=> 111.8
264
+ # @return [Float, nil] points
265
+ attribute :pts, Shale::Type::Float
266
+
267
+ # @!attribute [rw] plus_minus
268
+ # Returns plus/minus
269
+ # @api public
270
+ # @example
271
+ # stat.plus_minus #=> 2.5
272
+ # @return [Float, nil] plus/minus
273
+ attribute :plus_minus, Shale::Type::Float
274
+
275
+ # @!attribute [rw] gp_rank
276
+ # Returns games played rank
277
+ # @api public
278
+ # @example
279
+ # stat.gp_rank #=> 1
280
+ # @return [Integer, nil] games played rank
281
+ attribute :gp_rank, Shale::Type::Integer
282
+
283
+ # @!attribute [rw] w_rank
284
+ # Returns wins rank
285
+ # @api public
286
+ # @example
287
+ # stat.w_rank #=> 5
288
+ # @return [Integer, nil] wins rank
289
+ attribute :w_rank, Shale::Type::Integer
290
+
291
+ # @!attribute [rw] l_rank
292
+ # Returns losses rank
293
+ # @api public
294
+ # @example
295
+ # stat.l_rank #=> 8
296
+ # @return [Integer, nil] losses rank
297
+ attribute :l_rank, Shale::Type::Integer
298
+
299
+ # @!attribute [rw] w_pct_rank
300
+ # Returns win percentage rank
301
+ # @api public
302
+ # @example
303
+ # stat.w_pct_rank #=> 6
304
+ # @return [Integer, nil] win percentage rank
305
+ attribute :w_pct_rank, Shale::Type::Integer
306
+
307
+ # @!attribute [rw] min_rank
308
+ # Returns minutes rank
309
+ # @api public
310
+ # @example
311
+ # stat.min_rank #=> 15
312
+ # @return [Integer, nil] minutes rank
313
+ attribute :min_rank, Shale::Type::Integer
314
+
315
+ # @!attribute [rw] fgm_rank
316
+ # Returns field goals made rank
317
+ # @api public
318
+ # @example
319
+ # stat.fgm_rank #=> 10
320
+ # @return [Integer, nil] field goals made rank
321
+ attribute :fgm_rank, Shale::Type::Integer
322
+
323
+ # @!attribute [rw] fga_rank
324
+ # Returns field goals attempted rank
325
+ # @api public
326
+ # @example
327
+ # stat.fga_rank #=> 12
328
+ # @return [Integer, nil] field goals attempted rank
329
+ attribute :fga_rank, Shale::Type::Integer
330
+
331
+ # @!attribute [rw] fg_pct_rank
332
+ # Returns field goal percentage rank
333
+ # @api public
334
+ # @example
335
+ # stat.fg_pct_rank #=> 8
336
+ # @return [Integer, nil] field goal percentage rank
337
+ attribute :fg_pct_rank, Shale::Type::Integer
338
+
339
+ # @!attribute [rw] fg3m_rank
340
+ # Returns three-pointers made rank
341
+ # @api public
342
+ # @example
343
+ # stat.fg3m_rank #=> 3
344
+ # @return [Integer, nil] three-pointers made rank
345
+ attribute :fg3m_rank, Shale::Type::Integer
346
+
347
+ # @!attribute [rw] fg3a_rank
348
+ # Returns three-pointers attempted rank
349
+ # @api public
350
+ # @example
351
+ # stat.fg3a_rank #=> 5
352
+ # @return [Integer, nil] three-pointers attempted rank
353
+ attribute :fg3a_rank, Shale::Type::Integer
354
+
355
+ # @!attribute [rw] fg3_pct_rank
356
+ # Returns three-point percentage rank
357
+ # @api public
358
+ # @example
359
+ # stat.fg3_pct_rank #=> 7
360
+ # @return [Integer, nil] three-point percentage rank
361
+ attribute :fg3_pct_rank, Shale::Type::Integer
362
+
363
+ # @!attribute [rw] ftm_rank
364
+ # Returns free throws made rank
365
+ # @api public
366
+ # @example
367
+ # stat.ftm_rank #=> 14
368
+ # @return [Integer, nil] free throws made rank
369
+ attribute :ftm_rank, Shale::Type::Integer
370
+
371
+ # @!attribute [rw] fta_rank
372
+ # Returns free throws attempted rank
373
+ # @api public
374
+ # @example
375
+ # stat.fta_rank #=> 16
376
+ # @return [Integer, nil] free throws attempted rank
377
+ attribute :fta_rank, Shale::Type::Integer
378
+
379
+ # @!attribute [rw] ft_pct_rank
380
+ # Returns free throw percentage rank
381
+ # @api public
382
+ # @example
383
+ # stat.ft_pct_rank #=> 9
384
+ # @return [Integer, nil] free throw percentage rank
385
+ attribute :ft_pct_rank, Shale::Type::Integer
386
+
387
+ # @!attribute [rw] oreb_rank
388
+ # Returns offensive rebounds rank
389
+ # @api public
390
+ # @example
391
+ # stat.oreb_rank #=> 20
392
+ # @return [Integer, nil] offensive rebounds rank
393
+ attribute :oreb_rank, Shale::Type::Integer
394
+
395
+ # @!attribute [rw] dreb_rank
396
+ # Returns defensive rebounds rank
397
+ # @api public
398
+ # @example
399
+ # stat.dreb_rank #=> 11
400
+ # @return [Integer, nil] defensive rebounds rank
401
+ attribute :dreb_rank, Shale::Type::Integer
402
+
403
+ # @!attribute [rw] reb_rank
404
+ # Returns total rebounds rank
405
+ # @api public
406
+ # @example
407
+ # stat.reb_rank #=> 13
408
+ # @return [Integer, nil] total rebounds rank
409
+ attribute :reb_rank, Shale::Type::Integer
410
+
411
+ # @!attribute [rw] ast_rank
412
+ # Returns assists rank
413
+ # @api public
414
+ # @example
415
+ # stat.ast_rank #=> 4
416
+ # @return [Integer, nil] assists rank
417
+ attribute :ast_rank, Shale::Type::Integer
418
+
419
+ # @!attribute [rw] tov_rank
420
+ # Returns turnovers rank
421
+ # @api public
422
+ # @example
423
+ # stat.tov_rank #=> 18
424
+ # @return [Integer, nil] turnovers rank
425
+ attribute :tov_rank, Shale::Type::Integer
426
+
427
+ # @!attribute [rw] stl_rank
428
+ # Returns steals rank
429
+ # @api public
430
+ # @example
431
+ # stat.stl_rank #=> 7
432
+ # @return [Integer, nil] steals rank
433
+ attribute :stl_rank, Shale::Type::Integer
434
+
435
+ # @!attribute [rw] blk_rank
436
+ # Returns blocks rank
437
+ # @api public
438
+ # @example
439
+ # stat.blk_rank #=> 19
440
+ # @return [Integer, nil] blocks rank
441
+ attribute :blk_rank, Shale::Type::Integer
442
+
443
+ # @!attribute [rw] blka_rank
444
+ # Returns blocked attempts rank
445
+ # @api public
446
+ # @example
447
+ # stat.blka_rank #=> 22
448
+ # @return [Integer, nil] blocked attempts rank
449
+ attribute :blka_rank, Shale::Type::Integer
450
+
451
+ # @!attribute [rw] pf_rank
452
+ # Returns personal fouls rank
453
+ # @api public
454
+ # @example
455
+ # stat.pf_rank #=> 25
456
+ # @return [Integer, nil] personal fouls rank
457
+ attribute :pf_rank, Shale::Type::Integer
458
+
459
+ # @!attribute [rw] pfd_rank
460
+ # Returns personal fouls drawn rank
461
+ # @api public
462
+ # @example
463
+ # stat.pfd_rank #=> 17
464
+ # @return [Integer, nil] personal fouls drawn rank
465
+ attribute :pfd_rank, Shale::Type::Integer
466
+
467
+ # @!attribute [rw] pts_rank
468
+ # Returns points rank
469
+ # @api public
470
+ # @example
471
+ # stat.pts_rank #=> 2
472
+ # @return [Integer, nil] points rank
473
+ attribute :pts_rank, Shale::Type::Integer
474
+
475
+ # @!attribute [rw] plus_minus_rank
476
+ # Returns plus/minus rank
477
+ # @api public
478
+ # @example
479
+ # stat.plus_minus_rank #=> 6
480
+ # @return [Integer, nil] plus/minus rank
481
+ attribute :plus_minus_rank, Shale::Type::Integer
482
+
483
+ # Returns the team object
484
+ #
485
+ # @api public
486
+ # @example
487
+ # stat.team #=> #<NBA::Team>
488
+ # @return [Team, nil] the team object
489
+ def team
490
+ Teams.find(team_id)
491
+ end
492
+
493
+ # Returns the versus player object
494
+ #
495
+ # @api public
496
+ # @example
497
+ # stat.vs_player #=> #<NBA::Player>
498
+ # @return [Player, nil] the versus player object
499
+ def vs_player
500
+ Players.find(vs_player_id)
501
+ end
502
+
503
+ # Returns whether the player was on the court
504
+ #
505
+ # @api public
506
+ # @example
507
+ # stat.on_court? #=> true
508
+ # @return [Boolean] true if the player was on the court
509
+ def on_court?
510
+ court_status.eql?("On")
511
+ end
512
+
513
+ # Returns whether the player was off the court
514
+ #
515
+ # @api public
516
+ # @example
517
+ # stat.off_court? #=> true
518
+ # @return [Boolean] true if the player was off the court
519
+ def off_court?
520
+ court_status.eql?("Off")
521
+ end
522
+ end
523
+ end
@@ -0,0 +1,135 @@
1
+ require "shale"
2
+ require "equalizer"
3
+
4
+ module NBA
5
+ # Represents team on/off player summary statistics
6
+ #
7
+ # @api public
8
+ class TeamOnOffPlayerSummary < Shale::Mapper
9
+ include Equalizer.new(:team_id, :vs_player_id, :court_status)
10
+
11
+ # @!attribute [rw] group_set
12
+ # Returns the group set
13
+ # @api public
14
+ # @example
15
+ # summary.group_set #=> "Overall"
16
+ # @return [String, nil] the group set
17
+ attribute :group_set, Shale::Type::String
18
+
19
+ # @!attribute [rw] team_id
20
+ # Returns the team ID
21
+ # @api public
22
+ # @example
23
+ # summary.team_id #=> 1610612744
24
+ # @return [Integer, nil] the team ID
25
+ attribute :team_id, Shale::Type::Integer
26
+
27
+ # @!attribute [rw] team_abbreviation
28
+ # Returns the team abbreviation
29
+ # @api public
30
+ # @example
31
+ # summary.team_abbreviation #=> "GSW"
32
+ # @return [String, nil] the team abbreviation
33
+ attribute :team_abbreviation, Shale::Type::String
34
+
35
+ # @!attribute [rw] team_name
36
+ # Returns the team name
37
+ # @api public
38
+ # @example
39
+ # summary.team_name #=> "Warriors"
40
+ # @return [String, nil] the team name
41
+ attribute :team_name, Shale::Type::String
42
+
43
+ # @!attribute [rw] vs_player_id
44
+ # Returns the opponent player ID
45
+ # @api public
46
+ # @example
47
+ # summary.vs_player_id #=> 201939
48
+ # @return [Integer, nil] the opponent player ID
49
+ attribute :vs_player_id, Shale::Type::Integer
50
+
51
+ # @!attribute [rw] vs_player_name
52
+ # Returns the opponent player name
53
+ # @api public
54
+ # @example
55
+ # summary.vs_player_name #=> "Stephen Curry"
56
+ # @return [String, nil] the opponent player name
57
+ attribute :vs_player_name, Shale::Type::String
58
+
59
+ # @!attribute [rw] court_status
60
+ # Returns whether player is on or off court
61
+ # @api public
62
+ # @example
63
+ # summary.court_status #=> "On"
64
+ # @return [String, nil] whether player is on or off court
65
+ attribute :court_status, Shale::Type::String
66
+
67
+ # @!attribute [rw] gp
68
+ # Returns games played
69
+ # @api public
70
+ # @example
71
+ # summary.gp #=> 82
72
+ # @return [Integer, nil] games played
73
+ attribute :gp, Shale::Type::Integer
74
+
75
+ # @!attribute [rw] min
76
+ # Returns minutes played
77
+ # @api public
78
+ # @example
79
+ # summary.min #=> 32.5
80
+ # @return [Float, nil] minutes played
81
+ attribute :min, Shale::Type::Float
82
+
83
+ # @!attribute [rw] plus_minus
84
+ # Returns plus/minus rating
85
+ # @api public
86
+ # @example
87
+ # summary.plus_minus #=> 8.5
88
+ # @return [Float, nil] plus/minus rating
89
+ attribute :plus_minus, Shale::Type::Float
90
+
91
+ # @!attribute [rw] off_rating
92
+ # Returns offensive rating
93
+ # @api public
94
+ # @example
95
+ # summary.off_rating #=> 115.2
96
+ # @return [Float, nil] offensive rating
97
+ attribute :off_rating, Shale::Type::Float
98
+
99
+ # @!attribute [rw] def_rating
100
+ # Returns defensive rating
101
+ # @api public
102
+ # @example
103
+ # summary.def_rating #=> 108.7
104
+ # @return [Float, nil] defensive rating
105
+ attribute :def_rating, Shale::Type::Float
106
+
107
+ # @!attribute [rw] net_rating
108
+ # Returns net rating
109
+ # @api public
110
+ # @example
111
+ # summary.net_rating #=> 6.5
112
+ # @return [Float, nil] net rating
113
+ attribute :net_rating, Shale::Type::Float
114
+
115
+ # Returns whether the player is on court
116
+ #
117
+ # @api public
118
+ # @example
119
+ # summary.on_court? #=> true
120
+ # @return [Boolean] true if player is on court
121
+ def on_court?
122
+ court_status.eql?("On")
123
+ end
124
+
125
+ # Returns whether the player is off court
126
+ #
127
+ # @api public
128
+ # @example
129
+ # summary.off_court? #=> true
130
+ # @return [Boolean] true if player is off court
131
+ def off_court?
132
+ court_status.eql?("Off")
133
+ end
134
+ end
135
+ end