Sha256: 88df29a5f7393b40cf60b023c70bd28b3212d77d043b58d105b28854c2650d51

Contents?: true

Size: 1.07 KB

Versions: 68

Compression:

Stored size: 1.07 KB

Contents

module R10K
  module Util
    module SymbolizeKeys
      module_function

      # Convert all String keys to Symbol keys
      #
      # @param hash [Hash] The data structure to convert
      # @param recurse [Boolean] Whether to recursively symbolize keys in nested
      #   hash values. Defaults to false.
      # @raise [TypeError] If a String key collides with an existing Symbol key
      # @return [void]
      def symbolize_keys!(hash, recurse = false)
        hash.keys.each do |key|
          if key.is_a?(String)
            if hash.key?(key.to_sym)
              raise TypeError, _("An existing interned key for %{key} exists, cannot overwrite") % {key: key}
            end
            hash[key.to_sym] = hash.delete(key)
            key = key.to_sym
          end

          value = hash[key]
          if recurse
            if value.is_a?(Hash)
              symbolize_keys!(value, true)
            elsif value.is_a?(Array)
              value.map { |item| symbolize_keys!(item, true) if item.is_a?(Hash) }
            end
          end
        end
      end
    end
  end
end

Version data entries

68 entries across 68 versions & 2 rubygems

Version Path
r10k-5.0.0 lib/r10k/util/symbolize_keys.rb
r10k-4.1.0 lib/r10k/util/symbolize_keys.rb
r10k-4.0.2 lib/r10k/util/symbolize_keys.rb
r10k-4.0.1 lib/r10k/util/symbolize_keys.rb
r10k-4.0.0 lib/r10k/util/symbolize_keys.rb
r10k-4.0.0.pre lib/r10k/util/symbolize_keys.rb
r10k-3.16.0 lib/r10k/util/symbolize_keys.rb
r10k-3.15.4 lib/r10k/util/symbolize_keys.rb
r10k-3.15.3 lib/r10k/util/symbolize_keys.rb
r10k-3.15.2 lib/r10k/util/symbolize_keys.rb
r10k-3.15.1 lib/r10k/util/symbolize_keys.rb
r10k-3.15.0 lib/r10k/util/symbolize_keys.rb
akerl-r10k-3.14.2.1 lib/r10k/util/symbolize_keys.rb
r10k-3.14.2 lib/r10k/util/symbolize_keys.rb
r10k-3.14.1 lib/r10k/util/symbolize_keys.rb
r10k-3.14.0 lib/r10k/util/symbolize_keys.rb
r10k-3.13.0 lib/r10k/util/symbolize_keys.rb
r10k-3.12.1 lib/r10k/util/symbolize_keys.rb
r10k-3.12.0 lib/r10k/util/symbolize_keys.rb
r10k-3.11.0 lib/r10k/util/symbolize_keys.rb