Class: Hash

Inherits:
Object
  • Object
show all
Defined in:
lib/cheftacular/helper.rb

Instance Method Summary collapse

Instance Method Details

#compactObject



319
320
321
# File 'lib/cheftacular/helper.rb', line 319

def compact
  self.select { |_, value| !value.nil? }
end

#deep_diff(compare_hash, remove_if_nil_on_original = false) ⇒ Object



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