Module:NecesseRecipes
Jump to navigation
Jump to search
Documentation for this module may be created at Module:NecesseRecipes/doc
local p = {} local itemsData = require("Module:NecesseItems") local recipesData = require("Module:NecesseCache").loadRecipes() function getItemData(itemStringID, value, defaultValue) return itemsData.getItemData({ ['args'] = { ['stringID'] = itemStringID, ['value'] = value, ['default'] = defaultValue } }); end function getItemStringID(itemNameOrStringID) return itemsData.getItemStringID({ ['args'] = { ['name'] = itemNameOrStringID, ['default'] = itemNameOrStringID } }); end function getItemDisplayName(itemStringID) if itemStringID == 'inventory' then return 'Inventory' end return getItemData(itemStringID, 'displayName', itemStringID) end function formatIngredientsOld(ingredients) local out = {} -- For some reason the above does not work for some, so we have to check index 1 and up until there are no more local index = 0 while true do local ingredient = ingredients[index] if ingredient then table.insert(out, getItemDisplayName(ingredient.stringID) .. ',' .. ingredient.amount) elseif index > 1 then break end index = index + 1 end return table.concat(out, '/') end function formatRecipeOld(recipe, delimiter) return recipe.amount .. delimiter .. formatIngredientsOld(recipe.ingredients) .. delimiter .. getItemDisplayName(recipe.station) end function getRecipesTableOld(itemStringIDs) if type(itemStringIDs) ~= 'table' then itemStringIDs = { itemStringIDs } end local recipesArray = recipesData['recipes'] local out = {} for i, recipe in ipairs(recipesArray) do for j, itemStringID in ipairs(itemStringIDs) do if recipe.stringID == getItemStringID(itemStringID) then table.insert(out, formatRecipeOld(recipe, '<RCRD>')) break end end end return out end function getRecipesUsagesTableOld(itemStringIDs) if type(itemStringIDs) ~= 'table' then itemStringIDs = { itemStringIDs } end local recipesArray = recipesData['recipes'] local out = {} for i, recipe in ipairs(recipesArray) do for j, itemStringID in ipairs(itemStringIDs) do local found = false -- For some reason the above does not work for some, so we have to check index 1 and up until there are no more local index = 0 while true do local ingredient = recipe.ingredients[index] if ingredient then if ingredient.stringID == getItemStringID(itemStringID) then found = true break end elseif index > 1 then break end index = index + 1 end if found then table.insert(out, getItemDisplayName(recipe.stringID) .. ';' .. formatRecipeOld(recipe, ';')) break end end end return out end function p.getRecipesOld(frame) local itemStringID = frame.args['stringID'] or frame.args[1] if itemStringID then return table.concat(getRecipesTableOld(itemStringID), '<MANY>') end return 'MISSING ITEM "stringID" PARAMETER' end function p.getRecipeUsagesOld(frame) local itemStringID = frame.args['stringID'] or frame.args[1] if itemStringID then return table.concat(getRecipesUsagesTableOld(itemStringID), '<MANY>') end return 'MISSING ITEM "stringID" PARAMETER' end return p