batting_leaders 0.1.5 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/batting_leaders/cli.rb +11 -11
- data/lib/batting_leaders/player.rb +25 -46
- data/lib/batting_leaders/version.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3599c03952b20715f7f09073f1b35417de757c4c
|
4
|
+
data.tar.gz: 42a68494f1d6e58d1f1b6014e20c08d2d2049619
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8d956dd1ecee7711685b258b817bf50568b39ae87e9163b2225c44c4f4e80d532495fff0dfa2c1a85684f9152ff390a95030017b5cdde6d33ca6e1eb12c2202b
|
7
|
+
data.tar.gz: 98068f1736e4b937b22b638a1248858e7fcd6fd487ba18a4f1b8833c79a7a61ab24b633e74cc3f12c3345a2a01f806fabaa5ed8e8ed3722cc5da349c0a8fb99c
|
data/lib/batting_leaders/cli.rb
CHANGED
@@ -20,8 +20,8 @@ class BattingLeaders::CLI
|
|
20
20
|
puts ""
|
21
21
|
if number_players == 10 || number_players == 20 || number_players == 30 || number_players == 40
|
22
22
|
puts "---Player--------------------batting ave---"
|
23
|
-
@sorted_leading_batters[0,number_players].
|
24
|
-
printf("%-3s", "#{index
|
23
|
+
@sorted_leading_batters[0,number_players].each.with_index(1) do |player, index|
|
24
|
+
printf("%-3s", "#{index}:")
|
25
25
|
printf("%-27s", "#{player.name}")
|
26
26
|
puts "#{player.batting_ave}"
|
27
27
|
end
|
@@ -57,15 +57,15 @@ class BattingLeaders::CLI
|
|
57
57
|
player = BattingLeaders::Player.find_player_by_url(player_url)
|
58
58
|
puts "name: #{player.name}"
|
59
59
|
puts "batting ave: #{player.batting_ave}"
|
60
|
-
puts "number and position: #{player.number_position}"
|
61
|
-
puts "team: #{player.team}"
|
62
|
-
puts "HR (this season): #{player.homerun}"
|
63
|
-
puts "RBI (this season): #{player.rbi}"
|
64
|
-
puts "OBP (this season): #{player.obp}"
|
65
|
-
puts "birth date: #{player.birth_date}"
|
66
|
-
puts "experience: #{player.experience}"
|
67
|
-
puts "college: #{player.college}"
|
68
|
-
puts "Ht/Wt: #{player.ht_wt}"
|
60
|
+
puts "number and position: #{player.other_details[:number_position]}"
|
61
|
+
puts "team: #{player.other_details[:team]}"
|
62
|
+
puts "HR (this season): #{player.other_details[:homerun]}"
|
63
|
+
puts "RBI (this season): #{player.other_details[:rbi]}"
|
64
|
+
puts "OBP (this season): #{player.other_details[:obp]}"
|
65
|
+
puts "birth date: #{player.other_details[:birth_date]}"
|
66
|
+
puts "experience: #{player.other_details[:experience]}"
|
67
|
+
puts "college: #{player.other_details[:college]}"
|
68
|
+
puts "Ht/Wt: #{player.other_details[:ht_wt]}"
|
69
69
|
puts ""
|
70
70
|
end
|
71
71
|
|
@@ -1,12 +1,25 @@
|
|
1
1
|
require 'open-uri'
|
2
2
|
require 'nokogiri'
|
3
|
-
|
3
|
+
require 'pry'
|
4
4
|
|
5
5
|
|
6
6
|
class BattingLeaders::Player
|
7
7
|
attr_accessor :name, :batting_ave, :url
|
8
8
|
@@all = []
|
9
9
|
|
10
|
+
PlayerDetails = {
|
11
|
+
# @team => ".general-info .last"
|
12
|
+
team: [".general-info .last", 0, ""],
|
13
|
+
number_position: [".general-info .first", 0, ""],
|
14
|
+
birth_date: [".player-metadata li", 0, "Birth Date"],
|
15
|
+
homerun: [".header-stats td", 1, ""],
|
16
|
+
experience: [".player-metadata li", 2, "Experience"],
|
17
|
+
college: [".player-metadata li", 3, "College"],
|
18
|
+
ht_wt: [".player-metadata li", 4, "Ht/Wt"],
|
19
|
+
rbi: [".header-stats td", 2, ""],
|
20
|
+
obp: [".header-stats td", 3, ""]
|
21
|
+
}
|
22
|
+
|
10
23
|
def initialize(player_hash)
|
11
24
|
@name = player_hash[:name]
|
12
25
|
@batting_ave = player_hash[:batting_ave]
|
@@ -19,20 +32,14 @@ class BattingLeaders::Player
|
|
19
32
|
end
|
20
33
|
|
21
34
|
def self.sorted_batters
|
22
|
-
self.batting_leaders.
|
35
|
+
self.batting_leaders.sort {|player, player2| player2.batting_ave <=> player.batting_ave} #sort by attribute (batting_ave) of Player's instance
|
23
36
|
end
|
24
37
|
|
25
38
|
def self.batting_leaders
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
def self.row_scraper(oddEven)
|
32
|
-
oddEven =="odd" ? odd_or_even_row = "oddrow" : odd_or_even_row = "evenrow"
|
33
|
-
get_page = Nokogiri::HTML(open"http://espn.go.com/mlb/stats/batting/_/year/2016/seasontype/2")
|
34
|
-
|
35
|
-
get_page.css("tr.#{odd_or_even_row}").collect do |player|
|
39
|
+
# oddEven =="odd" ? odd_or_even_row = "oddrow" : odd_or_even_row = "evenrow"
|
40
|
+
current_year = Date.today.year
|
41
|
+
get_page = Nokogiri::HTML(open"http://espn.go.com/mlb/stats/batting/_/#{current_year}/2016/seasontype/2")
|
42
|
+
get_page.css("tr.oddrow,.evenrow").collect do |player|
|
36
43
|
player_attributes = {:name => player.css("a").text,
|
37
44
|
:url => player.css("a").attribute("href").value,
|
38
45
|
:batting_ave => player.css(".sortcell").text}
|
@@ -48,40 +55,12 @@ class BattingLeaders::Player
|
|
48
55
|
@doc ||= Nokogiri::HTML(open"#{@url}").css(".mod-content")
|
49
56
|
end
|
50
57
|
|
51
|
-
def
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
end
|
58
|
-
|
59
|
-
def birth_date
|
60
|
-
@birth_date ||= doc.css(".player-metadata li")[0].text.gsub("Birth Date", "")
|
61
|
-
end
|
62
|
-
|
63
|
-
def experience
|
64
|
-
@experience ||= doc.css(".player-metadata li")[2].text.gsub("Experience", "")
|
65
|
-
end
|
66
|
-
|
67
|
-
def college
|
68
|
-
@college ||= doc.css(".player-metadata li")[3].text.gsub("College", "")
|
69
|
-
end
|
70
|
-
|
71
|
-
def ht_wt
|
72
|
-
@ht_wt ||= doc.css(".player-metadata li")[4].text.gsub("Ht/Wt", "")
|
73
|
-
end
|
74
|
-
|
75
|
-
def homerun
|
76
|
-
@homerun ||= doc.css(".header-stats td")[1].text
|
77
|
-
end
|
78
|
-
|
79
|
-
def rbi
|
80
|
-
@rbi ||= doc.css(".header-stats td")[2].text
|
81
|
-
end
|
82
|
-
|
83
|
-
def obp
|
84
|
-
@obp ||= doc.css(".header-stats td")[3].text
|
58
|
+
def other_details
|
59
|
+
player_detail_hash = {}
|
60
|
+
PlayerDetails.each do |attribute, values| #values = ["css selector", index, "erased text using gsub" ]
|
61
|
+
player_detail_hash[attribute] ||= doc.css(values[0])[values[1]].text.gsub(values[2], "")
|
62
|
+
end
|
63
|
+
player_detail_hash
|
85
64
|
end
|
86
65
|
|
87
66
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: batting_leaders
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Han Lee
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2017-09-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -128,7 +128,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
128
128
|
version: '0'
|
129
129
|
requirements: []
|
130
130
|
rubyforge_project:
|
131
|
-
rubygems_version: 2.
|
131
|
+
rubygems_version: 2.6.3
|
132
132
|
signing_key:
|
133
133
|
specification_version: 4
|
134
134
|
summary: A CLI app for listing MLB batting leaders for batting average
|