Difference between revisions of "Module:Materials"
From Nookipedia, the Animal Crossing wiki
SuperHamster (talk | contribs) (Creating module to convert JSON to material templates) |
PanchamBro (talk | contribs) (changing to module to generate the Material template) |
||
Line 1: | Line 1: | ||
local p = {} | local p = {} | ||
− | function p. | + | data = mw.loadData("Module:Materials/Data") |
− | + | function p.outputMaterialNH (frame) | |
− | local | + | 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[frame.args['1']]) and not isEmpty(data.materialNH[frame.args['1']][1]) then | ||
+ | print = print .. '[[File:'.. data.materialNH[frame.args['1']][1] | ||
+ | if not isEmpty(frame.args['size']) then | ||
+ | print = print .. '|' .. frame.args['size'] | ||
+ | else | ||
+ | print = print .. '|' .. data.materialNH[frame.args['1']][2] | ||
+ | end | ||
+ | print = print .. '|link=|alt=]] ' | ||
+ | else | ||
+ | print = print .. '[[File:Leaf NH Icon cropped.png' | ||
+ | if not isEmpty(frame.args['size']) then | ||
+ | print = print .. '|' .. frame.args['size'] | ||
+ | else | ||
+ | print = print .. '|15px' | ||
+ | end | ||
+ | print = print .. '|link=|alt=]] ' | ||
+ | end | ||
+ | |||
+ | if not isEmpty(frame.args['2']) then | ||
+ | print = print .. frame.args['2'] .. '× ' | ||
+ | else | ||
+ | print = print .. '' | ||
+ | end | ||
+ | if not isEmpty(data.materialNH[frame.args['1']]) and not isEmpty(data.materialNH[frame.args['1']][3]) then | ||
+ | print = print .. '[[' .. data.materialNH[frame.args['1']][3] .. '|' .. data.materialNH[frame.args['1']][4] .. ']]' | ||
+ | else | ||
+ | if not isEmpty(data.materialNH[frame.args['1']]) and not isEmpty(data.materialNH[frame.args['1']][5]) then | ||
+ | print = print .. data.materialNH[frame.args['1']][5] | ||
+ | else | ||
+ | print = print .. '[[Item:' .. frame.args['1'] .. ' (New Horizons)|' .. frame.args['1'] .. ']]' | ||
+ | end | ||
+ | end | ||
+ | print = print .. '</span>' | ||
+ | if not isEmpty(frame.args['nb']) then | ||
+ | print = print .. '' | ||
+ | else | ||
+ | print = print .. '<br/>' | ||
+ | end | ||
+ | return print | ||
+ | end | ||
+ | |||
+ | function p.outputMaterialPC (frame) | ||
+ | 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[frame.args['1']]) and not isEmpty(data.materialPC[frame.args['1']][1]) then | ||
+ | print = print .. '[[File:'.. data.materialPC[frame.args['1']][1] | ||
+ | if not isEmpty(frame.args['size']) then | ||
+ | print = print .. '|' .. frame.args['size'] | ||
+ | else | ||
+ | print = print .. '|' .. data.materialPC[frame.args['1']][2] | ||
+ | end | ||
+ | print = print .. '|link=|alt=]] ' | ||
+ | end | ||
+ | if not isEmpty(frame.args['2']) then | ||
+ | print = print .. frame.args['2'] .. '× ' | ||
+ | else | ||
+ | print = print .. '' | ||
+ | end | ||
+ | if not isEmpty(data.materialPC[frame.args['1']]) and not isEmpty(data.materialPC[frame.args['1']][3]) then | ||
+ | print = print .. '[[' .. data.materialPC[frame.args['1']][3] .. '|' .. data.materialPC[frame.args['1']][4] .. ']]' | ||
+ | else | ||
+ | if not isEmpty(data.materialPC[frame.args['1']]) and not isEmpty(data.materialPC[frame.args['1']][5]) then | ||
+ | print = print .. data.materialPC[frame.args['1']][5] | ||
+ | else | ||
+ | print = print .. '[[Item:' .. frame.args['1'] .. ' (Pocket Camp)|' .. frame.args['1'] .. ']]' | ||
+ | end | ||
+ | end | ||
+ | print = print .. '</span>' | ||
+ | if not isEmpty(frame.args['nb']) then | ||
+ | print = print .. '' | ||
+ | else | ||
+ | print = print .. '<br/>' | ||
+ | end | ||
+ | return print | ||
end | end | ||
return p | return p |
Revision as of 18:19, March 23, 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")
function p.outputMaterialNH (frame)
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[frame.args['1']]) and not isEmpty(data.materialNH[frame.args['1']][1]) then
print = print .. '[[File:'.. data.materialNH[frame.args['1']][1]
if not isEmpty(frame.args['size']) then
print = print .. '|' .. frame.args['size']
else
print = print .. '|' .. data.materialNH[frame.args['1']][2]
end
print = print .. '|link=|alt=]] '
else
print = print .. '[[File:Leaf NH Icon cropped.png'
if not isEmpty(frame.args['size']) then
print = print .. '|' .. frame.args['size']
else
print = print .. '|15px'
end
print = print .. '|link=|alt=]] '
end
if not isEmpty(frame.args['2']) then
print = print .. frame.args['2'] .. '× '
else
print = print .. ''
end
if not isEmpty(data.materialNH[frame.args['1']]) and not isEmpty(data.materialNH[frame.args['1']][3]) then
print = print .. '[[' .. data.materialNH[frame.args['1']][3] .. '|' .. data.materialNH[frame.args['1']][4] .. ']]'
else
if not isEmpty(data.materialNH[frame.args['1']]) and not isEmpty(data.materialNH[frame.args['1']][5]) then
print = print .. data.materialNH[frame.args['1']][5]
else
print = print .. '[[Item:' .. frame.args['1'] .. ' (New Horizons)|' .. frame.args['1'] .. ']]'
end
end
print = print .. '</span>'
if not isEmpty(frame.args['nb']) then
print = print .. ''
else
print = print .. '<br/>'
end
return print
end
function p.outputMaterialPC (frame)
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[frame.args['1']]) and not isEmpty(data.materialPC[frame.args['1']][1]) then
print = print .. '[[File:'.. data.materialPC[frame.args['1']][1]
if not isEmpty(frame.args['size']) then
print = print .. '|' .. frame.args['size']
else
print = print .. '|' .. data.materialPC[frame.args['1']][2]
end
print = print .. '|link=|alt=]] '
end
if not isEmpty(frame.args['2']) then
print = print .. frame.args['2'] .. '× '
else
print = print .. ''
end
if not isEmpty(data.materialPC[frame.args['1']]) and not isEmpty(data.materialPC[frame.args['1']][3]) then
print = print .. '[[' .. data.materialPC[frame.args['1']][3] .. '|' .. data.materialPC[frame.args['1']][4] .. ']]'
else
if not isEmpty(data.materialPC[frame.args['1']]) and not isEmpty(data.materialPC[frame.args['1']][5]) then
print = print .. data.materialPC[frame.args['1']][5]
else
print = print .. '[[Item:' .. frame.args['1'] .. ' (Pocket Camp)|' .. frame.args['1'] .. ']]'
end
end
print = print .. '</span>'
if not isEmpty(frame.args['nb']) then
print = print .. ''
else
print = print .. '<br/>'
end
return print
end
return p