RobertDober/lab42_core

View on GitHub
lib/lab42/core/enumerable.rb

Summary

Maintainability
A
0 mins
Test Coverage
module Enumerable

  def find_with_value default_value=nil, &blk
    each do | val |
      val_prime = blk.(val)
      return val_prime if val_prime
    end
    default_value
  end

  def grep2 expr
    partition{ |ele| expr === ele }
  end

  
  def to_proc
    this = self
    yielder = to_enum.lazy
    -> do
      yielder.next
    end
      .extend( Module.new do
        define_method :reset! do
          yielder = this.to_enum.lazy
        end
      end)
  end
end

class Enumerator::Lazy
  def grep2 expr
    [ select{ |x| expr === x }, reject{ |x| expr === x } ]
  end

  # def to_proc
  #   this = self
  #   yielder = to_enum.lazy
  #   -> do
  #     yielder.next
  #   end
  #     .extend( Module.new do
  #       define_method :reset! do
  #         yielder = this.to_enum.lazy
  #       end
  #     end)
  # end
end
# SPDX-License-Identifier: Apache-2.0