class Object

Public Instance Methods

map_rec(object, array_elem: true, hash_key: true, hash_value: true, &block) click to toggle source
# File lib/map-rec/map_rec.rb, line 1
def map_rec(object, array_elem: true, hash_key: true, hash_value: true, &block)
  map = lambda { |o| map_rec(o, &block) }

  case object
  when Array
    object.map do |elem|
      array_elem ? map.call(elem) : elem
    end
  when Hash
    object.map do |key, value|
      [(hash_key ? map.call(key) : key), (hash_value ? map.call(value) : value)]
    end.to_h
  else
    block.call object
  end
end