Sha256: 5e67e4711ba66d389f257d96bf15ca7c2b261632f88dc8e9b15b4cc22c5dfc0c

Contents?: true

Size: 623 Bytes

Versions: 4

Compression:

Stored size: 623 Bytes

Contents

# frozen_string_literal: true

module Housecanary
  module Utils #:nodoc:
    def deep_symbolize_keys(hash)
      deep_transform_keys(hash) { |key| key.to_sym rescue key }
    end
    module_function :deep_symbolize_keys

    private

    def deep_transform_keys(object, &block)
      case object
      when Hash
        object.each_with_object({}) do |(key, value), result|
          result[yield(key)] = deep_transform_keys(value, &block)
        end
      when Array
        object.map { |e| deep_transform_keys(e, &block) }
      else
        object
      end
    end
    module_function :deep_transform_keys
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
housecanary-ruby-0.1.3 lib/housecanary/utils.rb
housecanary-ruby-0.1.2 lib/housecanary/utils.rb
housecanary-ruby-0.1.1 lib/housecanary/utils.rb
housecanary-ruby-0.1.0 lib/housecanary/utils.rb