Sha256: 78f1d0012c640d66d2afd6b011314f817f4b895a7fa78e7a24bcab8715a0cfa2

Contents?: true

Size: 443 Bytes

Versions: 2

Compression:

Stored size: 443 Bytes

Contents

class Hash
  def deep_transform_keys(&block)
    deep_transform_in_object(self, &block)
  end

  private 

  def deep_transform_in_object(obj, &block)
    case obj 
      when Hash
        obj.each_with_object({}) do |(key,value), result|
          result[yield(key)] = deep_transform_in_object(value, &block)
        end
      when Array
        obj.map { |el| deep_transform_in_object(el, &block) }
      else
        obj
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
cp-sparrow-0.0.12 lib/sparrow/core_ext/hash.rb
cp-sparrow-0.0.11 lib/sparrow/core_ext/hash.rb