cardistry 0.1.0 → 0.2.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 +4 -4
- data/lib/cardistry.rb +2 -1
- data/lib/cardistry/card.rb +11 -15
- data/lib/cardistry/deck.rb +51 -0
- data/lib/cardistry/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 1e760749252ebfaa5a7c8a2293150af68a9b9d3cce8c1c7e1b12614ff5b22322
|
|
4
|
+
data.tar.gz: 24ac91f6f0f5ea0ea564ea8d84ff8bd46c4dcc41764f65546a9512d97faec440
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 456c1592c65569b4dee5e79a5c4bdac3d42903e250c61cab55eaaf8e7f145a4869889619bcff63872ddfe8e06a4036e15b3000a2d59a6687b484357d90690eda
|
|
7
|
+
data.tar.gz: 375747e1b0c6dab0df14c778d554ed7b5fbb63aa4367433abf3bed2872bc7ff1fbc61e8ddb2a4cab0b5ef300ec0cf18c0c17a30ed9c2ed1b03b4ac3ee9c17d04
|
data/lib/cardistry.rb
CHANGED
data/lib/cardistry/card.rb
CHANGED
|
@@ -1,18 +1,15 @@
|
|
|
1
1
|
module Cardistry
|
|
2
2
|
class Card
|
|
3
|
-
attr_reader :kind, :suit, :
|
|
3
|
+
attr_reader :kind, :suit, :rank, :name
|
|
4
4
|
|
|
5
5
|
@@suits = []
|
|
6
6
|
@@kinds = []
|
|
7
7
|
|
|
8
|
-
def initialize
|
|
9
|
-
@
|
|
8
|
+
def initialize rank, suit = nil, kind = :pip, name = nil
|
|
9
|
+
@rank = rank
|
|
10
10
|
@suit = suit
|
|
11
11
|
@kind = kind
|
|
12
|
-
@
|
|
13
|
-
|
|
14
|
-
Card.register_suit @suit
|
|
15
|
-
Card.register_kind @kind
|
|
12
|
+
@name = name || default_name
|
|
16
13
|
end
|
|
17
14
|
|
|
18
15
|
def self.suits
|
|
@@ -23,17 +20,16 @@ module Cardistry
|
|
|
23
20
|
@@kinds
|
|
24
21
|
end
|
|
25
22
|
|
|
23
|
+
def to_s
|
|
24
|
+
@name
|
|
25
|
+
end
|
|
26
26
|
|
|
27
27
|
private
|
|
28
28
|
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
end
|
|
33
|
-
|
|
34
|
-
def register_kind kind
|
|
35
|
-
@@kinds << kind unless @@kinds.include? kind
|
|
36
|
-
end
|
|
29
|
+
def default_name
|
|
30
|
+
rank = @rank > 1 ? @rank : 'Ace'
|
|
31
|
+
@suit ? "#{rank} of #{@suit.capitalize}" : rank
|
|
37
32
|
end
|
|
33
|
+
|
|
38
34
|
end
|
|
39
35
|
end
|
data/lib/cardistry/deck.rb
CHANGED
|
@@ -1,5 +1,56 @@
|
|
|
1
|
+
require "json"
|
|
2
|
+
require "cardistry/card"
|
|
3
|
+
|
|
1
4
|
module Cardistry
|
|
2
5
|
class Deck
|
|
6
|
+
include Enumerable
|
|
7
|
+
|
|
8
|
+
attr_reader :suits
|
|
9
|
+
|
|
10
|
+
def initialize
|
|
11
|
+
@cards = []
|
|
12
|
+
@suits = []
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def load from_file
|
|
16
|
+
data = File.read from_file
|
|
17
|
+
|
|
18
|
+
JSON.parse(data, { symbolize_names: true }).each do |entry|
|
|
19
|
+
rank = entry[:rank]
|
|
20
|
+
suit = entry[:suit] ? entry[:suit].to_sym : nil
|
|
21
|
+
kind = entry[:kind] ? entry[:kind].to_sym : nil
|
|
22
|
+
name = entry[:name]
|
|
23
|
+
|
|
24
|
+
card = Card.new( rank, suit, kind, name )
|
|
25
|
+
register_suit card.suit
|
|
26
|
+
@cards << card
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def each &block
|
|
31
|
+
@cards.each &block
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
def [] index
|
|
35
|
+
@cards[index] || "Not found"
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
def size
|
|
39
|
+
@cards.size
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
def info
|
|
43
|
+
info = <<~INFO
|
|
44
|
+
cards: #{size}
|
|
45
|
+
suits: #{@suits}
|
|
46
|
+
INFO
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
private
|
|
50
|
+
|
|
51
|
+
def register_suit suit
|
|
52
|
+
@suits << suit unless @suits.include?(suit) or !suit
|
|
53
|
+
end
|
|
3
54
|
|
|
4
55
|
end
|
|
5
56
|
end
|
data/lib/cardistry/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: cardistry
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.2.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Nick Noble
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: exe
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2021-01-
|
|
11
|
+
date: 2021-01-04 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: bundler
|