Module: CMDx::Coercions::Rational

Extended by:
Rational
Included in:
Rational
Defined in:
lib/cmdx/coercions/rational.rb

Overview

Coerces to ‘Rational`. Supply `denominator:` to build a rational from a numerator and a custom denominator.

Instance Method Summary collapse

Instance Method Details

#call(value, options = EMPTY_HASH) ⇒ Rational, Coercions::Failure

Parameters:

  • value (Object)
  • options (Hash{Symbol => Object}) (defaults to: EMPTY_HASH)

Options Hash (options):

  • :denominator (Numeric) — default: 1

Returns:



15
16
17
18
19
20
21
22
# File 'lib/cmdx/coercions/rational.rb', line 15

def call(value, options = EMPTY_HASH)
  return value if value.is_a?(::Rational)

  Rational(value, options[:denominator] || 1)
rescue ArgumentError, FloatDomainError, RangeError, TypeError, ZeroDivisionError
  type = I18nProxy.t("cmdx.types.rational")
  Failure.new(I18nProxy.t("cmdx.coercions.into_a", type:))
end