Class: ObjectDeepDiff::HashDeepDiff
- Inherits:
-
Object
- Object
- ObjectDeepDiff::HashDeepDiff
- Defined in:
- lib/object_deep_diff/hash_deep_diff.rb
Instance Method Summary collapse
- #call ⇒ Object
- #comparison(left_val, right_val) ⇒ Object
-
#initialize(left_hash, right_hash) ⇒ HashDeepDiff
constructor
A new instance of HashDeepDiff.
Constructor Details
#initialize(left_hash, right_hash) ⇒ HashDeepDiff
Returns a new instance of HashDeepDiff.
4 5 6 7 |
# File 'lib/object_deep_diff/hash_deep_diff.rb', line 4 def initialize(left_hash, right_hash) @left_hash = left_hash @right_hash = right_hash end |
Instance Method Details
#call ⇒ Object
9 10 11 12 13 14 |
# File 'lib/object_deep_diff/hash_deep_diff.rb', line 9 def call (@left_hash.keys + @right_hash.keys).uniq.each_with_object({}) do |key, hash| comp_result = comparison(@left_hash[key], @right_hash[key]) hash[key] = comp_result if comp_result && !comp_result.empty? end end |
#comparison(left_val, right_val) ⇒ Object
16 17 18 19 20 21 22 23 24 25 26 |
# File 'lib/object_deep_diff/hash_deep_diff.rb', line 16 def comparison(left_val, right_val) case true when left_val.is_a?(Hash) && right_val.is_a?(Hash) self.class.new(left_val, right_val).call when left_val.is_a?(Array) && right_val.is_a?(Array) res = [left_val - right_val, right_val - left_val] res.all?(&:empty?) ? nil : res when left_val != right_val [left_val, right_val] end end |