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.



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.



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