Module: Prmd::HashHelpers Private

Defined in:
lib/prmd/hash_helpers.rb

Overview

This module is part of a private API. You should avoid using this module if possible, as it may be removed or be changed in the future.

Hash helper methods

Class Method Summary collapse

Class Method Details

.deep_symbolize_keys(hash) ⇒ Hash

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Attempts to convert all keys in the hash to a Symbol. This operation is recursive with subhashes

Parameters:

  • hash (Hash)

Returns:

  • (Hash)

12
13
14
15
16
17
18
19
20
# File 'lib/prmd/hash_helpers.rb', line 12

def self.deep_symbolize_keys(hash)
  deep_transform_keys(hash) do |key|
    if key.respond_to?(:to_sym)
      key.to_sym
    else
      key
    end
  end
end

.deep_transform_keys(hash) {|Object| ... } ⇒ Hash

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Think of this as hash.keys.map! { |key| }, that actually maps recursively.

Parameters:

  • hash (Hash)

Yields:

  • (Object)

    key

Returns:

  • (Hash)

27
28
29
30
31
32
33
34
35
36
# File 'lib/prmd/hash_helpers.rb', line 27

def self.deep_transform_keys(hash, &block)
  result = {}
  hash.each do |key, value|
    new_key = yield(key)
    new_value = value
    new_value = deep_transform_keys(value, &block) if value.is_a?(Hash)
    result[new_key] = new_value
  end
  result
end