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