module Measured

Constants

Length
VERSION
Volume
Weight

Attributes

unit_system[R]

Public Class Methods

build(&block) click to toggle source
# File lib/measured/base.rb, line 10
def build(&block)
  builder = UnitSystemBuilder.new
  builder.instance_eval(&block)

  Class.new(Measurable) do
    class << self
      attr_reader :unit_system
    end

    @unit_system = builder.build
  end
end
method_missing(method, *args) click to toggle source
Calls superclass method
# File lib/measured/base.rb, line 23
def method_missing(method, *args)
  class_name = "Measured::#{ method }"
  klass = class_name.safe_constantize

  if klass && klass < Measurable
    Measured.define_singleton_method(method) do |value, unit|
      klass.new(value, unit)
    end

    klass.new(*args)
  else
    super
  end
end