module Money::Helpers
def value_to_currency(currency)
def value_to_currency(currency) case currency when Money::Currency, Money::NullCurrency currency when nil, '' default = Money::Config.current.currency raise(Money::Currency::UnknownCurrency, 'missing currency') if default.nil? || default == '' value_to_currency(default) when 'xxx', 'XXX' Money::NULL_CURRENCY when String begin Currency.find!(currency) rescue Money::Currency::UnknownCurrency => error if Money::Config.current.legacy_deprecations Money.deprecate(error.message) Money::NULL_CURRENCY else raise error end end else raise ArgumentError, "could not parse as currency #{currency.inspect}" end end
def value_to_decimal(num)
def value_to_decimal(num) value = case num when Money num.value when BigDecimal num when nil, 0, '' DECIMAL_ZERO when Integer BigDecimal(num) when Float BigDecimal(num, Float::DIG) when Rational BigDecimal(num, MAX_DECIMAL) when String BigDecimal(num) else raise ArgumentError, "could not parse as decimal #{num.inspect}" end return DECIMAL_ZERO if value.sign == BigDecimal::SIGN_NEGATIVE_ZERO value end