Imagine que, por algum motivo, você precise formatar a duração de uma música de milisegundos para "0:00". Com o Ruby é moleza:

module Duration
  def to_duration
    total_secs = self / 1000.0
    mins = (total_secs / 60.0).to_i
    secs = (total_secs - mins*60).to_i
    "%d:%02d" % [mins, secs]
  end
end 
 
class Fixnum; include Duration; end
class Bignum; include Duration; end
class Float; include Duration; end
 
puts (68*1000).to_duration  # 1:08
puts (120*1000).to_duration # 2:00
puts (235*1000).to_duration # 3:55

Só não me pergunte para que precisei disso! :)

Comentários #

#1 Walter Cruz disse:
27 Jul 07, 10:15AM

Para que você precisou disso?

#2 Nando Vieira disse:
27 Jul 07, 12:33PM

Estou fazendo um script para me avisar quando sair novos albuns de artistas que gosto. E vou exibir a lista de músicas, mas o MusicBrainz retorna a duração como milisegundos, então... :)

#3 Daniel Luz disse:
28 Jul 07, 01:00AM

Não entendi uma coisa… por que você fez todas as contas em float pra depois converter manualmente pra int?

#4 Sylvestre Mergulhao disse:
29 Jul 07, 09:03PM

Você inclui manualmente nas classes fixnum, bignum e float. Acho poderia incluir diretamente na numeric:

class Numeric; include Duration; end

#5 Nando Vieira disse:
30 Jul 07, 11:48AM

Sylvestre: melhor! :)

Deixe um comentário





Não é aceito código HTML: adicione-o no pastie.org ou paste.milk-it.net e poste apenas o link.

Se este é seu primeiro comentário, ele terá que ser aprovado antes de ser exibido.

jQuery: Dominando o framework

Você quer aprender a usar jQuery de verdade? Então chegou a hora! Neste workshop você verá como funciona este framework de JavaScript, entendendo todos os aspectos que fazem do jQuery uma das melhores ferramentas para desenvolvimento de interfaces.

Saiba mais Fechar

Conheça também o HOWTO