rodders 0.3.0 → 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- data/VERSION +1 -1
- data/lib/MutuallyExclusiveCollection.rb +2 -2
- data/rodders.gemspec +2 -2
- data/spec/FixedOdds_spec.rb +79 -74
- data/spec/MutuallyExclusiveCollection_spec.rb +16 -9
- metadata +15 -15
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
1.0.0
|
@@ -8,13 +8,13 @@ class MutuallyExclusiveCollection
|
|
8
8
|
|
9
9
|
# the least likely of the events to occur
|
10
10
|
# @return [FixedOdds] the least likely event
|
11
|
-
def
|
11
|
+
def least_likely
|
12
12
|
@events.first
|
13
13
|
end
|
14
14
|
|
15
15
|
# the most likely of the events to occur
|
16
16
|
# @return [FixedOdds] the most likely event
|
17
|
-
def
|
17
|
+
def most_likely
|
18
18
|
@events.last
|
19
19
|
end
|
20
20
|
|
data/rodders.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = "rodders"
|
8
|
-
s.version = "0.
|
8
|
+
s.version = "1.0.0"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Nigel Lowry"]
|
12
|
-
s.date = "
|
12
|
+
s.date = "2012-01-02"
|
13
13
|
s.description = "Converts between fractional, decimal and moneyline odds for betting and gambling. Calculates how much can be won on a given stake."
|
14
14
|
s.email = "nigel-lowry@ultra.eclipse.co.uk"
|
15
15
|
s.extra_rdoc_files = [
|
data/spec/FixedOdds_spec.rb
CHANGED
@@ -3,8 +3,8 @@ require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
|
|
3
3
|
|
4
4
|
describe "FixedOdds" do
|
5
5
|
|
6
|
-
describe "fractional_odds
|
7
|
-
it "
|
6
|
+
describe ".fractional_odds" do
|
7
|
+
it "raises error if not fractional odds" do
|
8
8
|
expect {
|
9
9
|
FixedOdds.fractional_odds '5'
|
10
10
|
}.to raise_error(
|
@@ -13,47 +13,47 @@ describe "FixedOdds" do
|
|
13
13
|
)
|
14
14
|
end
|
15
15
|
|
16
|
-
it "
|
16
|
+
it "does not change the input string with 'against'" do
|
17
17
|
value = '4/1 against'
|
18
18
|
FixedOdds.fractional_odds(value)
|
19
19
|
value.end_with?('against').should == true
|
20
20
|
end
|
21
21
|
|
22
|
-
it "
|
22
|
+
it "does not modify the input string with 'on'" do
|
23
23
|
value = '4/1 on'
|
24
24
|
FixedOdds.fractional_odds(value)
|
25
25
|
value.end_with?('on').should == true
|
26
26
|
end
|
27
27
|
|
28
|
-
it "
|
28
|
+
it "treats '4/1 against' the same as '4/1'" do
|
29
29
|
FixedOdds.fractional_odds('4/1 against').should == FixedOdds.fractional_odds('4/1')
|
30
30
|
end
|
31
31
|
|
32
|
-
it "
|
32
|
+
it "treats '4/1 on' the same as '1/4'" do
|
33
33
|
FixedOdds.fractional_odds('4/1 on').should == FixedOdds.fractional_odds('1/4')
|
34
34
|
end
|
35
35
|
|
36
|
-
it "
|
36
|
+
it "treats 'evens' as '1/1'" do
|
37
37
|
FixedOdds.fractional_odds('evens').should == FixedOdds.fractional_odds('1/1')
|
38
38
|
end
|
39
39
|
|
40
|
-
it "
|
40
|
+
it "treats 'even money' as '1/1'" do
|
41
41
|
FixedOdds.fractional_odds('even money').should == FixedOdds.fractional_odds('1/1')
|
42
42
|
end
|
43
43
|
|
44
|
-
it "
|
44
|
+
it "recognises '4-to-1' as '4/1'" do
|
45
45
|
FixedOdds.fractional_odds('4-to-1').should == FixedOdds.fractional_odds('4/1')
|
46
46
|
end
|
47
47
|
|
48
|
-
it "
|
48
|
+
it "recognises '4-to-1 against' as '4/1'" do
|
49
49
|
FixedOdds.fractional_odds('4-to-1 against').should == FixedOdds.fractional_odds('4/1')
|
50
50
|
end
|
51
51
|
|
52
|
-
it "
|
52
|
+
it "recognises '4-to-1 on' as '1/4'" do
|
53
53
|
FixedOdds.fractional_odds('4-to-1 on').should == FixedOdds.fractional_odds('1/4')
|
54
54
|
end
|
55
55
|
|
56
|
-
it "
|
56
|
+
it "raises error if numerator has decimal point" do
|
57
57
|
expect {
|
58
58
|
FixedOdds.fractional_odds '1.1/4'
|
59
59
|
}.to raise_error(
|
@@ -62,7 +62,7 @@ describe "FixedOdds" do
|
|
62
62
|
)
|
63
63
|
end
|
64
64
|
|
65
|
-
it "
|
65
|
+
it "raises error if denominator has decimal point" do
|
66
66
|
expect {
|
67
67
|
FixedOdds.fractional_odds '1/4.1'
|
68
68
|
}.to raise_error(
|
@@ -71,7 +71,7 @@ describe "FixedOdds" do
|
|
71
71
|
)
|
72
72
|
end
|
73
73
|
|
74
|
-
it "
|
74
|
+
it "raises error if both numerator and denominator have decimal points" do
|
75
75
|
expect {
|
76
76
|
FixedOdds.fractional_odds '1.1/4.1'
|
77
77
|
}.to raise_error(
|
@@ -81,17 +81,17 @@ describe "FixedOdds" do
|
|
81
81
|
end
|
82
82
|
end
|
83
83
|
|
84
|
-
describe "moneyline_odds
|
85
|
-
it "
|
84
|
+
describe ".moneyline_odds" do
|
85
|
+
it "raises error if not moneyline odds" do
|
86
86
|
expect {
|
87
|
-
FixedOdds.moneyline_odds '1
|
87
|
+
FixedOdds.moneyline_odds '1/4'
|
88
88
|
}.to raise_error(
|
89
89
|
RuntimeError,
|
90
|
-
/could not parse "1
|
90
|
+
/could not parse "1\/4" as moneyline odds/
|
91
91
|
)
|
92
92
|
end
|
93
93
|
|
94
|
-
it "
|
94
|
+
it "raises error if moneyline odds has decimal point" do
|
95
95
|
expect {
|
96
96
|
FixedOdds.moneyline_odds '-100.1'
|
97
97
|
}.to raise_error(
|
@@ -101,32 +101,37 @@ describe "FixedOdds" do
|
|
101
101
|
end
|
102
102
|
|
103
103
|
describe "positive figures" do
|
104
|
-
it "
|
104
|
+
it "treats '+400' as meaning winning £400 on a £100 bet" do
|
105
105
|
plus400 = FixedOdds.moneyline_odds('+400')
|
106
106
|
plus400.profit_on_winning_stake(Money.from_fixnum(100, :GBP)).should == Money.from_fixnum(400, :GBP)
|
107
107
|
end
|
108
108
|
|
109
|
-
it "
|
109
|
+
it "treats +100 as meaning winning £100 on a £100 bet" do
|
110
110
|
plus100 = FixedOdds.moneyline_odds('+100')
|
111
111
|
plus100.profit_on_winning_stake(Money.from_fixnum(100, :GBP)).should == Money.from_fixnum(100, :GBP)
|
112
112
|
end
|
113
113
|
end
|
114
114
|
|
115
115
|
describe "negative figures" do
|
116
|
-
it "
|
116
|
+
it "treats '-400' as meaning you need to wager £400 to win £100" do
|
117
117
|
minus400 = FixedOdds.moneyline_odds('-400')
|
118
118
|
minus400.profit_on_winning_stake(Money.from_fixnum(400, :GBP)).should == Money.from_fixnum(100, :GBP)
|
119
119
|
end
|
120
120
|
|
121
|
-
it "
|
121
|
+
it "treats '-100' as meaning you need to wager £100 to win £100" do
|
122
122
|
minus100 = FixedOdds.moneyline_odds('-100')
|
123
123
|
minus100.profit_on_winning_stake(Money.from_fixnum(100, :GBP)).should == Money.from_fixnum(100, :GBP)
|
124
124
|
end
|
125
|
+
|
126
|
+
it "treats '+100' as meaning you need to wager £100 to win £100" do
|
127
|
+
plus100 = FixedOdds.moneyline_odds('+100')
|
128
|
+
plus100.profit_on_winning_stake(Money.from_fixnum(100, :GBP)).should == Money.from_fixnum(100, :GBP)
|
129
|
+
end
|
125
130
|
end
|
126
131
|
end
|
127
132
|
|
128
|
-
describe "decimal_odds
|
129
|
-
it "
|
133
|
+
describe ".decimal_odds" do
|
134
|
+
it "raises error if not decimal odds" do
|
130
135
|
expect {
|
131
136
|
FixedOdds.decimal_odds '-400'
|
132
137
|
}.to raise_error(
|
@@ -135,25 +140,25 @@ describe "FixedOdds" do
|
|
135
140
|
)
|
136
141
|
end
|
137
142
|
|
138
|
-
it "
|
143
|
+
it "treats '2' as meaning you have to wager £100 to win £100" do
|
139
144
|
d2 = FixedOdds.decimal_odds('2')
|
140
145
|
d2.profit_on_winning_stake(Money.from_fixnum(100, :GBP)).should == Money.from_fixnum(100, :GBP)
|
141
146
|
end
|
142
147
|
|
143
|
-
it "
|
148
|
+
it "treats '5' as meaning you have to wager £100 to win £400" do
|
144
149
|
d5 = FixedOdds.decimal_odds('5')
|
145
150
|
d5.profit_on_winning_stake(Money.from_fixnum(100, :GBP)).should == Money.from_fixnum(400, :GBP)
|
146
151
|
end
|
147
152
|
|
148
|
-
it "
|
153
|
+
it "treats '1.25' as meaning yo have to wager £400 to win £100" do
|
149
154
|
d1_25 = FixedOdds.decimal_odds('1.25')
|
150
155
|
d1_25.profit_on_winning_stake(Money.from_fixnum(400, :GBP)).should == Money.from_fixnum(100, :GBP)
|
151
156
|
end
|
152
157
|
end
|
153
158
|
|
154
|
-
describe "
|
159
|
+
describe ".from_s" do
|
155
160
|
describe "bad input" do
|
156
|
-
it "
|
161
|
+
it "rejects garbage" do
|
157
162
|
expect {
|
158
163
|
FixedOdds.from_s('garbage')
|
159
164
|
}.to raise_error(
|
@@ -163,7 +168,7 @@ describe "FixedOdds" do
|
|
163
168
|
end
|
164
169
|
end
|
165
170
|
|
166
|
-
it "
|
171
|
+
it "rejects an empty string" do
|
167
172
|
expect {
|
168
173
|
FixedOdds.from_s('')
|
169
174
|
}.to raise_error(
|
@@ -173,39 +178,39 @@ describe "FixedOdds" do
|
|
173
178
|
end
|
174
179
|
|
175
180
|
describe "fractional odds" do
|
176
|
-
it "
|
181
|
+
it "parses '4/1'" do
|
177
182
|
FixedOdds.from_s('4/1').should == FixedOdds.fractional_odds('4/1')
|
178
183
|
end
|
179
184
|
|
180
|
-
it "
|
185
|
+
it "parses 'evens'" do
|
181
186
|
FixedOdds.from_s('evens').should == FixedOdds.fractional_odds('1/1')
|
182
187
|
end
|
183
188
|
|
184
|
-
it "
|
189
|
+
it "parses 'even money'" do
|
185
190
|
FixedOdds.from_s('even money').should == FixedOdds.fractional_odds('1/1')
|
186
191
|
end
|
187
192
|
|
188
|
-
it "
|
193
|
+
it "parses '4/1 against'" do
|
189
194
|
FixedOdds.from_s('4/1 against').should == FixedOdds.fractional_odds('4/1')
|
190
195
|
end
|
191
196
|
|
192
|
-
it "
|
197
|
+
it "parses '4/1 on'" do
|
193
198
|
FixedOdds.from_s('4/1 on').should == FixedOdds.fractional_odds('1/4')
|
194
199
|
end
|
195
200
|
|
196
|
-
it "
|
201
|
+
it "parses '4-to-1'" do
|
197
202
|
FixedOdds.from_s('4-to-1').should == FixedOdds.fractional_odds('4/1')
|
198
203
|
end
|
199
204
|
|
200
|
-
it "
|
205
|
+
it "parses '4-to-1 against'" do
|
201
206
|
FixedOdds.from_s('4-to-1 against').should == FixedOdds.fractional_odds('4/1')
|
202
207
|
end
|
203
208
|
|
204
|
-
it "
|
209
|
+
it "parses '4-to-1 on'" do
|
205
210
|
FixedOdds.from_s('4-to-1 on').should == FixedOdds.fractional_odds('1/4')
|
206
211
|
end
|
207
212
|
|
208
|
-
it "
|
213
|
+
it "raises an error for a zero denominator" do
|
209
214
|
expect {
|
210
215
|
FixedOdds.from_s('4/0')
|
211
216
|
}.to raise_error(
|
@@ -215,17 +220,17 @@ describe "FixedOdds" do
|
|
215
220
|
end
|
216
221
|
|
217
222
|
describe "moneyline odds" do
|
218
|
-
it "
|
223
|
+
it "parses positive moneyline odds" do
|
219
224
|
FixedOdds.from_s('+400').should == FixedOdds.moneyline_odds('+400')
|
220
225
|
end
|
221
226
|
|
222
|
-
it "
|
227
|
+
it "parses negative moneyline odds" do
|
223
228
|
FixedOdds.from_s('-400').should == FixedOdds.moneyline_odds('-400')
|
224
229
|
end
|
225
230
|
end
|
226
231
|
|
227
232
|
describe "decimal odds" do
|
228
|
-
it "
|
233
|
+
it "parses integral odds of '2' as decimal odds, not as fractional odds of '2/1'" do
|
229
234
|
decimal_odds_2 = FixedOdds.from_s('2')
|
230
235
|
|
231
236
|
decimal_odds_2.should == FixedOdds.decimal_odds('2')
|
@@ -239,146 +244,146 @@ describe "FixedOdds" do
|
|
239
244
|
end
|
240
245
|
|
241
246
|
describe "#==" do
|
242
|
-
it "
|
247
|
+
it "treats equivalent fractions equally" do
|
243
248
|
FixedOdds.fractional_odds('100/30').should == FixedOdds.fractional_odds('10/3')
|
244
249
|
end
|
245
250
|
|
246
|
-
it "
|
251
|
+
it "recognises '1/1' and '2' are the same" do
|
247
252
|
FixedOdds.fractional_odds('1/1').should == FixedOdds.decimal_odds('2')
|
248
253
|
end
|
249
254
|
|
250
|
-
it "
|
255
|
+
it "recognises '4/1' and '5' are the same" do
|
251
256
|
FixedOdds.fractional_odds('4/1').should == FixedOdds.decimal_odds('5')
|
252
257
|
end
|
253
258
|
|
254
|
-
it "
|
259
|
+
it "recognises '1/4' and '1.25' are the same" do
|
255
260
|
FixedOdds.fractional_odds('1/4').should == FixedOdds.decimal_odds('1.25')
|
256
261
|
end
|
257
262
|
|
258
|
-
it "
|
263
|
+
it "recognises '4/1' and '+400' are the same" do
|
259
264
|
FixedOdds.fractional_odds('4/1').should == FixedOdds.moneyline_odds('+400')
|
260
265
|
end
|
261
266
|
|
262
|
-
it "
|
267
|
+
it "recognises '1/4' and '-400' are the same" do
|
263
268
|
FixedOdds.fractional_odds('1/4').should == FixedOdds.moneyline_odds('-400')
|
264
269
|
end
|
265
270
|
|
266
|
-
it "
|
271
|
+
it "recognises '+100' and '-100' are the same" do
|
267
272
|
FixedOdds.moneyline_odds('+100').should == FixedOdds.moneyline_odds('-100')
|
268
273
|
end
|
269
274
|
end
|
270
275
|
|
271
276
|
describe "#to_s" do
|
272
|
-
it "
|
277
|
+
it "is in fractional odds format" do
|
273
278
|
FixedOdds.from_s('+400').to_s.should == '4/1'
|
274
279
|
end
|
275
280
|
end
|
276
281
|
|
277
282
|
describe "#to_s_fractional" do
|
278
|
-
it "
|
283
|
+
it "displays '4/1' as '4/1'" do
|
279
284
|
FixedOdds.fractional_odds('4/1').to_s_fractional.should == '4/1'
|
280
285
|
end
|
281
286
|
|
282
|
-
it "
|
287
|
+
it "is in the lowest terms" do
|
283
288
|
FixedOdds.fractional_odds('100/30').to_s_fractional.should == '10/3'
|
284
289
|
end
|
285
290
|
|
286
|
-
it "
|
291
|
+
it "is '4/1' for '+400'" do
|
287
292
|
FixedOdds.moneyline_odds('+400').to_s_fractional.should == '4/1'
|
288
293
|
end
|
289
294
|
|
290
|
-
it "
|
295
|
+
it "is '4/1' for '5'" do
|
291
296
|
FixedOdds.decimal_odds('5').to_s_fractional.should == '4/1'
|
292
297
|
end
|
293
298
|
|
294
|
-
it "
|
299
|
+
it "is '1/1' for '+100'" do
|
295
300
|
FixedOdds.moneyline_odds('+100').to_s_fractional.should == '1/1'
|
296
301
|
end
|
297
302
|
|
298
|
-
it "
|
303
|
+
it "is '1/1' for '-100'" do
|
299
304
|
FixedOdds.moneyline_odds('-100').to_s_fractional.should == '1/1'
|
300
305
|
end
|
301
306
|
end
|
302
307
|
|
303
308
|
describe "#to_s_moneyline" do
|
304
|
-
it "
|
309
|
+
it "is '+400' for '+400'" do
|
305
310
|
FixedOdds.moneyline_odds('+400').to_s_moneyline.should == ('+400')
|
306
311
|
end
|
307
312
|
|
308
|
-
it "
|
313
|
+
it "is '-100' for '+100' as '-100'" do
|
309
314
|
FixedOdds.moneyline_odds('+100').to_s_moneyline.should == ('-100')
|
310
315
|
end
|
311
316
|
|
312
|
-
it "
|
317
|
+
it "is '-100' as '-100'" do
|
313
318
|
FixedOdds.moneyline_odds('-100').to_s_moneyline.should == ('-100')
|
314
319
|
end
|
315
320
|
|
316
|
-
it "
|
321
|
+
it "is '+400' for '4/1'" do
|
317
322
|
FixedOdds.fractional_odds('4/1').to_s_moneyline.should == '+400'
|
318
323
|
end
|
319
324
|
|
320
|
-
it "
|
325
|
+
it "is '+400' for '5'" do
|
321
326
|
FixedOdds.decimal_odds('5').to_s_moneyline.should == '+400'
|
322
327
|
end
|
323
328
|
|
324
|
-
it "
|
329
|
+
it "is '-400' for '1.25'" do
|
325
330
|
FixedOdds.decimal_odds('1.25').to_s_moneyline.should == '-400'
|
326
331
|
end
|
327
332
|
end
|
328
333
|
|
329
334
|
describe "#to_s_decimal" do
|
330
|
-
it "
|
335
|
+
it "is '1.25' for '1.25'" do
|
331
336
|
FixedOdds.decimal_odds('1.25').to_s_decimal.should == '1.25'
|
332
337
|
end
|
333
338
|
|
334
|
-
it "
|
339
|
+
it "is '1.25' for '1/4'" do
|
335
340
|
FixedOdds.fractional_odds('1/4').to_s_decimal.should == '1.25'
|
336
341
|
end
|
337
342
|
|
338
|
-
it "
|
343
|
+
it "is '1.25' for '-400'" do
|
339
344
|
FixedOdds.moneyline_odds('-400').to_s_decimal.should == '1.25'
|
340
345
|
end
|
341
346
|
|
342
|
-
it "
|
347
|
+
it "is '2' for '+100'" do
|
343
348
|
FixedOdds.moneyline_odds('+100').to_s_decimal.should == '2'
|
344
349
|
end
|
345
350
|
|
346
|
-
it "
|
351
|
+
it "is '2' for '-100'" do
|
347
352
|
FixedOdds.moneyline_odds('-100').to_s_decimal.should == '2'
|
348
353
|
end
|
349
354
|
end
|
350
355
|
|
351
356
|
describe "#profit_on_winning_stake" do
|
352
|
-
it "
|
357
|
+
it "is £400 on a £100 stake on a 4/1 bet" do
|
353
358
|
fourToOne = FixedOdds.fractional_odds '4/1'
|
354
359
|
fourToOne.profit_on_winning_stake(Money.from_fixnum(100, :GBP)).should == Money.from_fixnum(400, :GBP)
|
355
360
|
end
|
356
361
|
|
357
|
-
it "
|
362
|
+
it "is £25 on a £100 stake with a 1/4 bet" do
|
358
363
|
oneToFour = FixedOdds.fractional_odds '1/4'
|
359
364
|
oneToFour.profit_on_winning_stake(Money.from_fixnum(100, :GBP)).should == Money.from_fixnum(25, :GBP)
|
360
365
|
end
|
361
366
|
end
|
362
367
|
|
363
368
|
describe "#total_return_on_winning_stake" do
|
364
|
-
it "
|
369
|
+
it "is £500 on a winning 4/1 bet with a £100 stake" do
|
365
370
|
fourToOne = FixedOdds.fractional_odds '4/1'
|
366
371
|
fourToOne.total_return_on_winning_stake(Money.from_fixnum(100, :GBP)).should == Money.from_fixnum(500, :GBP)
|
367
372
|
end
|
368
373
|
|
369
|
-
it "
|
374
|
+
it "is £125 on a winning 1/4 bet with a £100 stake" do
|
370
375
|
oneToFour = FixedOdds.fractional_odds '1/4'
|
371
376
|
oneToFour.total_return_on_winning_stake(Money.from_fixnum(100, :GBP)).should == Money.from_fixnum(125, :GBP)
|
372
377
|
end
|
373
378
|
end
|
374
379
|
|
375
380
|
describe "#stake_needed_to_win" do
|
376
|
-
it "
|
381
|
+
it "is £1 on a 1/1 to win £1" do
|
377
382
|
oneToOne = FixedOdds.fractional_odds '1/1'
|
378
383
|
oneToOne.stake_needed_to_win(Money.from_fixnum(1, :GBP)).should == Money.from_fixnum(1, :GBP)
|
379
384
|
end
|
380
385
|
|
381
|
-
it "
|
386
|
+
it "is £100 on 4/1 to win £400" do
|
382
387
|
fourToOne = FixedOdds.fractional_odds '4/1'
|
383
388
|
fourToOne.stake_needed_to_win(Money.from_fixnum(400, :GBP)).should == Money.from_fixnum(100, :GBP)
|
384
389
|
end
|
@@ -10,20 +10,27 @@ describe "MutuallyExclusiveCollection" do
|
|
10
10
|
@events = MutuallyExclusiveCollection.new [@draw, @bad_team, @good_team]
|
11
11
|
end
|
12
12
|
|
13
|
-
|
14
|
-
|
13
|
+
describe "#least_likely" do
|
14
|
+
it "is the least likely event" do
|
15
|
+
@events.least_likely.should == @bad_team
|
16
|
+
end
|
15
17
|
end
|
16
18
|
|
17
|
-
|
18
|
-
|
19
|
+
describe "#most_likely" do
|
20
|
+
it "is the most likely event" do
|
21
|
+
@events.most_likely.should == @good_team
|
22
|
+
end
|
19
23
|
end
|
20
24
|
|
21
|
-
|
22
|
-
|
25
|
+
describe "#in_descending_probability" do
|
26
|
+
it "is in descending order of probability" do
|
27
|
+
@events.in_descending_probability.should == [@good_team, @draw, @bad_team]
|
28
|
+
end
|
23
29
|
end
|
24
30
|
|
25
|
-
|
26
|
-
|
31
|
+
describe "#in_ascending_probability" do
|
32
|
+
it "is in ascending order of probability" do
|
33
|
+
@events.in_ascending_probability.should == [@bad_team, @draw, @good_team]
|
34
|
+
end
|
27
35
|
end
|
28
|
-
|
29
36
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rodders
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 1.0.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2012-01-02 00:00:00.000000000Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: money
|
16
|
-
requirement: &
|
16
|
+
requirement: &70289789377020 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: '0'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *70289789377020
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: rspec
|
27
|
-
requirement: &
|
27
|
+
requirement: &70289789376500 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ~>
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: 2.3.0
|
33
33
|
type: :development
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *70289789376500
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: yard
|
38
|
-
requirement: &
|
38
|
+
requirement: &70289789353180 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ~>
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: 0.6.0
|
44
44
|
type: :development
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *70289789353180
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: bundler
|
49
|
-
requirement: &
|
49
|
+
requirement: &70289789352580 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ~>
|
@@ -54,10 +54,10 @@ dependencies:
|
|
54
54
|
version: 1.0.0
|
55
55
|
type: :development
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *70289789352580
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: jeweler
|
60
|
-
requirement: &
|
60
|
+
requirement: &70289789352000 !ruby/object:Gem::Requirement
|
61
61
|
none: false
|
62
62
|
requirements:
|
63
63
|
- - ~>
|
@@ -65,10 +65,10 @@ dependencies:
|
|
65
65
|
version: 1.6.4
|
66
66
|
type: :development
|
67
67
|
prerelease: false
|
68
|
-
version_requirements: *
|
68
|
+
version_requirements: *70289789352000
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: rcov
|
71
|
-
requirement: &
|
71
|
+
requirement: &70289789351400 !ruby/object:Gem::Requirement
|
72
72
|
none: false
|
73
73
|
requirements:
|
74
74
|
- - ! '>='
|
@@ -76,7 +76,7 @@ dependencies:
|
|
76
76
|
version: '0'
|
77
77
|
type: :development
|
78
78
|
prerelease: false
|
79
|
-
version_requirements: *
|
79
|
+
version_requirements: *70289789351400
|
80
80
|
description: Converts between fractional, decimal and moneyline odds for betting and
|
81
81
|
gambling. Calculates how much can be won on a given stake.
|
82
82
|
email: nigel-lowry@ultra.eclipse.co.uk
|
@@ -116,7 +116,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
116
116
|
version: '0'
|
117
117
|
segments:
|
118
118
|
- 0
|
119
|
-
hash:
|
119
|
+
hash: 3132446332163279190
|
120
120
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
121
121
|
none: false
|
122
122
|
requirements:
|