class Money
Attributes
amount[RW]
base_currency[R]
currencies_rates[R]
currency[RW]
Public Class Methods
new(amount, currency)
click to toggle source
# File lib/promoney/money.rb, line 5 def initialize(amount, currency) @amount = amount @currency = currency conversion_rates(Promoney.configuration.base_currency, Promoney.configuration.currencies_rates) end
Public Instance Methods
*(multiplier)
click to toggle source
# File lib/promoney/money.rb, line 54 def *(multiplier) sum = self.amount * multiplier Money.new(sum, self.currency) end
+(money)
click to toggle source
Arithmetics methods
# File lib/promoney/money.rb, line 39 def +(money) sum = self.amount + money.convert_to(self.currency).amount Money.new(sum, self.currency) end
-(money)
click to toggle source
# File lib/promoney/money.rb, line 44 def -(money) remain = self.amount - money.convert_to(self.currency).amount Money.new(remain, self.currency) end
/(divider)
click to toggle source
# File lib/promoney/money.rb, line 49 def /(divider) remain = self.amount.to_f / divider Money.new(remain, self.currency) end
<(money)
click to toggle source
# File lib/promoney/money.rb, line 73 def <(money) base_curr_amount < money.base_curr_amount end
==(money)
click to toggle source
Comparisons methods
# File lib/promoney/money.rb, line 65 def ==(money) base_curr_amount == money.base_curr_amount end
>(money)
click to toggle source
# File lib/promoney/money.rb, line 69 def >(money) base_curr_amount > money.base_curr_amount end
base_curr_amount()
click to toggle source
convert self money obj to base currency
# File lib/promoney/money.rb, line 60 def base_curr_amount self.convert_to(@base_currency).amount end
conversion_rates(base_currency, currencies_rates)
click to toggle source
setup base and other currencies rates
# File lib/promoney/money.rb, line 12 def conversion_rates(base_currency, currencies_rates) @currencies_rates = { 'EUR' => currencies_rates['EUR'], 'USD' => currencies_rates['USD'], 'Bitcoin' => currencies_rates['Bitcoin'] } case base_currency when 'EUR' then @currencies_rates['EUR'] = 1 when 'USD' then @currencies_rates['USD'] = 1 when 'Bitcoin' then @currencies_rates['Bitcoin'] = 1 end @base_currency = base_currency end
convert_to(currency)
click to toggle source
convert money instance in different currency
# File lib/promoney/money.rb, line 29 def convert_to(currency) if currency == @base_currency balance = self.amount / @currencies_rates[self.currency] else balance = self.amount * @currencies_rates[currency] end Money.new(balance, currency) end