Sha256: 7c8c04697e3b049a6e3ad650c29be26722db29180a64ec5469d9f607ef471fde

Contents?: true

Size: 847 Bytes

Versions: 44

Compression:

Stored size: 847 Bytes

Contents

class Hash
  # Returns a Hash with all keys symbolized
  def deep_symbolize_keyz!
    deep_transform_keyz! { |key| key.to_sym rescue key } # rubocop:disable RescueModifier
  end
  alias_method :deep_symbolize_keys!, :deep_symbolize_keyz!

  def deep_transform_keyz!(&block)
    _deep_transform_keyz_in_object!(self, &block)
  end
  alias_method :deep_transform_keys!, :deep_transform_keyz!

  def _deep_transform_keyz_in_object!(object, &block)
    case object
    when Hash
      object.keys.each do |key|
        value = object.delete(key)
        object[yield(key)] = _deep_transform_keyz_in_object!(value, &block)
      end
      object
    when Array
      object.map! { |e| _deep_transform_keyz_in_object!(e, &block) }
    else
      object
    end
  end
  alias_method :_deep_transform_keys_in_object!, :_deep_transform_keyz_in_object!
end

Version data entries

44 entries across 44 versions & 1 rubygems

Version Path
sapience-2.4.0 lib/sapience/core_ext/hash.rb
sapience-2.3.5 lib/sapience/core_ext/hash.rb
sapience-2.3.4 lib/sapience/core_ext/hash.rb
sapience-2.3.3 lib/sapience/core_ext/hash.rb
sapience-2.2.3 lib/sapience/core_ext/hash.rb
sapience-2.2.1 lib/sapience/core_ext/hash.rb
sapience-2.2.0 lib/sapience/core_ext/hash.rb
sapience-2.1.0 lib/sapience/core_ext/hash.rb
sapience-2.0.5 lib/sapience/core_ext/hash.rb
sapience-2.0.4 lib/sapience/core_ext/hash.rb
sapience-2.0.3 lib/sapience/core_ext/hash.rb
sapience-2.0.2 lib/sapience/core_ext/hash.rb
sapience-2.0.1 lib/sapience/core_ext/hash.rb
sapience-2.0.0 lib/sapience/core_ext/hash.rb
sapience-1.0.15 lib/sapience/core_ext/hash.rb
sapience-1.0.14 lib/sapience/core_ext/hash.rb
sapience-1.0.13 lib/sapience/core_ext/hash.rb
sapience-1.0.12 lib/sapience/core_ext/hash.rb
sapience-1.0.11 lib/sapience/core_ext/hash.rb
sapience-1.0.10 lib/sapience/core_ext/hash.rb