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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 661445e33ff98187764ba8c32645431dce7cad05f47b24011f78ef2a8d59b9dc
4
- data.tar.gz: '08675d688306dce5cb0bcb76cf0018ba2283dceabde37b25fc3841830ad08d7e'
3
+ metadata.gz: 1e760749252ebfaa5a7c8a2293150af68a9b9d3cce8c1c7e1b12614ff5b22322
4
+ data.tar.gz: 24ac91f6f0f5ea0ea564ea8d84ff8bd46c4dcc41764f65546a9512d97faec440
5
5
  SHA512:
6
- metadata.gz: 56cc8c5fc0dc3a8ef2b3f08b1490d44f2d34e4bad4598e680bc1c4e706dd71752d929c81d3562bbe7ec46d90f6c404adaa0825581f44c79f5e6cf556326b576a
7
- data.tar.gz: 0a1bbf6c49c6aa383b6894855aae0b4c0a63ea2ab6b248e52ec205518c923a85d996269cfd0f4112f4068525ede5d62bd0c6ad1f707f2718bae6fd78bbd46ba9
6
+ metadata.gz: 456c1592c65569b4dee5e79a5c4bdac3d42903e250c61cab55eaaf8e7f145a4869889619bcff63872ddfe8e06a4036e15b3000a2d59a6687b484357d90690eda
7
+ data.tar.gz: 375747e1b0c6dab0df14c778d554ed7b5fbb63aa4367433abf3bed2872bc7ff1fbc61e8ddb2a4cab0b5ef300ec0cf18c0c17a30ed9c2ed1b03b4ac3ee9c17d04
@@ -1,6 +1,7 @@
1
1
  require "cardistry/version"
2
+ require "cardistry/card"
3
+ require "cardistry/deck"
2
4
 
3
5
  module Cardistry
4
6
  class Error < StandardError; end
5
- # Your code goes here...
6
7
  end
@@ -1,18 +1,15 @@
1
1
  module Cardistry
2
2
  class Card
3
- attr_reader :kind, :suit, :number, :name
3
+ attr_reader :kind, :suit, :rank, :name
4
4
 
5
5
  @@suits = []
6
6
  @@kinds = []
7
7
 
8
- def initialize kind, suit, number, name = nil
9
- @name = name || "#{number} of #{suit.capitalize}"
8
+ def initialize rank, suit = nil, kind = :pip, name = nil
9
+ @rank = rank
10
10
  @suit = suit
11
11
  @kind = kind
12
- @number = number
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
- class << self
30
- def register_suit suit
31
- @@suits << suit unless @@suits.include? suit
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
@@ -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
@@ -1,3 +1,3 @@
1
1
  module Cardistry
2
- VERSION = "0.1.0"
2
+ VERSION = "0.2.0"
3
3
  end
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.1.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-02 00:00:00.000000000 Z
11
+ date: 2021-01-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler