unite_rb

Brings units to numeric variables in Ruby.

Getting started

Install gem:

gem install unite_rb

Usage:

require "unite_rb"

s = UniteRb::Scope.new
s.dimensions  = [:m, :km, :min, :s]

# Define relations between units using 'add', 'sub', 'mul', 'div'
s.equate(:km, s.mul(:m, 1000))
s.equate(:s, s.div(:min, 60))

dist_to_iss = s.var(408, :km)
dist_to_iss2 = s.var(408_000, :m)
time_to_sun = s.var(4, :min)

# Comparisons
dist_to_iss == dist_to_iss2 # => true
dist_to_iss > dist_to_iss2  # => false
dist_to_iss < time_to_sun # => UniteRb::UnrelatedDimensions: No relation exists between dimensions km and min

# Arithmetic
puts dist_to_iss + dist_to_iss2 # => 816 km

# Convert
time_to_sun_in_s = time_to_sun.convert(:s)
time_to_sun_in_s.dim  # => s
puts time_to_sun_in_s # => 240 s

To be done

s.equate(:C, s.mul(5/9, s.sub(:F, 32))) # C = 5/9(F - 32) “`