| Module | ExtensoReal |
| In: |
brnumeros/lib/brnumeros/number_portuguese.rb
|
Escreve o numero por extenso em reais.
Exemplo:
Extenso.por_extenso_em_reais(1) ==> "um real" Extenso.por_extenso_em_reais(100) ==> "cem reais" Extenso.por_extenso_em_reais(100.58) ==> "cem reais e cinquenta e oito centavos"
# File brnumeros/lib/brnumeros/number_portuguese.rb, line 123
123: def ExtensoReal.por_extenso_em_reais(valor)
124: negativo=(valor<0)?" negativo":""
125: negativos=(valor<0)?" negativos":""
126: valor = valor.abs
127: return 'grátis' if valor == 0
128: case valor
129: when Integer
130: extenso = Extenso.por_extenso(valor)
131: if extenso =~ /^(.*)(ão$|ões$)/
132: complemento = 'de '
133: else
134: complemento = ''
135: end
136: %(#{extenso} #{valor <= 1 ? "real#{negativo}": "#{complemento}reais#{negativos}"})
137: when Float
138: real,cents=("%.2f" % valor).split(/\./).map{ |m| m.to_i}
139: valor_cents=Extenso.por_extenso(cents%100)
140: valor_cents+= case cents.to_i%100
141: when 0: ""
142: when 1: " centavo"
143: when 2..99: " centavos"
144: end
145:
146: if real.to_i > 0
147: "#{ExtensoReal.por_extenso_em_reais(real.to_i)}#{cents > 0 ? ' e ' + valor_cents + negativos : real.to_i > 1 ? negativos : negativo }"
148: else
149: if (cents.to_i%100)==1
150: "#{valor_cents}#{negativo}"
151: else
152: "#{valor_cents}#{negativos}"
153: end
154: end
155: else
156: ExtensoReal.por_extenso_em_reais(valor.to_s.strip.gsub(/[^\d]/,'.').to_f)
157: end
158: end