Class | Dinheiro
In: | vendor/plugins/brazilian-rails/lib/dinheiro.rb
Parent: | Object

### Methods

* + - / <=> == coerce contabil new por_extenso por_extenso_em_reais reais reais_contabeis real real_contabil to_extenso to_f to_s valor_decimal

### Included Modules

Comparable

### Constants

FORMATO_VALIDO_BR | = | /^([R|r]\$\s*)?(([+-]?\d{1,3}(\.?\d{3})*))?(\,\d{0,2})?$/
FORMATO_VALIDO_EUA | = | /^([R|r]\$\s*)?(([+-]?\d{1,3}(\,?\d{3})*))?(\.\d{0,2})?$/
SEPARADOR_MILHAR | = | "."
SEPARADOR_FRACIONARIO | = | ","
QUANTIDADE_DIGITOS | = | 3
PRECISAO_DECIMAL | = | 100

### Attributes

quantia | [R] |

### Public Class methods

new(quantia)

[Source]

        # File vendor/plugins/brazilian-rails/lib/dinheiro.rb, line 14
    14:   def initialize(quantia)
    15:     self.quantia = quantia
    16:   end

### Public Instance methods

*(outro)

Retorna a multiplicacao entre dinheiros.

[Source]

        # File vendor/plugins/brazilian-rails/lib/dinheiro.rb, line 60
    60:   def *(outro)
    61:     return Dinheiro.new(to_f * outro) unless outro.kind_of? Dinheiro
    62:     outro * to_f
    63:   end

+(outro)

Retorna a adicao entre dinheiros.

[Source]

        # File vendor/plugins/brazilian-rails/lib/dinheiro.rb, line 50
    50:   def +(outro)
    51:     Dinheiro.new(transforma_em_string_que_represente_a_quantia(@quantia + quantia_de(outro)))
    52:   end

-(outro)

Retorna a subtracao entre dinheiros.

[Source]

        # File vendor/plugins/brazilian-rails/lib/dinheiro.rb, line 55
    55:   def -(outro)
    56:     Dinheiro.new(transforma_em_string_que_represente_a_quantia(@quantia - quantia_de(outro)))
    57:   end

/(outro)

Retorna a divisao entre dinheiros.

[Source]

        # File vendor/plugins/brazilian-rails/lib/dinheiro.rb, line 66
    66:   def /(outro)
    67:     raise DivisaPorNaoEscalarError unless outro.kind_of?(Numeric)
    68:     return @quantia/outro if outro == 0
    69:     soma_parcial = Dinheiro.new(0)
    70:     parcelas = []
    71:     (outro-1).times do
    72:       parcela = Dinheiro.new(transforma_em_string_que_represente_a_quantia(@quantia/outro))
    73:       parcelas << parcela
    74:       soma_parcial += parcela
    75:     end
    76:     parcelas << Dinheiro.new(transforma_em_string_que_represente_a_quantia(@quantia - quantia_de(soma_parcial)))
    77:   end

<=>(outro_dinheiro)

Compara com outro dinheiro se eh maior ou menor.

Exemplo:

     1.real < 2.reais ==> true
     1.real > 2.reais ==> false
     2.real < 1.reais ==> false
     2.real > 1.reais ==> true

[Source]

        # File vendor/plugins/brazilian-rails/lib/dinheiro.rb, line 44
    44:   def <=>(outro_dinheiro)
    45:     outro_dinheiro = Dinheiro.new(outro_dinheiro) unless outro_dinheiro.kind_of?(Dinheiro)
    46:     @quantia <=> outro_dinheiro.quantia
    47:   end

==(outro_dinheiro)

Compara com outro dinheiro se eh igual.

Exemplo:

     um_real = Dinheiro.new(1)
     um_real == Dinheiro.new(1) ==> true
     um_real == Dinheiro.new(2) ==> false

[Source]

        # File vendor/plugins/brazilian-rails/lib/dinheiro.rb, line 32
    32:   def ==(outro_dinheiro)
    33:     outro_dinheiro = Dinheiro.new(outro_dinheiro) unless outro_dinheiro.kind_of?(Dinheiro)
    34:     @quantia == outro_dinheiro.quantia
    35:   end

coerce(outro)

[Source]

         # File vendor/plugins/brazilian-rails/lib/dinheiro.rb, line 102
    102:   def coerce(outro)
    103:     [ Dinheiro.new(outro), self ]
    104:   end

contabil()

Retorna uma string formatada.

Exemplo:

     Dinheiro.new(1).contabil ==> '1,00'
     Dinheiro.new(-1).contabil ==> '(1,00)'

[Source]

         # File vendor/plugins/brazilian-rails/lib/dinheiro.rb, line 135
    135:   def contabil
    136:     if @quantia >= 0
    137:       to_s
    138:     else
    139:       "(" + to_s[1..-1] + ")"
    140:     end
    141:   end

por_extenso()

Escreve o valor por extenso.

Exemplo:

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

[Source]

        # File vendor/plugins/brazilian-rails/lib/dinheiro.rb, line 84
    84:   def por_extenso
    85:     (@quantia/100.0).por_extenso_em_reais
    86:   end

por_extenso_em_reais()

Alias for por_extenso

reais()

Alias for real

reais_contabeis()

Alias for real_contabil

real()

Retorna uma string formatada em valor monetario.

Exemplo:

     Dinheiro.new(1).real ==> 'R$ 1,00'
     Dinheiro.new(-1).real ==> 'R$ -1,00'

[Source]

         # File vendor/plugins/brazilian-rails/lib/dinheiro.rb, line 111
    111:   def real
    112:     "R$ " + to_s
    113:   end

real_contabil()

Retorna uma string formatada em valor monetario.

Exemplo:

     Dinheiro.new(1).real ==> 'R$ 1,00'
     Dinheiro.new(-1).real ==> 'R$ (1,00)'

[Source]

         # File vendor/plugins/brazilian-rails/lib/dinheiro.rb, line 120
    120:   def real_contabil
    121:     "R$ " + contabil
    122:   end

to_extenso()

DEPRECATION WARNING: use por_extenso ou por_extenso_em_reais, pois este sera removido no proximo release.

[Source]

        # File vendor/plugins/brazilian-rails/lib/dinheiro.rb, line 92
    92:   def to_extenso
    93:     warn("DEPRECATION WARNING: use por_extenso ou por_extenso_em_reais, pois este sera removido no proximo release.")
    94:     self.por_extenso
    95:   end

to_f()

Retorna um Float.

[Source]

         # File vendor/plugins/brazilian-rails/lib/dinheiro.rb, line 98
     98:   def to_f
     99:     to_s.gsub(',', '.').to_f
    100:   end

to_s()

Retorna o valor armazenado em string.

Exemplo:

     1000.to_s ==> '1.000,00'

[Source]

        # File vendor/plugins/brazilian-rails/lib/dinheiro.rb, line 22
    22:   def to_s
    23:     inteiro_com_milhar(parte_inteira) + parte_decimal
    24:   end

valor_decimal()

Retorna um BigDecinal.

[Source]

         # File vendor/plugins/brazilian-rails/lib/dinheiro.rb, line 144
    144:   def valor_decimal
    145:     BigDecimal.new quantia_sem_separacao_milhares.gsub(',','.')
    146:   end

[Validate]