Class: Data::Units

Inherits:
Object
  • Object
show all
Includes:
Comparable
Defined in:
lib/barometer/data/units.rb

Direct Known Subclasses

Distance, Pressure, Speed, Temperature

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(metric = true) ⇒ Units

Returns a new instance of Units.



7
# File 'lib/barometer/data/units.rb', line 7

def initialize(metric=true); @metric = metric; end

Instance Attribute Details

#metricObject

Returns the value of attribute metric.



5
6
7
# File 'lib/barometer/data/units.rb', line 5

def metric
  @metric
end

Instance Method Details

#<<(value) ⇒ Object

assigns a value to the right attribute based on metric setting



19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
# File 'lib/barometer/data/units.rb', line 19

def <<(value)
  return unless value
  
  # these values can be treated like 'nil'
  nil_values = ["NA", "N/A", ""]

  begin
    if value.is_a?(Array)
      value_m = value[0].to_f if (value[0] && !nil_values.include?(value[0]))
      value_i = value[1].to_f if (value[1] && !nil_values.include?(value[1]))
      value_b = nil
    else
      value_m = nil
      value_i = nil
      value_b = value.to_f if (value && !nil_values.include?(value))
    end
  rescue
    # do nothing
  end

  self.metric? ? self.metric_default = value_m || value_b :
    self.imperial_default = value_i || value_b
end

#imperial!Object



15
# File 'lib/barometer/data/units.rb', line 15

def imperial!; @metric=false; end

#imperial_default=(value) ⇒ Object

Raises:

  • (NotImplementedError)


46
# File 'lib/barometer/data/units.rb', line 46

def imperial_default=(value); raise NotImplementedError; end

#metric!Object



14
# File 'lib/barometer/data/units.rb', line 14

def metric!; @metric=true; end

#metric?Boolean

HELPERS

Returns:

  • (Boolean)


13
# File 'lib/barometer/data/units.rb', line 13

def metric?; @metric; end

#metric_default=(value) ⇒ Object

stubs

Raises:

  • (NotImplementedError)


45
# File 'lib/barometer/data/units.rb', line 45

def metric_default=(value); raise NotImplementedError; end