Class: Virtuous::HashHelper

Inherits:
Object
  • Object
show all
Defined in:
lib/virtuous/helpers/hash_helper.rb

Overview

Helper methods for hashes

Class Method Summary collapse

Class Method Details

.deep_transform_keys(hash, &transform) ⇒ Hash

Recieves a block which is called on all of the keys of the hash, including the keys nested hashes inside.

Parameters:

  • hash (Hash)

    the hash to call the block upon.

Returns:

  • (Hash)

    A new hash with the transformed keys.



10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# File 'lib/virtuous/helpers/hash_helper.rb', line 10

def self.deep_transform_keys(hash, &transform)
  new_hash = {}
  hash.each_key do |key|
    value = hash[key]
    new_key = transform.call(key)
    new_hash[new_key] = if value.is_a?(Array)
                          value.map do |item|
                            item.is_a?(Hash) ? deep_transform_keys(item, &transform) : item
                          end
                        elsif value.is_a?(Hash)
                          deep_transform_keys(value, &transform)
                        else
                          value
                        end
  end
  new_hash
end