GitHub

@@ -1331,6 +1331,34 @@ mrb_ary_join_m(mrb_state *mrb, mrb_value ary)

13311331

return mrb_ary_join(mrb, ary, sep);

13321332

}

133313331334+

/*

1335+

* call-seq:

1336+

* ary.to_s -> string

1337+

* ary.inspect -> string

1338+

*

1339+

* Return the contents of this array as a string.

1340+

*/

1341+

static mrb_value

1342+

mrb_ary_to_s(mrb_state *mrb, mrb_value self)

1343+

{

1344+

mrb->c->ci->mid = MRB_SYM(inspect);

1345+

mrb_value ret = mrb_str_new_lit(mrb, "[");

1346+

int ai = mrb_gc_arena_save(mrb);

1347+

if (mrb_inspect_recursive_p(mrb, self)) {

1348+

mrb_str_cat_lit(mrb, ret, "...]");

1349+

return ret;

1350+

}

1351+

mrb_int len = RARRAY_LEN(self);

1352+

for (mrb_int i=0; i<len; i++) {

1353+

if (i>0) mrb_str_cat_lit(mrb, ret, ", ");

1354+

mrb_str_cat_str(mrb, ret, mrb_inspect(mrb, mrb_ary_ref(mrb, self, i)));

1355+

mrb_gc_arena_restore(mrb, ai);

1356+

}

1357+

mrb_str_cat_lit(mrb, ret, "]");

1358+1359+

return ret;

1360+

}

1361+13341362

static mrb_value

13351363

mrb_ary_eq(mrb_state *mrb, mrb_value ary1)

13361364

{

@@ -1409,6 +1437,8 @@ mrb_init_array(mrb_state *mrb)

14091437

mrb_define_method(mrb, a, "size", mrb_ary_size, MRB_ARGS_NONE()); /* 15.2.12.5.28 */

14101438

mrb_define_method(mrb, a, "slice", mrb_ary_aget, MRB_ARGS_ARG(1,1)); /* 15.2.12.5.29 */

14111439

mrb_define_method(mrb, a, "unshift", mrb_ary_unshift_m, MRB_ARGS_ANY()); /* 15.2.12.5.30 */

1440+

mrb_define_method(mrb, a, "to_s", mrb_ary_to_s, MRB_ARGS_NONE());

1441+

mrb_define_method(mrb, a, "inspect", mrb_ary_to_s, MRB_ARGS_NONE());

1412144214131443

mrb_define_method(mrb, a, "__ary_eq", mrb_ary_eq, MRB_ARGS_REQ(1));

14141444

mrb_define_method(mrb, a, "__ary_cmp", mrb_ary_cmp, MRB_ARGS_REQ(1));

Read the original on github.com ↗