standings 0.1.2 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
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: