symbolmatrix 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.
data/.travis.yml
CHANGED
@@ -85,6 +85,17 @@ class SymbolMatrix < Hash
|
|
85
85
|
return result
|
86
86
|
end
|
87
87
|
|
88
|
+
# Merges recursively the passed SymbolMatrix into self
|
89
|
+
def recursive_merge! symbolmatrix
|
90
|
+
symbolmatrix.each do |key, value|
|
91
|
+
if self.has_key? key
|
92
|
+
self[key].recursive_merge! value
|
93
|
+
else
|
94
|
+
self[key] = value
|
95
|
+
end
|
96
|
+
end
|
97
|
+
end
|
98
|
+
|
88
99
|
class KeyNotDefinedException < RuntimeError; end
|
89
100
|
class InvalidKeyException < RuntimeError; end
|
90
101
|
end
|
data/lib/symbolmatrix/version.rb
CHANGED
@@ -170,6 +170,57 @@ describe SymbolMatrix do
|
|
170
170
|
end
|
171
171
|
end
|
172
172
|
|
173
|
+
describe '#recursive_merge!' do
|
174
|
+
it 'should merge a symbolmatrix into this' do
|
175
|
+
sm = SymbolMatrix.new a: "hola"
|
176
|
+
sm.recursive_merge! SymbolMatrix.new b: "chau"
|
177
|
+
sm.a.should == "hola"
|
178
|
+
sm.b.should == "chau"
|
179
|
+
end
|
180
|
+
|
181
|
+
it 'should merge two symbolmatrices (new values)' do
|
182
|
+
sm = SymbolMatrix.new a: "hey"
|
183
|
+
sm.recursive_merge! SymbolMatrix.new b: "bye"
|
184
|
+
sm.a.should == "hey"
|
185
|
+
sm.b.should == "bye"
|
186
|
+
end
|
187
|
+
|
188
|
+
it 'should merge two symbolmatrices (new keys)' do
|
189
|
+
sm = SymbolMatrix.new y: "allo"
|
190
|
+
sm.recursive_merge! SymbolMatrix.new z: "ciao"
|
191
|
+
sm.y.should == "allo"
|
192
|
+
sm.z.should == "ciao"
|
193
|
+
end
|
194
|
+
|
195
|
+
it 'should recursively merge this with that (simple)' do
|
196
|
+
sm = SymbolMatrix.new another: { b: "aa" }
|
197
|
+
sm.recursive_merge! SymbolMatrix.new another: { c: "ee" }
|
198
|
+
sm.another.b.should == "aa"
|
199
|
+
sm.another.c.should == "ee"
|
200
|
+
end
|
201
|
+
|
202
|
+
it 'should recursively merge this with that (simple)' do
|
203
|
+
sm = SymbolMatrix.new distinct: { b: "rr" }
|
204
|
+
sm.recursive_merge! SymbolMatrix.new distinct: { c: "gg" }
|
205
|
+
sm.distinct.b.should == "rr"
|
206
|
+
sm.distinct.c.should == "gg"
|
207
|
+
end
|
208
|
+
|
209
|
+
it 'should recursively merge this with that v2 (simple)' do
|
210
|
+
sm = SymbolMatrix.new a: { z: "ee" }
|
211
|
+
sm.recursive_merge! SymbolMatrix.new a: { g: "oo" }
|
212
|
+
sm.a.z.should == "ee"
|
213
|
+
sm.a.g.should == "oo"
|
214
|
+
end
|
215
|
+
|
216
|
+
it 'should recursively merge this with the argument hash' do
|
217
|
+
sm = SymbolMatrix.new a: { b: { c: "hola" } }
|
218
|
+
sm.recursive_merge! a: { b: { d: "aaa" } }
|
219
|
+
sm.a.b.c.should == "hola"
|
220
|
+
sm.a.b.d.should == "aaa"
|
221
|
+
end
|
222
|
+
end
|
223
|
+
|
173
224
|
it 'should be a method that calls SymbolMatrix.new with its arguments' do
|
174
225
|
argument = stub 'argument'
|
175
226
|
SymbolMatrix.should_receive(:new).with argument
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: symbolmatrix
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.1.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-12-
|
12
|
+
date: 2012-12-17 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: discoverer
|