Sha256: 2528fd54e293ad8e2a4d9f8cac4e52161236d7200eb2444044e5b16475975ce4

Contents?: true

Size: 773 Bytes

Versions: 2

Compression:

Stored size: 773 Bytes

Contents

module Sparrow
  module CoreExt
    module Hash
      refine ::Hash do
        # Defines deep_transform_keys as available in ActiveSupport >= 4.0.2.
        # See {http://apidock.com/rails/v4.2.1/Hash/deep_transform_keys}
        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
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
cp-sparrow-0.0.16 lib/sparrow/core_ext/hash.rb
cp-sparrow-0.0.15 lib/sparrow/core_ext/hash.rb