Sha256: fd327cdaa4feafac79ab4b76903489f5b21d002259510e4857dcc8b1322034b4
Contents?: true
Size: 1.21 KB
Versions: 3
Compression:
Stored size: 1.21 KB
Contents
# frozen_string_literal: true module Lite module Measurements class Temperature < Lite::Measurements::Base C_FREEZING_POINT = 5.0 / 9.0 C_INVERSED_POINT = 9.0 / 5.0 F_FREEZING_POINT = 32.0 K_FREEZING_POINT = 273.15 VALID_KEYS = %i[ celsius fahrenheit kelvin ].freeze 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 def celsius_from_fahrenheit (amount - F_FREEZING_POINT) * C_FREEZING_POINT end def celsius_from_kelvin amount - K_FREEZING_POINT end def fahrenheit_from_celsius (amount * C_INVERSED_POINT) + F_FREEZING_POINT end def fahrenheit_from_kelvin celsius_from_kelvin * C_INVERSED_POINT + F_FREEZING_POINT end def kelvin_from_celsius amount + K_FREEZING_POINT end def kelvin_from_fahrenheit celsius_from_fahrenheit + K_FREEZING_POINT end end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
lite-measurements-2.0.0 | lib/lite/measurements/temperature.rb |
lite-measurements-1.1.1 | lib/lite/measurements/temperature.rb |
lite-measurements-1.1.0 | lib/lite/measurements/temperature.rb |