easy_diff 0.0.3 → 0.0.4
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/README.rdoc +16 -16
- data/VERSION +1 -1
- data/lib/easy_diff.rb +1 -1
- data/lib/easy_diff/core.rb +2 -2
- data/lib/easy_diff/hash_ext.rb +4 -4
- data/lib/easy_diff/safe_dup.rb +1 -1
- data/spec/easy_diff_spec.rb +15 -7
- data/spec/spec_helper.rb +1 -1
- metadata +3 -3
data/README.rdoc
CHANGED
@@ -7,7 +7,7 @@ is included with diff and merge to more easily allow versioning of arbitrary dat
|
|
7
7
|
== Install
|
8
8
|
|
9
9
|
gem install easy_diff
|
10
|
-
|
10
|
+
|
11
11
|
== Examples
|
12
12
|
|
13
13
|
=== Hash#easy_diff
|
@@ -23,7 +23,7 @@ The first contains what has to be removed from self to create the second hash. T
|
|
23
23
|
:some_bool => false,
|
24
24
|
:extra_removed => "bye"
|
25
25
|
}
|
26
|
-
|
26
|
+
|
27
27
|
modified = {
|
28
28
|
:tags => ['b', 'c', 'd'],
|
29
29
|
:pos => {:x => '3', :y => '2'},
|
@@ -32,9 +32,9 @@ The first contains what has to be removed from self to create the second hash. T
|
|
32
32
|
:some_bool => true,
|
33
33
|
:extra_added => "hi"
|
34
34
|
}
|
35
|
-
|
35
|
+
|
36
36
|
removed, added = original.easy_diff modified
|
37
|
-
|
37
|
+
|
38
38
|
# The removed and added hashes should contain the following:
|
39
39
|
# removed = {
|
40
40
|
# :tags => ['a'],
|
@@ -43,7 +43,7 @@ The first contains what has to be removed from self to create the second hash. T
|
|
43
43
|
# :some_bool => false,
|
44
44
|
# :extra_removed => "bye"
|
45
45
|
# }
|
46
|
-
#
|
46
|
+
#
|
47
47
|
# added = {
|
48
48
|
# :tags => ['d'],
|
49
49
|
# :pos => {:x => '3'},
|
@@ -51,7 +51,7 @@ The first contains what has to be removed from self to create the second hash. T
|
|
51
51
|
# :some_bool => true,
|
52
52
|
# :extra_added => "hi"
|
53
53
|
# }
|
54
|
-
|
54
|
+
|
55
55
|
=== Hash#easy_merge
|
56
56
|
|
57
57
|
Takes a hash and recursively merges it with self. Arrays are merged by the union operation and then sorted.
|
@@ -65,7 +65,7 @@ Using Hash#easy_merge! will modify self instead of returning a new hash.
|
|
65
65
|
:some_bool => false,
|
66
66
|
:extra_removed => "bye"
|
67
67
|
}
|
68
|
-
|
68
|
+
|
69
69
|
extra = {
|
70
70
|
:tags => ['d'],
|
71
71
|
:pos => {:x => '3'},
|
@@ -73,7 +73,7 @@ Using Hash#easy_merge! will modify self instead of returning a new hash.
|
|
73
73
|
:some_bool => true,
|
74
74
|
:extra_added => "hi"
|
75
75
|
}
|
76
|
-
|
76
|
+
|
77
77
|
merged = original.easy_merge extra
|
78
78
|
|
79
79
|
# The merged hash should look like this:
|
@@ -86,7 +86,7 @@ Using Hash#easy_merge! will modify self instead of returning a new hash.
|
|
86
86
|
# :extra_removed => "bye",
|
87
87
|
# :extra_added => "hi"
|
88
88
|
# }
|
89
|
-
|
89
|
+
|
90
90
|
=== Hash#easy_unmerge
|
91
91
|
|
92
92
|
Takes a hash and recursively unmerges it with self. By unmerging, I mean it will remove all matching values from
|
@@ -101,7 +101,7 @@ Using Hash#easy_unmerge! will modify self instead of returning a new hash.
|
|
101
101
|
:some_bool => true,
|
102
102
|
:extra_added => "hi"
|
103
103
|
}
|
104
|
-
|
104
|
+
|
105
105
|
extra = {
|
106
106
|
:tags => ['d'],
|
107
107
|
:pos => {:x => '3'},
|
@@ -109,7 +109,7 @@ Using Hash#easy_unmerge! will modify self instead of returning a new hash.
|
|
109
109
|
:some_bool => true,
|
110
110
|
:extra_added => "hi"
|
111
111
|
}
|
112
|
-
|
112
|
+
|
113
113
|
unmerged = original.easy_unmerge extra
|
114
114
|
|
115
115
|
# The unmerged hash should look like this:
|
@@ -118,7 +118,7 @@ Using Hash#easy_unmerge! will modify self instead of returning a new hash.
|
|
118
118
|
# :pos => {:y => '2'},
|
119
119
|
# :some_str => "bla"
|
120
120
|
# }
|
121
|
-
|
121
|
+
|
122
122
|
=== Hash#easy_clone
|
123
123
|
|
124
124
|
Performs a deep clone on a hash
|
@@ -127,12 +127,12 @@ Performs a deep clone on a hash
|
|
127
127
|
:tags => ['b', 'c', 'd'],
|
128
128
|
:pos => {:x => '3', :y => '2'}
|
129
129
|
}
|
130
|
-
|
130
|
+
|
131
131
|
new = original.easy_clone
|
132
|
-
|
132
|
+
|
133
133
|
new[:tags] << 'e'
|
134
134
|
new[:pos][:y] = '1'
|
135
|
-
|
135
|
+
|
136
136
|
# The original hash will still look like this:
|
137
137
|
# original = {
|
138
138
|
# :tags => ['b', 'c', 'd'],
|
@@ -140,7 +140,7 @@ Performs a deep clone on a hash
|
|
140
140
|
# }
|
141
141
|
|
142
142
|
== Contributing to easy_diff
|
143
|
-
|
143
|
+
|
144
144
|
* Check out the latest master to make sure the feature hasn't been implemented or the bug hasn't been fixed yet
|
145
145
|
* Check out the issue tracker to make sure someone already hasn't requested it and/or contributed it
|
146
146
|
* Fork the project
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.0.
|
1
|
+
0.0.4
|
data/lib/easy_diff.rb
CHANGED
data/lib/easy_diff/core.rb
CHANGED
data/lib/easy_diff/hash_ext.rb
CHANGED
@@ -11,17 +11,17 @@ module EasyDiff
|
|
11
11
|
def easy_unmerge!(other)
|
12
12
|
EasyDiff::Core.easy_unmerge! self, other
|
13
13
|
end
|
14
|
-
|
14
|
+
|
15
15
|
def easy_merge(other)
|
16
16
|
self.easy_clone.easy_merge!(other)
|
17
17
|
end
|
18
|
-
|
18
|
+
|
19
19
|
def easy_unmerge(other)
|
20
20
|
self.easy_clone.easy_unmerge!(other)
|
21
21
|
end
|
22
|
-
|
22
|
+
|
23
23
|
def easy_clone
|
24
24
|
EasyDiff::Core.easy_clone self
|
25
25
|
end
|
26
26
|
end
|
27
|
-
end
|
27
|
+
end
|
data/lib/easy_diff/safe_dup.rb
CHANGED
data/spec/easy_diff_spec.rb
CHANGED
@@ -10,7 +10,7 @@ describe EasyDiff do
|
|
10
10
|
:some_bool => false,
|
11
11
|
:extra_removed => "bye"
|
12
12
|
}
|
13
|
-
|
13
|
+
|
14
14
|
@modified = {
|
15
15
|
:tags => ['b', 'c', 'd'],
|
16
16
|
:pos => {:x => '3', :y => '2'},
|
@@ -19,7 +19,7 @@ describe EasyDiff do
|
|
19
19
|
:some_bool => true,
|
20
20
|
:extra_added => "hi"
|
21
21
|
}
|
22
|
-
|
22
|
+
|
23
23
|
@removed = {
|
24
24
|
:tags => ['a'],
|
25
25
|
:pos => {:x => '1'},
|
@@ -27,7 +27,7 @@ describe EasyDiff do
|
|
27
27
|
:some_bool => false,
|
28
28
|
:extra_removed => "bye"
|
29
29
|
}
|
30
|
-
|
30
|
+
|
31
31
|
@added = {
|
32
32
|
:tags => ['d'],
|
33
33
|
:pos => {:x => '3'},
|
@@ -41,7 +41,7 @@ describe EasyDiff do
|
|
41
41
|
removed.should == @removed
|
42
42
|
added.should == @added
|
43
43
|
end
|
44
|
-
|
44
|
+
|
45
45
|
it "should compute easy_unmerge" do
|
46
46
|
unmerged = @modified.easy_unmerge @added
|
47
47
|
unmerged.should == {
|
@@ -50,7 +50,7 @@ describe EasyDiff do
|
|
50
50
|
:some_str => "bla"
|
51
51
|
}
|
52
52
|
end
|
53
|
-
|
53
|
+
|
54
54
|
it "should compute easy_merge" do
|
55
55
|
merged = @original.easy_merge @added
|
56
56
|
merged.should == {
|
@@ -71,14 +71,14 @@ describe EasyDiff do
|
|
71
71
|
:extra_removed => "bye"
|
72
72
|
}
|
73
73
|
end
|
74
|
-
|
74
|
+
|
75
75
|
it "should stay the same" do
|
76
76
|
removed, added = @original.easy_diff @modified
|
77
77
|
unmerged = @modified.easy_unmerge added
|
78
78
|
original = unmerged.easy_merge removed
|
79
79
|
original.should == @original
|
80
80
|
end
|
81
|
-
|
81
|
+
|
82
82
|
it "should do a deep clone" do
|
83
83
|
cloned = @original.easy_clone
|
84
84
|
cloned.should == @original
|
@@ -123,4 +123,12 @@ describe EasyDiff do
|
|
123
123
|
removed.should == @removed
|
124
124
|
added.should == @added
|
125
125
|
end
|
126
|
+
|
127
|
+
it "should only check empty? on Hashes and Arrays" do
|
128
|
+
original = {:possibly_empty_string => ""}
|
129
|
+
modified = {:possibly_empty_string => "not empty"}
|
130
|
+
removed, added = original.easy_diff modified
|
131
|
+
removed.should == {:possibly_empty_string => ""}
|
132
|
+
added.should == {:possibly_empty_string => "not empty"}
|
133
|
+
end
|
126
134
|
end
|
data/spec/spec_helper.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: easy_diff
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.4
|
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: 2014-
|
12
|
+
date: 2014-12-19 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rspec
|
@@ -133,7 +133,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
133
133
|
version: '0'
|
134
134
|
segments:
|
135
135
|
- 0
|
136
|
-
hash: -
|
136
|
+
hash: -1698235666282817780
|
137
137
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
138
138
|
none: false
|
139
139
|
requirements:
|