module Enumerator::Filter

Public Instance Methods

reject(&block) click to toggle source
# File lib/core_ext/enumerator/filter.rb, line 6
def reject(&block)
  filter(false, &block)
end
select(&block) click to toggle source
# File lib/core_ext/enumerator/filter.rb, line 2
def select(&block)
  filter(true, &block)
end

Private Instance Methods

filter(filter_val, &block) click to toggle source
# File lib/core_ext/enumerator/filter.rb, line 11
def filter(filter_val, &block)
  Enumerator.new do |yielder|

    begin
      loop do
        val = self.next
        should_yield = block.call(val) == filter_val
        yielder << val if should_yield
      end
    rescue StopIteration
    end
  end
end