| Class | Dinheiro |
| In: |
vendor/plugins/brazilian-rails/lib/dinheiro.rb
|
| Parent: | Object |
| 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 |
| quantia | [R] |
# File vendor/plugins/brazilian-rails/lib/dinheiro.rb, line 14
14: def initialize(quantia)
15: self.quantia = quantia
16: end
Retorna a multiplicacao entre dinheiros.
# 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.
# 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.
# 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.
# 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
# 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
# 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
# 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)'
# 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'
# File vendor/plugins/brazilian-rails/lib/dinheiro.rb, line 84
84: def por_extenso
85: (@quantia/100.0).por_extenso_em_reais
86: end
Retorna uma string formatada em valor monetario.
Exemplo:
Dinheiro.new(1).real ==> 'R$ 1,00' Dinheiro.new(-1).real ==> 'R$ -1,00'
# 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)'
# 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.
# 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.
# 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'
# File vendor/plugins/brazilian-rails/lib/dinheiro.rb, line 22
22: def to_s
23: inteiro_com_milhar(parte_inteira) + parte_decimal
24: end