Sha256: a367b94e191b7271febc3e7699259b7140696fa79f02041d0e88069855783613
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-1.0.2 | lib/lite/measurements/temperature.rb |
lite-measurements-1.0.1 | lib/lite/measurements/temperature.rb |
lite-measurements-1.0.0 | lib/lite/measurements/temperature.rb |