rodders 0.1.1 → 0.1.2

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.
data/Gemfile CHANGED
@@ -9,6 +9,7 @@ gem "money"
9
9
  # Include everything needed to run rake, tests, features, etc.
10
10
  group :development do
11
11
  gem "rspec", "~> 2.3.0"
12
+ gem "yard", "~> 0.6.0"
12
13
  gem "bundler", "~> 1.0.0"
13
14
  gem "jeweler", "~> 1.6.4"
14
15
  gem "rcov", ">= 0"
data/Gemfile.lock CHANGED
@@ -22,6 +22,7 @@ GEM
22
22
  rspec-expectations (2.3.0)
23
23
  diff-lcs (~> 1.1.2)
24
24
  rspec-mocks (2.3.0)
25
+ yard (0.6.8)
25
26
 
26
27
  PLATFORMS
27
28
  ruby
@@ -32,3 +33,4 @@ DEPENDENCIES
32
33
  money
33
34
  rcov
34
35
  rspec (~> 2.3.0)
36
+ yard (~> 0.6.0)
data/Rakefile CHANGED
@@ -38,12 +38,5 @@ end
38
38
 
39
39
  task :default => :spec
40
40
 
41
- require 'rake/rdoctask'
42
- Rake::RDocTask.new do |rdoc|
43
- version = File.exist?('VERSION') ? File.read('VERSION') : ""
44
-
45
- rdoc.rdoc_dir = 'rdoc'
46
- rdoc.title = "rodders #{version}"
47
- rdoc.rdoc_files.include('README*')
48
- rdoc.rdoc_files.include('lib/**/*.rb')
49
- end
41
+ require 'yard'
42
+ YARD::Rake::YardocTask.new
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.1
1
+ 0.1.2
data/lib/FixedOdds.rb CHANGED
@@ -10,7 +10,9 @@ class FixedOdds
10
10
  attr_reader :fractional_odds
11
11
 
12
12
  # creates a new FixedOdds from a string which can be in fractional,
13
- # moneyline or decimal format.
13
+ # moneyline or decimal format
14
+ # @param [String] odds the odds in fractional, moneyline or decimal form
15
+ # @return [FixedOdds]
14
16
  def FixedOdds.from_s(odds)
15
17
  case
16
18
  when FixedOdds.fractional_odds?(odds) then FixedOdds.fractional_odds odds
@@ -21,16 +23,22 @@ class FixedOdds
21
23
  end
22
24
 
23
25
  # tells if the odds are in fractional form
26
+ # @param [String] odds the odds representation
27
+ # @return [Boolean] to indicate if it matches
24
28
  def FixedOdds.fractional_odds?(odds)
25
29
  odds =~ /\d+\/\d+|\d+-to-\d+|evens|even money/
26
30
  end
27
31
 
28
32
  # tells if the odds are in moneyline form
33
+ # @param (see FixedOdds.fractional_odds?)
34
+ # @return (see FixedOdds.fractional_odds?)
29
35
  def FixedOdds.moneyline_odds?(odds)
30
36
  odds =~ /[+-]\d+/
31
37
  end
32
38
 
33
39
  # tells if the odds are in decimal form
40
+ # @param (see FixedOdds.fractional_odds?)
41
+ # @return (see FixedOdds.fractional_odds?)
34
42
  def FixedOdds.decimal_odds?(odds)
35
43
  odds =~ /^(\d+|\d+\.\d+|\.\d+)/
36
44
  end
@@ -44,6 +52,8 @@ class FixedOdds
44
52
  # * 4/1 on
45
53
  # * evens
46
54
  # * even money
55
+ # @param [String] fractional odds in fractional form
56
+ # @return (see FixedOdds.from_s)
47
57
  def FixedOdds.fractional_odds(fractional)
48
58
  raise %{could not parse "#{fractional}" as fractional odds} unless FixedOdds.fractional_odds?(fractional)
49
59
  return new(Rational('1/1')) if fractional == 'evens' || fractional == 'even money'
@@ -53,6 +63,7 @@ class FixedOdds
53
63
  end
54
64
 
55
65
  # creates a new FixedOdds from a Rational
66
+ # @param [Rational] fractional_odds the odds
56
67
  def initialize(fractional_odds)
57
68
  @fractional_odds = fractional_odds
58
69
  end
@@ -60,6 +71,8 @@ class FixedOdds
60
71
  # creates a new FixedOdds from moneyline form. Examples are
61
72
  # * +400
62
73
  # * -500
74
+ # @param [String] moneyline odds in moneyline form
75
+ # @return (see FixedOdds.from_s)
63
76
  def FixedOdds.moneyline_odds(moneyline)
64
77
  raise %{could not parse "#{moneyline}" as moneyline odds} unless FixedOdds.moneyline_odds?(moneyline)
65
78
  sign = moneyline[0]
@@ -71,33 +84,42 @@ class FixedOdds
71
84
  # creates a new FixedOdds from decimal form. Examples are
72
85
  # * 1.25
73
86
  # * 2
87
+ # @param [String] decimal odds in decimal form
88
+ # @return (see FixedOdds.from_s)
74
89
  def FixedOdds.decimal_odds(decimal)
75
90
  raise %{could not parse "#{decimal}" as decimal odds} unless FixedOdds.decimal_odds?(decimal)
76
91
  new(Rational(decimal.to_f - 1))
77
92
  end
78
93
 
79
- # calculates the profit won on a winning _stake_
94
+ # calculates the profit won on a winning bet
95
+ # @param [String] stake the stake
96
+ # @return [Money] the profit
80
97
  def profit_on_winning_stake(stake)
81
98
  stake.to_money * @fractional_odds
82
99
  end
83
100
 
84
- # calculates the total return on a winning _stake_
101
+ # calculates the total return on a winning bet
85
102
  # (which is the profit plus the initial stake)
103
+ # @param (see #profit_on_winning_stake)
104
+ # @return [Money] the total winnings
86
105
  def total_return_on_winning_stake(stake)
87
106
  profit_on_winning_stake(stake) + stake.to_money
88
107
  end
89
108
 
90
- # string representation in fractional form such as '4/1'
109
+ # string representation in fractional form like '4/1'
110
+ # @return [String] fractional form representation
91
111
  def to_s
92
112
  to_s_fractional
93
113
  end
94
114
 
95
- # string representation in fractional form such as '4/1'
115
+ # string representation in fractional form like '4/1'
116
+ # @return (see #to_s)
96
117
  def to_s_fractional
97
118
  @fractional_odds.to_s
98
119
  end
99
120
 
100
121
  # string representation in moneyline form
122
+ # @return [String] moneyline form representation
101
123
  def to_s_moneyline
102
124
  integral_number_with_sign_regex = "%+d"
103
125
 
@@ -109,10 +131,12 @@ class FixedOdds
109
131
  end
110
132
 
111
133
  # string representation in decimal form
134
+ # @return [String] decimal form representation
112
135
  def to_s_decimal
113
136
  "%g" % (fractional_odds + 1)
114
137
  end
115
138
 
139
+ # equality method
116
140
  def ==(other)
117
141
  other.fractional_odds == @fractional_odds
118
142
  end
@@ -1,30 +1,31 @@
1
1
  # A collection of mutually exclusive events.
2
- #--
3
- # The events are not currently enforced as being
4
- # mutually exclusive so are really just plain
5
- # old events right now.
6
2
  class MutuallyExclusiveCollection
7
3
  # create a new collection with the given events
4
+ # @param [Array<FixedOdds>] events the events
8
5
  def initialize(events)
9
6
  @events = events.sort
10
7
  end
11
8
 
12
9
  # the least likely of the events to occur
10
+ # @return [FixedOdds] the least likely event
13
11
  def underdog
14
12
  @events.first
15
13
  end
16
14
 
17
15
  # the most likely of the events to occur
16
+ # @return [FixedOdds] the most likely event
18
17
  def favorite
19
18
  @events.last
20
19
  end
21
20
 
22
21
  # the events in ascending order of probability
22
+ # @return [Array<FixedOdds>] events in ascending probability
23
23
  def in_ascending_probability
24
24
  @events
25
25
  end
26
26
 
27
27
  # the events in descending order of probability
28
+ # @return [Array<FixedOdds>] events in descending probability
28
29
  def in_descending_probability
29
30
  @events.reverse
30
31
  end
data/lib/Rational.rb CHANGED
@@ -1,7 +1,8 @@
1
1
  class Rational
2
- # calculates the reciprocal of the rational number
3
- #--
4
- # Would be better if wrote reciprocal! method instead
2
+ # calculates the reciprocal
3
+ # @example
4
+ # Rational(2/3).reciprocal #=> Rational(3/2)
5
+ # @return [Rational] the reciprocal
5
6
  def reciprocal
6
7
  1 / self
7
8
  end
data/rodders.gemspec CHANGED
@@ -5,7 +5,7 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "rodders"
8
- s.version = "0.1.1"
8
+ s.version = "0.1.2"
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"]
@@ -46,12 +46,14 @@ Gem::Specification.new do |s|
46
46
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
47
47
  s.add_runtime_dependency(%q<money>, [">= 0"])
48
48
  s.add_development_dependency(%q<rspec>, ["~> 2.3.0"])
49
+ s.add_development_dependency(%q<yard>, ["~> 0.6.0"])
49
50
  s.add_development_dependency(%q<bundler>, ["~> 1.0.0"])
50
51
  s.add_development_dependency(%q<jeweler>, ["~> 1.6.4"])
51
52
  s.add_development_dependency(%q<rcov>, [">= 0"])
52
53
  else
53
54
  s.add_dependency(%q<money>, [">= 0"])
54
55
  s.add_dependency(%q<rspec>, ["~> 2.3.0"])
56
+ s.add_dependency(%q<yard>, ["~> 0.6.0"])
55
57
  s.add_dependency(%q<bundler>, ["~> 1.0.0"])
56
58
  s.add_dependency(%q<jeweler>, ["~> 1.6.4"])
57
59
  s.add_dependency(%q<rcov>, [">= 0"])
@@ -59,6 +61,7 @@ Gem::Specification.new do |s|
59
61
  else
60
62
  s.add_dependency(%q<money>, [">= 0"])
61
63
  s.add_dependency(%q<rspec>, ["~> 2.3.0"])
64
+ s.add_dependency(%q<yard>, ["~> 0.6.0"])
62
65
  s.add_dependency(%q<bundler>, ["~> 1.0.0"])
63
66
  s.add_dependency(%q<jeweler>, ["~> 1.6.4"])
64
67
  s.add_dependency(%q<rcov>, [">= 0"])
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.1.1
4
+ version: 0.1.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -13,7 +13,7 @@ date: 2011-11-06 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: money
16
- requirement: &70307249687580 !ruby/object:Gem::Requirement
16
+ requirement: &70323280330880 !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: *70307249687580
24
+ version_requirements: *70323280330880
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: rspec
27
- requirement: &70307249686980 !ruby/object:Gem::Requirement
27
+ requirement: &70323280330380 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ~>
@@ -32,10 +32,21 @@ dependencies:
32
32
  version: 2.3.0
33
33
  type: :development
34
34
  prerelease: false
35
- version_requirements: *70307249686980
35
+ version_requirements: *70323280330380
36
+ - !ruby/object:Gem::Dependency
37
+ name: yard
38
+ requirement: &70323280329900 !ruby/object:Gem::Requirement
39
+ none: false
40
+ requirements:
41
+ - - ~>
42
+ - !ruby/object:Gem::Version
43
+ version: 0.6.0
44
+ type: :development
45
+ prerelease: false
46
+ version_requirements: *70323280329900
36
47
  - !ruby/object:Gem::Dependency
37
48
  name: bundler
38
- requirement: &70307249686400 !ruby/object:Gem::Requirement
49
+ requirement: &70323280329400 !ruby/object:Gem::Requirement
39
50
  none: false
40
51
  requirements:
41
52
  - - ~>
@@ -43,10 +54,10 @@ dependencies:
43
54
  version: 1.0.0
44
55
  type: :development
45
56
  prerelease: false
46
- version_requirements: *70307249686400
57
+ version_requirements: *70323280329400
47
58
  - !ruby/object:Gem::Dependency
48
59
  name: jeweler
49
- requirement: &70307249685800 !ruby/object:Gem::Requirement
60
+ requirement: &70323280328780 !ruby/object:Gem::Requirement
50
61
  none: false
51
62
  requirements:
52
63
  - - ~>
@@ -54,10 +65,10 @@ dependencies:
54
65
  version: 1.6.4
55
66
  type: :development
56
67
  prerelease: false
57
- version_requirements: *70307249685800
68
+ version_requirements: *70323280328780
58
69
  - !ruby/object:Gem::Dependency
59
70
  name: rcov
60
- requirement: &70307249685200 !ruby/object:Gem::Requirement
71
+ requirement: &70323280328260 !ruby/object:Gem::Requirement
61
72
  none: false
62
73
  requirements:
63
74
  - - ! '>='
@@ -65,7 +76,7 @@ dependencies:
65
76
  version: '0'
66
77
  type: :development
67
78
  prerelease: false
68
- version_requirements: *70307249685200
79
+ version_requirements: *70323280328260
69
80
  description: Converts between fractional, decimal and moneyline odds for betting and
70
81
  gambling. Calculates how much can be won on a given stake.
71
82
  email: nigel-lowry@ultra.eclipse.co.uk
@@ -106,7 +117,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
106
117
  version: '0'
107
118
  segments:
108
119
  - 0
109
- hash: 922005000090340067
120
+ hash: 2782545268239026614
110
121
  required_rubygems_version: !ruby/object:Gem::Requirement
111
122
  none: false
112
123
  requirements: