class Uruz::Vo2max

Constants

CLASSIFICATIONS
GENDER

Public Class Methods

calculate(distance) click to toggle source
# File lib/uruz/vo2max.rb, line 6
def self.calculate(distance)
        vo2max_result = (distance - 504.1) / 44.8
end
classification(distance, age, gender) click to toggle source
# File lib/uruz/vo2max.rb, line 10
def self.classification(distance, age, gender)
        vo2max_result = calculate(distance)

        vo2max_gender_data = gender.eql?(:male) ? $vo2max_male_data : $vo2max_female_data

        classification = result_by_gender(vo2max_gender_data, age, vo2max_result)
        classification.first
end

Private Class Methods

ranking?(level, value, vo2max_data) click to toggle source
# File lib/uruz/vo2max.rb, line 29
def self.ranking?(level, value, vo2max_data)
        vo2max_data[level].to_range.include?(value)
end
result_by_gender(vo2max_gender_data, age, vo2max_result) click to toggle source
# File lib/uruz/vo2max.rb, line 21
def self.result_by_gender(vo2max_gender_data, age, vo2max_result)
        vo2max_gender_data.each do |row|
                next unless row[:age].to_range.include?(age)

                return CLASSIFICATIONS.select { |level| ranking?(level, vo2max_result, row) }
        end
end