hashdiff 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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: ad62d6aa698e908203a17f40c7660c49d8707cd0
4
- data.tar.gz: 34b23305366867798029b696354f0197571d3106
2
+ SHA256:
3
+ metadata.gz: 56a70b8fb995b7d778a1840400c42303c34648a9205055b11157a5b69208afa1
4
+ data.tar.gz: 410e1bea7bc27e43f4580c42ff17054e1ce57dc3c3f486fe570269e366c7ecb4
5
5
  SHA512:
6
- metadata.gz: 38621cceb7b659ec8a338edf712de931d06ea59aa18e8d9991262ed4f0b54bf1890c395d7a4391d325e82b05cdb7aa735cca2ef3a9aac1a991ec1f74a283e6b4
7
- data.tar.gz: 909dd874ea50b69bd74183e7df1cb0fd1c36e68b46810b0fbca32bc62111c5b2ff3899e5a7f72001c00df9b538195a7ecb57942d9c9fd640eb9bc639fd8358af
6
+ metadata.gz: 30e90e14ee676c7b035a20d01f5f8cf5dfcdae7319f652bd828c6fcc8d66a4e6b0cb8fd046937ce09a38aac8e7c3eba92dfc60b8ea2e09674eb9c8ea35256e9a
7
+ data.tar.gz: 146cc4564d22ee6c6ef47b09032e4e171cd2682ecd941e798bd729bea7d3e8a10974356e39500886bd6ec4d0d3d6c109d2e6556bbe47abc7b79a9c9d45db66e4
data/.rubocop.yml CHANGED
@@ -1,4 +1,6 @@
1
1
  require: rubocop-rspec
2
+ AllCops:
3
+ TargetRubyVersion: 2.0 # always the lowest version we support
2
4
  Metrics/PerceivedComplexity:
3
5
  Enabled: false
4
6
  Metrics/CyclomaticComplexity:
@@ -15,14 +17,24 @@ Metrics/BlockLength:
15
17
  Enabled: false
16
18
  Metrics/ModuleLength:
17
19
  Enabled: false
20
+ Style/CaseLikeIf:
21
+ Enabled: false
18
22
  Style/Documentation:
19
23
  Enabled: false
20
24
  Style/FrozenStringLiteralComment:
21
25
  Enabled: true
22
26
  EnforcedStyle: always
27
+ Style/OptionalBooleanParameter:
28
+ Enabled: false
23
29
  Style/NumericPredicate:
24
30
  Enabled: false
25
31
  Style/RedundantFreeze:
26
32
  Enabled: false
33
+ Style/RedundantReturn:
34
+ Enabled: false
27
35
  RSpec/ExampleLength:
28
36
  Enabled: false
37
+ RSpec/DescribeClass:
38
+ Enabled: false
39
+ RSpec/FilePath:
40
+ Enabled: false
data/Gemfile CHANGED
@@ -4,5 +4,5 @@ source 'http://rubygems.org'
4
4
  gemspec
5
5
 
6
6
  group :test do
7
- gem 'rake', '< 11'
7
+ gem 'rake'
8
8
  end
data/README.md CHANGED
@@ -32,7 +32,7 @@ Hashdiff answers the question above using an opinionated approach:
32
32
 
33
33
  To use the gem, add the following to your Gemfile:
34
34
 
35
- ```ruby
35
+ ```Ruby
36
36
  gem 'hashdiff'
37
37
  ```
38
38
 
@@ -94,9 +94,8 @@ Hashdiff.unpatch!(b, diff).should == a
94
94
 
95
95
  ### Options
96
96
 
97
- There are eight options available: `:delimiter`, `:similarity`,
98
- `:strict`, `:numeric_tolerance`, `:strip`, `:case_insensitive`, `:array_path`
99
- and `:use_lcs`
97
+ The following options are available: `:delimiter`, `:similarity`, `:strict`, `:ignore_keys`,
98
+ `:indifferent`, `:numeric_tolerance`, `:strip`, `:case_insensitive`, `:array_path` and `:use_lcs`
100
99
 
101
100
  #### `:delimiter`
102
101
 
@@ -106,7 +105,7 @@ You can specify `:delimiter` to be something other than the default dot. For exa
106
105
  a = {a:{x:2, y:3, z:4}, b:{x:3, z:45}}
107
106
  b = {a:{y:3}, b:{y:3, z:30}}
108
107
 
109
- diff = Hashdiff.diff(a, b, :delimiter => '\t')
108
+ diff = Hashdiff.diff(a, b, delimiter: '\t')
110
109
  diff.should == [['-', 'a\tx', 2], ['-', 'a\tz', 4], ['-', 'b\tx', 3], ['~', 'b\tz', 45, 30], ['+', 'b\ty', 3]]
111
110
  ```
112
111
 
@@ -118,6 +117,30 @@ In cases where you have similar hash objects in arrays, you can pass a custom va
118
117
 
119
118
  The `:strict` option, which defaults to `true`, specifies whether numeric types are compared on type as well as value. By default, an Integer will never be equal to a Float (e.g. 4 != 4.0). Setting `:strict` to false makes the comparison looser (e.g. 4 == 4.0).
120
119
 
120
+ #### `:ignore_keys`
121
+
122
+ The `:ignore_keys` option allows you to specify one or more keys to ignore, which defaults to `[]` (none). Ignored keys are ignored at all levels. For example:
123
+
124
+ ```ruby
125
+ a = { a: 1, b: { d: 2, a: 3 }, c: 4 }
126
+ b = { a: 2, b: { d: 2, a: 7 }, c: 5 }
127
+ diff = Hashdiff.diff(a, b, ignore_keys: :a)
128
+ diff.should == [['~', 'c', 4, 5]]
129
+ ```
130
+ If you wish instead to ignore keys at a particlar level you should
131
+ use a [custom comparison method](https://github.com/liufengyun/hashdiff#specifying-a-custom-comparison-method) instead. For example:
132
+
133
+ ```ruby
134
+ a = { a: 1, b: { d: 2, a: 3 }, c: 4 }
135
+ b = { a: 2, b: { d: 2, a: 7 }, c: 5 }
136
+ diff = Hashdiff.diff(a, b) { |path, _e, _a| true if path == 'b.a' } # note '.' is the default delimiter
137
+ diff.should == [['~', 'a', 1, 2], ['~', 'c', 4, 5]]
138
+ ```
139
+
140
+ #### `:indifferent`
141
+
142
+ The `:indifferent` option, which defaults to `false`, specifies whether to treat hash keys indifferently. Setting `:indifferent` to true has the effect of ignoring differences between symbol keys (ie. {a: 1} ~= {'a' => 1})
143
+
121
144
  #### `:numeric_tolerance`
122
145
 
123
146
  The :numeric_tolerance option allows for a small numeric tolerance.
@@ -126,7 +149,7 @@ The :numeric_tolerance option allows for a small numeric tolerance.
126
149
  a = {x:5, y:3.75, z:7}
127
150
  b = {x:6, y:3.76, z:7}
128
151
 
129
- diff = Hashdiff.diff(a, b, :numeric_tolerance => 0.1)
152
+ diff = Hashdiff.diff(a, b, numeric_tolerance: 0.1)
130
153
  diff.should == [["~", "x", 5, 6]]
131
154
  ```
132
155
 
@@ -138,7 +161,7 @@ The :strip option strips all strings before comparing.
138
161
  a = {x:5, s:'foo '}
139
162
  b = {x:6, s:'foo'}
140
163
 
141
- diff = Hashdiff.diff(a, b, :comparison => { :numeric_tolerance => 0.1, :strip => true })
164
+ diff = Hashdiff.diff(a, b, numeric_tolerance: 0.1, strip: true)
142
165
  diff.should == [["~", "x", 5, 6]]
143
166
  ```
144
167
 
@@ -150,7 +173,7 @@ The :case_insensitive option makes string comparisons ignore case.
150
173
  a = {x:5, s:'FooBar'}
151
174
  b = {x:6, s:'foobar'}
152
175
 
153
- diff = Hashdiff.diff(a, b, :comparison => { :numeric_tolerance => 0.1, :case_insensitive => true })
176
+ diff = Hashdiff.diff(a, b, numeric_tolerance: 0.1, case_insensitive: true)
154
177
  diff.should == [["~", "x", 5, 6]]
155
178
  ```
156
179
 
@@ -164,7 +187,7 @@ is useful for `patch!` when used on hashes without string keys.
164
187
  a = {x:5}
165
188
  b = {'x'=>6}
166
189
 
167
- diff = Hashdiff.diff(a, b, :array_path => true)
190
+ diff = Hashdiff.diff(a, b, array_path: true)
168
191
  diff.should == [['-', [:x], 5], ['+', ['x'], 6]]
169
192
  ```
170
193
 
@@ -173,7 +196,7 @@ For cases where there are arrays in paths their index will be added to the path.
173
196
  a = {x:[0,1]}
174
197
  b = {x:[0,2]}
175
198
 
176
- diff = Hashdiff.diff(a, b, :array_path => true)
199
+ diff = Hashdiff.diff(a, b, array_path: true)
177
200
  diff.should == [["-", [:x, 1], 1], ["+", [:x, 1], 2]]
178
201
  ```
179
202
 
@@ -183,7 +206,7 @@ This shouldn't cause problems if you are comparing an array with a hash:
183
206
  a = {x:{0=>1}}
184
207
  b = {x:[1]}
185
208
 
186
- diff = Hashdiff.diff(a, b, :array_path => true)
209
+ diff = Hashdiff.diff(a, b, array_path: true)
187
210
  diff.should == [["~", [:x], {0=>1}, [1]]]
188
211
  ```
189
212
 
@@ -205,7 +228,7 @@ Note, currently the :similarity option has no effect when :use_lcs is false.
205
228
  a = {x: [0, 1, 2]}
206
229
  b = {x: [0, 2, 2, 3]}
207
230
 
208
- diff = Hashdiff.diff(a, b, :use_lcs => false)
231
+ diff = Hashdiff.diff(a, b, use_lcs: false)
209
232
  diff.should == [["~", "x[1]", 1, 2], ["+", "x[3]", 3]]
210
233
  ```
211
234
 
@@ -255,11 +278,11 @@ An order difference alone between two arrays can create too many diffs to be use
255
278
  a = {a:'car', b:['boat', 'plane'] }
256
279
  b = {a:'car', b:['plane', 'boat'] }
257
280
 
258
- Hashdiff.diff(a, b) => [["+", "b[0]", "plane"], ["-", "b[2]", "plane"]]
281
+ Hashdiff.diff(a, b).should == [["+", "b[0]", "plane"], ["-", "b[2]", "plane"]]
259
282
 
260
283
  b[:b].sort!
261
284
 
262
- Hashdiff.diff(a, b) => []
285
+ Hashdiff.diff(a, b).should == []
263
286
  ```
264
287
 
265
288
  ## Maintainers
data/changelog.md CHANGED
@@ -1,5 +1,17 @@
1
1
  # Change Log
2
2
 
3
+ ## v1.1.0 2020-02-25
4
+
5
+ * Add ignore_keys option (#86 @Matzfan)
6
+ * Remove pinned version of rake < 11
7
+ * Bump rspec dep ~> 3.5
8
+ * Bump rubocop dep >= 1.52.1
9
+ * Bump rubocop-rspec dep > 1.16.0
10
+
11
+ ## v1.0.1 2020-02-25
12
+
13
+ * Add indifferent option
14
+
3
15
  ## v1.0.0 2019-06-06
4
16
 
5
17
  * Fix typo in readme (#72 @koic)
data/hashdiff.gemspec CHANGED
@@ -22,9 +22,9 @@ Gem::Specification.new do |s|
22
22
  s.homepage = 'https://github.com/liufengyun/hashdiff'
23
23
 
24
24
  s.add_development_dependency('bluecloth')
25
- s.add_development_dependency('rspec', '~> 2.0')
26
- s.add_development_dependency('rubocop')
27
- s.add_development_dependency('rubocop-rspec')
25
+ s.add_development_dependency('rspec', '~> 3.5')
26
+ s.add_development_dependency('rubocop', '>= 1.52.1') # earliest version that works with Ruby 3.3
27
+ s.add_development_dependency('rubocop-rspec', '> 1.16.0') # https://github.com/rubocop/rubocop-rspec/issues/461
28
28
  s.add_development_dependency('yard')
29
29
 
30
30
  if s.respond_to?(:metadata)
@@ -10,6 +10,15 @@ module Hashdiff
10
10
 
11
11
  obj1_keys = obj1.keys
12
12
  obj2_keys = obj2.keys
13
+ obj1_lookup = {}
14
+ obj2_lookup = {}
15
+
16
+ if opts[:indifferent]
17
+ obj1_lookup = obj1_keys.each_with_object({}) { |k, h| h[k.to_s] = k }
18
+ obj2_lookup = obj2_keys.each_with_object({}) { |k, h| h[k.to_s] = k }
19
+ obj1_keys = obj1_keys.map { |k| k.is_a?(Symbol) ? k.to_s : k }
20
+ obj2_keys = obj2_keys.map { |k| k.is_a?(Symbol) ? k.to_s : k }
21
+ end
13
22
 
14
23
  added_keys = (obj2_keys - obj1_keys).sort_by(&:to_s)
15
24
  common_keys = (obj1_keys & obj2_keys).sort_by(&:to_s)
@@ -17,8 +26,11 @@ module Hashdiff
17
26
 
18
27
  result = []
19
28
 
29
+ opts[:ignore_keys].each { |k| common_keys.delete k }
30
+
20
31
  # add deleted properties
21
32
  deleted_keys.each do |k|
33
+ k = opts[:indifferent] ? obj1_lookup[k] : k
22
34
  change_key = Hashdiff.prefix_append_key(opts[:prefix], k, opts)
23
35
  custom_result = Hashdiff.custom_compare(opts[:comparison], change_key, obj1[k], nil)
24
36
 
@@ -33,13 +45,16 @@ module Hashdiff
33
45
  common_keys.each do |k|
34
46
  prefix = Hashdiff.prefix_append_key(opts[:prefix], k, opts)
35
47
 
36
- result.concat(Hashdiff.diff(obj1[k], obj2[k], opts.merge(prefix: prefix)))
48
+ k1 = opts[:indifferent] ? obj1_lookup[k] : k
49
+ k2 = opts[:indifferent] ? obj2_lookup[k] : k
50
+ result.concat(Hashdiff.diff(obj1[k1], obj2[k2], opts.merge(prefix: prefix)))
37
51
  end
38
52
 
39
53
  # added properties
40
54
  added_keys.each do |k|
41
55
  change_key = Hashdiff.prefix_append_key(opts[:prefix], k, opts)
42
56
 
57
+ k = opts[:indifferent] ? obj2_lookup[k] : k
43
58
  custom_result = Hashdiff.custom_compare(opts[:comparison], change_key, nil, obj2[k])
44
59
 
45
60
  if custom_result
data/lib/hashdiff/diff.rb CHANGED
@@ -9,6 +9,8 @@ module Hashdiff
9
9
  # @param [Array, Hash] obj2
10
10
  # @param [Hash] options the options to use when comparing
11
11
  # * :strict (Boolean) [true] whether numeric values will be compared on type as well as value. Set to false to allow comparing Integer, Float, BigDecimal to each other
12
+ # * :ignore_keys (Symbol, String or Array) [[]] a list of keys to ignore. No comparison is made for the specified key(s)
13
+ # * :indifferent (Boolean) [false] whether to treat hash keys indifferently. Set to true to ignore differences between symbol keys (ie. {a: 1} ~= {'a' => 1})
12
14
  # * :delimiter (String) ['.'] the delimiter used when returning nested key references
13
15
  # * :numeric_tolerance (Numeric) [0] should be a positive numeric value. Value by which numeric differences must be greater than. By default, numeric values are compared exactly; with the :tolerance option, the difference between numeric values must be greater than the given value.
14
16
  # * :strip (Boolean) [false] whether or not to call #strip on strings before comparing
@@ -52,6 +54,8 @@ module Hashdiff
52
54
  # @param [Array, Hash] obj2
53
55
  # @param [Hash] options the options to use when comparing
54
56
  # * :strict (Boolean) [true] whether numeric values will be compared on type as well as value. Set to false to allow comparing Integer, Float, BigDecimal to each other
57
+ # * :ignore_keys (Symbol, String or Array) [[]] a list of keys to ignore. No comparison is made for the specified key(s)
58
+ # * :indifferent (Boolean) [false] whether to treat hash keys indifferently. Set to true to ignore differences between symbol keys (ie. {a: 1} ~= {'a' => 1})
55
59
  # * :similarity (Numeric) [0.8] should be between (0, 1]. Meaningful if there are similar hashes in arrays. See {best_diff}.
56
60
  # * :delimiter (String) ['.'] the delimiter used when returning nested key references
57
61
  # * :numeric_tolerance (Numeric) [0] should be a positive numeric value. Value by which numeric differences must be greater than. By default, numeric values are compared exactly; with the :tolerance option, the difference between numeric values must be greater than the given value.
@@ -79,6 +83,8 @@ module Hashdiff
79
83
  similarity: 0.8,
80
84
  delimiter: '.',
81
85
  strict: true,
86
+ ignore_keys: [],
87
+ indifferent: false,
82
88
  strip: false,
83
89
  numeric_tolerance: 0,
84
90
  array_path: false,
@@ -87,6 +93,8 @@ module Hashdiff
87
93
 
88
94
  opts[:prefix] = [] if opts[:array_path] && opts[:prefix] == ''
89
95
 
96
+ opts[:ignore_keys] = [*opts[:ignore_keys]] # splat covers single sym/string case
97
+
90
98
  opts[:comparison] = block if block_given?
91
99
 
92
100
  # prefer to compare with provided block
data/lib/hashdiff/util.rb CHANGED
@@ -16,7 +16,7 @@ module Hashdiff
16
16
 
17
17
  diffs = count_diff diff(obja, objb, opts)
18
18
 
19
- (1 - diffs.to_f / (count_a + count_b).to_f) >= opts[:similarity]
19
+ (1 - diffs / (count_a + count_b).to_f) >= opts[:similarity]
20
20
  end
21
21
 
22
22
  # @private
@@ -107,6 +107,7 @@ module Hashdiff
107
107
  # check if objects are comparable
108
108
  def self.comparable?(obj1, obj2, strict = true)
109
109
  return true if (obj1.is_a?(Array) || obj1.is_a?(Hash)) && obj2.is_a?(obj1.class)
110
+ return true if (obj2.is_a?(Array) || obj2.is_a?(Hash)) && obj1.is_a?(obj2.class)
110
111
  return true if !strict && obj1.is_a?(Numeric) && obj2.is_a?(Numeric)
111
112
 
112
113
  obj1.is_a?(obj2.class) && obj2.is_a?(obj1.class)
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Hashdiff
4
- VERSION = '1.0.0'.freeze
4
+ VERSION = '1.1.0'.freeze
5
5
  end
@@ -49,6 +49,26 @@ describe Hashdiff do
49
49
  diff.should == []
50
50
  end
51
51
 
52
+ context 'with the ignore_keys option' do
53
+ a = { a: 1, b: { d: 2, a: 3 }, c: 4 }
54
+ b = { a: 2, b: { d: 2, a: 7 }, c: 5 }
55
+
56
+ it 'ignores a single key' do
57
+ diff = described_class.diff(a, b, ignore_keys: :a)
58
+ diff.should == [['~', 'c', 4, 5]]
59
+ end
60
+
61
+ it 'ignores an array of keys' do
62
+ diff = described_class.diff(a, b, ignore_keys: %i[a c])
63
+ diff.should == []
64
+ end
65
+ end
66
+
67
+ it 'ignores string vs symbol differences, when indifferent is true' do
68
+ diff = described_class.diff({ 'a' => 2, :b => 2 }, { :a => 2, 'b' => 2, :c => 3 }, indifferent: true)
69
+ diff.should == [['+', 'c', 3]]
70
+ end
71
+
52
72
  it 'is able to diff changes in hash value' do
53
73
  diff = described_class.diff({ 'a' => 2, 'b' => 3, 'c' => ' hello' }, 'a' => 2, 'b' => 4, 'c' => 'hello')
54
74
  diff.should == [['~', 'b', 3, 4], ['~', 'c', ' hello', 'hello']]
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'spec_helper'
4
+
5
+ describe 'README.md' do
6
+ it 'has correct examples' do
7
+ File.read('README.md').scan(/```ruby(.*?)```/m).flatten(1).each do |block|
8
+ begin
9
+ eval block # rubocop:disable Security/Eval
10
+ rescue Exception => e # rubocop:disable Lint/RescueException
11
+ raise "README.md code block:\n#{block}\n\nhas error:\n#{e}"
12
+ end
13
+ end
14
+ end
15
+ end
@@ -68,6 +68,7 @@ describe Hashdiff do
68
68
  it 'compares different objects without tolerance' do
69
69
  expect(described_class.compare_values('hats', 'ninjas')).to be false
70
70
  end
71
+
71
72
  it 'compares other objects with tolerance' do
72
73
  expect(described_class.compare_values('hats', 'ninjas', numeric_tolerance: 0.01)).to be false
73
74
  end
@@ -92,4 +93,24 @@ describe Hashdiff do
92
93
  expect(described_class.compare_values('horse', 'Horse', case_insensitive: true)).to be true
93
94
  end
94
95
  end
96
+
97
+ describe '.comparable?' do
98
+ it 'identifies hashes as comparable' do
99
+ expect(described_class.comparable?({}, {})).to be true
100
+ end
101
+
102
+ it 'identifies a subclass of Hash to be comparable with a Hash' do
103
+ other = Class.new(Hash)
104
+ expect(described_class.comparable?(other.new, {})).to be true
105
+ end
106
+
107
+ it 'identifies a Hash to be comparable with a subclass of Hash' do
108
+ other = Class.new(Hash)
109
+ expect(described_class.comparable?({}, other.new)).to be true
110
+ end
111
+
112
+ it 'does not identify a Numeric as comparable with a Hash' do
113
+ expect(described_class.comparable?(1, {})).to be false
114
+ end
115
+ end
95
116
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hashdiff
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Liu Fengyun
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-07-15 00:00:00.000000000 Z
11
+ date: 2023-12-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bluecloth
@@ -30,42 +30,42 @@ dependencies:
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '2.0'
33
+ version: '3.5'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: '2.0'
40
+ version: '3.5'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: rubocop
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - ">="
46
46
  - !ruby/object:Gem::Version
47
- version: '0'
47
+ version: 1.52.1
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - ">="
53
53
  - !ruby/object:Gem::Version
54
- version: '0'
54
+ version: 1.52.1
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: rubocop-rspec
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - ">="
59
+ - - ">"
60
60
  - !ruby/object:Gem::Version
61
- version: '0'
61
+ version: 1.16.0
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - ">="
66
+ - - ">"
67
67
  - !ruby/object:Gem::Version
68
- version: '0'
68
+ version: 1.16.0
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: yard
71
71
  requirement: !ruby/object:Gem::Requirement
@@ -114,6 +114,7 @@ files:
114
114
  - spec/hashdiff/lcs_spec.rb
115
115
  - spec/hashdiff/linear_compare_array_spec.rb
116
116
  - spec/hashdiff/patch_spec.rb
117
+ - spec/hashdiff/readme_spec.rb
117
118
  - spec/hashdiff/util_spec.rb
118
119
  - spec/spec_helper.rb
119
120
  homepage: https://github.com/liufengyun/hashdiff
@@ -125,7 +126,7 @@ metadata:
125
126
  documentation_uri: https://www.rubydoc.info/gems/hashdiff
126
127
  homepage_uri: https://github.com/liufengyun/hashdiff
127
128
  source_code_uri: https://github.com/liufengyun/hashdiff
128
- post_install_message:
129
+ post_install_message:
129
130
  rdoc_options: []
130
131
  require_paths:
131
132
  - lib
@@ -140,9 +141,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
140
141
  - !ruby/object:Gem::Version
141
142
  version: '0'
142
143
  requirements: []
143
- rubyforge_project:
144
- rubygems_version: 2.5.2.3
145
- signing_key:
144
+ rubygems_version: 3.4.10
145
+ signing_key:
146
146
  specification_version: 4
147
147
  summary: Hashdiff is a diff lib to compute the smallest difference between two hashes.
148
148
  test_files: []