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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 6d8b2ec66701c3379736ff828ad45e260859f2a8
4
- data.tar.gz: dd7119fc6c31a5b4f7313ee5035baebe2905c34e
3
+ metadata.gz: 3599c03952b20715f7f09073f1b35417de757c4c
4
+ data.tar.gz: 42a68494f1d6e58d1f1b6014e20c08d2d2049619
5
5
  SHA512:
6
- metadata.gz: 0cac709f237c56f99d788946f3dc0dfe092baf5ca00825b7c8a9105661a9906c62e5229d1f4e56bd31e70f38c8d0ce6232a4d2a0cc84c7ce50fa2e698a56c46b
7
- data.tar.gz: 7feaf3be90968cbebeadc8407ae6ae6d45974d163c0a5f7bf6ef37aa9a4c56c9c030f78cc62c6bf34193fb17e160058f9c3020d901f6b4aa60f1350d59ea2845
6
+ metadata.gz: 8d956dd1ecee7711685b258b817bf50568b39ae87e9163b2225c44c4f4e80d532495fff0dfa2c1a85684f9152ff390a95030017b5cdde6d33ca6e1eb12c2202b
7
+ data.tar.gz: 98068f1736e4b937b22b638a1248858e7fcd6fd487ba18a4f1b8833c79a7a61ab24b633e74cc3f12c3345a2a01f806fabaa5ed8e8ed3722cc5da349c0a8fb99c
@@ -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].each_with_index do |player, index|
24
- printf("%-3s", "#{index + 1}:")
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
- # require 'pry'
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.sort_by {|player| player.batting_ave}.reverse! #sort by attribute (batting_ave) of Player's instance
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
- self.row_scraper("odd")
27
- self.row_scraper("even")
28
- self.all
29
- end
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 number_position
52
- @number_position ||= doc.css(".general-info .first").text
53
- end
54
-
55
- def team
56
- @team ||= doc.css(".general-info .last").text
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
@@ -1,3 +1,3 @@
1
1
  module BattingLeaders
2
- VERSION = "0.1.5"
2
+ VERSION = "0.2.0"
3
3
  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.1.5
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: 2016-06-22 00:00:00.000000000 Z
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.4.5.1
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