Colorindo o terminal

rainbownize_tela

A maioria das pessoas não se dá conta mas alguns emuladores de terminal em X suportam a exibição de caracteres usando um esquema de cores de 24-bit — o tal do True Color. Existe até existe uma “ferramenta” chamada lolcat que usa este recurso para exibir o conteúdo de um arquivo em belos padrões de arco íris!

Algo tão “útil” que eu resolvi fazer minha própria implementação. 🙂

Continuar lendo

Um pouco mais de Ruby

Lembram da orientação a objetos em Perl? Lembram do método AUTOLOAD e de eu ter comentado sobre ser específico desta linguagem? Pois é, não é assim tão específico quanto a documentação me fez acreditar. Assim como acontece com o unless, o Ruby também tem algo parecido. Chama-se method_missing e funciona mais ou menos assim:

Claro que é possível fazer a linguagem construir dinamicamente o método ausente utilizando define_method mas daí já é enveredar muito nos caminhos da meta programação.

A menos que…

Sempre achei que Perl fosse a única linguagem a implementar a instrução unless.

unless ( scalar @ARGV==0 )
{
  ...
}

Que, na minha opinião, deixa o código mais natural e legível que usar:

if ( scalar @ARGV!=0 )
{
  ...
}

Tanto que sem querer até acabei usando no meu gerador de arquivos IPS. Acontece que hoje eu descobri que Ruby também tem uma implementação do unless:

unless «condição»
  ...
else
  ...
end

E assim como em Perl não existe um “elsif” — “elsunless”? — mas até onde sei, isto aqui:

print "Mais de 10 itens!\n" if ($itens>10);

Só tem mesmo em Perl! 🙂