2009-11-13 8 views
5

Je suis assez nouveau pour ruby, et je suis en train de configurer IRB. J'aime bien l'impression (nécessite 'pp'), mais il semble fastidieux de toujours taper pp pour qu'elle l'imprime bien. Ce que je voudrais faire est de le rendre joli par défaut, donc si j'ai un var, disons, 'myvar', et tapez myvar, il appelle automatiquement pretty_inspect au lieu de l'inspect régulier. Où puis-je commencer? Idéalement, je serais en mesure d'ajouter une méthode à mon fichier .irbrc qui est automatiquement appelé. Des idées?Ruby Configurer IRB à Pretty_Inspect par défaut

Merci!

Répondre

9

objets d'impression Jolis par défaut dans RIR est exactement ce que hirb a été fait pour le faire. Theseposts Expliquez comment hirb peut convertir à peu près n'importe quoi dans une table ASCII. Bien que hirb est destiné à être configuré par classe, vous pourriez avoir tous les objets affichés sous forme de tableaux:

# 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 a aussi un exemple de hirb en action.

1

lorsque irb démarre, il lit .irbrc à partir de votre répertoire $ HOME. Si vous modifiez (ou créer) ce fichier et d'ajouter

require 'pp' 

il sera chargé chaque fois que vous démarrez RIR.

Découvrez également les listes de méthodes pretty_print dans les champs this addition. Toss que dans votre .irbrc et vous pouvez faire:

>> 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 

Questions connexes