holdem 1.0.0 → 1.0.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 +4 -4
- data/holdem.gemspec +1 -0
- data/lib/holdem/card.rb +2 -2
- data/lib/holdem/deck.rb +10 -3
- data/lib/holdem/poker_hand.rb +5 -4
- data/lib/holdem/poker_rank.rb +7 -15
- data/lib/holdem/version.rb +1 -1
- data/test/card_test.rb +4 -3
- data/test/deck_test.rb +5 -5
- data/test/poker_hand_test.rb +1 -2
- data/test/poker_rank_test.rb +1 -2
- data/test/test_helper.rb +4 -0
- metadata +19 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6926800d2c8e0220fe8dca45c426cd377616245a
|
4
|
+
data.tar.gz: ea61981ed82d2d411d4ae02ba1b1302f8fd526cc
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6e588537a1e5971709de0a98ee550c1962fe3134f5677a06d3c9d69d0db57bacb5dec0dc25754eea27775b183356ffdcc3c8b9869d4169f47acdaac6750e1c9a
|
7
|
+
data.tar.gz: 011bd038663f9f731f427fb4e98747f0ff9e3fd59156b796c968a491febdcfb8dc5dbad352bfeaa14af22f046eaeeb6acb69d6815e0b43b1cc662e2e3783c336
|
data/holdem.gemspec
CHANGED
data/lib/holdem/card.rb
CHANGED
@@ -8,8 +8,8 @@ class Card
|
|
8
8
|
FACE_CARDS = { 'T' => 10, 'J' => 11, 'Q' => 12, 'K' => 13, 'A' => 14 }
|
9
9
|
|
10
10
|
def initialize(card)
|
11
|
-
@rank, @suit = card.
|
12
|
-
@icon
|
11
|
+
@rank, @suit = card.chars if card.respond_to?(:chars)
|
12
|
+
@icon = ICONS[suit]
|
13
13
|
validate(card)
|
14
14
|
end
|
15
15
|
|
data/lib/holdem/deck.rb
CHANGED
@@ -1,16 +1,23 @@
|
|
1
|
-
|
1
|
+
require 'forwardable'
|
2
|
+
|
3
|
+
class Deck
|
4
|
+
extend Forwardable
|
5
|
+
def_delegators :@deck, :shuffle, :shuffle!, :pop, :size
|
6
|
+
attr_reader :deck
|
7
|
+
|
2
8
|
def initialize
|
9
|
+
@deck = []
|
3
10
|
build_deck
|
4
11
|
end
|
5
12
|
|
6
|
-
# add test for #deal
|
7
13
|
alias_method :deal, :pop
|
14
|
+
alias_method :count, :size
|
8
15
|
|
9
16
|
private
|
10
17
|
|
11
18
|
def build_deck
|
12
19
|
Card::RANKS.each do |rank|
|
13
|
-
Card::SUITS.each { |suit|
|
20
|
+
Card::SUITS.each { |suit| deck << Card.new(rank + suit) }
|
14
21
|
end
|
15
22
|
end
|
16
23
|
end
|
data/lib/holdem/poker_hand.rb
CHANGED
@@ -1,10 +1,11 @@
|
|
1
|
+
require 'forwardable'
|
2
|
+
|
1
3
|
class PokerHand
|
2
4
|
include Comparable
|
3
5
|
extend Forwardable
|
4
6
|
|
5
|
-
|
6
|
-
|
7
|
-
:full_house?, :flush?, :straight?, :three_of_a_kind?,
|
7
|
+
rank_methods = [ :rank, :score, :straight_flush?, :quads?, :four_of_a_kind?,
|
8
|
+
:boat?, :full_house?, :flush?, :straight?, :three_of_a_kind?,
|
8
9
|
:trips?, :two_pairs?, :two_pair?, :pair? ]
|
9
10
|
def_delegators :@poker_rank, *rank_methods
|
10
11
|
|
@@ -30,4 +31,4 @@ class PokerHand
|
|
30
31
|
def to_s
|
31
32
|
"#{just_cards} -> #{rank}"
|
32
33
|
end
|
33
|
-
end
|
34
|
+
end
|
data/lib/holdem/poker_rank.rb
CHANGED
@@ -7,15 +7,6 @@ class PokerRank
|
|
7
7
|
end
|
8
8
|
|
9
9
|
def build_ranking
|
10
|
-
# return ["Straight flush", straight_flush_score] if straight_flush?
|
11
|
-
# return ["Four of a kind", four_kind_score] if four_of_a_kind?
|
12
|
-
# return ["Full House", full_house_score] if full_house?
|
13
|
-
# return ["Flush", flush_score] if flush?
|
14
|
-
# return ["Straight", straight_score] if straight?
|
15
|
-
# return ["Three of a Kind", three_kind_score] if three_of_a_kind?
|
16
|
-
# return ["Two Pairs", two_pairs_score] if two_pairs?
|
17
|
-
# return ["One Pair", pair_score] if pair?
|
18
|
-
#
|
19
10
|
case
|
20
11
|
when straight_flush? then build_straight_flush
|
21
12
|
when four_of_a_kind? then build_four_kind
|
@@ -136,11 +127,6 @@ class PokerRank
|
|
136
127
|
end
|
137
128
|
|
138
129
|
# HELPER METHODS
|
139
|
-
|
140
|
-
def pair_card_values
|
141
|
-
pairs.map { |_count, cards| cards.first.value }
|
142
|
-
end
|
143
|
-
|
144
130
|
def high_card
|
145
131
|
sorted_cards.first
|
146
132
|
end
|
@@ -160,11 +146,17 @@ class PokerRank
|
|
160
146
|
return suit if count >= 5
|
161
147
|
end
|
162
148
|
|
149
|
+
private
|
150
|
+
|
151
|
+
# helper method to retrieve card value/rank for each pair
|
163
152
|
def pair_card(num=1)
|
164
153
|
pairs.take(num).map { |_count, cards| cards.last }.last
|
165
154
|
end
|
166
155
|
|
167
|
-
#
|
156
|
+
# helper method to calculate poker scores
|
157
|
+
def pair_card_values
|
158
|
+
pairs.map { |_count, cards| cards.first.value }
|
159
|
+
end
|
168
160
|
|
169
161
|
def sorted_cards
|
170
162
|
@sorted_cards ||= cards.sort_by { |card| card.value * -1 }
|
data/lib/holdem/version.rb
CHANGED
data/test/card_test.rb
CHANGED
@@ -1,5 +1,4 @@
|
|
1
|
-
|
2
|
-
require 'holdem'
|
1
|
+
require_relative 'test_helper'
|
3
2
|
|
4
3
|
class CardTest < Minitest::Test
|
5
4
|
def setup
|
@@ -22,13 +21,15 @@ class CardTest < Minitest::Test
|
|
22
21
|
assert_equal 'c', @card4.suit
|
23
22
|
end
|
24
23
|
|
25
|
-
def
|
24
|
+
def test_card_icons
|
26
25
|
assert_equal '♦', @card1.icon
|
27
26
|
assert_equal '♥', @card2.icon
|
28
27
|
end
|
29
28
|
|
30
29
|
def test_invalid_cards
|
30
|
+
assert_raises(ArgumentError) { Card.new(56) }
|
31
31
|
assert_raises(ArgumentError) { Card.new('9k') }
|
32
32
|
assert_raises(ArgumentError) { Card.new('d2') }
|
33
|
+
assert_raises(ArgumentError) { Card.new('a card') }
|
33
34
|
end
|
34
35
|
end
|
data/test/deck_test.rb
CHANGED
@@ -1,5 +1,4 @@
|
|
1
|
-
|
2
|
-
require 'holdem'
|
1
|
+
require_relative 'test_helper'
|
3
2
|
|
4
3
|
class DeckTest < Minitest::Test
|
5
4
|
|
@@ -12,14 +11,15 @@ class DeckTest < Minitest::Test
|
|
12
11
|
end
|
13
12
|
|
14
13
|
def test_deck_next_card
|
15
|
-
card =
|
14
|
+
card = Deck.new.pop
|
16
15
|
assert_equal card, @deck.pop
|
17
16
|
assert_equal 51, @deck.size
|
18
17
|
end
|
19
18
|
|
20
19
|
def test_shuffle
|
21
|
-
unshuffled = @deck
|
20
|
+
unshuffled = @deck
|
22
21
|
shuffled = @deck.shuffle
|
22
|
+
|
23
23
|
refute_equal unshuffled, shuffled
|
24
24
|
end
|
25
|
-
end
|
25
|
+
end
|
data/test/poker_hand_test.rb
CHANGED
data/test/poker_rank_test.rb
CHANGED
data/test/test_helper.rb
ADDED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: holdem
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jamie Berczel
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2015-01-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -52,6 +52,20 @@ dependencies:
|
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: 5.4.3
|
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.0.8
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: 1.0.8
|
55
69
|
description: A ruby module for creating and comparing Texas Holdem poker hands.
|
56
70
|
email:
|
57
71
|
- jxberc@gmail.com
|
@@ -76,6 +90,7 @@ files:
|
|
76
90
|
- test/deck_test.rb
|
77
91
|
- test/poker_hand_test.rb
|
78
92
|
- test/poker_rank_test.rb
|
93
|
+
- test/test_helper.rb
|
79
94
|
homepage: ''
|
80
95
|
licenses:
|
81
96
|
- MIT
|
@@ -96,7 +111,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
96
111
|
version: '0'
|
97
112
|
requirements: []
|
98
113
|
rubyforge_project:
|
99
|
-
rubygems_version: 2.4.
|
114
|
+
rubygems_version: 2.4.5
|
100
115
|
signing_key:
|
101
116
|
specification_version: 4
|
102
117
|
summary: A ruby module for creating and comparing Texas Holdem poker hands.
|
@@ -105,3 +120,4 @@ test_files:
|
|
105
120
|
- test/deck_test.rb
|
106
121
|
- test/poker_hand_test.rb
|
107
122
|
- test/poker_rank_test.rb
|
123
|
+
- test/test_helper.rb
|