hash_generator 1.0.0 → 1.1.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/hash_generator.rb +19 -1
- data/spec/hash_generator_spec.rb +35 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6d7ee8c683b8a5704fed550825256684cd58a432
|
4
|
+
data.tar.gz: 0c0340d70d34a2194744986871874ff326dc1a08
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 54c333ceec77b9251c8ee273fb36247202eff37a5e8b758381c3f84c9e193a3f1db899e2f43b8a3aaa153861bd58d65c2b11f1c21318cc0506824008bd3b108d
|
7
|
+
data.tar.gz: 9cd06b2c637cb0f2281f01b32e3f6196ea906c3b42beba15b2cd5e0b39aa94a01ca3579d446d3370e53ca324bda2ca628c8349bdd40d44202a03aef83bce8596
|
data/lib/hash_generator.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
class HashGenerator
|
2
|
-
VERSION = '1.
|
2
|
+
VERSION = '1.1.0'
|
3
3
|
|
4
4
|
def initialize
|
5
5
|
@value = @scope = {}
|
@@ -18,6 +18,12 @@ class HashGenerator
|
|
18
18
|
begin_scope({})
|
19
19
|
end
|
20
20
|
|
21
|
+
def push_object
|
22
|
+
new_object
|
23
|
+
yield
|
24
|
+
push_scope
|
25
|
+
end
|
26
|
+
|
21
27
|
def push_scope
|
22
28
|
value = @scope
|
23
29
|
end_scope
|
@@ -32,6 +38,18 @@ class HashGenerator
|
|
32
38
|
@scope.store(key, value)
|
33
39
|
end
|
34
40
|
|
41
|
+
def store_array(key)
|
42
|
+
new_array
|
43
|
+
yield
|
44
|
+
store_scope(key)
|
45
|
+
end
|
46
|
+
|
47
|
+
def store_object(key)
|
48
|
+
new_object
|
49
|
+
yield
|
50
|
+
store_scope(key)
|
51
|
+
end
|
52
|
+
|
35
53
|
def store_scope(key)
|
36
54
|
value = @scope
|
37
55
|
end_scope
|
data/spec/hash_generator_spec.rb
CHANGED
@@ -5,8 +5,20 @@ RSpec.describe HashGenerator do
|
|
5
5
|
|
6
6
|
subject { generator.to_h }
|
7
7
|
|
8
|
+
describe '#push_object' do
|
9
|
+
it 'begins a new object scope, yields, then pushes the object into the outer scope' do
|
10
|
+
generator.new_array
|
11
|
+
generator.push_object do
|
12
|
+
generator.store(:key, 1)
|
13
|
+
end
|
14
|
+
generator.store_scope(:array)
|
15
|
+
|
16
|
+
should eq(:array => [{:key => 1}])
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
8
20
|
describe '#push_scope' do
|
9
|
-
it 'pushes
|
21
|
+
it 'pushes the current scope into the outer scope' do
|
10
22
|
generator.new_array
|
11
23
|
generator.new_object
|
12
24
|
generator.store(:key, 1)
|
@@ -38,6 +50,28 @@ RSpec.describe HashGenerator do
|
|
38
50
|
end
|
39
51
|
end
|
40
52
|
|
53
|
+
describe '#store_array' do
|
54
|
+
it 'begins a new array scope, yields, then stores the array at the given key' do
|
55
|
+
generator.store_array(:objects) do
|
56
|
+
generator.new_object
|
57
|
+
generator.store(:key, 1)
|
58
|
+
generator.push_scope
|
59
|
+
end
|
60
|
+
|
61
|
+
should eq(:objects => [{:key => 1}])
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
describe '#store_object' do
|
66
|
+
it 'begins a new object scope, yields, then stores the object at the given key' do
|
67
|
+
generator.store_object(:object) do
|
68
|
+
generator.store(:key, 1)
|
69
|
+
end
|
70
|
+
|
71
|
+
should eq(:object => {:key => 1})
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
41
75
|
describe '#store_scope' do
|
42
76
|
it 'stores the current scope in the outer scope at the given key' do
|
43
77
|
generator.new_object
|