standings 0.1.2 → 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,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- NWQ3N2RlNTEzNDY3YTgwODY3MjgzZjdkOTE3Mzc1NmY0MDYwYjliMA==
4
+ M2UyZjUzOTBhZWEyYWIwMWQ2OWVlMzMyMjE3ODk0ODFlMzAwM2VlNg==
5
5
  data.tar.gz: !binary |-
6
- YzRlNmYzOThlZGEyYTQwMDIwZTg3ZjUxYTIzNDAyMjE0Y2RkMGYzOA==
6
+ Yzc0MTE5ZTIxNWU3ZTYwNmFlODMwYWFmMTg3OTQwM2E1NjhmNGVhZg==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- NTUzODc3YWE3ODdlZWU3YjhkNTVhY2M3OWMwMTg0YmRmNDBhM2UyMWRhNWEz
10
- ODk1ZTQ0MjU1MmI1YmM3ZDQ2MTg3ZDRmOGUzODIyYmFjY2MxYzk2NDhlZTNl
11
- YzcwMzFkYmQxNzVlYjc0OGIwMjQ2ZWI1YTZkNTc3NmVkZDYwNzY=
9
+ ZGUyM2RjOGMwNGIxZGEwMTZiMTliMWJmNGVjMjRhY2M4MDFjZDllMWZkNDUy
10
+ OTIxMTVlNWRlYWRkYjc2NjlkODI5Y2E0N2IzNzZjYzljNzhhMTNhYzczMzMx
11
+ MmYyZjEwMWQ5MTllYzk0MTBiNTk5ODY4MjRlMjU0MDgwMDllOGU=
12
12
  data.tar.gz: !binary |-
13
- YjNhYTg2YjI3YjNlMTgwNmRlNzQyYjYwZWJkZDkyMWNhZDNkZTdjNjc4MWVl
14
- ZjM4NmQ4ZGUwMzRmOGM1NzYyZDFkNzNjM2Q0YzEyMTUwOWM1YTRlODVjM2Yy
15
- NWEyNDE2MGNiMmFjZmRhNGFlYWFhMDMyNzhhNzdhMWJmNWFhNTk=
13
+ N2IyYjEyZTJlNTNkMDdkNDA5MmY0Zjg3NmI5OTQyOTYwZDFhYjE5M2M4NTFk
14
+ ZGI3ZGE2ZmVjZDQzZDdhNDQ3NWU5Y2ZhYzNiYjg3ODI4OTY4MmZhODlhOGQy
15
+ ZGMzZjZhYjA2ZjZlOGJiZWVhMWZkZTBhNzQxMzgzYjNmYzBlNDE=
data/bin/standings CHANGED
@@ -1,3 +1,5 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
- require 'standings'
3
+ require 'standings'
4
+
5
+ #require_relative '../lib/standings.rb'
@@ -1,11 +1,10 @@
1
1
  require 'nokogiri'
2
2
  require 'open-uri'
3
3
  require 'colorize'
4
+ require 'trollop'
4
5
  require 'pry'
5
6
 
7
+ require_relative '../lib/league.rb'
6
8
  require_relative '../lib/displayer.rb'
7
9
  require_relative '../lib/table_scraper.rb'
8
- require_relative '../lib/team.rb'
9
- require_relative '../lib/standings.rb'
10
-
11
- Displayer.new.call
10
+ require_relative '../lib/team.rb'
data/lib/displayer.rb CHANGED
@@ -1,27 +1,35 @@
1
1
  class Displayer
2
2
 
3
- def call
4
- TableScraper.new.call
3
+ def call
5
4
  display_table
6
5
  end
7
6
 
8
7
  def template(team)
9
- string = "#{(team.position).ljust(3," ")} #{team.played.ljust(3, " ")} #{team.points.ljust(5, " ")}"
10
- if team.position.to_i <= 4
11
- string += team.name.green
12
- elsif team.position.to_i >= 18
13
- string += team.name.red
8
+ output = "#{(team.position).ljust(3," ")} #{team.played.ljust(3, " ")} #{team.points.to_s.ljust(5, " ")}"
9
+
10
+ if team.top?
11
+ output += team.name.green
12
+ elsif team.middle?
13
+ output += team.name.light_blue
14
+ elsif team.bottom?
15
+ output += team.name.red
14
16
  else
15
- string += team.name
17
+ output += team.name
16
18
  end
17
- puts string
19
+
18
20
  end
19
21
 
20
22
  def display_table
21
- puts "-" * 28
23
+ puts dashes_for_display_table
22
24
  puts "# P Pts Team"
23
- puts "-" * 28
24
- Team.all.each { |team| template(team) }
25
+ puts dashes_for_display_table
26
+ League.teams.each { |team| puts template(team) }
27
+ puts dashes_for_display_table
25
28
  end
26
-
29
+
30
+ def dashes_for_display_table
31
+ # draw enough dashes so that teams with long names are still covered by the dashes. Given a team length integer, add it to 17 (the length of the static puts statement in #display_table)
32
+ "-" * (17 + League.get_longest_team_name_length)
33
+ end
34
+
27
35
  end
data/lib/league.rb ADDED
@@ -0,0 +1,88 @@
1
+ class League
2
+ class << self
3
+ attr_accessor :league_symbol, :league_full_name, :top_teams, :middle_teams, :bottom_teams, :longest_team_name_length
4
+ end
5
+
6
+ LeaguesHash = {
7
+ :epl => {
8
+ :full_name => "premierleague",
9
+ :top_teams => 4,
10
+ :middle_teams => 5,
11
+ :bottom_teams => 3
12
+ },
13
+ :championship => {
14
+ :full_name => "championship",
15
+ :top_teams => 2,
16
+ :middle_teams => 6,
17
+ :bottom_teams => 3
18
+ },
19
+ :spl => {
20
+ :full_name => "scottishpremierleague",
21
+ :top_teams => 1,
22
+ :middle_teams => 3,
23
+ :bottom_teams => 2
24
+ },
25
+ :liga => {
26
+ :full_name => "laligafootball",
27
+ :top_teams => 3,
28
+ :middle_teams => 6,
29
+ :bottom_teams => 3
30
+ },
31
+ :ligue => {
32
+ :full_name => "ligue1football",
33
+ :top_teams => 3,
34
+ :middle_teams => 4,
35
+ :bottom_teams => 3
36
+ },
37
+ :seriea => {
38
+ :full_name => "serieafootball",
39
+ :top_teams => 3,
40
+ :middle_teams => 5,
41
+ :bottom_teams => 3
42
+ },
43
+ :bundesliga => {
44
+ :full_name => "bundesligafootball",
45
+ :top_teams => 4,
46
+ :middle_teams => 6,
47
+ :bottom_teams => 3
48
+ }
49
+ }
50
+
51
+ @@teams = []
52
+
53
+ def self.teams
54
+ @@teams
55
+ end
56
+
57
+ def self.team_count
58
+ teams.length
59
+ end
60
+
61
+ def self.set_league_info(league_selection)
62
+ self.league_symbol = league_selection
63
+ self.set_league_full_name
64
+ self.set_top_teams
65
+ self.set_middle_teams
66
+ self.set_bottom_teams
67
+ end
68
+
69
+ def self.set_league_full_name
70
+ self.league_full_name = League::LeaguesHash[league_symbol][:full_name]
71
+ end
72
+
73
+ def self.set_top_teams
74
+ self.top_teams = League::LeaguesHash[league_symbol][:top_teams]
75
+ end
76
+
77
+ def self.set_middle_teams
78
+ self.middle_teams = League::LeaguesHash[league_symbol][:middle_teams]
79
+ end
80
+
81
+ def self.set_bottom_teams
82
+ self.bottom_teams = League::LeaguesHash[league_symbol][:bottom_teams]
83
+ end
84
+
85
+ def self.get_longest_team_name_length
86
+ self.longest_team_name_length ||= self.teams.sort_by {|t| t.name.length }.last.name.length
87
+ end
88
+ end
data/lib/standings.rb CHANGED
@@ -1,2 +1,37 @@
1
+ #!/bin/env ruby
2
+ # encoding: utf-8
3
+
1
4
  require_relative '../config/environment'
2
- Displayer.new
5
+ opts = Trollop::options do
6
+ version <<-EOS
7
+
8
+ ⚽ Standings
9
+ Version 0.2.0 | November 2013
10
+ Scott Luptowski | @scottluptowski
11
+
12
+ EOS
13
+ banner <<-EOS
14
+ \n⚽ Standings is a command line gem which lets users check the current standings in a number of European football/soccer leagues. The data is scraped and thus subject to availability.
15
+
16
+ Usage:
17
+ \n
18
+
19
+ EOS
20
+ opt :epl, "🇬🇧 English Premier League"
21
+ opt :championship, "🇬🇧 English Championship"
22
+ opt :spl, "🇬🇧 Scottish Premier League"
23
+ opt :liga, "🇪🇸 La Liga"
24
+ opt :ligue, "🇫🇷 Ligue 1"
25
+ opt :seriea, "🇮🇹 Seria A"
26
+ opt :bundesliga, "🇩🇪 Bundesliga"
27
+ end
28
+
29
+ league_selection = opts.keys.detect { |k| opts[k] }
30
+
31
+ unless !league_selection
32
+ League.set_league_info(league_selection)
33
+ TableScraper.new.call
34
+ Displayer.new.call
35
+ else
36
+ puts "⚽ Standings requires you to pass in the flag of a league. Run with --help for help."
37
+ end
data/lib/table_scraper.rb CHANGED
@@ -3,7 +3,7 @@ class TableScraper
3
3
  attr_accessor :url, :teams
4
4
 
5
5
  def initialize
6
- @url = "http://www.theguardian.com/football/premierleague/table"
6
+ @url = "http://www.theguardian.com/football/" + League::league_full_name + "/table"
7
7
  end
8
8
 
9
9
  def call
@@ -23,4 +23,5 @@ class TableScraper
23
23
  })
24
24
  end
25
25
  end
26
+
26
27
  end
data/lib/team.rb CHANGED
@@ -1,18 +1,24 @@
1
1
  class Team
2
2
  attr_accessor :name, :position, :played, :points
3
-
4
- @@teams = []
5
-
3
+
6
4
  def initialize(info)
7
5
  @name = info[:name]
8
6
  @played = info[:played]
9
7
  @points = info[:points]
10
8
  @position = info[:position]
11
- @@teams << self
9
+ League.teams << self
12
10
  end
13
11
 
14
- def self.all
15
- @@teams
12
+ def top?
13
+ self.position.to_i <= League.top_teams
14
+ end
15
+
16
+ def middle?
17
+ League.middle_teams && self.position.to_i <= League.middle_teams
18
+ end
19
+
20
+ def bottom?
21
+ self.position.to_i >= League.team_count - (League.bottom_teams - 1)
16
22
  end
17
23
 
18
24
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: standings
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Scott Luptowski
@@ -38,7 +38,23 @@ dependencies:
38
38
  - - ! '>='
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
- description: View the current table of the Barclays Premier League from your terminal
41
+ - !ruby/object:Gem::Dependency
42
+ name: trollop
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ! '>='
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ! '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ description: View European football/soccer standings from your terminal. Currently
56
+ supports Premier League, Scottish Premier League, La Liga, Ligue 1, Serie A, and
57
+ Bundesliga
42
58
  email: scottluptowski@gmail.com
43
59
  executables:
44
60
  - standings
@@ -47,6 +63,7 @@ extra_rdoc_files: []
47
63
  files:
48
64
  - config/environment.rb
49
65
  - lib/displayer.rb
66
+ - lib/league.rb
50
67
  - lib/standings.rb
51
68
  - lib/table_scraper.rb
52
69
  - lib/team.rb
@@ -74,5 +91,6 @@ rubyforge_project:
74
91
  rubygems_version: 2.1.4
75
92
  signing_key:
76
93
  specification_version: 4
77
- summary: BPL table
94
+ summary: football/soccer standings
78
95
  test_files: []
96
+ has_rdoc: