Ruby Настройте IRB на Pretty_Inspect по умолчанию - PullRequest
5 голосов
/ 13 ноября 2009

Я довольно новичок в ruby ​​и настраиваю IRB. Мне нравится симпатичная печать (требуется 'pp'), но кажется, что всегда нужно набирать pp, чтобы она красиво печаталась. То, что я хотел бы сделать, это сделать его довольно печатным по умолчанию, поэтому, если у меня есть var, скажем, 'myvar', и набираю myvar, он автоматически вызывает pretty_inspect вместо обычного inspect. С чего мне начать? В идеале я бы мог добавить метод в мой файл .irbrc, который вызывается автоматически. Есть идеи?

Спасибо!

Ответы [ 2 ]

9 голосов
/ 14 ноября 2009

Хорошая печать объектов по умолчанию в 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 в действии.

1 голос
/ 14 ноября 2009

при запуске irb читает .irbrc из вашего каталога $ HOME. Если вы редактируете (или создаете) этот файл и добавляете

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

...