|
View:
New views
8 Messages
—
Rating Filter:
Alert me
|
|
|
[ruby-dev:38695] [feature:trunk] let irb use pretty_inspect if possible遠藤です。
irb メンテナの石塚さん: pretty_inspect が使用可能なときは、irb の結果出力にそれを使うのは どうでしょうか。 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"] 本当の目的は「Object#p と同様に pp にも引数を返してほしい」という 一年前の話 ([ruby-dev:34830] 、[ruby-dev:34833]) の続きで、田中さん からは「irb が変われば pp も変えてよい」という条件付採録を (さっき) 貰いました。 よろしくお願いします。 Index: lib/irb.rb =================================================================== --- lib/irb.rb (revision 23808) +++ 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 <mame@...> |
|
|
[ruby-dev:38696] Re: [feature:trunk] let irb use pretty_inspect if possibleけいじゅ@いしつかです.
In [ruby-dev:38695] the message: "[ruby-dev:38695] [feature:trunk] let irb use pretty_inspect if possible", on Jun/21 23:06(JST) Yusuke ENDOH writes: >遠藤です。 >irb メンテナの石塚さん: >pretty_inspect が使用可能なときは、irb の結果出力にそれを使うのは >どうでしょうか。 うーん. require してあると, irbの振る舞いが変わるのはどうかと思います が, irb で pp な出力をするモードがあっても良いよなーとは思っていました. コマンドラインオプションもしくは, .irbrc での IRB.CONFの指定で pp な出 力になるというのでも良いですよね? irb --inspect pp で pp な出力をするかんじです. >本当の目的は「Object#p と同様に pp にも引数を返してほしい」という >一年前の話 ([ruby-dev:34830] 、[ruby-dev:34833]) の続きで、田中さん >からは「irb が変われば pp も変えてよい」という条件付採録を (さっき) >貰いました。 あー. なるほど, irb(main):006:0> pp 1 1 => nil で 引数を返すようになると, 2重に表示してしまうからですね. __ ---------------------------------------------------->> 石塚 圭樹 <<--- ---------------------------------->> e-mail: keiju@... <<--- |
|
|
[ruby-dev:38703] Re: [feature:trunk] let irb use pretty_inspect if possible遠藤です。
2009/06/22 0:43 に 石塚圭樹<keiju@...> さんは書きました: > うーん. require してあると, irbの振る舞いが変わるのはどうかと思います > が, irb で pp な出力をするモードがあっても良いよなーとは思っていました. はい。 > コマンドラインオプションもしくは, .irbrc での IRB.CONFの指定で pp な出 > 力になるというのでも良いですよね? > > irb --inspect pp > > で pp な出力をするかんじです. たぶんいいと思います。ただ、どうせ pp に特化するのなら、--pp などに したら短くてうれしいかもしれないです。こんなオプションはどうでしょうか。 --inspect-method foo: 結果出力の際、inspect の代わりに foo を用いる --pp: -rpp --inspect-method=pretty_inspect と同じ効果 この方針のパッチを作ってみました。 irb の好みや作法にあわなかったらすみません。 Index: lib/irb/context.rb =================================================================== --- lib/irb/context.rb (revision 23826) +++ lib/irb/context.rb (working copy) @@ -35,6 +35,7 @@ @use_readline = IRB.conf[:USE_READLINE] @inspect_mode = IRB.conf[:INSPECT_MODE] + @inspect_method = IRB.conf[:INSPECT_METHOD] self.math_mode = IRB.conf[:MATH_MODE] if IRB.conf[:MATH_MODE] self.use_tracer = IRB.conf[:USE_TRACER] if IRB.conf[:USE_TRACER] @@ -116,6 +117,7 @@ attr_reader :use_readline attr_reader :inspect_mode + attr_reader :inspect_method attr_reader :prompt_mode attr_accessor :prompt_i Index: lib/irb/lc/ja/help-message =================================================================== --- lib/irb/lc/ja/help-message (revision 23826) +++ lib/irb/lc/ja/help-message (working copy) @@ -18,6 +18,9 @@ -E enc ruby -E と同じ. --inspect 結果出力にinspectを用いる(bcモード以外はデフォルト). --noinspect 結果出力にinspectを用いない. + --inspect-method method-name + 結果出力の際, inspectの代わりにmethod-nameを用いる. + --pp -rpp --inspect-method=pretty_inspect と同じ. --readline readlineライブラリを利用する. --noreadline readlineライブラリを利用しない. --prompt prompt-mode/--prompt-mode prompt-mode Index: lib/irb/lc/help-message =================================================================== --- lib/irb/lc/help-message (revision 23826) +++ lib/irb/lc/help-message (working copy) @@ -19,6 +19,9 @@ -E enc Same as `ruby -E` --inspect Use `inspect' for output (default except for bc mode) --noinspect Don't use inspect for output + --inspect-method method-name + Use method-name instead of `inspect' for output + --pp Identical to -rpp --inspect-method=pretty_inspect --readline Use Readline extension module --noreadline Don't use Readline extension module --prompt prompt-mode Index: lib/irb/init.rb =================================================================== --- lib/irb/init.rb (revision 23826) +++ lib/irb/init.rb (working copy) @@ -45,6 +45,7 @@ @CONF[:MATH_MODE] = false @CONF[:USE_READLINE] = false unless defined?(ReadlineInputMethod) @CONF[:INSPECT_MODE] = nil + @CONF[:INSPECT_METHOD] = "inspect" @CONF[:USE_TRACER] = false @CONF[:USE_LOADER] = false @CONF[:IGNORE_SIGINT] = true @@ -148,6 +149,11 @@ @CONF[:INSPECT_MODE] = true when "--noinspect" @CONF[:INSPECT_MODE] = false + when /^--inspect-method(?:=(.+))?/ + @CONF[:INSPECT_METHOD] = $1 || ARGV.shift + when "--pp" + @CONF[:LOAD_MODULES].push "pp" + @CONF[:INSPECT_METHOD] = "pretty_inspect" when "--readline" @CONF[:USE_READLINE] = true when "--noreadline" Index: lib/irb.rb =================================================================== --- lib/irb.rb (revision 23826) +++ lib/irb.rb (working copy) @@ -299,7 +299,8 @@ def output_value if @context.inspect? - printf @context.return_format, @context.last_value.inspect + str = @context.last_value.send(@context.inspect_method) + printf @context.return_format, str else printf @context.return_format, @context.last_value end -- Yusuke ENDOH <mame@...> |
|
|
[ruby-dev:38706] Re: [feature:trunk] let irb use pretty_inspect if possibleけいじゅ@いしつかです.
In [ruby-dev:38703] the message: "[ruby-dev:38703] Re: [feature:trunk] let irb use pretty_inspect if possible", on Jun/23 05:47(JST) Yusuke ENDOH writes: >遠藤です。 >> irb --inspect pp >> で pp な出力をするかんじです. >たぶんいいと思います。ただ、どうせ pp に特化するのなら、--pp などに >したら短くてうれしいかもしれないです。こんなオプションはどうでしょうか。 > > --inspect-method foo: 結果出力の際、inspect の代わりに foo を用いる > --pp: -rpp --inspect-method=pretty_inspect と同じ効果 > >この方針のパッチを作ってみました。 >irb の好みや作法にあわなかったらすみません。 わざわざパッチを作ってくださりありがとうございます. 実はすでにこちらでも作っていて, --inspect pp 以外にもブロックが指定で きて: irb -r yaml --inspect "{|v| YAML.dump(v)}" なんて指定もできるようにしました. # まあ, 使う人はいないと思いますが(^^;; pp(pretty_print)はともかく, オブジェクトに対する直接のメソッドは将来的 にもあまり出てきそうもない気がします. あと, コマンド引数に関してですが, ppを非常に良く使うんだったら, .irbrc に IRB.conf[:INSPECT_MODE] = :pp としていただければコマンド引数で渡す必要はなくなりますので, 短いのにあ まりこだわらなくても良いのではないかと思いますが? いかがでしょう? __ ---------------------------------------------------->> 石塚 圭樹 <<--- ---------------------------------->> e-mail: keiju@... <<--- |
|
|
[ruby-dev:38707] Re: [feature:trunk] let irb use pretty_inspect if possible遠藤です。
2009/06/24 0:25 に 石塚圭樹<keiju@...> さんは書きました: > 実はすでにこちらでも作っていて, --inspect pp 以外にもブロックが指定で > きて: > > irb -r yaml --inspect "{|v| YAML.dump(v)}" > > なんて指定もできるようにしました. おおすばらしい。 > pp(pretty_print)はともかく, オブジェクトに対する直接のメソッドは将来的 > にもあまり出てきそうもない気がします. 確かにそうですね。 > あと, コマンド引数に関してですが, ppを非常に良く使うんだったら, .irbrc > に > > IRB.conf[:INSPECT_MODE] = :pp > > としていただければコマンド引数で渡す必要はなくなりますので, 短いのにあ > まりこだわらなくても良いのではないかと思いますが? 個人的には設定は極力しない派なので、短い方が嬉しいなーとは思います。が、 irb がカスタマイズを推奨している雰囲気は感じ取っていますのでそれでいいと 思います。 「設定はしたくないけど pp は使いたい、余計な表示はしてほしくない」という 私のようにわがままな人は irb(main):001:0> pp obj; nil としてくれ、ということで。今でも ary.each {|x| ...; p x } とかするときは 最後に ; nil などをつけることが多いですしね。 -- Yusuke ENDOH <mame@...> |
|
|
[ruby-dev:38744] Re: [feature:trunk] let irb use pretty_inspect if possibleけいじゅ@いしつかです.
trunkにリリースしました. irb --inspect pp で pp を使うようになります. あと, おまけで, yaml と marshal もつけて あります(^^;;; 使い方. * コマンドライン % irb --inspect [raw|p|pp|yaml|marshal|...] または, ブロック指定で % irb -r yaml --inspect "{|v| YAML.dump(v)}" * 実行中での変更 irb(main):001:0> conf.inspect_mode = :yaml * .irbrc でデフォルトの振る舞いを変える IRB.conf[:INSPECT_MODE] = [:raw|:p|:pp|:yaml|:marshal|...] * ユーザー定義モード IRB::INSPECTORS.def_inspector(mode_names, init_proc, &inspect_block) 例) .irbrcで IRB::INSPECTORS.def_inspector([:test]){|v| v.to_s*2} とし, % irb --inspect test で実行する. こんな感じになりました. In [ruby-dev:38707] the message: "[ruby-dev:38707] Re: [feature:trunk] let irb use pretty_inspect if possible", on Jun/24 01:08(JST) Yusuke ENDOH writes: >遠藤です。 > >2009/06/24 0:25 に 石塚圭樹<keiju@...> さんは書きました: >> 実はすでにこちらでも作っていて, --inspect pp 以外にもブロックが指定で >> きて: >> >> irb -r yaml --inspect "{|v| YAML.dump(v)}" >> >> なんて指定もできるようにしました. > >おおすばらしい。 > > >> pp(pretty_print)はともかく, オブジェクトに対する直接のメソッドは将来的 >> にもあまり出てきそうもない気がします. > >確かにそうですね。 > > >> あと, コマンド引数に関してですが, ppを非常に良く使うんだったら, .irbrc >> に >> >> IRB.conf[:INSPECT_MODE] = :pp >> >> としていただければコマンド引数で渡す必要はなくなりますので, 短いのにあ >> まりこだわらなくても良いのではないかと思いますが? > >個人的には設定は極力しない派なので、短い方が嬉しいなーとは思います。が、 >irb がカスタマイズを推奨している雰囲気は感じ取っていますのでそれでいいと >思います。 > >「設定はしたくないけど pp は使いたい、余計な表示はしてほしくない」という >私のようにわがままな人は > > irb(main):001:0> pp obj; nil > >としてくれ、ということで。今でも ary.each {|x| ...; p x } とかするときは >最後に ; nil などをつけることが多いですしね。 > >-- >Yusuke ENDOH <mame@...> > > __ ---------------------------------------------------->> 石塚 圭樹 <<--- ---------------------------------->> e-mail: keiju@... <<--- |
|
|
[ruby-dev:38746] Re: [feature:trunk] let irb use pretty_inspect if possibleまつもと ゆきひろです
In message "Re: [ruby-dev:38744] Re: [feature:trunk] let irb use pretty_inspect if possible" on Tue, 7 Jul 2009 22:42:04 +0900, keiju@... (石塚圭樹) writes: |trunkにリリースしました. | |irb --inspect pp | |で pp を使うようになります. あと, おまけで, yaml と marshal もつけて |あります(^^;;; irb/inspector.rbがチェックインされていないような。 |
|
|
[ruby-dev:38751] Re: [feature:trunk] let irb use pretty_inspect if possibleけいじゅ@いしつかです.
In [ruby-dev:38746] the message: "[ruby-dev:38746] Re: [feature:trunk] let irb use pretty_inspect if possible", on Jul/08 13:18(JST) Yukihiro Matsumoto writes: >まつもと ゆきひろです >|trunkにリリースしました. >| >|irb --inspect pp >| >|で pp を使うようになります. あと, おまけで, yaml と marshal もつけて >|あります(^^;;; > >irb/inspector.rbがチェックインされていないような。 申し訳ない. チェックインしました. __ ---------------------------------------------------->> 石塚 圭樹 <<--- ---------------------------------->> e-mail: keiju@... <<--- |
| Free embeddable forum powered by Nabble | Forum Help |