Sha256: ab2336e0f7ce0b808b8673ed64e8d956d9241102a295db4c3579a1c7fdf8419f

Contents?: true

Size: 804 Bytes

Versions: 8

Compression:

Stored size: 804 Bytes

Contents

module Barometer
  module Data
    class Vector < ConvertableUnits
      attr_reader :bearing

      def kph; metric; end
      def mph; imperial; end

      def units
        metric? ? 'kph' : 'mph'
      end

      def to_s
        [super, bearing_to_s].compact.join(' @ ')
      end

      def nil?
        super && bearing.nil?
      end

      private

      def convert_imperial_to_metric(imperial_value)
        imperial_value.to_f * 1.609
      end

      def convert_metric_to_imperial(metric_value)
        metric_value.to_f * 0.622
      end

      def parse_extra_values!(args)
        @bearing = args.pop if args.size > 1
      end

      def bearing_to_s
        "#{bearing} degrees" unless bearing.nil?
      end

      def freeze_extra
        @bearing.freeze
      end
    end
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
barometer-0.9.7 lib/barometer/data/vector.rb
barometer-0.9.6 lib/barometer/data/vector.rb
barometer-0.9.5 lib/barometer/data/vector.rb
barometer-0.9.4 lib/barometer/data/vector.rb
barometer-0.9.3 lib/barometer/data/vector.rb
barometer-0.9.2 lib/barometer/data/vector.rb
barometer-0.9.1 lib/barometer/data/vector.rb
barometer-0.9.0 lib/barometer/data/vector.rb