easy_elo 0.1.0 → 0.1.1

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
  SHA1:
3
- metadata.gz: 91419e0928c497bcce465157dff9782b623808d7
4
- data.tar.gz: 078c3b0e9fcd3baa4740f977bd31653c863d0333
3
+ metadata.gz: 54c9d0a49c644f3239853de7b8930ae08371fc36
4
+ data.tar.gz: fbe890c7390d58ce179358e325f22c7eb02579d4
5
5
  SHA512:
6
- metadata.gz: 95b95a408182619c75d5ed7aa9215df2097d72a3c53fac96bace9091f878a1adeac4c7340005a9f87d398a150478806b84e3d50541eaea5b94aae9913929dfbf
7
- data.tar.gz: 61aec11996456208bad0c110b63204066d2151e79a85e6b7cff8b243d9fef5a7f19fa2a010ee1a6939dc1b3f1deb97b74a42d759cba172a3a99f205a059c3e44
6
+ metadata.gz: 2f1a1b12305958a7ae71480b8a7044be172669b009803d66b96ed150f78f5fc3f8a002a1e43ae3b70f25ebe2ef0855967c43bb04149f71b451bd313a938e9114
7
+ data.tar.gz: 7754bec7d27e520c23887270c12dda94baf19c70652a43a484aa646118dc29e864dec299159a62026637529f8401696fd02724ac1187d5f972cda498a27a243d
data/Rakefile CHANGED
@@ -1,6 +1,11 @@
1
- require "bundler/gem_tasks"
2
- require "rspec/core/rake_task"
1
+ require 'bundler'
2
+ require 'rake/testtask'
3
3
 
4
- RSpec::Core::RakeTask.new(:spec)
4
+ Bundler::GemHelper.install_tasks
5
5
 
6
- task :default => :spec
6
+ Rake::TestTask.new do |task|
7
+ task.libs << %w(test lib)
8
+ task.pattern = 'test/test_*.rb'
9
+ end
10
+
11
+ task :default => :test
data/easy_elo.gemspec CHANGED
@@ -21,5 +21,7 @@ Gem::Specification.new do |spec|
21
21
 
22
22
  spec.add_development_dependency "bundler", "~> 1.11"
23
23
  spec.add_development_dependency "rake", "~> 10.0"
24
- spec.add_development_dependency "rspec", "~> 3.0"
24
+ spec.add_development_dependency "minitest", "~> 5.9"
25
+ spec.add_development_dependency "minitest-reporters", "~> 1.1"
26
+ spec.add_development_dependency "shoulda-context", "~> 1.2"
25
27
  end
data/lib/easy_elo.rb CHANGED
@@ -1,14 +1,16 @@
1
- require "easy_elo/version"
1
+ require 'easy_elo/version'
2
+ require 'easy_elo/helper'
3
+ require 'easy_elo/configure'
4
+ require 'easy_elo/player'
5
+ require 'easy_elo/rating'
6
+ require 'easy_elo/game'
2
7
 
3
8
  module EasyElo
4
- class League
5
- def initialize
6
- @n = 7
7
- end
8
-
9
- def test
10
- return @n
11
- end
9
+ def self.config
10
+ @config ||= Configuration.new
12
11
  end
13
12
 
13
+ def self.configure(&block)
14
+ yield(config)
15
+ end
14
16
  end
@@ -0,0 +1,12 @@
1
+ module EasyElo
2
+ class Configuration
3
+ include Helper
4
+ attr_accessor :mean, :sd, :k_factor
5
+
6
+ def initialize
7
+ @mean = 1000
8
+ @sd = 200
9
+ @k_factor = 32
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,17 @@
1
+ module EasyElo
2
+ class Game
3
+ include Helper
4
+
5
+ def initialize(p1, p2)
6
+ @p1 = p1
7
+ @p2 = p2
8
+ @result = nil
9
+ end
10
+
11
+ def won_by(winner)
12
+ result = (winner = @p1 ? 1 : 0)
13
+ @p1.plays(@p2, result)
14
+ @p2.plays(@p1, result - 1)
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,9 @@
1
+ module EasyElo
2
+ module Helper
3
+ def initialize(attributes = {})
4
+ attributes.each do |key, value|
5
+ instance_variable_set("@#{key}", value)
6
+ end
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,14 @@
1
+ module EasyElo
2
+ class Player
3
+ include Helper
4
+ attr_accessor :rating
5
+
6
+ def rating
7
+ @rating ||= EasyElo.config.mean
8
+ end
9
+
10
+ def plays(player, score)
11
+ @rating = Rating.new(self.rating, player.rating, score).result
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,23 @@
1
+ module EasyElo
2
+ class Rating
3
+ include Helper
4
+
5
+ def initialize(r1, r2, actual)
6
+ @r1 = r1
7
+ @r2 = r2
8
+ @actual = actual
9
+ @estimation = self.estimation
10
+ @k_factor = EasyElo.config.k_factor
11
+ @result = self.result
12
+ end
13
+
14
+ def estimation
15
+ sd = EasyElo.config.sd
16
+ (1/2) + Math.erf((@r1.to_f - @r2.to_f)/(2*sd))/2
17
+ end
18
+
19
+ def result
20
+ @r1 - @r1 + @k_factor * (@actual - @estimation)
21
+ end
22
+ end
23
+ end
@@ -1,3 +1,3 @@
1
1
  module EasyElo
2
- VERSION = "0.1.0"
2
+ VERSION = "0.1.1"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: easy_elo
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Scott Mackie
@@ -39,19 +39,47 @@ dependencies:
39
39
  - !ruby/object:Gem::Version
40
40
  version: '10.0'
41
41
  - !ruby/object:Gem::Dependency
42
- name: rspec
42
+ name: minitest
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: '3.0'
47
+ version: '5.9'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: '3.0'
54
+ version: '5.9'
55
+ - !ruby/object:Gem::Dependency
56
+ name: minitest-reporters
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '1.1'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '1.1'
69
+ - !ruby/object:Gem::Dependency
70
+ name: shoulda-context
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '1.2'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '1.2'
55
83
  description: Gem for easily implementing the Elo Algorith.
56
84
  email:
57
85
  - scott@mackie.io
@@ -71,6 +99,11 @@ files:
71
99
  - bin/setup
72
100
  - easy_elo.gemspec
73
101
  - lib/easy_elo.rb
102
+ - lib/easy_elo/configure.rb
103
+ - lib/easy_elo/game.rb
104
+ - lib/easy_elo/helper.rb
105
+ - lib/easy_elo/player.rb
106
+ - lib/easy_elo/rating.rb
74
107
  - lib/easy_elo/version.rb
75
108
  homepage: https://github.com/MacroMackie/easy_elo
76
109
  licenses: