class Money

Attributes

amount[R]
currency[R]

Public Class Methods

configure() click to toggle source
# File lib/money.rb, line 120
def self.configure
        @@configure
end
new(value, name) click to toggle source
# File lib/money.rb, line 15
def initialize(value, name)
        if value.is_a? Numeric
                @amount = value 
        else
                raise "No es posible instanciar el objeto, #{value} es un #{value.class}, 
                        debe ser un numero Ej: 50 , 5.05"
        end
        if name.is_a? String
                @@configure.each do |config| 
                        next unless config.default_currency == name
                        @currency = name 
                        return
                end
                raise "El parametro #{name} no se encuentra en la configuracion"
        else
                raise "No es posible instanciar el objeto, #{name} es un #{name.class}, 
                        debe ser un string Ej: \"EUR\" , \"USD\", \"Bitcoin\""
        end
end

Public Instance Methods

*(x) click to toggle source
# File lib/money.rb, line 86
def *(x)
        return "#{@amount * x} #{@currency}"
end
+(x) click to toggle source
# File lib/money.rb, line 56
def +(x)
        unless x.currency == @currency
                @@configure.each do |config| 
                        if config.default_currency == x.currency
                                aux = ( (@amount + config.conversions[@currency] * x.amount) * 100).round/100.0
                                return "#{aux} #{@currency}"       
                        end
                end
        end
        aux = ((@amount + x.amount) * 100).round/100.0
        return "#{aux} #{@currency}" 
end
-(x) click to toggle source
# File lib/money.rb, line 69
def -(x)
        unless x.currency == @currency
                @@configure.each do |config| 
                        if config.default_currency == x.currency    
                                aux = ((@amount - config.conversions[@currency] * x.amount) * 100).round/100.0
                                return "#{aux} #{@currency}"  
                        end
                end
        end
        aux = ((@amount - x.amount) * 100).round/100.0
        return "#{aux} #{@currency}"
end
/(x) click to toggle source
# File lib/money.rb, line 82
def /(x)
        return "#{@amount / x} #{@currency}"
end
<(x) click to toggle source
# File lib/money.rb, line 110
def <(x)
        if not x.currency == @currency
                @@configure.each do |config| 
                        return ( config.default_currency == x.currency and @amount < (x.amount * config.conversions[@currency]) )
                end
        end
        return ( @amount < x.amount )
        
end
==(x) click to toggle source
# File lib/money.rb, line 90
def ==(x)
        if not x.currency == @currency
                @@configure.each do |config| 
                        return ( config.default_currency == x.currency and @amount == (x.amount * config.conversions[@currency]) )
                end
        end
        return ( x.amount == @amount )
        
end
>(x) click to toggle source
# File lib/money.rb, line 100
def >(x)
        if not x.currency == @currency
                @@configure.each do |config| 
                        return ( config.default_currency == x.currency and @amount > (x.amount * config.conversions[@currency]) )
                end
        end
        return ( @amount > x.amount )
        
end
convert_to(name) click to toggle source
# File lib/money.rb, line 39
def convert_to(name)
        if name.is_a? String
                @@configure.each do |config| 
                        next unless config.default_currency == currency

                        @amount = (config.conversions[name] * @amount *100).round/100.0
                        @currency = name 

                        return self
                end
                raise "El parametro #{name} no se encuentra en la configuracion"
        else
                raise "No es posible realizar la conversion  de #{@currency} a #{name} este no se encuentra en la configuracion
                        Ej: \"EUR\" , \"USD\", \"Bitcoin\""
        end
end
inspect() click to toggle source
# File lib/money.rb, line 35
def inspect
        "#{@amount} #{@currency}"
end