296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
|
# File 'lib/cheftacular/helper.rb', line 296
def deep_diff(compare_hash, remove_if_nil_on_original=false)
original_hash = self
(original_hash.keys | compare_hash.keys).inject({}) do |diff_hash, key|
if original_hash[key] != compare_hash[key]
if original_hash[key].respond_to?(:deep_diff) && compare_hash[key].respond_to?(:deep_diff)
diff_hash[key] = original_hash[key].deep_diff(compare_hash[key], remove_if_nil_on_original)
else
if remove_if_nil_on_original
diff_hash[key] = []
diff_hash[key] << original_hash[key] if original_hash.has_key?(key)
diff_hash[key] << compare_hash[key] if original_hash.has_key?(key)
diff_hash.delete(key) if diff_hash[key].empty?
else
diff_hash[key] = [original_hash[key], compare_hash[key]]
end
end
end
diff_hash
end
end
|