Module:MoneyMakingGuide: Difference between revisions
From Melvor Idle
mNo edit summary |
m (Minor fixes) |
||
Line 4: | Line 4: | ||
local num = require('Module:Number') | local num = require('Module:Number') | ||
local paramtest = require('Module:Shared/Paramtest') | local paramtest = require('Module:Shared/Paramtest') | ||
local itemdb = require('Module:Items') | |||
local MaxDynamicArgs = 20 | local MaxDynamicArgs = 20 | ||
Line 55: | Line 56: | ||
if not paramtest.has_content(pValue) or tonumber(pValue) == nil then | if not paramtest.has_content(pValue) or tonumber(pValue) == nil then | ||
pValue = itemdb.getItemValue(pName) | |||
pValue = | |||
else | else | ||
pValue = tonumber(pValue) | pValue = tonumber(pValue) | ||
Line 91: | Line 91: | ||
end | end | ||
table.insert( | table.insert(skills, { | ||
prmNumber = i, | prmNumber = i, | ||
name = pSkill, | name = pSkill, | ||
Line 97: | Line 97: | ||
end | end | ||
return | return skills | ||
end | end | ||
Line 110: | Line 110: | ||
return tostring(error) | return tostring(error) | ||
end | |||
function p.test() | |||
local args = { | |||
guideName = "", | |||
interval = "", | |||
skills = "", | |||
items = "", | |||
other = "", | |||
skillExp1 = "Magic", | |||
skillExp1amount = "1000", | |||
skillExp2 = "Mining", | |||
skillExp2amount = "420", | |||
input1 = "nature rune", | |||
input1amount = "5", | |||
input1value = "69", | |||
input2 = "Fire Rune", | |||
input2amount = "20", | |||
output1 = "gp", | |||
output1amount = "1050", | |||
category = "", | |||
dlc = "", | |||
intensity = "", | |||
explanation = "" | |||
} | |||
local result = parseItemInOut(args, 'input') | |||
for k, v in pairs(result) do | |||
for a ,b in pairs(v) do | |||
mw.log(a .. ' = '.. tostring(b)) | |||
end | |||
end | |||
end | end | ||
return p | return p |
Revision as of 13:55, 20 March 2024
Documentation for this module may be created at Module:MoneyMakingGuide/doc
local p = {}
local shared = require('Module:Shared')
local num = require('Module:Number')
local paramtest = require('Module:Shared/Paramtest')
local itemdb = require('Module:Items')
local MaxDynamicArgs = 20
local AmountSuffix = 'amount'
local ValueSuffix = 'value'
local SkillPrefix = 'skillExp'
function p.main(frame)
local args = frame:getParent().args
return p._main(args)
end
function p._main(args)
return formatError("Module:MoneyMakingGuide is not yet implemented. Do not use.")
end
--- Builds the section of the mmg table that shows the input and output items.
-- @param items (table) A table containing items
-- @return (string) The HTML representation of the item table section.
local function buildItemTable(items)
end
--- Builds the section of the mmg table that shows the skill experience gained.
-- @param items (table) A table containing skills and experience values.
-- @return (string) The HTML representation of the item table section.
local function buildExpTable(skills)
end
--- Parses the input and output items from the provided arguments.
-- @param args (table) Passed args table from the caller.
-- @param prefix (string) The prefix that determines input or output item parsing.
-- @return (table) A table containing parsed item information.
local function parseItemInOut(args, prefix)
local items = {}
for i = 1, MaxDynamicArgs do
local numPrefix = prefix .. i
-- Stop parsing. Could cause problems if user input skips indexes.
if paramtest.is_empty(args[numPrefix]) then
break
end
local pName = args[numPrefix] -- Guaranteed to have a value.
local pAmount = args[numPrefix .. AmountSuffix]
local pValue = args[numPrefix .. ValueSuffix]
-- Values *should* always exit this function with a non nil value.
if paramtest.has_content(pAmount) then
pAmount = tonumber(pAmount)
end
if not paramtest.has_content(pValue) or tonumber(pValue) == nil then
pValue = itemdb.getItemValue(pName)
else
pValue = tonumber(pValue)
end
table.insert(items, {
prmNumber = i,
name = pName,
amount = pAmount,
value = pValue})
end
return items
end
--- Parses the skill experience from the provided arguments.
-- @param args (table) Passed args table from the caller.
-- @return (table) A table containing parsed skill experience information.
local function parseExp(args)
local skills = {}
for i = 1, MaxDynamicArgs do
local skillPrefix = 'skillExp' .. i
-- Stop parsing. Could cause problems if user input skips indexes.
if paramtest.is_empty(args[skillPrefix]) then
break
end
local pSkill = args[skillPrefix] -- Guaranteed to have a value.
local pExp = args[skillPrefix .. AmountSuffix]
if paramtest.has_content(pExp) then
pExp = tonumber(pExp)
end
table.insert(skills, {
prmNumber = i,
name = pSkill,
exp = pExp})
end
return skills
end
--- Formats a wikicode string to be bold and red
local function formatError(errorMessage)
local eror = mw.html.create('span')
:wikitext("'''")
:css('color', 'red')
:wikitext(errorMessage)
:wikitext("'''")
:done()
return tostring(error)
end
function p.test()
local args = {
guideName = "",
interval = "",
skills = "",
items = "",
other = "",
skillExp1 = "Magic",
skillExp1amount = "1000",
skillExp2 = "Mining",
skillExp2amount = "420",
input1 = "nature rune",
input1amount = "5",
input1value = "69",
input2 = "Fire Rune",
input2amount = "20",
output1 = "gp",
output1amount = "1050",
category = "",
dlc = "",
intensity = "",
explanation = ""
}
local result = parseItemInOut(args, 'input')
for k, v in pairs(result) do
for a ,b in pairs(v) do
mw.log(a .. ' = '.. tostring(b))
end
end
end
return p