Module: ExtensoReal

Includes:
Extenso
Defined in:
lib/brnumeros/number_portuguese.rb

Class Method Summary collapse

Instance Method Summary collapse

Methods included from Extenso

#por_extenso, por_extenso, #to_extenso

Class Method Details

.por_extenso_em_reais(valor) ⇒ Object

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"


124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
# File 'lib/brnumeros/number_portuguese.rb', line 124

def ExtensoReal.por_extenso_em_reais(valor)
  negativo=(valor<0)? " negativo" : ""
  negativos=(valor<0)? " negativos" : ""
  valor = valor.abs
  return 'grátis' if valor == 0
  case valor
  when Integer
    extenso = Extenso.por_extenso(valor)
    if extenso =~ /^(.*)(ão$|ões$)/
      complemento = 'de '
    else
      complemento = ''
    end
    %(#{extenso} #{valor <= 1 ? "real#{negativo}": "#{complemento}reais#{negativos}"})
  when Float
    real,cents=("%.2f" % valor).split(/\./).map{ |m| m.to_i}
    valor_cents=Extenso.por_extenso(cents%100)
    valor_cents+= case cents.to_i%100
    when 0 then ""
    when 1 then " centavo"
    when 2..99 then " centavos"
    end

    if real.to_i > 0
      "#{ExtensoReal.por_extenso_em_reais(real.to_i)}#{cents > 0 ? ' e ' + valor_cents + negativos : real.to_i > 1 ? negativos : negativo }"
    else
      if (cents.to_i%100)==1
         "#{valor_cents}#{negativo}"
      else
         "#{valor_cents}#{negativos}"
      end
    end
  else
    ExtensoReal.por_extenso_em_reais(valor.to_s.strip.gsub(/[^\d]/,'.').to_f)
  end
end

Instance Method Details

#por_extenso_em_reaisObject

Escreve por extenso em reais.

Exemplo:

1.por_extenso_em_reais ==> 'um real'
(100.58).por_extenso_em_reais ==> 'cem reais e cinquenta e oito centavos'


111
112
113
# File 'lib/brnumeros/number_portuguese.rb', line 111

def por_extenso_em_reais
  ExtensoReal.por_extenso_em_reais(self)
end

#to_extenso_realObject

Escreve por extenso em reais.

Exemplo:

1.por_extenso_em_reais ==> 'um real'
(100.58).por_extenso_em_reais ==> 'cem reais e cinquenta e oito centavos'

Alias para por_extenso_em_reais



116
117
118
# File 'lib/brnumeros/number_portuguese.rb', line 116

def por_extenso_em_reais
  ExtensoReal.por_extenso_em_reais(self)
end