class Hash

Public Instance Methods

clean!() { |key,val| ... } click to toggle source
# File lib/promoted/ruby/client/extensions.rb, line 14
def clean!
  self.delete_if do |key, val|
    if block_given?
        yield(key,val)
    else
      # checks for empty/blank values
      nil_value       = val.nil?
      falsy           = val === false
      is_empty        = val.empty? if val.respond_to?('empty?')
      is_empty_string = val.strip.empty? if val.is_a?(String) && val.respond_to?('empty?')

      # Were any of the checks true
      nil_value || falsy || is_empty || is_empty_string
    end
  end

  self.each do |key, val|
    if self[key].is_a?(Hash) && self[key].respond_to?('clean!')
      if block_given?
        self[key] = self[key].clean!(&Proc.new)
      else
        self[key] = self[key].clean!
      end
    end
  end
  return self
end