batting_leaders 0.1.5 → 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.
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