diff options
Diffstat (limited to 'enum.c')
-rw-r--r-- | enum.c | 12 |
1 files changed, 12 insertions, 0 deletions
@@ -1803,6 +1803,17 @@ enum_cycle(int argc, VALUE *argv, VALUE obj) return Qnil; /* not reached */ } +static VALUE +enum_join(int argc, VALUE *argv, VALUE obj) +{ + VALUE sep; + + rb_scan_args(argc, argv, "01", &sep); + if (NIL_P(sep)) sep = rb_output_fs; + + return rb_ary_join(enum_to_a(0, 0, obj), sep); +} + /* * The <code>Enumerable</code> mixin provides collection classes with * several traversal and searching methods, and with the ability to @@ -1862,6 +1873,7 @@ Init_Enumerable(void) rb_define_method(rb_mEnumerable, "drop", enum_drop, 1); rb_define_method(rb_mEnumerable, "drop_while", enum_drop_while, 0); rb_define_method(rb_mEnumerable, "cycle", enum_cycle, -1); + rb_define_method(rb_mEnumerable, "join", enum_join, -1); id_eqq = rb_intern("==="); id_each = rb_intern("each"); |