caelum/caelum-stella — pull request #49 by lgfischer (2013-05-01 23:29:08+00:00)
Title: Suporte a números por extenso sem tipo ('dois', 'cinquenta e nove', 'um milhão', etc)

Olá,

A API atual para formatação de números por extenso (https://github.com/caelum/caelum-stella/wiki/Numeros-por-extenso-core) não possui um bom suporte à números sem tipo. Por exemplo, ao modificar a classe br.com.caelum.stella.inwords.FormatoDeInteiro para retornar um String vazio nos diversos métodos, a formatação do número 2 retorna um string com um espaço no final ("dois "). Esse espaço ao final pode causar problemas em alguns casos. Na aplicação onde estou trabalhando, preciso imprimir o número por extenso entre parênteses, sem nenhum tipo (“real”, “inteiro”, “unidade”). O resultado desejado seria o string "(dois)", mas o espaço retornado pela API causava a minha aplicação a exibir o string "(dois )" (com um espaço entre o ‘s’ e o fecha-parenteses), o que é indesejado.

A correção que estou submetendo permite que a implementação da interface br.com.caelum.stella.inwords.FormatoDeExtenso possa retornar null ou um String vazio nos métodos getUnidadeInteiraNoSingular() e getUnidadeInteiraNoPlural(). Quando esses métodos retornarem null ou String vazio, a classe NumericToWordsConverter não irá adicionar o espaço extra ao fim do número por extenso. A correção também permite que o método getCasasDecimais() retorne zero para forçar que o número formatado seja inteiro.

Também adicionei a classe br.com.caelum.stella.inwords.InteiroSemFormato para formatar números sem tipo, e uma respectiva classe de testes (br.com.caelum.stella.inwords. NoFormatNumericToWordsConverterTest).

Abraços