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



18
19
20
21
22
23
24
25
26
# File 'lib/aspera/hash_ext.rb', line 18

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) ⇒ Object



4
5
6
# File 'lib/aspera/hash_ext.rb', line 4

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) ⇒ Object



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

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

#stringify_keysObject



45
46
47
# File 'lib/aspera/hash_ext.rb', line 45

def stringify_keys
  return transform_keys(&:to_s)
end

#stringify_keys!Object



49
50
51
# File 'lib/aspera/hash_ext.rb', line 49

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

#symbolize_keysObject



32
33
34
# File 'lib/aspera/hash_ext.rb', line 32

def symbolize_keys
  return transform_keys(&:to_sym)
end

#symbolize_keys!Object



36
37
38
# File 'lib/aspera/hash_ext.rb', line 36

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