Module: Itsi::ScheduleRefinement::EnumerableExtensions

Defined in:
lib/itsi/schedule_refinement.rb

Instance Method Summary collapse

Instance Method Details

#schedule_each(&block) ⇒ Object



55
56
57
58
59
60
61
62
63
# File 'lib/itsi/schedule_refinement.rb', line 55

def schedule_each(&block)
  enum = Enumerator.new do |y|
    schedule do
      each { |item| schedule{ y.yield(item) } }
    end
  end

  block_given? ? enum.each(&block) : enum.each
end

#schedule_map(&block) ⇒ Object



65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
# File 'lib/itsi/schedule_refinement.rb', line 65

def schedule_map(&block)
  return Enumerator.new do |y|
    schedule do
      each_with_index.each_with_object([]) do |(item, index), agg|
        schedule do
          agg[index] = (y << item)
        end
      end
    end
  end.map unless block_given?
  schedule do
    each_with_index.each_with_object([]) do |(item, index), agg|
      schedule do
        agg[index] = block[item]
      end
    end
  end
end