From: Yusuke ENDOH Date: 2008-05-24T01:57:22+09:00 Subject: [ruby-dev:34833] Re: return value of pp 遠藤です。 08/05/24 に Tanaka Akira さんは書きました: > > p が引数を返すようになったので、pp もそれにあわせると > > いいと思うのですが、どうでしょうか。 > > そうした場合、irb で pp を使ったときに、pp の表示結果に加え > て inspect な結果が出てきて、見にくいんじゃないですかねぇ。 うーん、pretty_inspect が定義されているときは、irb の結果表示にも pretty_inspect を使う、というのでどうでしょうか。 irb(main):001:0> ["foo bar baz"] * 6 => ["foo bar baz", "foo bar baz", "foo bar baz", "foo bar baz", "foo bar baz", "foo bar baz"] irb(main):002:0> require "pp" => true irb(main):003:0> ["foo bar baz"] * 6 => ["foo bar baz", "foo bar baz", "foo bar baz", "foo bar baz", "foo bar baz", "foo bar baz"] Index: lib/pp.rb =================================================================== --- lib/pp.rb (revision 16560) +++ lib/pp.rb (working copy) @@ -54,12 +54,12 @@ private # prints arguments in pretty form. # - # pp returns nil. + # pp returns argument(s). def pp(*objs) # :doc: objs.each {|obj| PP.pp(obj) } - nil + objs.size <= 1 ? objs.first : objs end module_function :pp end Index: lib/irb.rb =================================================================== --- lib/irb.rb (revision 16560) +++ lib/irb.rb (working copy) @@ -299,7 +299,13 @@ def output_value if @context.inspect? - printf @context.return_format, @context.last_value.inspect + value = @context.last_value + if value.respond_to?(:pretty_inspect) + str = value.pretty_inspect.chomp + else + str = value.inspect + end + printf @context.return_format, str else printf @context.return_format, @context.last_value end -- Yusuke ENDOH