Skip to content

Add Measured::Temperature unit type#189

Draft
ntn wants to merge 1 commit intofunctional-conversionsfrom
add-temperature-type-v2
Draft

Add Measured::Temperature unit type#189
ntn wants to merge 1 commit intofunctional-conversionsfrom
add-temperature-type-v2

Conversation

@ntn
Copy link
Contributor

@ntn ntn commented Mar 10, 2026

Summary

Adds Measured::Temperature as the first functional unit type, demonstrating the proc-based conversion system from #188.

Includes three units:

  • Celsius (C) - base unit
  • Kelvin (K) - celsius + 273.15
  • Fahrenheit (F) - celsius * 9/5 + 32

Opt-in only

Temperature is not included in the default require "measured". Users opt in explicitly:

# In Gemfile
gem 'measured', require: ['measured', 'measured/temperature']

# Or manually
require 'measured/temperature'

This keeps the default gem lightweight and avoids loading functional conversion infrastructure for users who only need static units (length, weight, volume).

Usage

require 'measured/temperature'

temp = Measured::Temperature.new(100, :C)
temp.convert_to(:F)  # => 212 F
temp.convert_to(:K)  # => 373.15 K

Measured::Temperature.new(0, :K).convert_to(:C)  # => -273.15 C

Test plan

  • All temperature conversions (C↔K, C↔F, K↔F, identity, negatives, indirect paths)
  • Arithmetic and comparison across units
  • Existing unit tests (length, weight, volume) unaffected
  • require 'measured' alone does not load Temperature

Add Temperature as an opt-in unit type with Celsius, Kelvin, and
Fahrenheit. Not included in the default require - users opt in with:

  gem 'measured', require: ['measured', 'measured/temperature']

Or manually: require 'measured/temperature'
@ntn ntn self-assigned this Mar 10, 2026
@ntn ntn marked this pull request as draft March 10, 2026 03:24
@ntn ntn force-pushed the add-temperature-type-v2 branch from b56e8c3 to 7128403 Compare March 10, 2026 03:24
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant