Sha256: e0170dbb4f21b8ae501893e082aa24849f7a943b548ae1e7229ace1a16d38dde

Contents?: true

Size: 738 Bytes

Versions: 12

Compression:

Stored size: 738 Bytes

Contents

class ImageOptim
  module HashHelpers
    class << self
      def deep_transform_keys(hash, &block)
        new_hash = {}
        hash.each do |k, v|
          new_hash[block.call(k)] = if v.is_a?(Hash)
            deep_transform_keys(v, &block)
          else
            v
          end
        end
        new_hash
      end

      def deep_stringify_keys(hash)
        deep_transform_keys(hash, &:to_s)
      end

      def deep_symbolise_keys(hash)
        deep_transform_keys(hash, &:to_sym)
      end

      def deep_merge(a, b)
        a.merge(b) do |k, v_a, v_b|
          if v_a.is_a?(Hash) && v_b.is_a?(Hash)
            deep_merge(v_a, v_b)
          else
            v_b
          end
        end
      end
    end
  end
end

Version data entries

12 entries across 12 versions & 1 rubygems

Version Path
image_optim-0.13.3 lib/image_optim/hash_helpers.rb
image_optim-0.13.2 lib/image_optim/hash_helpers.rb
image_optim-0.13.1 lib/image_optim/hash_helpers.rb
image_optim-0.13.0 lib/image_optim/hash_helpers.rb
image_optim-0.12.1 lib/image_optim/hash_helpers.rb
image_optim-0.12.0 lib/image_optim/hash_helpers.rb
image_optim-0.11.2 lib/image_optim/hash_helpers.rb
image_optim-0.11.1 lib/image_optim/hash_helpers.rb
image_optim-0.11.0 lib/image_optim/hash_helpers.rb
image_optim-0.10.2 lib/image_optim/hash_helpers.rb
image_optim-0.10.1 lib/image_optim/hash_helpers.rb
image_optim-0.10.0 lib/image_optim/hash_helpers.rb