mumukit-core 1.8.0 → 1.9.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/mumukit/core/configurable.rb +1 -1
- data/lib/mumukit/core/hash.rb +33 -0
- data/lib/mumukit/core/rspec.rb +1 -1
- data/lib/mumukit/core/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 624663db1c388c4edce0d607f1932c049004246c6a90e1ec5719beeef6aacdee
|
4
|
+
data.tar.gz: 061f70162e4c1fd9418cc2084cb4679123b33bb6616be1e058812f6983721ea2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 10e9553c6876db756916559cfd9113a222e026eb0b21b9f2ee45333536032e269736ad21c0013f902184e49da576a6e1366cf13431eb341433c7034b730715c1
|
7
|
+
data.tar.gz: 38f22a0c8a1062674e14111491e93af03ab0b09934b7227fe39dc1c471d41d3be84dfd46254452f1078f403b483ae52294edc03de93902f21eadfc1685c81cf6
|
data/lib/mumukit/core/hash.rb
CHANGED
@@ -25,4 +25,37 @@ class Hash
|
|
25
25
|
s2 = Set.new(other)
|
26
26
|
{ deletions: (s1 - s2).to_h, additions: (s2 - s1).to_h }
|
27
27
|
end
|
28
|
+
|
29
|
+
def deep_diff(other)
|
30
|
+
diff = diff(other)
|
31
|
+
deep_diff = diff.dup
|
32
|
+
deep_deletions = deep_diff[:deletions]
|
33
|
+
deep_additions = deep_diff[:additions]
|
34
|
+
|
35
|
+
diff[:deletions].each do |k, v|
|
36
|
+
added_v = diff[:additions][k]
|
37
|
+
next if !diff[:additions].include?(k) || v.class != added_v.class
|
38
|
+
if Array === v
|
39
|
+
values = v.zip(added_v)
|
40
|
+
deep_deletions[k] = []
|
41
|
+
deep_additions[k] = []
|
42
|
+
values.select { |v1, v2| v1 != v2 }.each do |v1, v2|
|
43
|
+
if Hash === v1 && Hash === v2
|
44
|
+
sub_diff = v1.deep_diff(v2)
|
45
|
+
deep_deletions[k] << sub_diff[:deletions]
|
46
|
+
deep_additions[k] << sub_diff[:additions]
|
47
|
+
else
|
48
|
+
deep_deletions[k] << v1
|
49
|
+
deep_additions[k] << v2
|
50
|
+
end
|
51
|
+
end
|
52
|
+
elsif Hash === v
|
53
|
+
sub_diff = v.deep_diff(added_v)
|
54
|
+
deep_deletions[k] = sub_diff[:deletions]
|
55
|
+
deep_additions[k] = sub_diff[:additions]
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
deep_diff
|
60
|
+
end
|
28
61
|
end
|
data/lib/mumukit/core/rspec.rb
CHANGED
@@ -16,7 +16,7 @@
|
|
16
16
|
message = proc do |actual|
|
17
17
|
expected_hash = as_matcher_json(expected, options)
|
18
18
|
actual_hash = as_matcher_json(actual, options)
|
19
|
-
diff = expected_hash.
|
19
|
+
diff = expected_hash.deep_diff(actual_hash)
|
20
20
|
<<-EOS
|
21
21
|
expected: #{expected_hash} (#{expected.class})
|
22
22
|
got: #{actual_hash} (#{actual.class})
|
data/lib/mumukit/core/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mumukit-core
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.9.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Franco Leonardo Bulgarelli
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-11-
|
11
|
+
date: 2018-11-15 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|