Class: PipeRpc::Mapper

Inherits:
Object show all
Defined in:
lib/pipe_rpc/mapper.rb,
lib/pipe_rpc/hub_transport_mapper.rb

Direct Known Subclasses

Hub::TransportMapper

Instance Method Summary collapse

Instance Method Details

#map(object, &mapper) ⇒ Object



3
4
5
6
7
8
9
10
11
12
13
14
15
# File 'lib/pipe_rpc/mapper.rb', line 3

def map(object, &mapper)
  if Client === object
    # first filter out clients so for them subsequent checks are not sent
    # through the pipe
    yield object
  elsif Hash === object
    object.map{ |k, v| [k, map(v, &mapper)] }.to_h
  elsif object.respond_to? :map
    object.map{ |item| map(item, &mapper) }
  else
    yield object
  end
end