super_struct 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
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