Revision: 3909 http://trac.macosforge.org/projects/ruby/changeset/3909 Author: lsansonetti@apple.com Date: 2010-04-04 19:47:42 -0700 (Sun, 04 Apr 2010) Log Message: ----------- added conformant #to_a Modified Paths: -------------- MacRuby/trunk/array.c Modified: MacRuby/trunk/array.c =================================================================== --- MacRuby/trunk/array.c 2010-04-05 02:47:17 UTC (rev 3908) +++ MacRuby/trunk/array.c 2010-04-05 02:47:42 UTC (rev 3909) @@ -1991,6 +1991,25 @@ return rcv; } +/* + * call-seq: + * array.to_a -> array + * + * Returns _self_. If called on a subclass of Array, converts + * the receiver to an Array object. + */ + +static VALUE +rary_to_a(VALUE ary, SEL sel) +{ + if (rb_obj_class(ary) != rb_cRubyArray) { + VALUE dup = rb_ary_new(); + rary_replace(dup, 0, ary); + return dup; + } + return ary; +} + /* * call-seq: * array.clear -> array @@ -3473,6 +3492,7 @@ rary_s_try_convert, 1); rb_objc_define_method(rb_cRubyArray, "initialize", rary_initialize, -1); rb_objc_define_method(rb_cRubyArray, "initialize_copy", rary_replace, 1); + rb_objc_define_method(rb_cRubyArray, "to_a", rary_to_a, 0); rb_objc_define_method(rb_cRubyArray, "dup", rary_dup, 0); rb_objc_define_method(rb_cRubyArray, "clone", rary_clone, 0); rb_objc_define_method(rb_cRubyArray, "to_s", rary_inspect, 0);