Zuletzt bearbeitet vor 4 Tagen
von Xineohp1506

Modul:RezeptBerechnung: Unterschied zwischen den Versionen

Keine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung
Zeile 12: Zeile 12:
         local newGroup = frame.args["ingredient" .. i .. "group"]
         local newGroup = frame.args["ingredient" .. i .. "group"]
         local name = frame.args["ingredient" .. i .. "name"]
         local name = frame.args["ingredient" .. i .. "name"]
         local quantity = tonumber(frame.args["ingredient" .. i .. "quantity"])
         local quantity = frame.args["ingredient" .. i .. "quantity"]
         local unit = frame.args["ingredient" .. i .. "unit"]
         local unit = frame.args["ingredient" .. i .. "unit"]


         -- Überprüfen, ob der Name der Zutat definiert ist, um nur vorhandene Zutaten zu verarbeiten
         -- Wenn der Name der Zutat nicht definiert ist, beenden wir die Schleife
         if name and name ~= "" then
         if not name or name == "" then
             hasIngredients = true -- Es gibt mindestens eine Zutat
             break
           
        end
            -- Wenn eine neue Gruppe anfängt und `groupContent` gefüllt ist, wird die vorherige Gruppe zum Ergebnis hinzugefügt
 
            if newGroup and newGroup ~= "" and newGroup ~= group then
        hasIngredients = true -- Es gibt mindestens eine Zutat
                if groupContent ~= "" then
 
                    result = result .. "\n=== " .. group .. " ===\n" .. groupContent
        -- Wenn eine neue Gruppe anfängt und `groupContent` gefüllt ist, wird die vorherige Gruppe zum Ergebnis hinzugefügt
                end
        if newGroup and newGroup ~= "" and newGroup ~= group then
                group = newGroup
            if groupContent ~= "" then
                groupContent = ""
                result = result .. "\n=== " .. group .. " ===\n" .. groupContent
             end
             end
            group = newGroup
            groupContent = ""
        end


            -- Berechne die Menge basierend auf der Personenanzahl und füge sie zum `groupContent` hinzu
        -- Berechne die Menge basierend auf der Personenanzahl und füge sie zum `groupContent` hinzu
            local newQuantity = quantity and quantity * persons or ""
        local newQuantity = tonumber(quantity) and tonumber(quantity) * persons or ""
            local ingredientText = "* [[Has Ingredient::" .. name .. "]]: " .. (newQuantity ~= "" and (newQuantity .. " " .. (unit or "")) or "") .. "\n"
        local ingredientText = "* [[Has Ingredient::" .. name .. "]]: " .. (newQuantity ~= "" and (newQuantity .. " " .. (unit or "")) or "") .. "\n"
           
       
            if newGroup and newGroup ~= "" then
        if newGroup and newGroup ~= "" then
                groupContent = groupContent .. ingredientText
            groupContent = groupContent .. ingredientText
            else
        else
                result = result .. ingredientText -- Falls keine Gruppe definiert ist, direkt zur Hauptliste hinzufügen
            result = result .. ingredientText -- Falls keine Gruppe definiert ist, direkt zur Hauptliste hinzufügen
            end
         end
         end
     end
     end

Version vom 14. November 2024, 02:30 Uhr

Die Dokumentation für dieses Modul kann unter Modul:RezeptBerechnung/Doku erstellt werden

local p = {}

function p.calculateIngredients(frame)
    local persons = tonumber(frame.args["persons"]) or 1
    local result = ""
    
    local group = nil
    local groupContent = "" -- Zwischenspeicher für Zutaten in der aktuellen Gruppe
    local hasIngredients = false -- Prüfen, ob Zutaten vorhanden sind

    for i = 1, 100 do
        local newGroup = frame.args["ingredient" .. i .. "group"]
        local name = frame.args["ingredient" .. i .. "name"]
        local quantity = frame.args["ingredient" .. i .. "quantity"]
        local unit = frame.args["ingredient" .. i .. "unit"]

        -- Wenn der Name der Zutat nicht definiert ist, beenden wir die Schleife
        if not name or name == "" then
            break
        end

        hasIngredients = true -- Es gibt mindestens eine Zutat

        -- Wenn eine neue Gruppe anfängt und `groupContent` gefüllt ist, wird die vorherige Gruppe zum Ergebnis hinzugefügt
        if newGroup and newGroup ~= "" and newGroup ~= group then
            if groupContent ~= "" then
                result = result .. "\n=== " .. group .. " ===\n" .. groupContent
            end
            group = newGroup
            groupContent = ""
        end

        -- Berechne die Menge basierend auf der Personenanzahl und füge sie zum `groupContent` hinzu
        local newQuantity = tonumber(quantity) and tonumber(quantity) * persons or ""
        local ingredientText = "* [[Has Ingredient::" .. name .. "]]: " .. (newQuantity ~= "" and (newQuantity .. " " .. (unit or "")) or "") .. "\n"
        
        if newGroup and newGroup ~= "" then
            groupContent = groupContent .. ingredientText
        else
            result = result .. ingredientText -- Falls keine Gruppe definiert ist, direkt zur Hauptliste hinzufügen
        end
    end

    -- Letzte Gruppe hinzufügen, falls sie nicht leer ist
    if groupContent ~= "" then
        result = result .. (group and "\n=== " .. group .. " ===\n" or "") .. groupContent
    end

    -- Füge die Hauptüberschrift nur hinzu, wenn Zutaten vorhanden sind
    if hasIngredients then
        return "== Zutaten für " .. persons .. " Person(en) ==\n" .. result
    else
        return "" -- Gibt eine leere Zeichenkette zurück, wenn keine Zutaten vorhanden sind
    end
end

return p