Domanda

Sono abbastanza nuovo a Ruby, e sto configurando IRB. Mi piace abbastanza di stampa (require 'PP'), ma sembra una seccatura di digitare sempre pp per la sua bella stamparlo. Quello che mi piacerebbe fare è rendere abbastanza di stampa di default, quindi se ho un var, diciamo, 'myvar', e il tipo di myvar, chiama automaticamente pretty_inspect al posto del normale ispezionare. Dove posso iniziare? Idealmente, vorrei essere in grado di aggiungere un metodo per il mio file .irbrc che viene chiamato automaticamente. Tutte le idee?

Grazie!

È stato utile?

Soluzione

oggetti di stampa graziosi per impostazione predefinita in IRB è esattamente quello che hirb è stato fatto per fare. Questi messaggi spiegano come hirb in grado di convertire praticamente qualsiasi cosa in una tabella ASCII . Anche se hirb è destinata ad essere configurato per classe, si potrebbe avere tutti gli oggetti visualizzati come tabelle:

# 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

Questa soluzione di overflow relativo anche ha un esempio di hirb in azione.

Altri suggerimenti

quando si avvia IRB, si legge .irbrc dalla directory $ HOME. Se si modifica (o creare) quel file e aggiungere

require 'pp'

verrà caricato ogni volta che si avvia IRB.

questa aggiunta per pretty_print metodo elenca anche. Toss che nel vostro .irbrc e si può fare:

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top