From fcb827cc7717bee8a1150ebff942bfeda8d53b22 Mon Sep 17 00:00:00 2001 From: Dan Elbert Date: Fri, 14 Apr 2017 17:06:43 -0500 Subject: [PATCH] nutrition data cleanup --- app/decorators/nutrition_data_decorator.rb | 8 +-- app/models/nutrition_data.rb | 66 ++++++++++++---------- app/views/recipes/show.html.erb | 4 +- 3 files changed, 42 insertions(+), 36 deletions(-) diff --git a/app/decorators/nutrition_data_decorator.rb b/app/decorators/nutrition_data_decorator.rb index f813470..9b052c9 100644 --- a/app/decorators/nutrition_data_decorator.rb +++ b/app/decorators/nutrition_data_decorator.rb @@ -1,10 +1,10 @@ class NutritionDataDecorator < BaseDecorator - NutritionData::NUTRIENTS.each do |m| + def format_number(n) + '%.1f' % n + end - def format_number(n) - '%.1f' % n - end + NutritionData::NUTRIENTS.keys.each do |m| define_method m do format_number(super()) diff --git a/app/models/nutrition_data.rb b/app/models/nutrition_data.rb index 2e55106..3de8f5b 100644 --- a/app/models/nutrition_data.rb +++ b/app/models/nutrition_data.rb @@ -1,38 +1,38 @@ class NutritionData - NUTRIENTS = [ - :protein, - :lipids, - :kcal, - :fiber, - :sugar, - :carbohydrates, - :calcium, - :iron, - :magnesium, - :phosphorus, - :potassium, - :sodium, - :zinc, - :copper, - :manganese, - :vit_c, - :vit_b6, - :vit_b12, - :vit_a, - :vit_e, - :vit_d, - :vit_k, - :cholesterol - ] + NUTRIENTS = { + protein: 'g Protein', + lipids: 'g Fat', + kcal: 'Calories', + fiber: 'g Fiber', + sugar: 'g Sugar', + carbohydrates: 'g Carbohydrates', + calcium: nil, + iron: nil, + magnesium: nil, + phosphorus: nil, + potassium: nil, + sodium: 'mg Sodium', + zinc: nil, + copper: nil, + manganese: nil, + vit_c: nil, + vit_b6: nil, + vit_b12: nil, + vit_a: nil, + vit_e: nil, + vit_d: nil, + vit_k: 'µg Vitamin K', + cholesterol: nil + } attr_reader :errors - attr_reader *NUTRIENTS + attr_reader *NUTRIENTS.keys def initialize(recipe_ingredients) @errors = [] - NUTRIENTS.each do |n| + NUTRIENTS.keys.each do |n| self.instance_variable_set("@#{n}".to_sym, 0.0) end @@ -50,8 +50,9 @@ class NutritionData valid_ingredients.each do |i| grams = i.to_grams + missing = [] - NUTRIENTS.each do |k| + NUTRIENTS.each do |k, n| value = i.ingredient.send(k) if value.present? value = value.to_f @@ -59,12 +60,17 @@ class NutritionData delta = (grams / 100.0) * value self.instance_variable_set("@#{k}".to_sym, running_total + delta) else - @errors << "#{i.name} missing #{k} data" + missing << k end end + + missing = missing.map { |k| NUTRIENTS[k] }.compact + unless missing.empty? + @errors << "#{i.name} missing the following nutrients: #{missing.join(', ')}" + end end - NUTRIENTS.each do |k| + NUTRIENTS.each do |k, n| v = self.instance_variable_get("@#{k}".to_sym) self.instance_variable_set("@#{k}".to_sym, v.round(2)) end diff --git a/app/views/recipes/show.html.erb b/app/views/recipes/show.html.erb index ea018a1..86f2f2f 100644 --- a/app/views/recipes/show.html.erb +++ b/app/views/recipes/show.html.erb @@ -83,9 +83,9 @@
-

Nutrition Data

+

Nutrition Data

-
+
<% decorate(@recipe.nutrition_data, NutritionDataDecorator) do |nutrition_data| %>