Module: Measured
- Defined in:
- lib/measured/base.rb,
lib/measured/version.rb
Defined Under Namespace
Modules: Arithmetic, ConversionTable, Parser
Classes: Measurable, Unit, UnitError, UnitSystem, UnitSystemBuilder
Constant Summary
collapse
- VERSION =
"2.2.0"
- Length =
Measured.build do
si_unit :m, aliases: [:meter, :metre, :meters, :metres]
unit :in, value: "0.0254 m", aliases: [:inch, :inches]
unit :ft, value: "12 in", aliases: [:foot, :feet]
unit :yd, value: "3 ft", aliases: [:yard, :yards]
unit :mi, value: "5280 ft", aliases: [:mile, :miles]
end
- Weight =
Measured.build do
si_unit :g, aliases: [:gram, :grams]
unit :t, value: "1000 kg", aliases: [:metric_ton, :metric_tons]
unit :slug, value: "14.593903 kg", aliases: [:slugs]
unit :N, value: "0.10197162129779283 kg", aliases: [:newtons, :newton]
unit :long_ton, value: "2240 lb", aliases: [:long_tons, :weight_ton, :weight_tons, 'W/T', :imperial_ton, :imperial_tons, :displacement_ton, :displacement_tons]
unit :short_ton, value: "2000 lb", aliases: [:short_tons]
unit :lb, value: "0.45359237 kg", aliases: [:lbs, :pound, :pounds]
unit :oz, value: "1/16 lb", aliases: [:ounce, :ounces]
end
Class Method Summary
collapse
Class Method Details
.build(&block) ⇒ Object
9
10
11
12
13
14
15
16
17
18
19
20
|
# File 'lib/measured/base.rb', line 9
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) ⇒ Object
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
# File 'lib/measured/base.rb', line 22
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
|