Module:RecipeUsage

local p = {} local cargo = mw.ext.cargo

p.argList = { '_pageName', 'productCount', 'product', 'alternateRecipe', 'recipeName', 'craftingTime', 'productsPerMinute', 'researchTier', 'ingredient1', 'quantity1', 'ingredient2', 'quantity2', 'ingredient3', 'quantity3', 'ingredient4', 'quantity4', 'ingredient5', 'quantity5', 'ingredient6', 'quantity6', 'ingredient7', 'quantity7', 'ingredient8', 'quantity8', 'ingredient9', 'quantity9', 'ingredient10', 'quantity10' }

--Creates recipe table for given recipes -- local function createTable(recipes) local tbl = {} for i, recipe in ipairs(recipes) do   if i == #recipes then recipe.tableEnd = 1 end recipe.structure = 'hidden' tbl[i] = mw.getCurrentFrame:expandTemplate{title='CraftingTable', args=recipe} end return table.concat(tbl) end

p.table = function(frame) local ingredient = mw.title.getCurrentTitle.text

local fields = table.concat(p.argList, ',')

local languageCheck = '' if string.match(mw.title.getCurrentTitle:fullUrl, "satisfactory.gamepedia") then local pageContent = mw.title.getCurrentTitle:getContent local languageCategory = string.match(pageContent, "%[%[Category:([%w%s%-]-) -translation%]%]") if languageCategory == nil then languageCategory = "" end if mw.language.isKnownLanguageTag(string.lower(languageCategory)) then languageCheck = '(_pageName like "%/' .. string.lower(languageCategory) .. '" OR _pageName not like "%/%") AND ' if mw.title.getCurrentTitle.isSubpage and mw.language.isKnownLanguageTag(mw.title.getCurrentTitle.subpageText) then ingredient = string.match(pageContent, "{{Infobox .-= ?(.-)\n") end else languageCheck = '_pageName not like "%/%" AND ' end end

if ingredient == nil then return 'no valid ingredient given, no data to show' end

local args = { where = languageCheck .. 'product IS NOT NULL AND (ingredient1="' .. ingredient .. '" OR ingredient2="' .. ingredient .. '" OR ingredient3="' .. ingredient .. '" OR ingredient4="' .. ingredient .. '" OR ingredient5="' .. ingredient .. '" OR ingredient6="' .. ingredient .. '" OR ingredient7="' .. ingredient .. '" OR ingredient8="' .. ingredient .. '" OR ingredient9="' .. ingredient .. '" OR ingredient10="' .. ingredient .. '")', orderBy = 'alternateRecipe ASC, researchTier ASC, product ASC' }

local recipes = cargo.query('crafting_recipes', fields, args)

return createTable(recipes) end

return p