Difference between revisions of "Module:Materials"
From Nookipedia, the Animal Crossing wiki
PanchamBro (talk | contribs) (changing to module to generate the Material template) |
PanchamBro (talk | contribs) (fixing module to be able to be used in other modules) |
||
Line 1: | Line 1: | ||
local p = {} | local p = {} | ||
data = mw.loadData("Module:Materials/Data") | data = mw.loadData("Module:Materials/Data") | ||
− | function p.outputMaterialNH ( | + | |
+ | local function getArgs(frame) | ||
+ | local args = {} | ||
+ | for key, value in pairs(frame:getParent().args) do | ||
+ | args[key] = value | ||
+ | end | ||
+ | for key, value in pairs(frame.args) do | ||
+ | args[key] = value | ||
+ | end | ||
+ | return args | ||
+ | end | ||
+ | |||
+ | function p.main(frame) | ||
+ | local args = getArgs(frame) | ||
+ | local game = args.nolink or '' | ||
+ | local nb = args.nb or '' | ||
+ | local size = args.size or '' | ||
+ | local material = args[1] or args.material or '' | ||
+ | local num = args[2] or args.num or '' | ||
+ | if game == "PC" then | ||
+ | return p.outputCurrencyPC(material, num, nb, size) | ||
+ | elseif game == "NH" then | ||
+ | return p.outputCurrencyNH(material, num, nb, size) | ||
+ | end | ||
+ | end | ||
+ | |||
+ | function p.outputMaterialNH (material, num, nb, size) | ||
local function isEmpty(s) | local function isEmpty(s) | ||
return s == nil or s == '' | return s == nil or s == '' | ||
Line 7: | Line 33: | ||
local print = '<span style="display:inline-block; white-space:nowrap;">' | local print = '<span style="display:inline-block; white-space:nowrap;">' | ||
− | if not isEmpty(data.materialNH[ | + | if not isEmpty(data.materialNH[material]) and not isEmpty(data.materialNH[material][1]) then |
− | print = print .. '[[File:'.. data.materialNH[ | + | print = print .. '[[File:'.. data.materialNH[material][1] |
− | if not isEmpty( | + | if not isEmpty(size) then |
− | print = print .. '|' .. | + | print = print .. '|' .. size |
else | else | ||
− | print = print .. '|' .. data.materialNH[ | + | print = print .. '|' .. data.materialNH[material][2] |
end | end | ||
print = print .. '|link=|alt=]] ' | print = print .. '|link=|alt=]] ' | ||
else | else | ||
print = print .. '[[File:Leaf NH Icon cropped.png' | print = print .. '[[File:Leaf NH Icon cropped.png' | ||
− | if not isEmpty( | + | if not isEmpty(size) then |
− | print = print .. '|' .. | + | print = print .. '|' .. size |
else | else | ||
print = print .. '|15px' | print = print .. '|15px' | ||
Line 25: | Line 51: | ||
end | end | ||
− | if not isEmpty( | + | if not isEmpty(num) then |
− | print = print .. | + | print = print .. num .. '× ' |
else | else | ||
print = print .. '' | print = print .. '' | ||
end | end | ||
− | if not isEmpty(data.materialNH[ | + | if not isEmpty(data.materialNH[material]) and not isEmpty(data.materialNH[material][3]) then |
− | print = print .. '[[' .. data.materialNH[ | + | print = print .. '[[' .. data.materialNH[material][3] .. '|' .. data.materialNH[material][4] .. ']]' |
else | else | ||
− | if not isEmpty(data.materialNH[ | + | if not isEmpty(data.materialNH[material]) and not isEmpty(data.materialNH[material][5]) then |
− | print = print .. data.materialNH[ | + | print = print .. data.materialNH[material][5] |
else | else | ||
− | print = print .. '[[Item:' .. | + | print = print .. '[[Item:' .. material .. ' (New Horizons)|' .. material .. ']]' |
end | end | ||
end | end | ||
print = print .. '</span>' | print = print .. '</span>' | ||
− | if not isEmpty( | + | if not isEmpty(nb) then |
print = print .. '' | print = print .. '' | ||
else | else | ||
Line 48: | Line 74: | ||
end | end | ||
− | function p.outputMaterialPC ( | + | function p.outputMaterialPC (material, num, nb, size) |
local function isEmpty(s) | local function isEmpty(s) | ||
return s == nil or s == '' | return s == nil or s == '' | ||
end | end | ||
local print = '<span style="display:inline-block; white-space:nowrap;">' | local print = '<span style="display:inline-block; white-space:nowrap;">' | ||
− | if not isEmpty(data.materialPC[ | + | if not isEmpty(data.materialPC[material]) and not isEmpty(data.materialPC[material][1]) then |
− | print = print .. '[[File:'.. data.materialPC[ | + | print = print .. '[[File:'.. data.materialPC[material][1] |
− | if not isEmpty( | + | if not isEmpty(size) then |
− | print = print .. '|' .. | + | print = print .. '|' .. size |
else | else | ||
− | print = print .. '|' .. data.materialPC[ | + | print = print .. '|' .. data.materialPC[material][2] |
end | end | ||
print = print .. '|link=|alt=]] ' | print = print .. '|link=|alt=]] ' | ||
end | end | ||
− | if not isEmpty( | + | if not isEmpty(num) then |
− | print = print .. | + | print = print .. num .. '× ' |
else | else | ||
print = print .. '' | print = print .. '' | ||
end | end | ||
− | if not isEmpty(data.materialPC[ | + | if not isEmpty(data.materialPC[material]) and not isEmpty(data.materialPC[material][3]) then |
− | print = print .. '[[' .. data.materialPC[ | + | print = print .. '[[' .. data.materialPC[material][3] .. '|' .. data.materialPC[material][4] .. ']]' |
else | else | ||
− | if not isEmpty(data.materialPC[ | + | if not isEmpty(data.materialPC[material]) and not isEmpty(data.materialPC[material][5]) then |
− | print = print .. data.materialPC[ | + | print = print .. data.materialPC[material][5] |
else | else | ||
− | print = print .. '[[Item:' .. | + | print = print .. '[[Item:' .. material .. ' (Pocket Camp)|' .. material .. ']]' |
end | end | ||
end | end | ||
print = print .. '</span>' | print = print .. '</span>' | ||
− | if not isEmpty( | + | if not isEmpty(nb) then |
print = print .. '' | print = print .. '' | ||
else | else |
Revision as of 17:46, March 26, 2022
Module documentation (view)
Usage
This Lua module outputs the list of materials for the {{Material}} and {{PC Material}} templates to account for preprocessor node count limits. Data is stored in a table, and can determine how certain variables are used.
To add additional materials, see Module:Materials/Data.
See also
local p = {}
data = mw.loadData("Module:Materials/Data")
local function getArgs(frame)
local args = {}
for key, value in pairs(frame:getParent().args) do
args[key] = value
end
for key, value in pairs(frame.args) do
args[key] = value
end
return args
end
function p.main(frame)
local args = getArgs(frame)
local game = args.nolink or ''
local nb = args.nb or ''
local size = args.size or ''
local material = args[1] or args.material or ''
local num = args[2] or args.num or ''
if game == "PC" then
return p.outputCurrencyPC(material, num, nb, size)
elseif game == "NH" then
return p.outputCurrencyNH(material, num, nb, size)
end
end
function p.outputMaterialNH (material, num, nb, size)
local function isEmpty(s)
return s == nil or s == ''
end
local print = '<span style="display:inline-block; white-space:nowrap;">'
if not isEmpty(data.materialNH[material]) and not isEmpty(data.materialNH[material][1]) then
print = print .. '[[File:'.. data.materialNH[material][1]
if not isEmpty(size) then
print = print .. '|' .. size
else
print = print .. '|' .. data.materialNH[material][2]
end
print = print .. '|link=|alt=]] '
else
print = print .. '[[File:Leaf NH Icon cropped.png'
if not isEmpty(size) then
print = print .. '|' .. size
else
print = print .. '|15px'
end
print = print .. '|link=|alt=]] '
end
if not isEmpty(num) then
print = print .. num .. '× '
else
print = print .. ''
end
if not isEmpty(data.materialNH[material]) and not isEmpty(data.materialNH[material][3]) then
print = print .. '[[' .. data.materialNH[material][3] .. '|' .. data.materialNH[material][4] .. ']]'
else
if not isEmpty(data.materialNH[material]) and not isEmpty(data.materialNH[material][5]) then
print = print .. data.materialNH[material][5]
else
print = print .. '[[Item:' .. material .. ' (New Horizons)|' .. material .. ']]'
end
end
print = print .. '</span>'
if not isEmpty(nb) then
print = print .. ''
else
print = print .. '<br/>'
end
return print
end
function p.outputMaterialPC (material, num, nb, size)
local function isEmpty(s)
return s == nil or s == ''
end
local print = '<span style="display:inline-block; white-space:nowrap;">'
if not isEmpty(data.materialPC[material]) and not isEmpty(data.materialPC[material][1]) then
print = print .. '[[File:'.. data.materialPC[material][1]
if not isEmpty(size) then
print = print .. '|' .. size
else
print = print .. '|' .. data.materialPC[material][2]
end
print = print .. '|link=|alt=]] '
end
if not isEmpty(num) then
print = print .. num .. '× '
else
print = print .. ''
end
if not isEmpty(data.materialPC[material]) and not isEmpty(data.materialPC[material][3]) then
print = print .. '[[' .. data.materialPC[material][3] .. '|' .. data.materialPC[material][4] .. ']]'
else
if not isEmpty(data.materialPC[material]) and not isEmpty(data.materialPC[material][5]) then
print = print .. data.materialPC[material][5]
else
print = print .. '[[Item:' .. material .. ' (Pocket Camp)|' .. material .. ']]'
end
end
print = print .. '</span>'
if not isEmpty(nb) then
print = print .. ''
else
print = print .. '<br/>'
end
return print
end
return p