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