Difference between revisions of "Module:Materials"

From Nookipedia, the Animal Crossing wiki
(Creating module to convert JSON to material templates)
 
(changing to module to generate the Material template)
Line 1: Line 1:
 
local p = {}
 
local p = {}
function p.outputMaterials(frame)
+
data = mw.loadData("Module:Materials/Data")
    local table = mw.text.jsonDecode(frame.args[1])
+
function p.outputMaterialNH (frame)
     local materialsOutput = ""
+
local function isEmpty(s)
     for material, count in pairs(table) do
+
return s == nil or s == ''
        materialsOutput = materialsOutput .. frame:expandTemplate{ title = "Material", args = { material, count } }
+
end
    end
+
    return materialsOutput
+
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