Module: Extenso
- Included in:
- ExtensoReal
- Defined in:
- lib/brnumeros/number_portuguese.rb
Constant Summary collapse
- @@unidade =
{ 0 => "zero", 1 => "um", 2 => "dois", 3 => "três", 4 => "quatro", 5 => "cinco", 6 => "seis", 7 => "sete", 8 => "oito", 9 => "nove" }
- @@dezena =
{ 10 => "dez", 11 => "onze", 12 => "doze", 13 => "treze", 14 => "quatorze", 15 => "quinze", 16 => "dezesseis", 17 => "dezessete", 18 => "dezoito", 19 => "dezenove", 20 => "vinte", 30 => "trinta", 40 => "quarenta", 50 => "cinquenta", 60 => "sessenta", 70 => "setenta", 80 => "oitenta", 90 => "noventa" }
- @@centena =
{100 => "cento", 200 => "duzentos", 300 => "trezentos", 400 => "quatrocentos", 500 => "quinhentos", 600 => "seiscentos", 700 => "setecentos", 800 => "oitocentos", 900 => "novecentos" }
Class Method Summary collapse
-
.por_extenso(numero) ⇒ Object
Escreve o numero por extenso.
Instance Method Summary collapse
-
#por_extenso ⇒ Object
Escreve o numero por extenso.
-
#to_extenso ⇒ Object
Escreve o numero por extenso.
Class Method Details
.por_extenso(numero) ⇒ Object
Escreve o numero por extenso.
Exemplo:
Extenso.por_extenso(1) ==> "um"
Extenso.por_extenso(100) ==> "cem"
Extenso.por_extenso(158) ==> "cento e cinquenta e oito"
63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 |
# File 'lib/brnumeros/number_portuguese.rb', line 63 def Extenso.por_extenso(numero) negativo=(numero<0)? "menos " : "" n=numero.to_i.abs return case n when 0..9 then negativo + @@unidade[n].to_s when 10..19 then negativo + @@dezena[n].to_s when 20..99 v=n % 10 if v== 0 negativo + @@dezena[n].to_s else "#{negativo}#{@@dezena[n-v]} e #{por_extenso(v)}" end when 100 negativo+"cem" when 101..999 v=n % 100 if v== 0 negativo + @@centena[n].to_s else "#{negativo}#{@@centena[n-v]} e #{por_extenso(v)}" end when 1000..999999 m,c=n/1000,n%1000 %(#{negativo}#{por_extenso(m)} mil#{c > 0 ? " e #{por_extenso(c)}":''}) when 1_000_000..999_999_999 mi,m=n/1_000_000,n%1_000_000 %(#{negativo}#{por_extenso(mi)} milh#{mi > 1 ? 'ões':'ão'}#{m > 0 ? " e #{por_extenso(m)}" : ''}) when 1_000_000_000..999_999_999_999 bi,mi=n/1_000_000_000,n%1_000_000_000 %(#{negativo}#{por_extenso(bi)} bilh#{bi > 1 ? 'ões':'ão'}#{mi > 0 ? " e #{por_extenso(mi)}" : ''}) when 1_000_000_000_000..999_999_999_999_999 tri,bi=n/1_000_000_000_000,n%1_000_000_000_000 %(#{negativo}#{por_extenso(tri)} trilh#{tri > 1 ? 'ões':'ão'}#{bi > 0 ? " e #{por_extenso(bi)}" : ''}) else raise "Valor excede o permitido: #{n}" end end |
Instance Method Details
#por_extenso ⇒ Object
Escreve o numero por extenso.
Exemplo:
1.por_extenso ==> 'um'
100.por_extenso ==> 'cem'
158.por_extenso ==> 'cento e cinquenta e oito'
50 51 52 |
# File 'lib/brnumeros/number_portuguese.rb', line 50 def por_extenso Extenso.por_extenso(self) end |
#to_extenso ⇒ Object
Escreve o numero por extenso.
Exemplo:
1.por_extenso ==> 'um'
100.por_extenso ==> 'cem'
158.por_extenso ==> 'cento e cinquenta e oito'
Alias para o metodo por_extenso
55 56 57 |
# File 'lib/brnumeros/number_portuguese.rb', line 55 def por_extenso Extenso.por_extenso(self) end |