Module: MobME::Infrastructure::Utilities::CoreExtensions::Keys

Included in:
Array, Hash
Defined in:
lib/mobme_support/core_ext/hash/keys.rb

Overview

Hash extension, allowing recursive Hash key symbolization

Instance Method Summary collapse

Instance Method Details

#recursively_symbolize_keys(modify_nested_arrays = false) ⇒ Hash, Array Also known as: recursive_symbolize_keys

Returns a version of the supplies Hash or Array with all Hash keys symbolized.

Parameters:

  • modify_nested_arrays (Boolean) (defaults to: false)

    set to true to iterate over array contents. Defaults to false.

Returns:

  • (Hash, Array)

    recursively symbolized Array or Hash



14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# File 'lib/mobme_support/core_ext/hash/keys.rb', line 14

def recursively_symbolize_keys(modify_nested_arrays = false)
  recursively_symbolized_value = case self
    when Hash
      symbolized_hash = symbolize_keys

      symbolized_hash.each do |key, value|
        if value.is_a?(Hash) || (modify_nested_arrays && value.is_a?(Array))
          symbolized_hash[key] = value.recursively_symbolize_keys(modify_nested_arrays)
        end
      end

      symbolized_hash
    when Array
      symbolized_array = self.dup

      symbolized_array.each_with_index do |value, index|
        symbolized_array[index] = value.recursively_symbolize_keys(true) if (value.is_a?(Hash) || value.is_a?(Array))
      end

      symbolized_array
  end

  recursively_symbolized_value
end

#recursively_symbolize_keys!(modify_nested_arrays = false) ⇒ Hash, Array Also known as: recursive_symbolize_keys!

Recursively symbolize all keys in hashes.

Parameters:

  • modify_nested_arrays (Boolean) (defaults to: false)

    set to true to modify array contents. Defaults to false.

Returns:

  • (Hash, Array)

    recursively symbolized Array or Hash



45
46
47
# File 'lib/mobme_support/core_ext/hash/keys.rb', line 45

def recursively_symbolize_keys!(modify_nested_arrays = false)
  replace recursively_symbolize_keys(modify_nested_arrays)
end