Модуль:Meals Lookup
Материал из Space Station 14 Вики
Для документации этого модуля может быть создана страница Модуль:Meals Lookup/doc
local prototypes = mw.loadData("Module:Meals Lookup/data") local e = require("Module:Entity_Lookup") local p = {} p.meals = prototypes.meals function getrecipesfromtype(frame, type) -- {{#invoke:Meals Lookup|getrecipesfromtype|ProtoID}} return p.meals[type] end function getrecipe(frame, type, id) -- should not be invoked return getrecipesfromtype(frame, type)[id:gsub(' ', '')] end function getmicrowaverecipesolids(frame, recipe) -- should not be invoked local out = {} for ingredient, amount in pairs(recipe["solids"]) do out[ingredient] = amount end return out end function getmicrowaverecipereagents(frame, recipe) -- should not be invoked local out = {} for ingredient, amount in pairs(recipe["reagents"]) do out[ingredient] = amount end return out end function buildsolids(frame, array) -- should not be invoked local out = "" for solid, amount in pairs(array) do out = out .. frame:preprocess( "{{Recipe Component|item={{#invoke:Entity Lookup|getname|".. solid .."}}|image=Файл:Mousegif.gif|amount=".. amount .."}}" ) end return out end function p.buildreagents(frame, array) local out = "" for item, amount in pairs(array) do -- out = out .. frame:expandTemplate{ title = "Chem Recipe Component", reagent = item, amount = amount} out = out .. frame:preprocess( "{{Chem Recipe Component|reagent=".. item .."|amount={{{"..amount.."|1}}}}}" ) end return out end function p.buildmicrowaverecipebox(frame) local out = "hehe" local id = frame.args[1]:gsub(' ', '') local recipe = getrecipe(frame, "microwaveRecipes", id) local solids = buildsolids(frame, getmicrowaverecipesolids(frame, recipe)) local reagents = p.buildreagents(frame, getmicrowaverecipereagents(frame, recipe)) out = frame:preprocess("{{Recipe Box".. "|name={{#invoke:Entity Lookup|getname|".. recipe["result"] .."}}".. "|component-1="..solids .. "\n" .. reagents.. "|transformer={{Recipe Transformers|microwaveRecipes|"..recipe["time"].."}}".. "|result=".. frame:preprocess("{{Recipe Component|item={{#invoke:Entity Lookup|getname|".. recipe["result"] .."}}|image=Файл:Mousegif.gif}}" ) .. "}}") 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 .. buildsolids(frame, getmicrowaverecipesolids(frame, getrecipe(frame, frame.args[2], frame.args[1]))) out = out .. "\n" .. p.buildreagents(frame, getmicrowaverecipereagents(frame, getrecipe(frame, frame.args[2], frame.args[1]))) out = out .. "\n" .. frame:preprocess("{{#invoke:Meals Lookup|buildmicrowaverecipebox|".. frame.args[1] .. "}}") -- out = out .. p.buildmicrowaverecipebox(frame, frame.args[1]) return out end return p