2019-GCPL-CLI-Table 0.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/lib/cli.rb +53 -0
- data/lib/scraper.rb +20 -0
- data/lib/team.rb +38 -0
- metadata +46 -0
checksums.yaml
ADDED
@@ -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
|
data/lib/cli.rb
ADDED
@@ -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
|
+
|
data/lib/scraper.rb
ADDED
@@ -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
|
data/lib/team.rb
ADDED
@@ -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: []
|