nba-draft-2017 0.1.4 → 0.1.5

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 6f0147b2d14e9de9f667cd81cf6f7bf961de71da
4
- data.tar.gz: 7fd014c50775c251d4682dd2cb958e31216db3d8
3
+ metadata.gz: c0860395f6b4272bc732a95350ae287f197287f5
4
+ data.tar.gz: 9e2bc38aa3abb6f232976276b5a09aecf51a8f5c
5
5
  SHA512:
6
- metadata.gz: 80b35e9b3e8f3c133f78f43aace50c75480c0f3164c8fffd447f8b5d536a1e0ec2823a149bf8282189786727df901d2551fb88a9e7e21d3195a42805b5473541
7
- data.tar.gz: f78bae7c9d4656a7d00bed51fc6ebe4014dd8fdd6dada6a909b8f8bf68f0725e870a989556df6bac13662c1fa4460dacb4c182d2f617db3656ce5e95f5fd74ac
6
+ metadata.gz: 61dd9ad70ba4e7cc91d04261e528de03d7bf3e7b07478e60eca52b085f3a99ee1e17367a4d8200a69ce057f2fcf74a6385a19d7561934c8206eca644b3ab09cb
7
+ data.tar.gz: e90da45d5cc371a03a3551d3cea252fcf79425ab5925b39758bc3d73caf6453565c13c3fa2eb3c597e575cbcfab39492ad0aa071c78ce5431087fcac7dedf3b4
@@ -1,5 +1,7 @@
1
1
  class NbaDraft2017::Cli
2
2
 
3
+ @@key_stats = ['ppg', 'rpg', 'apg', 'tpg', 'spg', 'bpg', 'mpg', 'fg', 'three', 'ft']
4
+
3
5
  def call
4
6
  puts 'Welcome to the 2017 NBA Draft!'
5
7
  make_players
@@ -49,15 +51,13 @@ class NbaDraft2017::Cli
49
51
  end
50
52
 
51
53
  def make_players
52
- players_array = NbaDraft2017::Scraper.scrape_draft
53
- NbaDraft2017::Player.create_from_collection(players_array)
54
+ NbaDraft2017::Scraper.scrape_draft
54
55
  end
55
56
 
56
- def add_attributes_to_player(player_name)
57
- player = NbaDraft2017::Player.find_player_by_name(player_name)
58
- attributes = NbaDraft2017::Scraper.scrape_player("http://www.nba.com/draft/2017/prospects/" + player.profile_url)
59
- player.add_player_attributes(attributes)
60
- player
57
+ def add_attributes_to_players
58
+ NbaDraft2017::Player.all.each do |player|
59
+ add_attributes_to_player(player.name)
60
+ end
61
61
  end
62
62
 
63
63
  def menu
@@ -78,6 +78,8 @@ class NbaDraft2017::Cli
78
78
  list_draft_picks_by_nba_team
79
79
  elsif input == 'former team' || input == 'former'
80
80
  list_draft_picks_by_former_team
81
+ elsif input == 'compare stats'
82
+ compare_stats
81
83
  elsif input == 'exit'
82
84
  good_bye
83
85
  else
@@ -97,6 +99,7 @@ class NbaDraft2017::Cli
97
99
  puts "Enter #{player.colorize(:green)} to see player details and stats"
98
100
  puts "Enter #{nba_team.colorize(:green)} to show players drafted by a NBA team"
99
101
  puts "Enter #{former_team.colorize(:green)} to show players drated out of colleges or clubs"
102
+ puts "Enter " + "'compare stats'".colorize(:green) + " to see player with stat average above number specified by user"
100
103
  puts "To quit, type" + " 'exit'".colorize(:green)
101
104
  end
102
105
 
@@ -106,17 +109,21 @@ class NbaDraft2017::Cli
106
109
 
107
110
  if lookup.to_i.between?(1, NbaDraft2017::Player.all.size)
108
111
  player = NbaDraft2017::Player.find_player_by_pick(lookup)
109
- list_player_details(player.name)
110
- elsif NbaDraft2017::Player.find_player_by_name(lookup)
111
- list_player_details(lookup)
112
+ list_player_details(player)
113
+ elsif player ||= NbaDraft2017::Player.find_player_by_name(lookup)
114
+ list_player_details(player)
112
115
  else
113
116
  error
114
117
  end
115
118
  player
116
119
  end
117
120
 
118
- def list_player_details(player_name)
119
- player = add_attributes_to_player(player_name)
121
+ def list_player_details(player)
122
+ if NbaDraft2017::Player.all_attributes
123
+ player
124
+ else
125
+ player = NbaDraft2017::Player.add_attributes_to_player(player)
126
+ end
120
127
 
121
128
  puts "#{player.name.upcase.bold.underline}".colorize(:green).bold
122
129
  puts " Round:".bold.colorize(:red) +" #{player.round}" + " Pick:".bold.colorize(:red) +" #{player.pick}"
@@ -143,6 +150,27 @@ class NbaDraft2017::Cli
143
150
  end
144
151
  end
145
152
 
153
+ def compare_stats
154
+ puts "This might take a minute for first comaprison.".bold.colorize(:green)
155
+ puts "To proceed enter a stat category from #{@@key_stats} or 'menu' to return to menu"
156
+ stat_category = gets.downcase.strip
157
+ if @@key_stats.include?(stat_category)
158
+ puts "Enter a number to see players that have a higher average for #{stat_category.colorize(:green)} and make sure to enter a decimal for fg%, three%, and ft%"
159
+ stat_num = gets.strip
160
+ if stat_num.to_f.between?(0.001,40)
161
+ NbaDraft2017::Player.stat_greater_than(stat_category, stat_num)
162
+ elsif stat_num == 'menu' || stat_num == 'exit'
163
+ menu
164
+ else
165
+ error
166
+ end
167
+ elsif stat_category == 'menu' || stat_category == 'exit'
168
+ menu
169
+ else
170
+ error
171
+ end
172
+ end
173
+
146
174
  def list_draft_picks_by_nba_team
147
175
  puts NbaDraft2017::Player.nba_teams.sort
148
176
  puts 'Enter an NBA team (name only) as in list above:'.colorize(:green)
@@ -6,16 +6,13 @@ class NbaDraft2017::Player
6
6
  @@all = []
7
7
  @@nba_teams = []
8
8
  @@former_teams = []
9
+ @@all_attributes = nil
9
10
 
10
11
  def initialize(player_hash)
11
12
  player_hash.each {|attribute, value| self.send("#{attribute}=", value) }
12
13
  @@all << self
13
14
  end
14
15
 
15
- def self.create_from_collection(players_array)
16
- players_array.each { |player| NbaDraft2017::Player.new(player) }
17
- end
18
-
19
16
  def add_player_attributes(attributes_hash)
20
17
  attributes_hash.each { |attribute, value| self.send("#{attribute}=", value) }
21
18
  end
@@ -28,6 +25,36 @@ class NbaDraft2017::Player
28
25
  NbaDraft2017::Player.all.detect { |player| player.pick == pick.to_s }
29
26
  end
30
27
 
28
+
29
+ def self.add_attributes_to_player(player)
30
+ attributes = NbaDraft2017::Scraper.scrape_player("http://www.nba.com/draft/2017/prospects/" + player.profile_url)
31
+ player.add_player_attributes(attributes)
32
+ player
33
+ end
34
+
35
+ def self.add_attributes_to_players
36
+ @@all_attributes = self.all.each do |player|
37
+ add_attributes_to_player(player)
38
+ end
39
+ end
40
+
41
+
42
+ def self.stat_greater_than(stat_category, stat_num)
43
+ @@all_attributes ||= self.add_attributes_to_players
44
+ puts "Players with a higher average #{stat_category} include:".colorize(:green)
45
+ puts "------------------------------------------------------------".bold.colorize(:red)
46
+
47
+ players = self.all.select.with_index(1) do |player, idx|
48
+ if player.send(stat_category) && player.send(stat_category) > stat_num.to_f
49
+ puts "Pick: #{idx.to_s.colorize(:green)}. #{player.name.colorize(:green)} - #{player.send(stat_category).to_s.colorize(:red)} #{stat_category}"
50
+ player
51
+ end
52
+
53
+ end
54
+ puts "Nobody!".bold.colorize(:red) if players.empty?
55
+ puts "------------------------------------------------------------".bold.colorize(:red)
56
+ end
57
+
31
58
  def self.nba_teams
32
59
  self.all.each do |player|
33
60
  @@nba_teams << player.nba_team.downcase.strip
@@ -63,6 +90,10 @@ class NbaDraft2017::Player
63
90
  end
64
91
  end
65
92
 
93
+ def self.all_attributes
94
+ @@all_attributes
95
+ end
96
+
66
97
  def self.all
67
98
  @@all
68
99
  end
@@ -41,12 +41,10 @@ class NbaDraft2017::Scraper
41
41
  else
42
42
  player[:profile_url] = player[:first_name].gsub(/\W/, '').downcase + '_' + player[:last_name].gsub(/\W/, '').downcase
43
43
  end
44
-
45
- players << player
44
+ NbaDraft2017::Player.new(player)
46
45
  pick = pick.to_i + 1
47
46
  i += 1
48
47
  end
49
- players
50
48
  end
51
49
 
52
50
  def self.scrape_player(profile_url)
@@ -111,7 +109,7 @@ class NbaDraft2017::Scraper
111
109
  elsif stat.downcase.include?('mpg')
112
110
  player[:mpg] = stat.split(' ')[0].strip.to_f
113
111
  player[:mpg].to_s + ' ' + stat.split(' ')[1].strip
114
- elsif stat.downcase.include?('fg')
112
+ elsif stat.downcase.include?('fg')
115
113
  player[:fg] = stat.split(' ')[0].strip.to_f
116
114
  player[:FG].to_s + ' ' + stat.split(' ')[1].strip
117
115
  elsif stat.downcase.include?('3pt')
@@ -1,3 +1,3 @@
1
1
  module NbaDraft2017
2
- VERSION = "0.1.4"
2
+ VERSION = "0.1.5"
3
3
  end
Binary file
@@ -23,6 +23,6 @@ Gem::Specification.new do |spec|
23
23
  spec.add_development_dependency "rspec", "~> 3.0"
24
24
  spec.add_development_dependency "pry"
25
25
 
26
- spec.add_runtime_dependency "nokogiri", "~>1.8.0"
26
+ spec.add_runtime_dependency "nokogiri", "~> 1.0"
27
27
  spec.add_runtime_dependency "colorize"
28
28
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: nba-draft-2017
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.4
4
+ version: 0.1.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Paul Snider
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-07-13 00:00:00.000000000 Z
11
+ date: 2017-07-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -72,14 +72,14 @@ dependencies:
72
72
  requirements:
73
73
  - - "~>"
74
74
  - !ruby/object:Gem::Version
75
- version: 1.8.0
75
+ version: '1.0'
76
76
  type: :runtime
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
80
  - - "~>"
81
81
  - !ruby/object:Gem::Version
82
- version: 1.8.0
82
+ version: '1.0'
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: colorize
85
85
  requirement: !ruby/object:Gem::Requirement
@@ -118,6 +118,7 @@ files:
118
118
  - lib/nba_draft_2017/player.rb
119
119
  - lib/nba_draft_2017/scraper.rb
120
120
  - lib/nba_draft_2017/version.rb
121
+ - nba-draft-2017-0.1.4.gem
121
122
  - nba_draft_2017.gemspec
122
123
  - spec/nba_draft_spec.rb
123
124
  - spec/spec_helper.rb