Author Archives: Eustáquio Rangel (TaQ)

Ruby: Obter o código-fonte de um método

Palavras-chave: Ruby, código fonte, ruby2ruby Podemos obter o código de um método como uma String usando a gem ruby2ruby: require “rubygems” require “ruby2ruby” class Teste def metodo puts “oi!” end end teste = Teste.new metodo = teste.method(:metodo) puts metodo.to_ruby Rodando … Continue reading

Posted in Ruby | 8 Comments

Ruby: Contar valores em um array

Palavras-chave: Ruby, array Para contar a frequência com que os valores de um array se repetem, podemos utilizar: array = %w(morango abacaxi banana morango pera morango abacate banana) p array.inject(Hash.new(0)) {|memo,value| memo[value] += 1; memo} Será retornada uma hash com … Continue reading

Posted in Ruby | Comments Off on Ruby: Contar valores em um array

Ruby: Dividir um array em arrays menores

Palavras-chave: Ruby, array, divide Suponha que você tenha um array de X elementos e precise dividi-lo em arrays com Y elementos cada. A flexibilidade de Ruby nos permite definir operadores novos para as classes, então vamos criar um operador de … Continue reading

Posted in Ruby | 8 Comments

Ruby: Obter o nome do método atual

Palavras-chave: Ruby, método, nome, corrente, method, current Se você quiser saber o nome do método onde se encontra, terá que criar um outro método que quando chamado descubra o nome do método que o chamou. Assim: class MinhaClasse def self.nome_do_metodo … Continue reading

Posted in Ruby | Comments Off on Ruby: Obter o nome do método atual

Ruby: Obter o valor de um Fixnum pelo seu object_id

Palavras-chave: Ruby, Fixnum, object_id Uma jogada legal com objetos do tipo Fixnum em Ruby é descobrir o valor do objeto através do seu object_id, fazendo um simples deslocamento binário: n = 123456 n.object_id >> 1 => 123456 Veja outra dica … Continue reading

Posted in Ruby | Comments Off on Ruby: Obter o valor de um Fixnum pelo seu object_id

Ruby: Revelar objetos Fixnum pelo seu object_id

Palavras-chave: Ruby, Fixnum, object_id Em Ruby podemos facilmente verificar se um objeto é da classe Fixnum através do seu object_id (os números podem variar): s = “oi” s.object_id => -605527578 n = 123456 n.object_id => 246913 s.object_id & 0x1 => … Continue reading

Posted in Ruby | 2 Comments

Ruby: Converter array em hash

Palavras-chave: ruby, array, hash, splat Podemos converter facilmente um array com um número de elementos pares para uma hash da seguinte maneira: array = %w(um 1 dois 2 tres 3) hash = Hash[*array] p hash Executando o código: {“tres”=>”3”, “um”=>”1”, … Continue reading

Posted in Ruby | Comments Off on Ruby: Converter array em hash

Ruby: Criando hashes com valores default

Palavras-chave: Ruby, hash, default, blocos Em Ruby podemos permitir que um valor default seja retornado na tentativa de acesso à um elemento que não existe ainda em uma hash, dessa maneira: hash = Hash.new(0) puts hash[“abobora”] 0 puts hash[“batata”] 0 … Continue reading

Posted in Ruby | Comments Off on Ruby: Criando hashes com valores default

Ruby: Executando um bloco no contexto do objeto

Palavras-chave: ruby, bloco, objeto, contexto Um meio de executar um bloco dentro do contexto de um determinado objeto é adicionar um método direto no módulo Kernel do Ruby. Ele aceitará ser chamado diretamente como método do objeto ou passando o … Continue reading

Posted in Ruby | 2 Comments

Ruby: Gerando um array de chars a partir de uma string

Palavras-chave: Ruby, array, caracteres, byte Para gerar um array com todos os caracteres de uma string em Ruby, nada mais simples que: irb(main):001:0> “TaQ”.scan(/./) => [“T”, “a”, “Q”] Se quisermos um array com o código do byte, podemos utilizar: irb(main):002:0> … Continue reading

Posted in Ruby | 3 Comments

Ruby: Conversão binária em Ruby

Palavras-chave: Ruby, conversão, binária É muito fácil fazer conversões de uma string binária para um número e vice-versa em Ruby: irb(main):001:0> i = “11111111”.to_i(2) => 255 irb(main):002:0> i.to_s(2) => “11111111” Os métodos to_i e to_s, com a base desejada (2), … Continue reading

Posted in Ruby | Comments Off on Ruby: Conversão binária em Ruby

Ruby: Concatenação eficiente de strings

Palavras-chave: strings, otimização, concatenação Para fazer uma concatenação de strings sem perder a performance do seu programa em Ruby, ao invés de fazer s = “” puts ObjectSpace.each_object(String){} 1000.times {s += “x”} puts ObjectSpace.each_object(String){} puts s.length faça s = “” … Continue reading

Posted in Ruby | 1 Comment

Ruby: Escapar caracteres especiais em HTML (entities)

Palavras-chave: HTML, escape, escapar, cgi Para “escapar” e “desescapar” caracteres especiais HTML: require “cgi” s = CGI.escapeHTML(“a > x && y < 0”) puts s puts CGI.unescapeHTML(s) Rodando: a &gt; x &amp;&amp; y &lt; 0 a > x && y … Continue reading

Posted in Ruby | Comments Off on Ruby: Escapar caracteres especiais em HTML (entities)

Ruby: Criando atributos no runtime

Palavras-chave: instance, object, objeto, eval, runtime, variable, variável, atributo Vamos supor que você deseja criar atributos para o seu objeto no runtime, lendo, por exemplo, as propriedades do objeto em um arquivo. Vamos testar com um hash simulando o arquivo: … Continue reading

Posted in Ruby | 3 Comments