Ruby Настройка IRB на Pretty_Inspect по умолчанию
-
20-09-2019 - |
Вопрос
Я новичок в Ruby и настраиваю IRB.Мне нравится красивая печать (требуется «pp»), но мне кажется затруднительным всегда набирать pp, чтобы это было красиво напечатано.Что я хотел бы сделать, так это сделать его симпатичным для печати по умолчанию, поэтому, если у меня есть var, скажем, «myvar», и я набираю myvar, он автоматически вызывает Pretty_inspect вместо обычной проверки.С чего мне начать?В идеале я мог бы добавить в свой файл .irbrc метод, который вызывается автоматически.Есть идеи?
Спасибо!
Решение
Симпатичная печать объектов по умолчанию в irb – это именно то, что нужно трава было сделано, чтобы сделать. Эти посты объясните, как 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
Это связанное решение для переполнения также есть пример хирба в действии.
Другие советы
когда 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