O modo Ruby de fazer
19/02/07
Ruby é uma linguagem e tanto! Vou mostrar abaixo algumas coisas que considero maravilhosas e uma vez que você se acostuma, sente falta em todas as outras linguagens que você trabalha!
Adicionar itens em um array
items = ['apple', 'windows', 'linux']
# modo antigo
items.push('unix')
# modo ruby
items << 'unix'
Concatenando strings*
phrase = 'I do not like '
# modo antigo
phrase += 'Windows'
# modo ruby
phrase << 'Windows'
Verificando se um item existe no array e se não existir, adiciona
items = ['apple', 'windows', 'linux']
# modo antigo
if not items.include?('unix')
items << 'unix'
end
# modo ruby
items |= ['unix']
Atribuindo valores de um array a variáveis
items = ['apple', 'windows', 'linux']
# modo antigo
a = items[0]
b = items[1]
# modo ruby
a, b = *items
Atribuindo um valor a uma variável somente se ela não tiver nenhum valor pré-definido
a = nil
# modo antigo
if not a
a = 'linux'
end
# modo ruby
a = 'linux' unless a
#modo ruby melhor ainda
a ||= 'linux'
*Antes que me perguntem qual a vantagem de se utilizar << ao invés de += é que você padroniza o método "adicionar a" para arrays e strings, além de arquivos (se anda como um pato e faz o som de um pato, deve ser um pato).
- Permalink
- Trackback
- Comentários (4)
- Ao som de: Green Day – Whatsername
Image Replacement em elementos input
11/02/07
Neste post, expliquei como eu estava querendo aplicar um fundo a elemento button. Eu e o Rapha aqui do UOL descobrimos ontem uma maneira de fazer isso no elemento input.
Olha que fácil. No markup:
<input type="button" value="Um botão" />
E o CSS:
input {
border: none;
background: url(http://m.simplesideias.com.br/document-save-as.png) no-repeat;
content: ""; /* opera */
display: inline-block; /* opera */
height: 32px;
line-height: 0; /* ie */
text-indent: -9999px;
width: 32px;
}
O melhor de tudo é que funciona até no Opera, coisa que não tinha conseguido fazer antes! ;)
Veja o resultado nos navegadores IE6 Standalone, IE7, Firefox 2 e Opera 9:


- Permalink
- Trackback
- Comentários (22)
- Ao som de: Ramones – Danny Says
Suprimindo avisos no Ruby
17/01/07
Se você seguiu o post Localização de mensagens de erro e datas no Rails, deve ter percebido que toda vez que você inicia o WEBRick, mensagens avisando que você está sobrescrevendo constantes aparecem. Isso acontece por que o Ruby permite que você redefina constantes, diferente de outras linguagens, mas avisa antes.
=> Booting WEBrick...
./script/../config/../lib/overrides.rb:5: warning: already initialized constant MONTHNAMES
./script/../config/../lib/overrides.rb:6: warning: already initialized constant DAYNAMES
./script/../config/../lib/overrides.rb:7: warning: already initialized constant ABBR_MONTHNAMES
./script/../config/../lib/overrides.rb:8: warning: already initialized constant ABBR_DAYNAMES
=> Rails application started on http://0.0.0.0:3000
Você pode desabilitar essas mensagens somente no trecho onde você redefine suas contantes com a variável global $VERBOSE.
old_verbose = $VERBOSE
$VERBOSE = nil
Date::MONTHNAMES = [nil] + %w(Janeiro Fevereiro Março Abril Maio Junho Julho Agosto Setembro Outubro Novembro Dezembro)
Date::DAYNAMES = %w(Domingo Segunda-Feira Terça-Feira Quarta-Feira Quinta-Feira Sexta-Feira Sábado)
Date::ABBR_MONTHNAMES = [nil] + %w(Jan Fev Mar Abr Mai Jun Jul Aug Set Out Nov Dez)
Date::ABBR_DAYNAMES = %w(Dom Seg Ter Qua Qui Sex Sáb)
$VERBOSE = old_verbose - Permalink
- Trackback
- Comentários (3)
- Ao som de: Letters to Cleo – Disappear
