class EnumArgs::Enumerator
Attributes
args[R]
fiber[RW]
method_name[R]
object[R]
using[R]
Public Class Methods
new(object, method_name, *fixed_args, using: {})
click to toggle source
Currently unused setter
def using=(using)
@using = using self.args = args @using
end
# File lib/enum_args/enumerator.rb, line 23 def initialize(object, method_name, *fixed_args, using: {}) @object = object @method_name = method_name @using = using # don't use self.using=() here, since we can't call it yet self.args = fixed_args rewind end
Public Instance Methods
args=(args)
click to toggle source
# File lib/enum_args/enumerator.rb, line 9 def args=(args) @args = args @args << using unless using.empty? @args end
each() { |next| ... }
click to toggle source
# File lib/enum_args/enumerator.rb, line 31 def each return enum_for(:each) unless block_given? # loop does actually get broken by StopIteration loop do yield self.next end object end
next()
click to toggle source
# File lib/enum_args/enumerator.rb, line 52 def next rewind unless fiber.alive? fiber.resume end
rewind()
click to toggle source
# File lib/enum_args/enumerator.rb, line 40 def rewind self.fiber = Fiber.new do object.send method_name, *args do |*yielded_values| # :nocov: Fiber.yield(*yielded_values) # :nocov: end raise StopIteration end self end