2009-11-13 11 views
5

Jestem całkiem nowy w Ruby i konfiguruję IRB. Lubię ładny druk (wymaga "pp"), ale wydaje mi się, że kłopot polega na tym, aby zawsze pisać pp, aby go wydrukować. Chciałem, aby domyślnie był to ładny wydruk, więc jeśli mam var, powiedzmy "myvar" i wpisz myvar, automatycznie wywołuje on pretty_inspect zamiast zwykłego inspect. Gdzie mogę zacząć? Idealnie byłoby móc dodać metodę do mojego pliku .irbrc, który jest automatycznie wywoływany. Jakieś pomysły?Ruby Konfiguruj IRB na Pretty_Inspect domyślnie

Dzięki!

Odpowiedz

9

Pretty obiektów drukowania domyślnie w IRB jest dokładnie to, co hirb powstał zrobić. Theseposts wyjaśnić, w jaki sposób hirb może przekonwertować prawie wszystko na tabelę ascii. Chociaż hirb ma być skonfigurowany w klasie, można mieć wszystkie obiekty wyświetlane w tabelach:

# 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 

This related overflow solution ma również przykładowe hirb w akcji.

1

po uruchomieniu irb odczytuje .irbrc z katalogu $ HOME. Jeśli edytujesz (lub utworzysz) ten plik i dodasz go, będzie on ładowany przy każdym uruchomieniu irb.

Sprawdź także listę metod pretty_print na this addition. Toss że w .irbrc i można zrobić:

>> 5.pm 
         %(arg1)   Fixnum 
         &(arg1)   Fixnum 
         *(arg1)   Fixnum 
        **(arg1)   Fixnum 
         +(arg1)   Fixnum 
        [email protected]()    Fixnum(Numeric) 
         -(arg1)   Fixnum 
        [email protected]()    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 

Powiązane problemy