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