Sha256: e0c4fc7cf7443d94562694511bf08b046b1b20179c48c96625f5ee7c34202806

Contents?: true

Size: 897 Bytes

Versions: 5

Compression:

Stored size: 897 Bytes

Contents

# frozen_string_literal: true

module Micro
  class Case
    module Utils

      module Hashes
        def self.respond_to?(hash, method)
          Kind.of(Hash, hash).respond_to?(method)
        end

        def self.symbolize_keys(hash)
          return hash.transform_keys { |key| key.to_sym rescue key } if respond_to?(hash, :transform_keys)

          hash.each_with_object({}) do |(k, v), memo|
            key = k.to_sym rescue k
            memo[key] = v
          end
        end

        def self.stringify_keys(hash)
          return hash.transform_keys(&:to_s) if respond_to?(hash, :transform_keys)

          hash.each_with_object({}) { |(k, v), memo| memo[k.to_s] = v }
        end

        def self.slice(hash, keys)
          return hash.slice(*keys) if respond_to?(hash, :slice)

          hash.select { |key, _value| keys.include?(key) }
        end
      end

    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
u-case-4.2.2 lib/micro/case/utils.rb
u-case-4.2.1 lib/micro/case/utils.rb
u-case-4.2.0 lib/micro/case/utils.rb
u-case-4.1.1 lib/micro/case/utils.rb
u-case-4.1.0 lib/micro/case/utils.rb