[#29736] [提案] Kernel#p をもっと便利に — "Yusuke ENDOH" <mame@...>

遠藤侑介と申します。

19 messages 2006/11/01

[#29765] merge with YARV — SASADA Koichi <ko1@...>

 ささだです。

16 messages 2006/11/03

[#29767] 1.8 proposal of RUBY_PATCHLEVEL — URABE Shyouhei <root@...>

-----BEGIN PGP SIGNED MESSAGE-----

52 messages 2006/11/04
[#29771] Re: 1.8 proposal of RUBY_PATCHLEVEL — Shugo Maeda <shugo@...> 2006/11/04

前田です。

[#29925] ruby -v — Urabe Shyouhei <shyouhei@...>

卜部です。

28 messages 2006/11/24

[#29964] 1.8, 1.9, svn化, などなどのまとめ — "U.Nakamura" <usa@...>

こんにちは、なかむら(う)です。

15 messages 2006/11/28

[#29970] BUG: Incorrect handling of Ignorecase matching (regex.c of 1.8.5) — "きむらこういち" <hogemuta@...>

木村です。

15 messages 2006/11/28

[ruby-dev:29915] Re: [提案] Kernel#p をもっと便利に

From: "Yusuke ENDOH" <mame@...>
Date: 2006-11-12 17:14:48 UTC
List: ruby-dev #29915
遠藤です。

1.9 で実装してみました。
複数引数のときは配列を返すようにしています。

make check の結果は変わりませんでした (17F4E, i686-linux, Debian sarge) 。
# ただし HEAD では make install や make check が動作しなかったので、
# eval.c を 1.954 まで戻しています。

よろしくご検討ください。


--- ruby.org/io.c       2006-10-17 08:07:07.000000000 +0900
+++ ruby/io.c   2006-11-13 01:28:31.000000000 +0900
@@ -3908,15 +3908,27 @@ rb_p(VALUE obj) /* for debug print withi

 static VALUE
-rb_f_p(int argc, VALUE *argv)
+rb_f_p(int argc, VALUE *argv, VALUE self)
 {
     int i;
+    VALUE ret;

-    for (i=0; i<argc; i++) {
-       rb_p(argv[i]);
+    if (argc == 0) {
+       rb_p(self);
+       ret = self;
+    } else {
+       for (i=0; i<argc; i++) {
+           rb_p(argv[i]);
+       }
+       if (argc == 1) {
+           ret = argv[0];
+       }
+       else {
+           ret = rb_ary_new4(argc, argv);
+       }
     }
     if (TYPE(rb_stdout) == T_FILE) {
        rb_io_flush(rb_stdout);
     }
-    return Qnil;
+    return ret;
 }

@@ -5626,5 +5638,5 @@ Init_IO(void)
     rb_define_global_function("`", rb_f_backquote, 1);

-    rb_define_global_function("p", rb_f_p, -1);
+    rb_define_method(rb_mKernel, "p", rb_f_p, -1);
     rb_define_method(rb_mKernel, "display", rb_obj_display, -1);

-- 
Yusuke ENDOH <mame@tsg.ne.jp>

In This Thread