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 +4 -4
- data/lib/basketball/app/room_repository.rb +6 -2
- data/lib/basketball/draft/room.rb +34 -27
- data/lib/basketball/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 07c17436d67c69fdda803a3b43623dea353ce9c8e8699d32733b1a6006843dc8
|
4
|
+
data.tar.gz: 1a9a5bee3bca6e755e72a806653079ca42ec205c2a9c32f7e2797882cfc41d50
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
|
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
|
data/lib/basketball/version.rb
CHANGED
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.
|
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-
|
11
|
+
date: 2023-06-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: slop
|