class Enumerator::Lazy

Public Instance Methods

squeeze(*limited_to) click to toggle source

Enumerator::Lazy version of Enumerable#squeeze. Note: you must use Ruby 2.0+ or require 'backports'. For now, you have to require 'facets/enumerator/lazy/squeeze' explicitly.

Examples

[1,2,2,3,3,2,1].lazy.squeeze.to_a #=> [1,2,3,2,1]
[1,2,2,3,3,2,1].lazy.squeeze(*[3]).to_a #=> [1,2,2,3,2,1]

Returns Enumerator::Lazy.

CREDIT: T. Yamada

# File lib/core/facets/enumerator/lazy/squeeze.rb, line 18
def squeeze(*limited_to)
  first = true
  cur = nil
  self.class.new(self) do |y,v|
    if !limited_to.empty? && !limited_to.include?(v)
      y << v
    elsif first || cur != v
      y << v
      first = false
      cur = v
    end
  end
end