123456789_123456789_123456789_123456789_123456789_

Class: Enumerator::Yielder

Relationships & Source Files
Inherits: Object
Defined in: enumerator.c

Overview

Yielder

Class Method Summary

  • .new constructor Internal use only

Instance Method Summary

Constructor Details

.new

This method is for internal use only.
[ GitHub ]

  
# File 'enumerator.c', line 1350

static VALUE
yielder_initialize(VALUE obj)
{
    rb_need_block();

    return yielder_init(obj, rb_block_proc());
}

Instance Method Details

#<<(arg)

This method is for internal use only.
[ GitHub ]

  
# File 'enumerator.c', line 1368

static VALUE
yielder_yield_push(VALUE obj, VALUE arg)
{
    struct yielder *ptr = yielder_ptr(obj);

    rb_proc_call_with_block(ptr->proc, 1, &arg, Qnil);

    return obj;
}

#to_proc

Returns a ::Proc object that takes arguments and yields them.

This method is implemented so that a Yielder object can be directly passed to another method as a block argument.

enum = Enumerator.new { |y|
  Dir.glob("*.rb") { |file|
    File.open(file) { |f| f.each_line(&y) }
  }
}
[ GitHub ]

  
# File 'enumerator.c', line 1390

static VALUE
yielder_to_proc(VALUE obj)
{
    VALUE method = rb_obj_method(obj, sym_yield);

    return rb_funcall(method, idTo_proc, 0);
}

#yield(args)

This method is for internal use only.
[ GitHub ]

  
# File 'enumerator.c', line 1359

static VALUE
yielder_yield(VALUE obj, VALUE args)
{
    struct yielder *ptr = yielder_ptr(obj);

    return rb_proc_call_kw(ptr->proc, args, RB_PASS_CALLED_KEYWORDS);
}