module Phys::UnitsMixin
Defines method with unit name. Caution: Variable names may conflict with unit names. @example
require 'phys/units' Phys::UnitsMixin.module_eval do puts 123.4*km puts 23*mile/hr >> m/s puts h.to_si case mile/hr when m puts "length" when m/s puts "velocity" else puts "other" end end extend Phys::UnitsMixin 1*miles/hr >> m/s #=> Phys::Quantity[0.44704,"m/s"]
Public Instance Methods
method_missing(method, *args, &block)
click to toggle source
# File lib/phys/units/units_mixin.rb, line 44 def method_missing(method, *args, &block) if unit = Unit.find_unit(method) raise "argument must be empty" unless args.empty? Quantity.new(Rational(1), method, unit) else method_missing_units_alias(method, *args, &block) end end
Also aliased as: method_missing_units_alias
print_units(unit=nil)
click to toggle source
# File lib/phys/units/units_mixin.rb, line 53 def print_units(unit=nil) Unit::LIST.each do |k,u| if unit.nil? || unit===u len = 32 - k.size len = 1 if len < 1 puts k+" "*len+"#{u.expr}" end end nil end