Keine Bearbeitungszusammenfassung |
Keine Bearbeitungszusammenfassung |
||
Zeile 1: | Zeile 1: | ||
local p = {} | local p = {} | ||
function p. | -- Funktion zur Berechnung der angepassten Menge | ||
local | function p.calculateAmount(amount, portions, newPortions) | ||
local | local adjustedAmount = (tonumber(amount) or 0) * (newPortions / portions) | ||
return string.format("%.2f", adjustedAmount) -- Formatiert auf 2 Dezimalstellen | |||
local | end | ||
local | |||
local | -- 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 | for i = 1, 100 do | ||
local | local group = args["group" .. i] | ||
local | local ingredientName = args["ingredient" .. i .. "name"] | ||
local | local ingredientAmount = args["ingredient" .. i .. "amount"] | ||
local | local ingredientUnit = args["ingredient" .. i .. "unit"] | ||
if | if ingredientName then | ||
-- Optional: Gruppentitel nur anzeigen, wenn er nicht leer ist | |||
if group ~= "" and group ~= nil then | |||
if not ingredients[group] then | |||
if | ingredients[group] = {} | ||
if | |||
end | end | ||
group | 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 | |||
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 | end | ||
else | |||
table.insert(output, "* " .. items) -- Für Zutaten ohne Gruppenname | |||
end | end | ||
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 | end | ||
return p | return p |
Version vom 14. November 2024, 02:15 Uhr
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