Class: Hash

Inherits:
Object
  • Object
show all
Defined in:
lib/aspera/hash_ext.rb,
lib/aspera/hash_ext.rb,
lib/aspera/hash_ext.rb

Instance Method Summary collapse

Instance Method Details

#deep_do(memory = nil) {|hash, key, value, memory| ... } ⇒ Object

Recursively iterate through hash and execute block on leaf values

Parameters:

  • memory (Object, nil) (defaults to: nil) —

    Optional memory object passed to block

Yield Parameters:

  • hash (Hash) —

    The current hash

  • key (Object) —

    The current key

  • value (Object) —

    The current value (non-Hash)

  • memory (Object, nil) —

    The memory object



24
25
26
27
28
29
30
31
32
# File 'lib/aspera/hash_ext.rb', line 24

def deep_do(memory = nil, &block)
  each do |key, value|
    if value.is_a?(Hash)
      value.deep_do(memory, &block)
    else
      yield(self, key, value, memory)
    end
  end
end

#deep_merge(second) ⇒ Hash

Recursively merge another hash, with nested hashes merged deeply

Parameters:

  • second (Hash) —

    Hash to merge into self

Returns:

  • (Hash) —

    New merged hash



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

def deep_merge(second)
  merge(second) { |_key, v1, v2| v1.is_a?(Hash) && v2.is_a?(Hash) ? v1.deep_merge(v2) : v2 }
end

#deep_merge!(second) ⇒ Hash

Recursively merge another hash in-place, with nested hashes merged deeply

Parameters:

  • second (Hash) —

    Hash to merge into self

Returns:



14
15
16
# File 'lib/aspera/hash_ext.rb', line 14

def deep_merge!(second)
  merge!(second) { |_key, v1, v2| v1.is_a?(Hash) && v2.is_a?(Hash) ? v1.deep_merge!(v2) : v2 }
end

#stringify_keys ⇒ Object



51
52
53
# File 'lib/aspera/hash_ext.rb', line 51

def stringify_keys
  return transform_keys(&:to_s)
end

#stringify_keys! ⇒ Object



55
56
57
# File 'lib/aspera/hash_ext.rb', line 55

def stringify_keys!
  return transform_keys!(&:to_s)
end

#symbolize_keys ⇒ Object



38
39
40
# File 'lib/aspera/hash_ext.rb', line 38

def symbolize_keys
  return transform_keys(&:to_sym)
end

#symbolize_keys! ⇒ Object



42
43
44
# File 'lib/aspera/hash_ext.rb', line 42

def symbolize_keys!
  return transform_keys!(&:to_sym)
end