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

[Source]

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

Public Instance methods

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

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

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

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

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

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

[Source]

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

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

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

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

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

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

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

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

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]