5

私はRubyにかなり慣れていないので、IRBを構成しています。私はきれいな印刷が好きです(「pp」が必要です)が、きれいに印刷するために常に pp と入力するのは面倒です。私がやりたいのは、デフォルトできれいに印刷することです。そのため、「myvar」などの var があり、myvar と入力すると、通常の検査の代わりに pretty_inspect が自動的に呼び出されます。どこから始めればよいですか? 理想的には、自動的に呼び出されるメソッドを .irbrc ファイルに追加できます。何か案は?

ありがとう!

4

2 に答える 2

9

irb のデフォルトでオブジェクトをきれいに印刷することは、まさにhirbが行うように作られたものです。これらの 投稿では、hirb がほとんどすべてのものを ASCII テーブルに変換する方法について説明しています。hirb はクラスごとに構成することを意図していますが、すべてのオブジェクトをテーブルとして表示できます。

# put this in ~/.irbrc
require 'rubygems'
require 'hirb'
Hirb.enable :output=>{'Object'=>{:class=>:auto_table, :ancestor=>true}}

# in irb
>> %w{three blind mice}
+-------+
| value |
+-------+
| three |
| blind |
| mice  |
+-------+
3 rows in set

>> 1..5
+-------+
| value |
+-------+
| 1     |
| 2     |
| 3     |
| 4     |
| 5     |
+-------+
5 rows in set

>> {:a=>1, :b=>2}
+---+---+
| 0 | 1 |
+---+---+
| a | 1 |
| b | 2 |
+---+---+
2 rows in set

この関連するオーバーフロー ソリューションには、動作中の hirb の例もあります。

于 2009-11-13T22:38:08.987 に答える
1

irbが起動すると、$HOMEディレクトリから.irbrcが読み取られます。そのファイルを編集(または作成)して追加する場合

require 'pp'

irbを起動するたびにロードされます。

pretty_printメソッドリストへのこの追加もチェックしてください。あなたの.irbrcにそれを投げて、あなたはすることができます:

>> 5.pm
                      %(arg1)         Fixnum
                      &(arg1)         Fixnum
                      *(arg1)         Fixnum
                     **(arg1)         Fixnum
                      +(arg1)         Fixnum
                     +@()             Fixnum(Numeric)
                      -(arg1)         Fixnum
                     -@()             Fixnum
                      /(arg1)         Fixnum
                     <<(arg1)         Fixnum
                     >>(arg1)         Fixnum
                     [](arg1)         Fixnum
                      ^(arg1)         Fixnum
                    abs()             Fixnum
                    ago(arg1, ...)    Fixnum(ActiveSupport::CoreExtensions::Numeric::Time)
               between?(arg1, arg2)   Fixnum(Comparable)
                   byte()             Fixnum(ActiveSupport::CoreExtensions::Numeric::Bytes)
                  bytes()             Fixnum(ActiveSupport::CoreExtensions::Numeric::Bytes

于 2009-11-13T21:06:01.353 に答える