class Hash
def recursive_delete(key_to_delete)
-
(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')
-
(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