the_gambler 1.2.0 → 1.3.0

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 ADDED
@@ -0,0 +1,15 @@
1
+ ---
2
+ !binary "U0hBMQ==":
3
+ metadata.gz: !binary |-
4
+ NjczNjg1NGQ4ZTRiZGZhMzU5NjEzMWIyN2E5YjcwMmFmZjA0ZDczNA==
5
+ data.tar.gz: !binary |-
6
+ ZjI0OWMzM2NkNWI2ZjYwMjhhOTkyYTU2NzgyMDAzMGZlYzRhODU3ZA==
7
+ !binary "U0hBNTEy":
8
+ metadata.gz: !binary |-
9
+ Y2Y0MjdjMjhhMjQ5MjIyYmNlZjViYWQ0N2M2YmQzZDM1MDZjZDE4OGVkYzRi
10
+ ZDY5YzI1ZmU1OTQ1OWNiYWRmN2E5NzhmYmI5Y2ViNGE0OWQ2NTc0Nzk4ZmYz
11
+ MTNlNmI5NGI0NWUyOGU2ZTU2ZTc2OGRlNTZkOTU3MDAyZTgzNTM=
12
+ data.tar.gz: !binary |-
13
+ YTQ1Y2YzNzU1MGY4MTNkNzU0Y2IzY2ZmMGEwODkzYWM5YzBkZGY5NDczMTFm
14
+ ZmI0N2M3NjgzMWM5YmVmZTlkMzM5MmYzMGMwNGE1OGE4Yzg1OWQzN2U1MzRm
15
+ N2VjZDFhMGVkNGYzZWZlYjJhZDZmMTM3ZGMzOTViMWYxMjA1NzU=
data/.gitignore ADDED
@@ -0,0 +1,21 @@
1
+ *.gem
2
+ *.rbc
3
+ .bundle
4
+ .config
5
+ .yardoc
6
+ Gemfile.lock
7
+ InstalledFiles
8
+ _yardoc
9
+ coverage
10
+ doc/
11
+ lib/bundler/man
12
+ pkg
13
+ rdoc
14
+ spec/reports
15
+ test/tmp
16
+ test/version_tmp
17
+ tmp
18
+
19
+ # For macos
20
+ .DS_Store
21
+ .Apple*
data/.rspec CHANGED
@@ -1 +1 @@
1
- --color
1
+ --color --format NyanCatFormatter
data/.ruby-gemset ADDED
@@ -0,0 +1 @@
1
+ the_gambler
data/.ruby-version ADDED
@@ -0,0 +1 @@
1
+ ruby-1.9.3-p448
data/Gemfile CHANGED
@@ -10,6 +10,6 @@ group :development do
10
10
  gem "yard"
11
11
  gem "rdoc"
12
12
  gem "bundler"
13
- gem "jeweler"
13
+ gem "nyan-cat-formatter"
14
14
  gem "simplecov"
15
15
  end
data/Gemfile.lock CHANGED
@@ -2,15 +2,9 @@ GEM
2
2
  remote: http://rubygems.org/
3
3
  specs:
4
4
  diff-lcs (1.1.3)
5
- git (1.2.5)
6
- jeweler (1.8.4)
7
- bundler (~> 1.0)
8
- git (>= 1.2.5)
9
- rake
10
- rdoc
11
5
  json (1.7.5)
12
6
  multi_json (1.3.7)
13
- rake (0.9.2.2)
7
+ nyan-cat-formatter (0.2.0)
14
8
  rdoc (3.12)
15
9
  json (~> 1.4)
16
10
  rspec (2.11.0)
@@ -32,7 +26,7 @@ PLATFORMS
32
26
 
33
27
  DEPENDENCIES
34
28
  bundler
35
- jeweler
29
+ nyan-cat-formatter
36
30
  rdoc
37
31
  rspec
38
32
  simplecov
data/Rakefile CHANGED
@@ -1,57 +1 @@
1
- # encoding: utf-8
2
-
3
- require 'rubygems'
4
- require 'bundler'
5
- begin
6
- Bundler.setup(:default, :development)
7
- rescue Bundler::BundlerError => e
8
- $stderr.puts e.message
9
- $stderr.puts "Run `bundle install` to install missing gems"
10
- exit e.status_code
11
- end
12
- require 'rake'
13
-
14
- require 'jeweler'
15
- Jeweler::Tasks.new do |gem|
16
- # gem is a Gem::Specification... see http://docs.rubygems.org/read/chapter/20 for more options
17
- gem.name = "the_gambler"
18
- gem.homepage = "http://github.com/mstahl/the_gambler"
19
- gem.license = "MIT"
20
- gem.summary = %Q{Classes and modules for card-playing apps.}
21
- gem.description = %Q{
22
- Really common tasks in programs that use playing cards are a pain to implement. This is my
23
- implementation. Use it. Or don't.
24
- }
25
- gem.email = "max@villainousindustries.com"
26
- gem.authors = ["max thom stahl"]
27
- # dependencies defined in Gemfile
28
- end
29
- Jeweler::RubygemsDotOrgTasks.new
30
-
31
- require 'rspec/core'
32
- require 'rspec/core/rake_task'
33
- RSpec::Core::RakeTask.new(:spec) do |spec|
34
- spec.pattern = FileList['spec/**/*_spec.rb']
35
- end
36
-
37
- RSpec::Core::RakeTask.new(:rcov) do |spec|
38
- spec.pattern = 'spec/**/*_spec.rb'
39
- spec.rcov = true
40
- end
41
-
42
- task :default => :spec
43
-
44
- require 'yard'
45
- YARD::Rake::YardocTask.new
46
-
47
- namespace :benchmark do
48
- require 'the_gambler'
49
-
50
- desc 'Test how long it takes to evaluate a given number of random hands.'
51
- task :randoms do
52
- 10_000_000.times do |i|
53
- TheGambler::Hand.new(rand(52), rand(52), rand(52), rand(52), rand(52)).poker_value
54
- end
55
- end
56
- end
57
-
1
+ require "bundler/gem_tasks"
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.2.0
1
+ 1.3.0
@@ -6,6 +6,8 @@ module TheGambler
6
6
  SUIT_SYMBOLS = %w{spades clubs hearts diamonds}.map(&:to_sym)
7
7
  RANKS = %w{2 3 4 5 6 7 8 9 10 J Q K A}
8
8
 
9
+ # Initializer --------------------------------------------------------------
10
+
9
11
  def initialize(arg)
10
12
  case arg.class.to_s
11
13
  when 'Card','TheGambler::Card'
@@ -42,6 +44,20 @@ module TheGambler
42
44
  end
43
45
  end
44
46
 
47
+ # Instance methods ---------------------------------------------------------
48
+
49
+ def <(other)
50
+ return (@raw % 13) < (other.raw % 13)
51
+ end
52
+
53
+ def >(other)
54
+ return (@raw % 13) > (other.raw % 13)
55
+ end
56
+
57
+ def <=>(other)
58
+ return (@raw % 13) <=> (other.raw % 13)
59
+ end
60
+
45
61
  def ace?
46
62
  rank == 'A'
47
63
  end
@@ -0,0 +1,3 @@
1
+ module TheGambler
2
+ VERSION = "1.3.0"
3
+ end
@@ -0,0 +1,39 @@
1
+ require 'spec_helper'
2
+
3
+ module TheGambler
4
+
5
+ describe Card do
6
+ context 'comparisons with other cards', comparisons:true do
7
+ describe '#<' do
8
+ it 'should be able to compare two cards by rank' do
9
+ Card.new("7D").should < Card.new("10S")
10
+ end
11
+ end
12
+
13
+ describe '#>' do
14
+ it 'should be able to compare two cards by rank' do
15
+ Card.new("JD").should > Card.new("5D")
16
+ end
17
+ end
18
+
19
+ describe '#<=>' do
20
+ it 'should return -1 when less than its argument' do
21
+ (Card.new('10S') <=> Card.new('JS')).should == -1
22
+ end
23
+
24
+ it 'should return 0 when equal to its argument' do
25
+ (Card.new('10S') <=> Card.new('10H')).should == 0
26
+ end
27
+
28
+ it 'should return +1 when greater than its argument' do
29
+ (Card.new('KD') <=> Card.new('5H')).should == 1
30
+ end
31
+ end
32
+
33
+ # TODO Decide what I wanna do about the handling of aces.
34
+ # context 'including aces' do
35
+ # pending "I do not even wanna deal with aces right now for this...."
36
+ # end
37
+ end
38
+ end
39
+ end
@@ -143,6 +143,5 @@ module TheGambler
143
143
  end
144
144
  end
145
145
 
146
-
147
146
  end
148
147
  end
@@ -58,9 +58,6 @@ module TheGambler
58
58
  end
59
59
  end
60
60
 
61
-
62
-
63
-
64
61
  end
65
62
  end
66
63
 
data/the_gambler.gemspec CHANGED
@@ -1,88 +1,26 @@
1
- # Generated by jeweler
2
- # DO NOT EDIT THIS FILE DIRECTLY
3
- # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
- # -*- encoding: utf-8 -*-
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'the_gambler/version'
5
5
 
6
- Gem::Specification.new do |s|
7
- s.name = "the_gambler"
8
- s.version = "1.2.0"
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "the_gambler"
8
+ spec.version = TheGambler::VERSION
9
+ spec.authors = ["max thom stahl"]
10
+ spec.email = ["max@villainousindustries.com"]
11
+ spec.description = %q{
12
+ Really common tasks in programs that use playing cards are a pain to
13
+ implement. This is my implementation. Use it. Or don't.
14
+ }
15
+ spec.summary = %q{Classes and modules for card-playing apps.}
16
+ spec.homepage = ""
17
+ spec.license = "MIT"
9
18
 
10
- s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
- s.authors = ["max thom stahl"]
12
- s.date = "2012-11-24"
13
- s.description = "\n Really common tasks in programs that use playing cards are a pain to implement. This is my\n implementation. Use it. Or don't.\n "
14
- s.email = "max@villainousindustries.com"
15
- s.extra_rdoc_files = [
16
- "LICENSE.txt",
17
- "README.md"
18
- ]
19
- s.files = [
20
- ".document",
21
- ".rspec",
22
- "CHANGELOG.md",
23
- "Gemfile",
24
- "Gemfile.lock",
25
- "LICENSE.txt",
26
- "README.md",
27
- "Rakefile",
28
- "VERSION",
29
- "lib/the_gambler.rb",
30
- "lib/the_gambler/blackjack.rb",
31
- "lib/the_gambler/card.rb",
32
- "lib/the_gambler/deck.rb",
33
- "lib/the_gambler/hand.rb",
34
- "lib/the_gambler/poker.rb",
35
- "spec/cards/initialization_spec.rb",
36
- "spec/hands/hands_spec.rb",
37
- "spec/hands/poker/hand_flush_spec.rb",
38
- "spec/hands/poker/hand_four_of_a_kind_spec.rb",
39
- "spec/hands/poker/hand_full_house_spec.rb",
40
- "spec/hands/poker/hand_high_card_spec.rb",
41
- "spec/hands/poker/hand_one_pair_spec.rb",
42
- "spec/hands/poker/hand_royal_flush_spec.rb",
43
- "spec/hands/poker/hand_straight_flush_spec.rb",
44
- "spec/hands/poker/hand_straight_spec.rb",
45
- "spec/hands/poker/hand_three_of_a_kind_spec.rb",
46
- "spec/hands/poker/hand_two_pair_spec.rb",
47
- "spec/hands/poker/kicker_cards_spec.rb",
48
- "spec/hands/poker/nine_card_hands_spec.rb",
49
- "spec/hands/poker/seven_card_hands_spec.rb",
50
- "spec/spec_helper.rb",
51
- "spec/support/shared_examples/shared_poker_hands.rb",
52
- "spec/the_gambler_spec.rb",
53
- "the_gambler.gemspec"
54
- ]
55
- s.homepage = "http://github.com/mstahl/the_gambler"
56
- s.licenses = ["MIT"]
57
- s.require_paths = ["lib"]
58
- s.rubygems_version = "1.8.24"
59
- s.summary = "Classes and modules for card-playing apps."
19
+ spec.files = `git ls-files`.split($/)
20
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
21
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
22
+ spec.require_paths = ["lib"]
60
23
 
61
- if s.respond_to? :specification_version then
62
- s.specification_version = 3
63
-
64
- if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
65
- s.add_development_dependency(%q<rspec>, [">= 0"])
66
- s.add_development_dependency(%q<yard>, [">= 0"])
67
- s.add_development_dependency(%q<rdoc>, [">= 0"])
68
- s.add_development_dependency(%q<bundler>, [">= 0"])
69
- s.add_development_dependency(%q<jeweler>, [">= 0"])
70
- s.add_development_dependency(%q<simplecov>, [">= 0"])
71
- else
72
- s.add_dependency(%q<rspec>, [">= 0"])
73
- s.add_dependency(%q<yard>, [">= 0"])
74
- s.add_dependency(%q<rdoc>, [">= 0"])
75
- s.add_dependency(%q<bundler>, [">= 0"])
76
- s.add_dependency(%q<jeweler>, [">= 0"])
77
- s.add_dependency(%q<simplecov>, [">= 0"])
78
- end
79
- else
80
- s.add_dependency(%q<rspec>, [">= 0"])
81
- s.add_dependency(%q<yard>, [">= 0"])
82
- s.add_dependency(%q<rdoc>, [">= 0"])
83
- s.add_dependency(%q<bundler>, [">= 0"])
84
- s.add_dependency(%q<jeweler>, [">= 0"])
85
- s.add_dependency(%q<simplecov>, [">= 0"])
86
- end
24
+ spec.add_development_dependency "bundler", "~> 1.3"
25
+ spec.add_development_dependency "rake"
87
26
  end
88
-
metadata CHANGED
@@ -1,84 +1,32 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: the_gambler
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.0
5
- prerelease:
4
+ version: 1.3.0
6
5
  platform: ruby
7
6
  authors:
8
7
  - max thom stahl
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2012-11-24 00:00:00.000000000 Z
11
+ date: 2013-08-12 00:00:00.000000000 Z
13
12
  dependencies:
14
- - !ruby/object:Gem::Dependency
15
- name: rspec
16
- requirement: !ruby/object:Gem::Requirement
17
- none: false
18
- requirements:
19
- - - ! '>='
20
- - !ruby/object:Gem::Version
21
- version: '0'
22
- type: :development
23
- prerelease: false
24
- version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
- requirements:
27
- - - ! '>='
28
- - !ruby/object:Gem::Version
29
- version: '0'
30
- - !ruby/object:Gem::Dependency
31
- name: yard
32
- requirement: !ruby/object:Gem::Requirement
33
- none: false
34
- requirements:
35
- - - ! '>='
36
- - !ruby/object:Gem::Version
37
- version: '0'
38
- type: :development
39
- prerelease: false
40
- version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
- requirements:
43
- - - ! '>='
44
- - !ruby/object:Gem::Version
45
- version: '0'
46
- - !ruby/object:Gem::Dependency
47
- name: rdoc
48
- requirement: !ruby/object:Gem::Requirement
49
- none: false
50
- requirements:
51
- - - ! '>='
52
- - !ruby/object:Gem::Version
53
- version: '0'
54
- type: :development
55
- prerelease: false
56
- version_requirements: !ruby/object:Gem::Requirement
57
- none: false
58
- requirements:
59
- - - ! '>='
60
- - !ruby/object:Gem::Version
61
- version: '0'
62
13
  - !ruby/object:Gem::Dependency
63
14
  name: bundler
64
15
  requirement: !ruby/object:Gem::Requirement
65
- none: false
66
16
  requirements:
67
- - - ! '>='
17
+ - - ~>
68
18
  - !ruby/object:Gem::Version
69
- version: '0'
19
+ version: '1.3'
70
20
  type: :development
71
21
  prerelease: false
72
22
  version_requirements: !ruby/object:Gem::Requirement
73
- none: false
74
23
  requirements:
75
- - - ! '>='
24
+ - - ~>
76
25
  - !ruby/object:Gem::Version
77
- version: '0'
26
+ version: '1.3'
78
27
  - !ruby/object:Gem::Dependency
79
- name: jeweler
28
+ name: rake
80
29
  requirement: !ruby/object:Gem::Requirement
81
- none: false
82
30
  requirements:
83
31
  - - ! '>='
84
32
  - !ruby/object:Gem::Version
@@ -86,38 +34,23 @@ dependencies:
86
34
  type: :development
87
35
  prerelease: false
88
36
  version_requirements: !ruby/object:Gem::Requirement
89
- none: false
90
- requirements:
91
- - - ! '>='
92
- - !ruby/object:Gem::Version
93
- version: '0'
94
- - !ruby/object:Gem::Dependency
95
- name: simplecov
96
- requirement: !ruby/object:Gem::Requirement
97
- none: false
98
- requirements:
99
- - - ! '>='
100
- - !ruby/object:Gem::Version
101
- version: '0'
102
- type: :development
103
- prerelease: false
104
- version_requirements: !ruby/object:Gem::Requirement
105
- none: false
106
37
  requirements:
107
38
  - - ! '>='
108
39
  - !ruby/object:Gem::Version
109
40
  version: '0'
110
41
  description: ! "\n Really common tasks in programs that use playing cards are a
111
- pain to implement. This is my\n implementation. Use it. Or don't.\n "
112
- email: max@villainousindustries.com
42
+ pain to\n implement. This is my implementation. Use it. Or don't.\n "
43
+ email:
44
+ - max@villainousindustries.com
113
45
  executables: []
114
46
  extensions: []
115
- extra_rdoc_files:
116
- - LICENSE.txt
117
- - README.md
47
+ extra_rdoc_files: []
118
48
  files:
119
49
  - .document
50
+ - .gitignore
120
51
  - .rspec
52
+ - .ruby-gemset
53
+ - .ruby-version
121
54
  - CHANGELOG.md
122
55
  - Gemfile
123
56
  - Gemfile.lock
@@ -131,6 +64,8 @@ files:
131
64
  - lib/the_gambler/deck.rb
132
65
  - lib/the_gambler/hand.rb
133
66
  - lib/the_gambler/poker.rb
67
+ - lib/the_gambler/version.rb
68
+ - spec/cards/comparison_spec.rb
134
69
  - spec/cards/initialization_spec.rb
135
70
  - spec/hands/hands_spec.rb
136
71
  - spec/hands/poker/hand_flush_spec.rb
@@ -150,32 +85,48 @@ files:
150
85
  - spec/support/shared_examples/shared_poker_hands.rb
151
86
  - spec/the_gambler_spec.rb
152
87
  - the_gambler.gemspec
153
- homepage: http://github.com/mstahl/the_gambler
88
+ homepage: ''
154
89
  licenses:
155
90
  - MIT
91
+ metadata: {}
156
92
  post_install_message:
157
93
  rdoc_options: []
158
94
  require_paths:
159
95
  - lib
160
96
  required_ruby_version: !ruby/object:Gem::Requirement
161
- none: false
162
97
  requirements:
163
98
  - - ! '>='
164
99
  - !ruby/object:Gem::Version
165
100
  version: '0'
166
- segments:
167
- - 0
168
- hash: -448834733471940909
169
101
  required_rubygems_version: !ruby/object:Gem::Requirement
170
- none: false
171
102
  requirements:
172
103
  - - ! '>='
173
104
  - !ruby/object:Gem::Version
174
105
  version: '0'
175
106
  requirements: []
176
107
  rubyforge_project:
177
- rubygems_version: 1.8.24
108
+ rubygems_version: 2.0.6
178
109
  signing_key:
179
- specification_version: 3
110
+ specification_version: 4
180
111
  summary: Classes and modules for card-playing apps.
181
- test_files: []
112
+ test_files:
113
+ - spec/cards/comparison_spec.rb
114
+ - spec/cards/initialization_spec.rb
115
+ - spec/hands/hands_spec.rb
116
+ - spec/hands/poker/hand_flush_spec.rb
117
+ - spec/hands/poker/hand_four_of_a_kind_spec.rb
118
+ - spec/hands/poker/hand_full_house_spec.rb
119
+ - spec/hands/poker/hand_high_card_spec.rb
120
+ - spec/hands/poker/hand_one_pair_spec.rb
121
+ - spec/hands/poker/hand_royal_flush_spec.rb
122
+ - spec/hands/poker/hand_straight_flush_spec.rb
123
+ - spec/hands/poker/hand_straight_spec.rb
124
+ - spec/hands/poker/hand_three_of_a_kind_spec.rb
125
+ - spec/hands/poker/hand_two_pair_spec.rb
126
+ - spec/hands/poker/kicker_cards_spec.rb
127
+ - spec/hands/poker/nine_card_hands_spec.rb
128
+ - spec/hands/poker/seven_card_hands_spec.rb
129
+ - spec/spec_helper.rb
130
+ - spec/support/shared_examples/shared_poker_hands.rb
131
+ - spec/the_gambler_spec.rb
132
+ has_rdoc: