Module:RecipeUsage/sandbox

From Satisfactory Wiki
Jump to navigation Jump to search

Documentation for this module may be created at Module:RecipeUsage/sandbox/doc

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

p.argList = {
	'_pageName', 'productCount', 'name',
	'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.foot = 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

	local args = {
		where = languageCheck .. '(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 = 'name ASC'
	}

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

	return createTable(recipes)
end

return p