class Hash

def recursive_delete(key_to_delete)

Returns:
  • (void) -
def recursive_delete(key_to_delete)
  delete(key_to_delete)
  self.each do |key, value|
    case value
    when Hash
      value.recursive_delete(key_to_delete)
    when Array
      value.each { |v| v.recursive_delete(key_to_delete) if v.is_a?(Hash)}
    end
  end
end

def recursive_diff(other, self_key = 'self', other_key = 'other')

Returns:
  • (Hash) - Returns the recursive difference of a hash.
def recursive_diff(other, self_key = 'self', other_key = 'other')
  if other.is_a?(Hash)
    r = {}
    all_keys = self.keys + other.keys
    all_keys.each do |key|
      v1 = self[key]
      v2 = other[key]
      diff = v1.recursive_diff(v2, self_key, other_key)
      r[key] = diff if diff
    end
    r unless r == {}
  else
    super
  end
end