basketball 0.0.5 → 0.0.6

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Basketball
4
+ module Scheduling
5
+ class PreseasonGame < Game
6
+ def to_s
7
+ "#{super} (preseason)"
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Basketball
4
+ module Scheduling
5
+ class SeasonGame < Game
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,21 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Basketball
4
+ module Scheduling
5
+ class Team < Entity
6
+ attr_reader :name
7
+
8
+ def initialize(id:, name: '')
9
+ super(id)
10
+
11
+ @name = name.to_s
12
+
13
+ freeze
14
+ end
15
+
16
+ def to_s
17
+ "[#{super}] #{name}"
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,17 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'scheduling/cli'
4
+
5
+ module Basketball
6
+ module Scheduling
7
+ class ConferenceAlreadyRegisteredError < StandardError; end
8
+ class DivisionAlreadyRegisteredError < StandardError; end
9
+ class TeamAlreadyRegisteredError < StandardError; end
10
+
11
+ class BadConferencesSizeError < StandardError; end
12
+ class BadDivisionsSizeError < StandardError; end
13
+ class BadTeamsSizeError < StandardError; end
14
+
15
+ class UnknownTeamError < StandardError; end
16
+ end
17
+ end
@@ -4,14 +4,23 @@ module Basketball
4
4
  class ValueObject
5
5
  include Comparable
6
6
 
7
- # NOTE: This current implementation most likely does not work for deep inheritance trees.
8
7
  class << self
9
- def value_keys
10
- @value_keys ||= []
8
+ def all_value_keys
9
+ @all_value_keys ||= ancestors.flat_map do |ancestor|
10
+ if ancestor < Basketball::ValueObject
11
+ ancestor.value_keys
12
+ else
13
+ []
14
+ end
15
+ end.uniq.sort
16
+ end
17
+
18
+ def all_sorted_value_keys
19
+ all_value_keys.sort
11
20
  end
12
21
 
13
- def sorted_value_keys
14
- value_keys.sort
22
+ def value_keys
23
+ @value_keys ||= []
15
24
  end
16
25
 
17
26
  def attr_reader_value(*keys)
@@ -26,7 +35,7 @@ module Basketball
26
35
  end
27
36
 
28
37
  def to_h
29
- self.class.sorted_value_keys.to_h { |k| [k, send(k)] }
38
+ self.class.all_sorted_value_keys.to_h { |k| [k, send(k)] }
30
39
  end
31
40
 
32
41
  def [](key)
@@ -47,7 +56,7 @@ module Basketball
47
56
  end
48
57
 
49
58
  def all_sorted_values
50
- self.class.sorted_value_keys.map { |k| self[k] }
59
+ self.class.all_sorted_value_keys.map { |k| self[k] }
51
60
  end
52
61
  end
53
62
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Basketball
4
- VERSION = '0.0.5'
4
+ VERSION = '0.0.6'
5
5
  end
data/lib/basketball.rb CHANGED
@@ -13,3 +13,4 @@ require_relative 'basketball/value_object'
13
13
 
14
14
  # Submodules
15
15
  require_relative 'basketball/drafting'
16
+ require_relative 'basketball/scheduling'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: basketball
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.5
4
+ version: 0.0.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matthew Ruggio
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-05-06 00:00:00.000000000 Z
11
+ date: 2023-05-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faker
@@ -186,6 +186,7 @@ email:
186
186
  - mattruggio@icloud.com
187
187
  executables:
188
188
  - basketball-draft
189
+ - basketball-schedule
189
190
  extensions: []
190
191
  extra_rdoc_files: []
191
192
  files:
@@ -202,6 +203,7 @@ files:
202
203
  - Rakefile
203
204
  - basketball.gemspec
204
205
  - exe/basketball-draft
206
+ - exe/basketball-schedule
205
207
  - lib/basketball.rb
206
208
  - lib/basketball/drafting.rb
207
209
  - lib/basketball/drafting/cli.rb
@@ -218,6 +220,19 @@ files:
218
220
  - lib/basketball/drafting/sim_event.rb
219
221
  - lib/basketball/drafting/skip_event.rb
220
222
  - lib/basketball/entity.rb
223
+ - lib/basketball/scheduling.rb
224
+ - lib/basketball/scheduling/calendar.rb
225
+ - lib/basketball/scheduling/calendar_serializer.rb
226
+ - lib/basketball/scheduling/cli.rb
227
+ - lib/basketball/scheduling/conference.rb
228
+ - lib/basketball/scheduling/coordinator.rb
229
+ - lib/basketball/scheduling/division.rb
230
+ - lib/basketball/scheduling/game.rb
231
+ - lib/basketball/scheduling/league.rb
232
+ - lib/basketball/scheduling/league_serializer.rb
233
+ - lib/basketball/scheduling/preseason_game.rb
234
+ - lib/basketball/scheduling/season_game.rb
235
+ - lib/basketball/scheduling/team.rb
221
236
  - lib/basketball/value_object.rb
222
237
  - lib/basketball/version.rb
223
238
  homepage: https://github.com/mattruggio/basketball