leaderbrag 1.0.0 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 7579c259982dedf4121354fd0cdcdd697e2c76ff
4
- data.tar.gz: 6c98eebdb490302afcde4ef45289516ad51421e4
3
+ metadata.gz: a290db98c22b0314fc48551b7d319ea8b3a59817
4
+ data.tar.gz: e8209617515bc0e5d8341149e2ad9c2e1e5044c9
5
5
  SHA512:
6
- metadata.gz: 6d7b685b826f17d073c2c923e3790ef1f1ab66c552f50ee928ae1c4c43feec0377ea734063c80395b9b594b2a163d774c50ca7b8711b1f1cf4d7bcda0909daa9
7
- data.tar.gz: b30eacd0ffd35c3540d24dd41e7702055405ab06c4c88c1e2ea83cecb860bee89445c5ebdaca81baba3d41a7adf7bdf377e65fb1d02f7c413f1db90e9c7a74dc
6
+ metadata.gz: cae3372bfd3175481c84b7c900e950cfd194985b6a3266d9f208cc0d2c3814a3db0c1d76fc4218e16e584d55f7357bfe0bfe4b44a9f89a3b811bc2f3e850b69c
7
+ data.tar.gz: 4cc9b47a6969af72376c5126728bb6f5944e892a8bfc6068008467df75aa144fb667290fa8538216977bbee4f3d22186c1f089b957e9f42b18f442eda79d0dc1
data/.rubocop_todo.yml CHANGED
@@ -1,6 +1,6 @@
1
1
  # This configuration was generated by
2
2
  # `rubocop --auto-gen-config`
3
- # on 2019-06-21 22:32:50 -0500 using RuboCop version 0.71.0.
3
+ # on 2019-06-22 22:54:35 -0500 using RuboCop version 0.71.0.
4
4
  # The point is for the user to remove these configuration records
5
5
  # one by one as the offenses are removed from the code base.
6
6
  # Note that changes in the inspected code, or installation of new
@@ -12,19 +12,30 @@ Lint/HandleExceptions:
12
12
  Exclude:
13
13
  - 'Rakefile'
14
14
 
15
- # Offense count: 2
15
+ # Offense count: 6
16
16
  Metrics/AbcSize:
17
- Max: 44
17
+ Max: 43
18
18
 
19
19
  # Offense count: 1
20
+ # Configuration parameters: CountComments.
21
+ Metrics/ClassLength:
22
+ Max: 139
23
+
24
+ # Offense count: 3
20
25
  Metrics/CyclomaticComplexity:
21
- Max: 11
26
+ Max: 10
22
27
 
23
- # Offense count: 1
28
+ # Offense count: 5
24
29
  # Configuration parameters: CountComments, ExcludedMethods.
25
30
  Metrics/MethodLength:
26
- Max: 38
31
+ Max: 33
27
32
 
28
- # Offense count: 1
33
+ # Offense count: 3
29
34
  Metrics/PerceivedComplexity:
30
- Max: 12
35
+ Max: 10
36
+
37
+ # Offense count: 1
38
+ # Configuration parameters: MinBodyLength.
39
+ Style/GuardClause:
40
+ Exclude:
41
+ - 'lib/leaderbrag/cli.rb'
data/.travis.yml CHANGED
@@ -2,3 +2,5 @@ language: ruby
2
2
  before_install:
3
3
  - gem update --system
4
4
  - gem install bundler
5
+ services:
6
+ - redis-server
@@ -13,39 +13,91 @@ module Leaderbrag
13
13
  @leader = nil
14
14
  def initialize(args = [], local_options = {}, config = {})
15
15
  super
16
+ if ENV['XMLSTATS_CONTACT_INFO'].nil?
17
+ warn 'Please set XMLSTATS_CONTACT_INFO environment variable.'
18
+ exit 60
19
+ elsif ENV['XMLSTATS_API_KEY'].nil?
20
+ warn 'Please set XMLSTATS_API_KEY environment variable'
21
+ exit 70
22
+ end
16
23
  @leader = Leaderbrag::Leader.new
17
24
  end
18
25
 
19
26
  desc 'board', 'Lists all baseball teams with their standings'
27
+ method_option(:sort_by_league, aliases: '-l',
28
+ desc: 'Sort by league.', default: false,
29
+ type: :boolean)
30
+ method_option(:only_league, aliases: '-L', type: :string,
31
+ desc:
32
+ 'Only show results for this league.',
33
+ enum: %w[AL NL])
34
+ method_option(:sort_by_division, aliases: '-d',
35
+ desc: 'Sort by league and division.'\
36
+ ' Supercedes -l.',
37
+ type: :boolean)
38
+ method_option(:only_division, aliases: '-D', type: :string,
39
+ desc:
40
+ 'Only show results for this division.',
41
+ enum: %w[E C W])
20
42
  def board
21
43
  puts 'Team Name'.ljust(23) +
22
- 'Team ID Rank Win% League Div'
23
- puts '-'.ljust(68, '-')
24
- @leader.standings.each_with_index do |team, i|
44
+ 'Team ID Win% Rank League Rank Div Rank'
45
+ puts '-'.ljust(78, '-')
46
+ teams = @leader.filter(options[:sort_by_league],
47
+ options[:sort_by_division],
48
+ options[:only_league],
49
+ options[:only_division])
50
+ teams.each do |team|
25
51
  puts "#{team.first_name} #{team.last_name}:".ljust(23) +
26
- team.team_id.ljust(22) + (i + 1).to_s.ljust(6) +
27
- team.win_percentage.ljust(6) +
28
- team.conference.ljust(8) + team.division
52
+ team.team_id.ljust(22) + team.win_percentage.ljust(7) +
53
+ @leader.overall_rank(team).to_s.ljust(7) +
54
+ team.conference.ljust(6) +
55
+ @leader.league_rank(team).to_s.ljust(6) +
56
+ team.division.ljust(4) + team.rank.to_s
29
57
  end
30
58
  end
31
59
 
32
60
  desc 'find', 'Finds the best team in baseball'
33
61
  method_option(:quiet, aliases: '-q',
34
- desc: 'Do not print results', default: false)
62
+ desc: 'Do not print results.', default: false)
35
63
  method_option(:stats, aliases: '-s',
36
- desc: 'Include team stats in output',
64
+ desc: 'Include team stats in output.',
37
65
  default: false)
66
+ method_option(:league, aliases: '-l', type: :string,
67
+ desc: 'Find the league leader rather than overall'\
68
+ ' best team.',
69
+ enum: %w[AL NL])
70
+ method_option(:division, aliases: '-d', type: :string,
71
+ desc: 'Find the division leader rather than '\
72
+ 'overall best team. Requires use of --league.',
73
+ enum: %w[E C W])
38
74
  def find
39
- myteam = @leader.standings[0]
75
+ if !options[:division].nil? && options[:league].nil?
76
+ warn 'League must be specified.'
77
+ exit 80
78
+ end
79
+ s_league = (options[:league].nil? ? nil : options[:league])
80
+ s_division = (options[:division].nil? ? nil : options[:division])
81
+ teams = @leader.filter(!options[:league].nil?, !options[:division].nil?,
82
+ s_league, s_division)
83
+ myteam = teams[0]
40
84
  brag(myteam, options[:quiet], options[:stats])
41
85
  end
42
86
 
43
87
  desc 'is TEAM', 'asserts that TEAM is the best team in baseball'
44
- method_option(:quiet, aliases: '-q',
88
+ method_option(:quiet, aliases: '-q', type: :boolean,
45
89
  desc: 'Do not print results', default: false)
46
- method_option(:stats, aliases: '-s',
90
+ method_option(:stats, aliases: '-s', type: :boolean,
47
91
  desc: 'Include team stats in output',
48
92
  default: false)
93
+ method_option(:league, aliases: '-l', type: :boolean,
94
+ desc: 'Check leadership of team\'s league. '\
95
+ 'Only affects exit code.',
96
+ default: false)
97
+ method_option(:division, aliases: '-d', type: :boolean,
98
+ desc: 'Check leadership of team\'s division.'\
99
+ 'Only affects the exit code.',
100
+ default: false)
49
101
  def is?(team_id)
50
102
  myteam = @leader.team(team_id)
51
103
  if myteam.nil?
@@ -53,6 +105,13 @@ module Leaderbrag
53
105
  exit 50
54
106
  end
55
107
  brag(myteam, options[:quiet], options[:stats])
108
+ if @leader.overall_leader?(myteam) ||
109
+ (options[:league] && @leader.league_leader?(myteam)) ||
110
+ (options[:division] && @leader.division_leader?(myteam))
111
+ exit 0
112
+ else
113
+ exit myteam.rank
114
+ end
56
115
  end
57
116
 
58
117
  private
@@ -93,11 +152,6 @@ module Leaderbrag
93
152
  puts label.ljust(30) + myteam.send(field).to_s
94
153
  end
95
154
  end
96
- if @leader.overall_leader?(myteam)
97
- exit 0
98
- else
99
- exit myteam.rank
100
- end
101
155
  end
102
156
  end
103
157
  end
@@ -66,5 +66,30 @@ module Leaderbrag
66
66
  def overall_rank(team)
67
67
  @standings.find_index(team) + 1
68
68
  end
69
+
70
+ def filter(sb_league = false, sb_division = false,
71
+ s_conference = nil, s_division = nil)
72
+ view = standings.sort_by do |team|
73
+ sort_items = []
74
+ sort_items << team.conference if sb_league
75
+ sort_items << team.conference if sb_division
76
+ sort_items << team.division if sb_division
77
+ sort_items << league_rank(team) if sb_league
78
+ sort_items << team.rank if sb_division
79
+ sort_items << overall_rank(team) if !sb_league && !sb_division
80
+ sort_items
81
+ end
82
+ unless s_conference.nil?
83
+ view.select! do |team|
84
+ team.conference == s_conference
85
+ end
86
+ end
87
+ unless s_division.nil?
88
+ view.select! do |team|
89
+ team.division == s_division
90
+ end
91
+ end
92
+ view
93
+ end
69
94
  end
70
95
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Leaderbrag
4
- VERSION = '1.0.0'
4
+ VERSION = '1.1.0'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: leaderbrag
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - David Schlenk
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-06-22 00:00:00.000000000 Z
11
+ date: 2019-06-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: redis