Difference between revisions of "Module:Materials"
From Nookipedia, the Animal Crossing wiki
PanchamBro (talk | contribs) (modifying module; added SentenceCase modules; copied the CapitalizationCheck module functions since it doesn't like to work with me) |
PanchamBro (talk | contribs) m |
||
Line 77: | Line 77: | ||
end | end | ||
-- Check capitalization | -- Check capitalization | ||
− | if material == firstToUpper(checkCase.newHorizons[material:lower()]) then | + | if not isEmpty(checkCase.newHorizons[material:lower()]) and material == firstToUpper(checkCase.newHorizons[material:lower()]) then |
print = print .. "" | print = print .. "" | ||
− | elseif material == checkCase.newHorizons[material:lower()] then | + | elseif not isEmpty(checkCase.newHorizons[material:lower()]) and material == checkCase.newHorizons[material:lower()] then |
print = print .. "" | print = print .. "" | ||
else | else |
Revision as of 12:10, November 28, 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 = {}
local getArgs = require('Module:Arguments').getArgs
local convertCase = require('Module:SentenceCase').main
checkCase = mw.loadData("Module:CapitalizationCheck/Data")
data = mw.loadData("Module:Materials/Data")
function p.main(frame)
local args = getArgs(frame)
local game = args.game 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 ''
local sentenceCase = args[3] or args.sentencecase or ''
if game == "PC" then
return p.outputMaterialPC(material, num, nb, size, sentenceCase)
elseif game == "NH" then
return p.outputMaterialNH(material, num, nb, size, sentenceCase)
end
end
function firstToUpper(str)
return (str:gsub("^%l", string.upper))
end
function p.outputMaterialNH(material, num, nb, size, sentenceCase)
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
if not isEmpty(sentenceCase) then
print = print .. '[[' .. data.materialNH[material][3] .. '|' .. convertCase(data.materialNH[material][4]) .. ']]'
else
print = print .. '[[' .. data.materialNH[material][3] .. '|' .. data.materialNH[material][4] .. ']]'
end
else
if not isEmpty(data.materialNH[material]) and not isEmpty(data.materialNH[material][5]) then
print = print .. data.materialNH[material][5]
else
if not isEmpty(sentenceCase) then
print = print .. '[[Item:' .. material .. ' (New Horizons)|' .. convertCase(material) .. ']]'
else
print = print .. '[[Item:' .. material .. ' (New Horizons)|' .. material .. ']]'
end
end
end
print = print .. '</span>'
if not isEmpty(nb) then
print = print .. ''
else
print = print .. '<br/>'
end
-- Check capitalization
if not isEmpty(checkCase.newHorizons[material:lower()]) and material == firstToUpper(checkCase.newHorizons[material:lower()]) then
print = print .. ""
elseif not isEmpty(checkCase.newHorizons[material:lower()]) and material == checkCase.newHorizons[material:lower()] then
print = print .. ""
else
print = print .. "[[Category:Pages with item names improperly capitalized]]"
end
return print
end
function p.outputMaterialPC (material, num, nb, size, sentenceCase)
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