Top Level Namespace
Defined Under Namespace
Classes: Monies
Instance Method Summary collapse
Instance Method Details
#Monies(object, currency = Monies.currency) ⇒ Object
464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 |
# File 'lib/monies.rb', line 464 def Monies(object, currency = Monies.currency) case object when Monies object when Integer Monies.new(object, 0, currency) when Rational Monies.new(object.numerator, 0, currency) / object.denominator when String Monies::Digits.load(object, currency) else if defined?(BigDecimal) && object.is_a?(BigDecimal) sign, significant_digits, base, exponent = object.split value = significant_digits.to_i * sign length = significant_digits.length if exponent.positive? && length < exponent value *= base ** (exponent - length) end scale = object.scale return Monies.new(value, scale, currency) end raise TypeError, "can't convert #{object.inspect} into #{Monies}" end end |