class NutritionCalculator::CalorieBudgeter

Calculates Calorie Budget Per Day in Weekly Context

The ‘NutritionCalculator::CalorieBudgeter` is used to determine how many calories you need to consume and how many calories you need to burn via exercise for a given day in order to stay on target with your diet. In particular, it ensures that you consume at least enough to satisfy your resting metabolic rate each day, even if that means you need to burn off calories via exercise to keep on track. It operates on a weekly basis, so if you are over-/under-budget on a given day, the goals for the remainder of the week will be adjusted accordingly.

@example

cb = NutritionCalculator::CalorieBudgeter.new

cb.resting_metabolic_rate = 2_000 # calories per day

cb.weekly_calorie_goal = 10_500   # creates an average deficit of 500
                                  # calories/day

cb.num_days_to_budget = 5         # The number of days remaining in the
                                  # week, including the current day

cb.prior_days_calories = 3_524    # net calories from days 1 and 2

cb.calories_consumed = 0
cb.calories_burned = 0

cb.calories_remaining
#=> 2_000

cb.exercise_calories_remaining
#=> 605

cb.calories_consumed = 681 # total calories consumed today
cb.calories_burned = 1752

cb.calories_remaining
#=> 2_466

cb.exercise_calories_remaining
#=> 0

Public Class Methods

new(diet_period: nil, source_data: nil) click to toggle source
# File lib/nutrition_calculator/calorie_budgeter.rb, line 48
def initialize(diet_period: nil, source_data: nil)
  self.diet_period = diet_period if diet_period
  self.source_data = source_data if source_data
end

Public Instance Methods

diet_period=(diet_period) click to toggle source
# File lib/nutrition_calculator/calorie_budgeter.rb, line 53
def diet_period=(diet_period)
  self.resting_metabolic_rate = diet_period.resting_metabolic_rate
  self.weekly_calorie_goal = diet_period.net_calorie_goal
  self.num_days_to_budget = diet_period.days_remaining
end
source_data=(source_data) click to toggle source
# File lib/nutrition_calculator/calorie_budgeter.rb, line 59
def source_data=(source_data)
  self.prior_days_calories = source_data.prior_days_net_calories
  self.calories_consumed = source_data.calories_consumed_today
  self.calories_burned = source_data.calories_burned_today
end