Модуль:Meals Lookup: различия между версиями

Материал из Space Station 14 Вики
Нет описания правки
Нет описания правки
Строка 44: Строка 44:
     end
     end
     for reagentId, amount in pairs(p.getmicrowaverecipereagents(frame, recipe)) do
     for reagentId, amount in pairs(p.getmicrowaverecipereagents(frame, recipe)) do
         reagents = reagents .. frame:expandTemplate{ title = "Recipe Component", item = e.getname(frame, reagentId), amount = amount}
         reagents = reagents .. frame:expandTemplate{ title = "Chem Recipe Component", reagent = reagentId, amount = amount}
     end
     end
    out = frame:expandTemplate{ title = "Recipe Box",
    name = e.getname(frame, recipe["result"]),
    ["component-1"] = solids..reagents,
    transformer = frame:expandTemplate{title="Recipe Transformers", "microwaveRecipes", recipe["time"]},
    result = frame:expandTemplate{ title = "Recipe Component", item = e.getname(frame, recipe["result"])}}
     return out
     return out
end
end

Версия от 15:08, 21 октября 2023

Для документации этого модуля может быть создана страница Модуль:Meals Lookup/doc

local prototypes = mw.loadData("Module:Meals Lookup/data")
local e = require("Module:Entity_Lookup")

local p = {}
p.meals = prototypes.meals


function p.getrecipesfromtype(frame, type) -- {{#invoke:Meals Lookup|getrecipesfromtype|ProtoID}}
    return p.meals[type]
end

function p.getrecipe(frame, type, id)
    return p.getrecipesfromtype(frame, type)[id]
end

function p.getmicrowaverecipesolids(frame, recipe)
    local out = {}
    for ingredient, amount in pairs(recipe["solids"]) do
        -- table.insert(out, ingredient, amount)
        out[ingredient] = amount
    end
    return out
end

function p.getmicrowaverecipereagents(frame, recipe)
    local out = {}
    for ingredient, amount in pairs(recipe["reagents"]) do
        -- table.insert(out, ingredient, amount)
        out[ingredient] = amount
    end
    return out
end

function p.buildmicrowaverecipebox(frame, recipeId)
    local out = "hehe"
    local id = ""
    if frame.args["id"] ~= nil then id = frame.args["id"] 
    else id = recipeId end
    local recipe = p.getrecipe(frame, "microwaveRecipes", id)
    local solids = ""
    local reagents = ""
    for solidId, amount in pairs(p.getmicrowaverecipesolids(frame, recipe)) do
        solids = solids .. frame:expandTemplate{ title = "Recipe Component", item = e.getname(frame, solidId), amount = amount}
    end
    for reagentId, amount in pairs(p.getmicrowaverecipereagents(frame, recipe)) do
        reagents = reagents .. frame:expandTemplate{ title = "Chem Recipe Component", reagent = reagentId, amount = amount}
    end
    out = frame:expandTemplate{ title = "Recipe Box", 
    name = e.getname(frame, recipe["result"]), 
    ["component-1"] = solids..reagents, 
    transformer = frame:expandTemplate{title="Recipe Transformers", "microwaveRecipes", recipe["time"]}, 
    result = frame:expandTemplate{ title = "Recipe Component", item = e.getname(frame, recipe["result"])}}
    return out
end

-- returns all types for a recipe with given id, should not be used out of module
function p.getrecipetypes(frame, id)
    local out = {}
    for type, recipes in pairs(p.meals) do
        for recipeId, recipe in pairs(recipes) do
            if (recipeId:gsub(' ', '') == id:gsub(' ', '')) or (recipe["id"]:gsub(' ', '') == id:gsub(' ', '')) then
                table.insert(out, type)
                break
            end
        end
    end
    return out
end

-- tests.
function p.tests(frame)
    local out = ""
    out = out .. p.buildmicrowaverecipebox(frame, frame.args[1])
    return out
end

return p