[macruby-changes] [3440] MacRuby/trunk/array.c
source_changes at macosforge.org
source_changes at macosforge.org
Sat Feb 6 21:48:55 PST 2010
Revision: 3440
http://trac.macosforge.org/projects/ruby/changeset/3440
Author: lsansonetti at apple.com
Date: 2010-02-06 21:48:53 -0800 (Sat, 06 Feb 2010)
Log Message:
-----------
fixed #flatten on NSDictionaries
Modified Paths:
--------------
MacRuby/trunk/array.c
Modified: MacRuby/trunk/array.c
===================================================================
--- MacRuby/trunk/array.c 2010-02-07 04:58:45 UTC (rev 3439)
+++ MacRuby/trunk/array.c 2010-02-07 05:48:53 UTC (rev 3440)
@@ -2627,6 +2627,24 @@
return LONG2NUM(n);
}
+/*
+ * call-seq:
+ * array.flatten! -> array or nil
+ * array.flatten!(level) -> array or nil
+ *
+ * Flattens _self_ in place.
+ * Returns <code>nil</code> if no modifications were made (i.e.,
+ * <i>array</i> contains no subarrays.) If the optional <i>level</i>
+ * argument determines the level of recursion to flatten.
+ *
+ * a = [ 1, 2, [3, [4, 5] ] ]
+ * a.flatten! #=> [1, 2, 3, 4, 5]
+ * a.flatten! #=> nil
+ * a #=> [1, 2, 3, 4, 5]
+ * a = [ 1, 2, [3, [4, 5] ] ]
+ * a.flatten!(1) #=> [1, 2, 3, [4, 5]]
+ */
+
static VALUE
flatten(VALUE ary, int level, int *modified)
{
@@ -2636,7 +2654,11 @@
st_data_t id;
stack = rb_ary_new();
- result = rary_alloc(rb_class_of(ary), 0);
+ VALUE klass = rb_class_of(ary);
+ if (!rb_klass_is_rary(klass)) {
+ klass = rb_cRubyArray;
+ }
+ result = rary_alloc(klass, 0);
rary_reserve(result, RARRAY_LEN(ary));
memo = st_init_numtable();
st_insert(memo, (st_data_t)ary, (st_data_t)Qtrue);
@@ -2678,24 +2700,6 @@
return result;
}
-/*
- * call-seq:
- * array.flatten! -> array or nil
- * array.flatten!(level) -> array or nil
- *
- * Flattens _self_ in place.
- * Returns <code>nil</code> if no modifications were made (i.e.,
- * <i>array</i> contains no subarrays.) If the optional <i>level</i>
- * argument determines the level of recursion to flatten.
- *
- * a = [ 1, 2, [3, [4, 5] ] ]
- * a.flatten! #=> [1, 2, 3, 4, 5]
- * a.flatten! #=> nil
- * a #=> [1, 2, 3, 4, 5]
- * a = [ 1, 2, [3, [4, 5] ] ]
- * a.flatten!(1) #=> [1, 2, 3, [4, 5]]
- */
-
// Defined on NSArray.
VALUE
rary_flatten_bang(VALUE ary, SEL sel, int argc, VALUE *argv)
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/macruby-changes/attachments/20100206/ea6eada2/attachment.html>
More information about the macruby-changes
mailing list