Class: Hash

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

Instance Method Summary collapse

Instance Method Details

#nested_map(key_lambda = nil, value_lambda = nil, &blk) ⇒ Object

Raises:

  • (StandardError)


3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# File 'lib/nested_access/core_ext/hash.rb', line 3

def nested_map key_lambda=nil, value_lambda=nil, &blk
  raise StandardError if block_given? and !(key_lambda.nil? and value_lambda.nil?)
  value_lambda = blk if block_given?
  value_lambda = lambda { |s| s } if value_lambda.nil?
  inject({}) do |hash, (key, value)|
    new_key = key_lambda ? key_lambda.call(key) : key
    hash[new_key] = case value
                      when Array, Hash
                        value.nested_map key_lambda, value_lambda
                      else
                        value_lambda.call value
                    end
    hash
  end
end