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) ⇒ Object Also known as: recursive_symbolize_keys!

Recursively symbolize all keys in the hash.



11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# File 'lib/mobme_support/core_ext/hash/keys.rb', line 11

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

    each do |key, value|
      if value.is_a?(Hash) || (modify_nested_arrays && value.is_a?(Array))
        self[key] = value.dup.recursively_symbolize_keys!(modify_nested_arrays)
      end
    end
  when Array
    each_with_index do |value, index|
      self[index] = value.dup.recursively_symbolize_keys!(true) if (value.is_a?(Hash) || value.is_a?(Array))
    end
  end

  self
end