Pergunta

Sou bastante novo no Ruby e estou configurando o IRB. Eu gosto de impressão bonita (requer 'PP'), mas parece um aborrecimento sempre digitar PP para que ele imprimi -lo. O que eu gostaria de fazer é torná -lo bastante impresso por padrão; portanto, se eu tiver um VAR, digamos, 'myvar' e digite myvar, ele chama automaticamente Pretty_inspect em vez do inspecivo regular. Por onde começo? Idealmente, eu seria capaz de adicionar um método ao meu arquivo .irbrc que é chamado automaticamente. Alguma ideia?

Obrigado!

Foi útil?

Solução

Pretty Printing Objects por padrão no IRB é exatamente o que hirb foi feito para fazer. Esses Postagens Explique como o HIRB pode converter praticamente qualquer coisa em uma tabela ASCII. Embora o HIRB seja configurado por classe, você pode ter todos os objetos exibidos como tabelas:

# 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 solução de transbordamento relacionada Também tem um exemplo de HIRB em ação.

Outras dicas

Quando o IRB começa, ele lê .Irbrc a partir do seu diretório inicial. Se você editar (ou criar) esse arquivo e adicionar

require 'pp'

Ele será carregado cada vez que você iniciar o IRB.

Verificação de saída esta adição para o método pretty_print listas também. Jogue isso no seu .irbrc e você pode fazer:

>> 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 em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top