Sha256: 0b29813923544b91fc674380db947c970d40fed5302a0da13f26782640542a46

Contents?: true

Size: 1.06 KB

Versions: 3

Compression:

Stored size: 1.06 KB

Contents

require "measured/version"
require "active_support/all"
require "bigdecimal"

module Measured
  class UnitError < StandardError ; end

  class << self
    def build(**kwargs, &block)
      builder = UnitSystemBuilder.new(**kwargs)
      builder.instance_eval(&block)

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

        @unit_system = builder.build
      end
    end

    def method_missing(method, *args)
      class_name = "Measured::#{ method }"

      if Measurable.subclasses.map(&:to_s).include?(class_name)
        klass = class_name.constantize

        Measured.define_singleton_method(method) do |value, unit|
          klass.new(value, unit)
        end

        klass.new(*args)
      else
        super
      end
    end
  end
end

require "measured/arithmetic"
require "measured/unit"
require "measured/unit_system"
require "measured/case_insensitive_unit"
require "measured/case_insensitive_unit_system"
require "measured/unit_system_builder"
require "measured/conversion_table"
require "measured/measurable"

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
measured-2.0.0.pre3 lib/measured/base.rb
measured-2.0.0.pre2 lib/measured/base.rb
measured-2.0.0.pre1 lib/measured/base.rb