Module: Fit4Ruby::Converters

Included in:
FitDataRecord, GlobalFitMessage::Field
Defined in:
lib/fit4ruby/Converters.rb

Instance Method Summary collapse

Instance Method Details

#conversion_factor(from_unit, to_unit) ⇒ Object



17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# File 'lib/fit4ruby/Converters.rb', line 17

def conversion_factor(from_unit, to_unit)
  factors = {
    'm' => { 'km' => 0.001, 'in' => 39.3701, 'ft' => 3.28084,
             'mi' => 0.000621371 },
    'mm' => { 'cm' => 0.1, 'in' => 0.0393701 },
    'm/s' => { 'km/h' => 3.6, 'mph' => 2.23694 },
    'min/km' => { 'min/mi' => 1.60934 },
    'kg' => { 'lbs' => 0.453592 }
  }
  return 1.0 if from_unit == to_unit
  unless factors.include?(from_unit)
    Log.fatal "No conversion factors defined for unit " +
              "'#{from_unit}' to '#{to_unit}'"
  end

  factor = factors[from_unit][to_unit]
  if factor.nil?
    Log.fatal "No conversion factor from '#{from_unit}' to '#{to_unit}' " +
              "defined."
  end
  factor
end

#fit_time_to_time(ft) ⇒ Object



85
86
87
# File 'lib/fit4ruby/Converters.rb', line 85

def fit_time_to_time(ft)
  Time.parse('1989-12-31T00:00:00+00:00') + ft.to_i
end

#secsToDHMS(secs) ⇒ Object



70
71
72
73
74
75
76
77
78
79
# File 'lib/fit4ruby/Converters.rb', line 70

def secsToDHMS(secs)
  secs = secs.to_i
  s = secs % 60
  mins = secs / 60
  m = mins % 60
  hours = mins / 60
  h = hours % 24
  d = hours / 24
  "#{d} days #{h}:#{'%02d' % m}:#{'%02d' % s}"
end

#secsToHM(secs) ⇒ Object



52
53
54
55
56
57
58
59
# File 'lib/fit4ruby/Converters.rb', line 52

def secsToHM(secs)
  secs = secs.to_i
  s = secs % 60
  mins = secs / 60
  m = mins % 60
  h = mins / 60
  "#{h}:#{'%02d' % m}"
end

#secsToHMS(secs) ⇒ Object



61
62
63
64
65
66
67
68
# File 'lib/fit4ruby/Converters.rb', line 61

def secsToHMS(secs)
  secs = secs.to_i
  s = secs % 60
  mins = secs / 60
  m = mins % 60
  h = mins / 60
  "#{h}:#{'%02d' % m}:#{'%02d' % s}"
end

#speedToPace(speed, distance = 1000.0) ⇒ Object



40
41
42
43
44
45
46
47
48
49
50
# File 'lib/fit4ruby/Converters.rb', line 40

def speedToPace(speed, distance = 1000.0)
  if speed && speed > 0.01
    # We only show 2 fractional digits, so make sure we round accordingly
    # before we crack it up.
    pace = (distance.to_f / (speed * 60.0)).round(2)
    int, dec = pace.divmod 1
    "#{int}:#{'%02d' % (dec * 60)}"
  else
    "-:--"
  end
end

#time_to_fit_time(t) ⇒ Object



81
82
83
# File 'lib/fit4ruby/Converters.rb', line 81

def time_to_fit_time(t)
  (t - Time.parse('1989-12-31T00:00:00+00:00')).to_i
end