module EpicHashCleaner

Constants

VERSION

Public Instance Methods

blank?(value) click to toggle source

blank? has different meaning depending on the class See github.com/rails/rails/blob/master/activesupport/lib/active_support/core_ext/object/blank.rb

we use directly blank? if defined, if not we replicate the active support implementation for Object#blank?

rubocop:disable Style/DoubleNegation

# File lib/epic_hash_cleaner.rb, line 32
def blank?(value)
  return value.blank? if value.respond_to?(:blank?)

  value.respond_to?(:empty?) ? !!value.empty? : !value
end
clean(hash) click to toggle source
# File lib/epic_hash_cleaner.rb, line 6
def clean(hash)
  return {} if hash.nil?
  clean_hash(hash)
end
clean_array(array) click to toggle source
# File lib/epic_hash_cleaner.rb, line 15
def clean_array(array)
  array.delete_if { |v| clean_value(v) }
end
clean_hash(hash) click to toggle source
# File lib/epic_hash_cleaner.rb, line 11
def clean_hash(hash)
  hash.delete_if { |_, v| clean_value(v) }
end
clean_value(value) click to toggle source
# File lib/epic_hash_cleaner.rb, line 19
def clean_value(value)
  clean_hash(value)  if value.is_a?(Hash)
  clean_array(value) if value.is_a?(Array)
  blank?(value) if value != false
end