Die Dokumentation für dieses Modul kann unter Modul:RezeptBerechnung/Doku erstellt werden
local p = {}
-- Funktion zur Berechnung der angepassten Menge
function p.calculateAmount(amount, portions, newPortions)
local adjustedAmount = (tonumber(amount) or 0) * (newPortions / portions)
return string.format("%.2f", adjustedAmount) -- Formatiert auf 2 Dezimalstellen
end
-- Funktion zur Anzeige der Zutatenliste
function p.renderIngredients(frame)
local args = frame.args
local portions = tonumber(args["portions"]) or 1
local newPortions = tonumber(args["newPortions"]) or portions
local ingredients = {}
for i = 1, 100 do
local group = args["group" .. i]
local ingredientName = args["ingredient" .. i .. "name"]
local ingredientAmount = args["ingredient" .. i .. "amount"]
local ingredientUnit = args["ingredient" .. i .. "unit"]
if ingredientName then
-- Optional: Gruppentitel nur anzeigen, wenn er nicht leer ist
if group ~= "" and group ~= nil then
if not ingredients[group] then
ingredients[group] = {}
end
table.insert(ingredients[group], p.getIngredientText(ingredientName, ingredientAmount, ingredientUnit, portions, newPortions))
else
table.insert(ingredients, p.getIngredientText(ingredientName, ingredientAmount, ingredientUnit, portions, newPortions))
end
end
end
-- Aufbau der Ausgabe
local output = {}
table.insert(output, "== Angepasste Zutaten für " .. newPortions .. " Portion(en) ==")
for group, items in pairs(ingredients) do
if type(group) == "string" then
table.insert(output, "=== " .. group .. " ===")
for _, item in ipairs(items) do
table.insert(output, "* " .. item)
end
else
table.insert(output, "* " .. items) -- Für Zutaten ohne Gruppenname
end
end
return table.concat(output, "\n")
end
-- Hilfsfunktion zur Formatierung der Zutat mit semantischem Attribut
function p.getIngredientText(name, amount, unit, portions, newPortions)
local adjustedAmount = p.calculateAmount(amount, portions, newPortions)
local ingredientText = adjustedAmount .. " " .. (unit or "") .. " " .. name
return "[[Has Ingredient::" .. name .. "|" .. ingredientText .. "]]"
end
return p