Class: Hash

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

Instance Method Summary collapse

Instance Method Details

#compactObject



404
405
406
# File 'lib/cheftacular/helper.rb', line 404

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

#deep_diff(compare_hash, remove_if_nil_on_original = false) ⇒ Object



381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
# File 'lib/cheftacular/helper.rb', line 381

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