Ruby deep clone and recursive hash merge
Ruby
def deep_clone(value)
case value
when Hash
value.each_with_object({}) { |(key, item), copy| copy[key] = deep_clone(item) }
when Array
value.map { |item| deep_clone(item) }
else
value
end
end
def deep_merge(base, override)
base = deep_clone(base)
override.each do |key, value|
base[key] = base[key].is_a?(Hash) && value.is_a?(Hash) ? deep_merge(base[key], value) : deep_clone(value)
end
base
end