Class: Observation::Continuous

Inherits:
Observation
  • Object
show all
Defined in:
app/models/observation/continuous.rb

Instance Method Summary collapse

Instance Method Details

#+(observation) ⇒ Object

Use Ruby Units to add



19
20
21
22
# File 'app/models/observation/continuous.rb', line 19

def +(observation)
  a = unit + observation.unit
  continuous_unit && descriptor.default_unit ? a.convert_to(descriptor.default_unit) : a
end

#-(observation) ⇒ Object



24
25
26
27
# File 'app/models/observation/continuous.rb', line 24

def -(observation)
  a = unit - observation.unit
  continuous_unit && descriptor.default_unit ? a.convert_to(descriptor.default_unit) : a
end

#converted_valueFloat

Return the value converted to the default of the descriptor If provided

Returns:

  • (Float)

    return the value converted to the default of the descriptor If provided



31
32
33
34
35
36
37
38
39
# File 'app/models/observation/continuous.rb', line 31

def converted_value
  if continuous_unit && descriptor.default_unit
    unit.convert_to(descriptor.default_unit).scalar.to_f # TODO: experiment with this
  elsif continuous_unit
    unit.scalar
  else
    continuous_value
  end
end

#unitUnit

Returns and instance of ruby-unit.

Returns:

  • (Unit)

    and instance of ruby-unit



14
15
16
# File 'app/models/observation/continuous.rb', line 14

def unit
  ::RubyUnits::Unit.new([continuous_value.to_s, continuous_unit].compact.join(' '))
end

#units_compatibleObject (protected)



43
44
45
46
47
48
# File 'app/models/observation/continuous.rb', line 43

def units_compatible
  if descriptor && descriptor.default_unit && !continuous_unit.blank?
    # The =~ operator checks for convertability here.
    errors.add(:continuous_unit, 'units incompatible with descriptor default') unless unit =~ descriptor.unit
  end
end