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