Class: Mapper::Some

Inherits:
Object
  • Object
show all
Defined in:
lib/mapper/some.rb

Overview

“One after one” reductor.

Passes call with given arguments to each object from oldest to newest in aggregator if the output of given block isn’t true.

Instance Method Summary collapse

Constructor Details

#initialize(objects, &block) ⇒ Some

Constructor.



35
36
37
38
# File 'lib/mapper/some.rb', line 35

def initialize(objects, &block)
    @objects = objects
    @condition = block
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(name, *args, &block) ⇒ Object

Handles calls. (Performs mapping.)

Returns result of first one for which is condition true, or result of last object call.



47
48
49
50
51
52
53
54
55
56
57
58
59
# File 'lib/mapper/some.rb', line 47

def method_missing(name, *args, &block)
    result = nil
    
    @objects.each do |obj|
        result = obj.send(name, *args, &block)
        
        if @condition.call(result)
            return result
        end
    end
    
    return result
end