class Lite::Measurements::Temperature

Constants

C_FREEZING_POINT
C_INVERSED_POINT
F_FREEZING_POINT
K_FREEZING_POINT
VALID_KEYS

Public Instance Methods

convert(from:, to:) click to toggle source
# File lib/lite/measurements/temperature.rb, line 16
def convert(from:, to:)
  assert_all_valid_keys!(from, to, VALID_KEYS)

  case to
  when from then amount
  when :celsius then send("celsius_from_#{from}")
  when :fahrenheit then send("fahrenheit_from_#{from}")
  when :kelvin then send("kelvin_from_#{from}")
  end
end

Private Instance Methods

celsius_from_fahrenheit() click to toggle source
# File lib/lite/measurements/temperature.rb, line 29
def celsius_from_fahrenheit
  (amount - F_FREEZING_POINT) * C_FREEZING_POINT
end
celsius_from_kelvin() click to toggle source
# File lib/lite/measurements/temperature.rb, line 33
def celsius_from_kelvin
  amount - K_FREEZING_POINT
end
fahrenheit_from_celsius() click to toggle source
# File lib/lite/measurements/temperature.rb, line 37
def fahrenheit_from_celsius
  (amount * C_INVERSED_POINT) + F_FREEZING_POINT
end
fahrenheit_from_kelvin() click to toggle source
# File lib/lite/measurements/temperature.rb, line 41
def fahrenheit_from_kelvin
  celsius_from_kelvin * C_INVERSED_POINT + F_FREEZING_POINT
end
kelvin_from_celsius() click to toggle source
# File lib/lite/measurements/temperature.rb, line 45
def kelvin_from_celsius
  amount + K_FREEZING_POINT
end
kelvin_from_fahrenheit() click to toggle source
# File lib/lite/measurements/temperature.rb, line 49
def kelvin_from_fahrenheit
  celsius_from_fahrenheit + K_FREEZING_POINT
end