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