spec recipe_scaling
"""
Recipe Scaling
Demonstrates calculations and scaling.
Measure a recipe up or down based on servings needed.
"""
uses lemma units
data temperature: measure
-> unit celsius 1.0
data recipe: text
-> option "chocolate_cake"
-> option "bread"
-> option "cookies"
data butter_needed: 0.5
data eggs_needed: 3
data flour_needed: 2
data sugar_needed: 1.5
data recipe_name: recipe
data desired_servings: number
-> minimum 1
data original_servings: number
-> minimum 1
rule scaling_factor:
desired_servings / original_servings
rule scaled_flour: flour_needed * scaling_factor
rule scaled_sugar: sugar_needed * scaling_factor
rule scaled_butter: butter_needed * scaling_factor
rule scaled_eggs: eggs_needed * scaling_factor
rule total_dry_ingredients: scaled_flour + scaled_sugar
rule baking_time: 30 minute
unless desired_servings <= 4 then 35 minute
unless desired_servings >= 8 then 40 minute
rule oven_temperature: 175 celsius
unless recipe_name is "bread" then 190 celsius