@@ -1331,6 +1331,34 @@ mrb_ary_join_m(mrb_state *mrb, mrb_value ary)
13311331 return mrb_ary_join (mrb , ary , sep );
13321332}
13331333
1334+ /*
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+
13341362static mrb_value
13351363mrb_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 ());
14121442
14131443 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 ));
0 commit comments