Module: DynamicImage::Ratio

Defined in:
lib/dynamic_image/ratio.rb

Overview

DynamicImage Ratio

Coerces an aspect ratio into a float. Strings, rationals, floats and vectors are all accepted.

Examples:

DynamicImage::Ratio.parse("16:9")           # => 1.7777..
DynamicImage::Ratio.parse("16x9")           # => 1.7777..
DynamicImage::Ratio.parse(Rational(16, 9))  # => 1.7777..
DynamicImage::Ratio.parse(Vector2d(16, 9))  # => 1.7777..

Class Method Summary collapse

Class Method Details

.parse(value) ⇒ Float?

Returns the ratio as width divided by height.

Parameters:

  • the ratio, as a number, a vector, or a string written with :, x or / between the two sides

Returns:

Raises:

  • if the value isn't a usable ratio



21
22
23
24
25
26
27
28
29
30
# File 'lib/dynamic_image/ratio.rb', line 21

def parse(value)
  return if value.nil?

  ratio = coerce(value)
  unless ratio.is_a?(Float) && ratio.positive? && ratio.finite?
    raise ArgumentError, "invalid ratio: #{value.inspect}"
  end

  ratio
end