goncin@wordpress.com:~$ _

Linux, programação e toda sorte de nerdices

Arquivos de tags: GExtenso

Números por extenso agora também em Ruby!

Há alguns meses, publiquei no GitHub uma classe PHP chamada GExtenso, que gera o extenso de números e moedas. O feedback foi bastante positivo: o pessoal começou a usar a minha classe como plugin para o CodeIgniter.

Desde o início, sempre tive a intenção de implementar o GExtenso em outras linguagens. Eu vinha estudando Ruby meio de brincadeira, mas para deixar a coisa mais séria resolvi que a primeira tradução seria para ela.

Tal qual a implementação original, em PHP, a versão em Ruby utilizou:

  • métodos estáticos, implementando o padrão de projeto (design pattern) SINGLETON;
  • chamadas recursivas a métodos, minimizando repetições e mantendo o código enxuto; e
  • tratamento de erros por intermédio de exceções.

ATENÇÃO: Este é o meu primeiro trabalho na linguagem Ruby. A lógica foi originalmente desenvolvida em PHP; portanto, o estilo do código pode não agradar programadores Ruby experientes. Estou aberto a críticas construtivas e sugestões, para melhorar meu conhecimento na linguagem.

Exemplos de uso

Para obter o extenso de um número, utilize GExtenso.numero.

require 'GExtenso.rb'

puts GExtenso.numero(832); # oitocentos e trinta e dois
puts GExtenso.numero(832, GExtenso::GENERO_FEM) # oitocentas e trinta e duas

Para obter o extenso de um valor monetário, utilize GExtenso.moeda.

require 'GExtenso.rb'

# IMPORTANTE: veja nota sobre o parâmetro 'valor' na documentação do método!
puts GExtenso.moeda(15402) # cento e cinquenta e quatro reais e dois centavos
puts GExtenso.moeda(47)   # quarenta e sete centavos
puts GExtenso.moeda(357082, 2, ['peseta', 'pesetas', GExtenso::GENERO_FEM], ['cêntimo', 'cêntimos', GExtenso::GENERO_MASC])
# três mil, quinhentas e setenta pesetas e oitenta e dois cêntimos

Download via github: http://github.com/goncin/GExtenso

Anúncios

GExtenso: classe para geração de números por extenso em PHP

Post publicado originalmente em http://devfranca.ning.com/profiles/blogs/gextenso-classe-para-geracao em 2 de março de 2010.

GExtenso é uma classe que gera a representação por extenso de um número ou valor monetário.

Sua implementação foi feita como prova de conceito, utilizando:

  • Métodos estáticos, implementando o padrão de projeto (design pattern) SINGLETON;
  • Chamadas recursivas a métodos, minimizando repetições e mantendo o código enxuto;
  • Uso de pseudoconstantes (‘private static’) diante das limitações das constantes de classe;
  • Tratamento de erros por intermédio de exceções; e
  • Utilização do phpDocumentor para documentação do código fonte e geração automática de documentação externa.

EXEMPLOS DE USO

Para obter o extenso de um número, utilize GExtenso::numero.

echo GExtenso::numero(832); // oitocentos e trinta e dois
echo GExtenso::numero(832, GExtenso::GENERO_FEM); // oitocentas e trinta e duas

Para obter o extenso de um valor monetário, utilize GExtenso::moeda.

// IMPORTANTE: veja nota sobre o parâmetro 'valor' na documentação do método!
echo GExtenso::moeda(15402); // cento e cinquenta e quatro reais e dois centavos
echo GExtenso::moeda(47); // quarenta e sete centavos
echo GExtenso::moeda(357082, 2,
  array('peseta', 'pesetas', GExtenso::GENERO_FEM),
  array('cêntimo', 'cêntimos', GExtenso::GENERO_MASC)
); // três mil, quinhentas e setenta pesetas e oitenta e dois cêntimos

Download via github: http://github.com/goncin/GExtenso

%d blogueiros gostam disto: