class Money_DaWanda::Money

Attributes

amount[RW]
currency[RW]

Public Class Methods

add_conversion_rates(currency_base, rates) click to toggle source
# File lib/Money_DaWanda.rb, line 26
def self.add_conversion_rates(currency_base, rates)
  raise ArgumentError, 'Currency should be a string' unless currency_base.is_a? String
  raise ArgumentError, 'Rates should be a hash' unless rates.is_a? Hash

  @@conversion_rates[currency_base] = rates

end
new(amount, currency) click to toggle source
# File lib/Money_DaWanda.rb, line 14
def initialize(amount, currency)
  raise ArgumentError, 'Amount is not numeric' unless amount.is_a? Numeric
  raise ArgumentError, 'Currency should be a string' unless currency.is_a? String

  @amount = amount
  @currency = currency
end
show_conversion_rates() click to toggle source
# File lib/Money_DaWanda.rb, line 34
def self.show_conversion_rates
  @@conversion_rates.each do |currency_base,rates|
    puts currency_base + ' => ' + rates +'/n----------/n'
  end
end

Public Instance Methods

convert_to(new_currency) click to toggle source
# File lib/Money_DaWanda.rb, line 40
def convert_to(new_currency)
  raise ArgumentError, 'Currency should be a string' unless new_currency.is_a? String

      if @currency == new_currency
        rate = 1
      # check if conversion rate exists inside @@conversion_rate table
      elsif @@conversion_rates.has_key?(@currency) && @@conversion_rates[@currency].has_key?(new_currency)
        rate = @@conversion_rates[@currency][new_currency]
      #if not, but reversed rate exists, use it
      elsif @@conversion_rates.has_key?(new_currency) && @@conversion_rates[new_currency].has_key?(@currency)
        rate = 1 / @@conversion_rates[new_currency][@currency]
      else
        return "This currency exchange is unfortunately not available"
      end

    new_amount = (@amount * rate).round(2)
    return Money.new(new_amount,new_currency)
end
inspect() click to toggle source
# File lib/Money_DaWanda.rb, line 22
def inspect
  "#{'%.2f' % amount} #{currency}"
end