2019-GCPL-CLI-Table 0.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (5) hide show
  1. checksums.yaml +7 -0
  2. data/lib/cli.rb +53 -0
  3. data/lib/scraper.rb +20 -0
  4. data/lib/team.rb +38 -0
  5. metadata +46 -0
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 69e9105e1ee85ffbfdd7540a729cf272cbd77e210395aea02fec1c59de7d086f
4
+ data.tar.gz: 1720bfc4a02f56990745444c1ea3281685a3f18b3c648f755b1c116512726c33
5
+ SHA512:
6
+ metadata.gz: 8b4eaa72b72af5c11f88b8075bede628428de5c5720b6e48a3da42b451ae8eedc78258ae8332caa7310ce7a7ad666883e4da9b93f85051c383326bed045e34d8
7
+ data.tar.gz: 1077a5020633aa8509bb0cfb5caefcf6fbf0e6b8319ff399e59ed3fa1dab7ceb057718cc8b05b352eca53a6ca641f8b7bd017174cd24bcf0a53ac0333c5e5d3a
@@ -0,0 +1,53 @@
1
+ require_relative '../lib/scraper.rb'
2
+ require_relative '../lib/team.rb'
3
+
4
+ def table_printer(array)
5
+ counter = 0
6
+ array.map do |team|
7
+ counter += 1
8
+ puts "#{counter}. #{team[0]}"
9
+ end
10
+ puts "Please select a team(1 - 18):"
11
+ end
12
+
13
+ def cli_printer
14
+ puts "Welcome to 2019 GCPL table printer!"
15
+ puts "Select a team to view:"
16
+ end
17
+
18
+ def team_selector
19
+ input = gets.strip.to_i
20
+ input -= 1
21
+ if input <= 18
22
+ table = "Team Name: #{Team.all[input].team_name}\t Games Played: #{Team.all[input].games_played}\n Wins:#{Team.all[input].wins}\t Losses: #{Team.all[input].losses}\t Draws: #{Team.all[input].draws}\t Points: #{Team.all[input].points}\n Goals For: #{Team.all[input].goals_for}\t Goals Against: #{Team.all[input].goals_against}"
23
+ puts table
24
+ else
25
+ puts "Please select a valid team"
26
+ team_selector
27
+ end
28
+ end
29
+
30
+ def choose_again
31
+ puts "Would you like to see a new team? Y/N"
32
+ input = gets.strip
33
+ input = input.upcase
34
+ if input == "Y"
35
+ table_printer(@all_team_data_save)
36
+ team_selector
37
+ choose_again
38
+ elsif input == "N"
39
+ puts "Thank you!"
40
+ else
41
+ puts "Please select Y or N"
42
+ choose_again
43
+ end
44
+ end
45
+
46
+ def print
47
+ cli_printer
48
+ table_printer(@all_team_data_save)
49
+ team_array_build(@all_team_data_save)
50
+ team_selector
51
+ choose_again
52
+ end
53
+
@@ -0,0 +1,20 @@
1
+ require "open-uri"
2
+ require "nokogiri"
3
+
4
+ site = "http://gcplsoccer.bonzidev.com/sam/standings/ss/schedule.php?v=3&divisionID=NDE4MjM5/*"
5
+
6
+ doc = Nokogiri::HTML(open(site))
7
+
8
+ @all_team_data_save = []
9
+
10
+ # Scrapes only team standings from HTML table and shovels into array
11
+
12
+ counter = 1
13
+ while counter >=1 && counter <=18
14
+ trimmed_table = doc.css("//tr")[counter] #selects rows with teams
15
+ counter += 1
16
+ textify = trimmed_table.css("td").text.gsub(/(\n|\t|\r)/, " ").gsub(/>\s*</, "><").squeeze(" ") # takes team rows and removes formatting
17
+ text = textify.scan(/[a-zA-Z\s][^\d]+|\d+/) #splits data into parts
18
+ stats_table = text.join(",").split(",") #transforms into usable array
19
+ @all_team_data_save << Array.new(stats_table) #saves data inside an array
20
+ end
@@ -0,0 +1,38 @@
1
+ require_relative '../lib/scraper.rb'
2
+
3
+ class Team
4
+ attr_reader :team_name, :games_played, :wins, :losses, :draws, :points, :goals_for, :goals_against
5
+ @@all = []
6
+
7
+ def initialize(team_name, games_played, wins, losses, draws, points, goals_for, goals_against)
8
+ @team_name = team_name
9
+ @games_played = games_played
10
+ @wins = wins
11
+ @losses = losses
12
+ @draws = draws
13
+ @points = points
14
+ @goals_for = goals_for
15
+ @goals_against = goals_against
16
+ @@all << self
17
+ end
18
+
19
+ def self.all
20
+ @@all
21
+ end
22
+
23
+
24
+ end
25
+
26
+ def team_array_build(array)
27
+ array.each do |team_data|
28
+ team_name = team_data[0].strip
29
+ games_played = team_data[1]
30
+ wins = team_data[2]
31
+ losses = team_data[3]
32
+ draws = team_data[4]
33
+ points = team_data[5]
34
+ goals_for = team_data[6]
35
+ goals_against = team_data[7]
36
+ Team.new(team_name, games_played, wins, losses, draws, points, goals_for, goals_against)
37
+ end
38
+ end
metadata ADDED
@@ -0,0 +1,46 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: 2019-GCPL-CLI-Table
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.0
5
+ platform: ruby
6
+ authors:
7
+ - Michael Lynch
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2019-10-15 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description:
14
+ email: michael@michaelrlynch.com
15
+ executables: []
16
+ extensions: []
17
+ extra_rdoc_files: []
18
+ files:
19
+ - lib/cli.rb
20
+ - lib/scraper.rb
21
+ - lib/team.rb
22
+ homepage: https://rubygems.org/gems.2019-GCPL-CLI-Table
23
+ licenses:
24
+ - MIT
25
+ metadata: {}
26
+ post_install_message:
27
+ rdoc_options: []
28
+ require_paths:
29
+ - lib
30
+ required_ruby_version: !ruby/object:Gem::Requirement
31
+ requirements:
32
+ - - ">="
33
+ - !ruby/object:Gem::Version
34
+ version: '0'
35
+ required_rubygems_version: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - ">="
38
+ - !ruby/object:Gem::Version
39
+ version: '0'
40
+ requirements: []
41
+ rubyforge_project:
42
+ rubygems_version: 2.7.6
43
+ signing_key:
44
+ specification_version: 4
45
+ summary: GCPL Season Table printer
46
+ test_files: []