Pregunta

Soy bastante nuevo a rubí, y estoy configurando IRB. Me gusta bastante impresión (require 'PP'), pero parece una molestia para escribir siempre pp para que bastante imprimirlo. Lo que me gustaría hacer es que sea bonito estampado de forma predeterminada, por lo que si tengo un var, por ejemplo, 'mivar', y el tipo mivar, llama automáticamente pretty_inspect en lugar de inspeccionar el regular. ¿Por dónde empezar? Idealmente, me gustaría ser capaz de añadir un método a mi archivo .irbrc que se llama automáticamente. ¿Alguna idea?

Gracias!

¿Fue útil?

Solución

Pretty objetos de impresión por defecto en IRB es exactamente lo que hirb se hizo para hacerlo. Estos explican cómo hirb puede convertir casi cualquier cosa en una tabla ASCII . Aunque hirb está destinado a ser configurado por clase, podría tener todos los objetos que se muestran en forma de tablas:

# 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

Esta solución desbordamiento relacionada también tiene un ejemplo de hirb en acción.

Otros consejos

cuando se inicia IRB, se lee .irbrc desde su directorio $ HOME. Si edita (o crear) el archivo y agrega

require 'pp'

se cargará cada vez que inicie IRB.

esta adición a pretty_print método enumera también. Mezcle que en su .irbrc y que puede hacer:

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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top