Method: Hash#deep_compact!

Defined in:
lib/morpheus/ext/hash.rb

#deep_compact!Object



43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
# File 'lib/morpheus/ext/hash.rb', line 43

def deep_compact!
  self.each_pair do |k, v|
    if v.is_a?(Hash)
      self[k].deep_compact!
    elsif v.is_a?(Array)
      self[k].each do |it|
        if it.is_a?(Hash)
          it.deep_compact!
        elsif self[k] == nil || self[k] == ''
          # meh, preserve 'empty' array elements
        end
      end
    else
      if self[k] == nil || self[k] == ''
        self.delete(k)
      end
    end
  end
  self
end