class Measurement::Unit

Attributes

aliases[R]
conversions[R]
name[R]

Public Class Methods

[](unit_name) click to toggle source
# File lib/ruby-measurement/unit.rb, line 58
def [](unit_name)
  @definitions[unit_name.to_s.downcase]
end
[]=(unit_name, unit) click to toggle source
# File lib/ruby-measurement/unit.rb, line 62
def []=(unit_name, unit)
  @definitions[unit_name.to_s.downcase] = unit
end
define(unit_name, &block) click to toggle source
# File lib/ruby-measurement/unit.rb, line 54
def define(unit_name, &block)
  Builder.new(unit_name, &block)
end
names() click to toggle source
# File lib/ruby-measurement/unit.rb, line 66
def names
  @definitions.keys
end
new(name) click to toggle source
# File lib/ruby-measurement/unit.rb, line 9
def initialize(name)
  @name = name.to_s
  @aliases = Set.new
  @conversions = {}
  add_alias(name)
end

Public Instance Methods

==(obj) click to toggle source
# File lib/ruby-measurement/unit.rb, line 47
def ==(obj)
  obj.kind_of?(self.class) && name == obj.name && aliases == obj.aliases && conversions.all? do |key, proc|
    [-2.5, -1, 0, 1, 2.5].all? { |n| proc.call(n) == obj.conversions[key].call(n) }
  end
end
add_alias(*args) click to toggle source
# File lib/ruby-measurement/unit.rb, line 16
def add_alias(*args)
  args.each do |unit_alias|
    @aliases << unit_alias.to_s
    self.class[unit_alias] = self
  end
end
add_conversion(unit_name, &block) click to toggle source
# File lib/ruby-measurement/unit.rb, line 23
def add_conversion(unit_name, &block)
  @conversions[unit_name.to_s] = block
end
conversion(unit_name) click to toggle source
# File lib/ruby-measurement/unit.rb, line 27
def conversion(unit_name)
  unit = self.class[unit_name]
  return nil unless unit

  unit.aliases.each do |unit_alias|
    conversion = @conversions[unit_alias.to_s]
    return conversion if conversion
  end

  nil
end
inspect() click to toggle source
# File lib/ruby-measurement/unit.rb, line 39
def inspect
  to_s
end
to_s() click to toggle source
# File lib/ruby-measurement/unit.rb, line 43
def to_s
  name
end