Class: Hash

Inherits:
Object
  • Object
show all
Defined in:
lib/rubocoin/core_extensions/hash_ext.rb

Overview

Hash monkey patches

Instance Method Summary collapse

Instance Method Details

#_deep_transform_keys_in_object!(object, &block) ⇒ Object



23
24
25
26
27
28
29
30
31
32
33
34
35
36
# File 'lib/rubocoin/core_extensions/hash_ext.rb', line 23

def _deep_transform_keys_in_object!(object, &block)
    case object
    when Hash
      object.keys.each do |key|
        value = object.delete(key)
        object[yield(key)] = _deep_transform_keys_in_object!(value, &block)
      end
      object
    when Array
      object.map! {|e| _deep_transform_keys_in_object!(e, &block)}
    else
      object
    end
end

#deep_symbolize_keys!Object



7
8
9
# File 'lib/rubocoin/core_extensions/hash_ext.rb', line 7

def deep_symbolize_keys!
    deep_transform_keys!{ |key| key.to_sym rescue key }
end

#deep_transform_keys!(&block) ⇒ Object



19
20
21
# File 'lib/rubocoin/core_extensions/hash_ext.rb', line 19

def deep_transform_keys!(&block)
    _deep_transform_keys_in_object!(self, &block)
end

#symbolize_keys!Object



3
4
5
# File 'lib/rubocoin/core_extensions/hash_ext.rb', line 3

def symbolize_keys!
    transform_keys!{ |key| key.to_sym rescue key }
end

#transform_keys!Object



11
12
13
14
15
16
17
# File 'lib/rubocoin/core_extensions/hash_ext.rb', line 11

def transform_keys!
    return enum_for(:transform_keys!) unless block_given?
    keys.each do |key|
      self[yield(key)] = delete(key)
    end
    self
end