Module: Strava::Models::Mixins::Distance

Extended by:
ActiveSupport::Concern
Included in:
ActivityTotal, DetailedActivity, DetailedGear, DetailedSegment, DetailedSegmentEffort, ExplorerSegment, Lap, Route, Split, SummaryActivity, SummaryGear, SummarySegment, SummarySegmentEffort
Defined in:
lib/strava/models/mixins/distance.rb

Overview

Provides distance conversion and formatting methods.

This mixin is included in models that have a distance property, such as activities, laps, segments, and routes. It provides helper methods to convert and format distances in various units.

Examples:

Using distance helpers

activity = client.activity(1234567890)
puts activity.distance              # => 10000.0 (meters)
puts activity.distance_s            # => "10.0km"
puts activity.distance_in_miles_s   # => "6.21mi"
puts activity.distance_in_yards_s   # => "10936.1yd"

Instance Method Summary collapse

Instance Method Details

#distance_in_feetFloat

Returns Distance in feet.

Returns:

  • (Float)

    Distance in feet



34
35
36
# File 'lib/strava/models/mixins/distance.rb', line 34

def distance_in_feet
  distance * 3.28084
end

#distance_in_kilometersFloat

Returns Distance in kilometers.

Returns:

  • (Float)

    Distance in kilometers



70
71
72
# File 'lib/strava/models/mixins/distance.rb', line 70

def distance_in_kilometers
  distance_in_meters / 1000
end

#distance_in_kilometers_sString?

Returns Formatted distance in kilometers (e.g., "10.0km").

Returns:

  • (String, nil)

    Formatted distance in kilometers (e.g., "10.0km")



75
76
77
78
79
# File 'lib/strava/models/mixins/distance.rb', line 75

def distance_in_kilometers_s
  return unless distance&.positive?

  format('%gkm', format('%.2f', distance_in_kilometers))
end

#distance_in_metersFloat

Returns Distance in meters.

Returns:

  • (Float)

    Distance in meters



29
30
31
# File 'lib/strava/models/mixins/distance.rb', line 29

def distance_in_meters
  distance
end

#distance_in_meters_sString?

Returns Formatted distance in meters (e.g., "10000m").

Returns:

  • (String, nil)

    Formatted distance in meters (e.g., "10000m")



63
64
65
66
67
# File 'lib/strava/models/mixins/distance.rb', line 63

def distance_in_meters_s
  return unless distance&.positive?

  format('%gm', format('%d', distance_in_meters))
end

#distance_in_milesFloat

Returns Distance in miles.

Returns:

  • (Float)

    Distance in miles



39
40
41
# File 'lib/strava/models/mixins/distance.rb', line 39

def distance_in_miles
  distance_in_meters * 0.00062137
end

#distance_in_miles_sString?

Returns Formatted distance in miles (e.g., "6.21mi").

Returns:

  • (String, nil)

    Formatted distance in miles (e.g., "6.21mi")



44
45
46
47
48
# File 'lib/strava/models/mixins/distance.rb', line 44

def distance_in_miles_s
  return unless distance&.positive?

  format('%gmi', format('%.2f', distance_in_miles))
end

#distance_in_yardsFloat

Returns Distance in yards.

Returns:

  • (Float)

    Distance in yards



51
52
53
# File 'lib/strava/models/mixins/distance.rb', line 51

def distance_in_yards
  distance_in_meters * 1.09361
end

#distance_in_yards_sString?

Returns Formatted distance in yards (e.g., "10936.1yd").

Returns:

  • (String, nil)

    Formatted distance in yards (e.g., "10936.1yd")



56
57
58
59
60
# File 'lib/strava/models/mixins/distance.rb', line 56

def distance_in_yards_s
  return unless distance&.positive?

  format('%gyd', format('%.1f', distance_in_yards))
end

#distance_sString?

Returns Default formatted distance (same as distance_in_kilometers_s).

Returns:

  • (String, nil)

    Default formatted distance (same as distance_in_kilometers_s)



82
83
84
# File 'lib/strava/models/mixins/distance.rb', line 82

def distance_s
  distance_in_kilometers_s
end