super_struct 0.0.2 → 0.0.3

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: 9a4ceab883ee25bcae184aff63d37e902e5c7d91
4
- data.tar.gz: a272258f3e3d6afb4eb5bf490bd3b1bb13d490eb
3
+ metadata.gz: 858dfb69885a2c237749fccd4b4baea129406d45
4
+ data.tar.gz: 18b2e17b26d666a68be9474cf6d3d271f264034d
5
5
  SHA512:
6
- metadata.gz: ce9a1c3773fef0b3c47e009edd46cd7022f622e5377e1a8f506bb3324f75ef547fe2b99cf8e4b320220a8ff06e03516140c595355b69a018a84f7732f1702795
7
- data.tar.gz: 5dfc2e4f7dcf2ea216cde83dd90d5f0f59c3ebe95ca728c9ef33f84f33bc93faa75263d7e32e497a4a625e53c77d25e7545d8ce78f2e7bac218762c5db9469b6
6
+ metadata.gz: feaf73a92d3873d7ceedd720ae5fb1ae5dfc7d4a1e4ca23a2478c51e056c00d0835e31b6465bb7d26cda91027fe69ee6fffdd42821aeef4ca102208f52de6821
7
+ data.tar.gz: cfdf802e48de761ecba5854359c5cebb9b84e7aad052697d0bc58ce933a1484b2af875773a0dfcd2f70555545c211b1a78e6906a9a5266b7b254162095fde262
data/lib/super_struct.rb CHANGED
@@ -20,6 +20,15 @@ module SuperStruct
20
20
  attributes
21
21
  end
22
22
  end
23
+
24
+ def deep_convert!
25
+ members.each do |member|
26
+ if self[member].respond_to?(:has_key?)
27
+ self[member] = ::SuperStruct.from_hash(self[member])
28
+ self[member].deep_convert!
29
+ end
30
+ end
31
+ end
23
32
  end
24
33
 
25
34
  def self.new(array_or_hash, &block)
@@ -1,3 +1,3 @@
1
1
  module SuperStruct
2
- VERSION = "0.0.2"
2
+ VERSION = "0.0.3"
3
3
  end
@@ -48,15 +48,25 @@ describe SuperStruct do
48
48
  end
49
49
  end
50
50
 
51
- describe '#members' do
52
- it 'is the keys given to the constructor, sorted' do
53
- expect(subject.members).to eq input.keys.sort
54
- end
55
- end
56
-
57
51
  describe '#attributes' do
58
52
  it 'is a hash of the attributes and their values' do
59
53
  expect(subject.attributes).to eq constructor_input
60
54
  end
61
55
  end
56
+
57
+ describe '#deep_convert!' do
58
+ let(:input) { { foo: { fiz: :bang } } }
59
+ subject { SuperStruct.from_hash(input) }
60
+
61
+ it 'converts all hashes within itself to SuperStructs' do
62
+ expect {
63
+ subject.deep_convert!
64
+ }.to change {
65
+ subject.foo
66
+ }.from(Hash).to(Struct)
67
+ #expect(subject.foo).to be_a Hash
68
+ #subject.deep_convert!
69
+ #expect(subject.foo).to be_a Struct
70
+ end
71
+ end
62
72
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: super_struct
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Bram Swenson