basketball 0.0.11 → 0.0.13

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,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 95fd9cb9bb1c51ed7a76e5640f5297ea463b412803bcfacf8c47ea8b9abc5b21
4
- data.tar.gz: 726e72b88fd8c81a30bfb4e47742e07fd97ba88fd86d9695852b0733ee6c0e5f
3
+ metadata.gz: 07c17436d67c69fdda803a3b43623dea353ce9c8e8699d32733b1a6006843dc8
4
+ data.tar.gz: 1a9a5bee3bca6e755e72a806653079ca42ec205c2a9c32f7e2797882cfc41d50
5
5
  SHA512:
6
- metadata.gz: b00a86aca794ea7b1ccbba172bc0fd63cfbbf4b8ff5eee2a7763f3877d8669a2b23141109fbf78461d9bd5b475e6a758381cc24c3a5d0e8b2e6dcb17f69e97bf
7
- data.tar.gz: 5b8d75ca8cb88dc6733d1453d485a9fe8842a2e98d601f3870837bf3197718d181b77a475960202320be2d92a651ed5d741719e1d90882984d6286f629d2cd6d
6
+ metadata.gz: 9d6854e37c39bc719eae78421020798f18123b18e486fd0ee8f97470e39de1706ad74a48086a86e6cfbecc79f6b23dd2fa73d8d291bb5e401ee3dc7ff2782949
7
+ data.tar.gz: 42bb76951430e75d0be97ebcec2611b5937236412d3233296c40de95ac1d6dc8d537c4c17e303418946be6a306374d8655b12d54f1aa93343148d3377324672c
@@ -46,7 +46,9 @@ module Basketball
46
46
  def serialize_front_office(front_office)
47
47
  {
48
48
  id: front_office.id,
49
- risk_level: front_office.risk_level
49
+ risk_level: front_office.risk_level,
50
+ prioritized_positions: front_office.prioritized_positions.map(&:code),
51
+ star_level: front_office.star_level
50
52
  }
51
53
  end
52
54
 
@@ -96,7 +98,9 @@ module Basketball
96
98
  def deserialize_front_office(hash)
97
99
  Draft::FrontOffice.new(
98
100
  id: hash[:id],
99
- risk_level: hash[:risk_level]
101
+ risk_level: hash[:risk_level].to_i,
102
+ prioritized_positions: (hash[:prioritized_positions] || []).map { |c| Org::Position.new(c) },
103
+ star_level: hash[:star_level].to_i
100
104
  )
101
105
  end
102
106
 
@@ -5,6 +5,7 @@ module Basketball
5
5
  # Main pick-by-pick iterator object which will round-robin rotate team selections.
6
6
  class Room < Entity
7
7
  class AlreadyPickedError < StandardError; end
8
+ class DraftUnderwayError < StandardError; end
8
9
  class EndOfDraftError < StandardError; end
9
10
  class EventOutOfOrderError < StandardError; end
10
11
  class FrontOfficeAlreadyRegisteredError < StandardError; end
@@ -12,9 +13,11 @@ module Basketball
12
13
  class UnknownFrontOfficeError < StandardError; end
13
14
  class UnknownPlayerError < StandardError; end
14
15
 
16
+ DEFAULT_ROUNDS = 12
17
+
15
18
  attr_reader :rounds, :players, :front_offices, :events
16
19
 
17
- def initialize(front_offices:, rounds:, players: [], events: [])
20
+ def initialize(events: [], front_offices: [], players: [], rounds: DEFAULT_ROUNDS)
18
21
  super()
19
22
 
20
23
  raise InvalidRoundsError, "#{rounds} should be a positive number" unless rounds.positive?
@@ -110,6 +113,36 @@ module Basketball
110
113
  players - drafted_players
111
114
  end
112
115
 
116
+ ### Builder Methods
117
+
118
+ def add_player!(player)
119
+ raise DraftUnderwayError, 'draft already started!' if events.any?
120
+ raise ArgumentError, 'player required' unless player
121
+ raise PlayerAlreadyAddedError, "#{player} already added" if player?(player)
122
+
123
+ players << player
124
+
125
+ self
126
+ end
127
+
128
+ def register!(front_office)
129
+ raise DraftUnderwayError, 'draft already started!' if events.any?
130
+ raise ArgumentError, 'front_office required' unless front_office
131
+ raise FrontOfficeAlreadyRegisteredError, "#{front_office} already registered" if registered?(front_office)
132
+
133
+ front_offices << front_office
134
+
135
+ self
136
+ end
137
+
138
+ def registered?(front_office)
139
+ front_offices.include?(front_office)
140
+ end
141
+
142
+ def player?(player)
143
+ players.include?(player)
144
+ end
145
+
113
146
  ### Event Methods
114
147
 
115
148
  def skip!
@@ -188,32 +221,6 @@ module Basketball
188
221
  def internal_pick
189
222
  events.length + 1
190
223
  end
191
-
192
- def registered?(front_office)
193
- front_offices.include?(front_office)
194
- end
195
-
196
- def register!(front_office)
197
- raise ArgumentError, 'front_office required' unless front_office
198
- raise FrontOfficeAlreadyRegisteredError, "#{front_office} already registered" if registered?(front_office)
199
-
200
- front_offices << front_office
201
-
202
- self
203
- end
204
-
205
- def player?(player)
206
- players.include?(player)
207
- end
208
-
209
- def add_player!(player)
210
- raise ArgumentError, 'player required' unless player
211
- raise PlayerAlreadyAddedError, "#{player} already added" if player?(player)
212
-
213
- players << player
214
-
215
- self
216
- end
217
224
  end
218
225
  end
219
226
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Basketball
4
- VERSION = '0.0.11'
4
+ VERSION = '0.0.13'
5
5
  end
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.11
4
+ version: 0.0.13
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-06-07 00:00:00.000000000 Z
11
+ date: 2023-06-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: slop