Class: Hash

Inherits:
Object
  • Object
show all
Defined in:
lib/agile_utils/core_ext/hash/hash.rb

Instance Method Summary collapse

Instance Method Details

#reverse_merge(other_hash) ⇒ Object

Merges the caller into other_hash. For example,

options = options.reverse_merge(size: 25, velocity: 10)

is equivalent to

options = { size: 25, velocity: 10 }.merge(options)

This is particularly useful for initializing an options hash with default values.



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

def reverse_merge(other_hash)
  other_hash.merge(self)
end

#reverse_merge!(other_hash) ⇒ Object

Destructive reverse_merge.



50
51
52
53
# File 'lib/agile_utils/core_ext/hash/hash.rb', line 50

def reverse_merge!(other_hash)
  # right wins if there is no left
  merge!(other_hash) { |key, left, right| left }
end

#symbolize_keysObject

hash = { ‘name’ => ‘Rob’, ‘age’ => ‘28’ } hash.symbolize_keys

> { name: “Rob”, age: “28” }



26
27
28
# File 'lib/agile_utils/core_ext/hash/hash.rb', line 26

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

#symbolize_keys!Object

File activesupport/lib/active_support/core_ext/hash/keys.rb, line 135



31
32
33
# File 'lib/agile_utils/core_ext/hash/hash.rb', line 31

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

#transform_keysObject

File activesupport/lib/active_support/core_ext/hash/keys.rb

hash = { name: ‘Rob’, age: ‘28’ } hash.transform_keys{ |key| key.to_s.upcase }

> { “NAME” => “Rob”, “AGE” => “28” }



7
8
9
10
11
12
13
# File 'lib/agile_utils/core_ext/hash/hash.rb', line 7

def transform_keys
  result = {}
  each_key do |key|
    result[yield(key)] = self[key]
  end
  result
end

#transform_keys!(&block) ⇒ Object



15
16
17
18
19
20
21
# File 'lib/agile_utils/core_ext/hash/hash.rb', line 15

def transform_keys!(&block)
  keys.each do |key|
    value = delete(key)
    self[yield(key)] = value.is_a?(Hash) ? value.transform_keys!(&block) : value
  end
  self
end