Module:RequiredCraftingStations

local p = {} function p.neededstations( f ) local args = f:getParent.args local stations = {["Fabricator"] = false, ["Mortar and Pestle"] = false, ["Smelter"] = false, ["Petroleum Slime Incubator"] = false, ["Workbench"] = false} local dependencies = { ["Fabricator"] = { "Electronics", "Polymer", "Steel Boots" },   ["Mortar and Pestle"] = { "Bone Ash", "Sleepy Potion" },   ["Smelter"] = { "Charcoal", "Copper Ingot", "Glass", "Iron Ingot", "Silver Ingot" },   ["Petroleum Slime Incubator"] = { "Petroleum Barrel" },   ["Workbench"] = { "Glass Window", "Iron Boots", "Iron Foundation", "Petroleum Barrel" },

}

-- check if item itself needs a station to be crafted in. if yes, set to true if args.craftedin ~= nil and stations[args.craftedin] ~= nil then stations[args.craftedin] = true end -- get iconsize local iconsize = '20px' if args.iconsize ~= nil then iconsize = args.iconsize end

-- test all given resources and set station to true if needed and station is not already on true for _,res in ipairs(args) do   if res ~= '' then for station,_ in pairs(dependencies) do       if not stations[station] and p.inTable(dependencies[station], res) then stations[station] = true end end end end

local returnTable = {} for station, needed in pairs(stations) do   if needed then table.insert(returnTable,' '..station..'') end end

return table.concat(returnTable,' ') end

function p.inTable(tbl, item) for _, value in pairs(tbl) do   if string.lower(value) == string.lower(item) then return true end end return false end

return p