Sha256: e178f19d4e2da06cee73079d8419fb42f2d6df2842202069d555fca1d9b4eaac

Contents?: true

Size: 1.34 KB

Versions: 2

Compression:

Stored size: 1.34 KB

Contents

module Barometer
  class Units
    include Comparable
    
    attr_accessor :metric
    
    def initialize(metric=true)
      @metric = metric
    end
    
    #
    # HELPERS
    #
    
    def metric?; @metric; end
    def metric!; @metric=true; end
    def imperial!; @metric=false; end

    # assigns a value to the right attribute based on metric setting    
    def <<(value)
      return unless value
      
      # these values can be treated like 'nil'
      nil_values = ["NA"]
    
      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
    
      if self.metric?
        self.metric_default = value_m || value_b
      else
        self.imperial_default = value_i || value_b
      end
    end
    
    # STUB: define this method to actually retireve the metric_default
    def metric_default=(value)
      raise NotImplementedError
    end

    # STUB: define this method to actually retireve the imperial_default
    def imperial_default=(value)
      raise NotImplementedError
    end

  end
end

Version data entries

2 entries across 2 versions & 2 rubygems

Version Path
attack-barometer-0.3.2 lib/barometer/data/units.rb
barometer-0.3.2 lib/barometer/data/units.rb