Module:Item in other games
From Nookipedia, the Animal Crossing wiki
Documentation for this module may be created at Module:Item in other games/doc
local p = {}
local cargo = mw.ext.cargo
local convertCase = require('Module:SentenceCase').firstToUpper
function tableEmpty(s)
return next(s) == nil
end
function isEmpty(s)
return s == nil or s == ''
end
function p.main( frame )
-- Declare variables
local print = ''
local tables
local fields
local args
local results
-- Determine the cargo table to which the module will pull from.
if frame.args['game'] == "First gen" then
tables = 'pg_identifier'
fields = "pg_identifier.identifier=identifier"
args = {
where = "pg_identifier._pageName = \"" .. frame.args['1']:gsub("\'","\\'") .. "\"",
limit = 1,
groupBy = 'pg_identifier._pageName',
default = '',
}
results = cargo.query( tables, fields, args )
elseif frame.args['game'] == "Wild World" then
tables = 'ww_identifier'
fields = "ww_identifier.identifier=identifier"
args = {
where = "ww_identifier._pageName = \"" .. frame.args['1']:gsub("\'","\\'") .. "\"",
limit = 1,
groupBy = 'ww_identifier._pageName',
default = '',
}
results = cargo.query( tables, fields, args )
elseif frame.args['game'] == "City Folk" then
print = "Not implemented yet"
results = {}
elseif frame.args['game'] == "New Leaf" then
tables = 'nl_identifier'
fields = "nl_identifier.identifier=identifier"
args = {
where = "nl_identifier._pageName = \"" .. frame.args['1']:gsub("\'","\\'") .. "\"",
limit = 1,
groupBy = 'nl_identifier._pageName',
default = '',
}
results = cargo.query( tables, fields, args )
elseif frame.args['game'] == "New Horizons" then
tables = 'nh_identifier'
fields = "nh_identifier.identifier=identifier"
args = {
where = "nh_identifier._pageName = \"" .. frame.args['1']:gsub("\'","\\'") .. "\"",
limit = 1,
groupBy = 'nh_identifier._pageName',
default = '',
}
results = cargo.query( tables, fields, args )
else
print = "Game not specified."
results = {}
end
-- Comb through every identifer table and return a value if item found.
if not tableEmpty(results) then
local data = {}
local offset = 0
-- Check first gen identifer cargo table
local firstGen = cargo.query( 'pg_identifier', "pg_identifier._pageName=pageName,pg_identifier.en_name=name", {where = "pg_identifier.identifier = \"" .. results[1].identifier .. "\"", limit = 100, groupBy = 'pg_identifier._pageName', default = ''} )
if not tableEmpty(firstGen) and frame.args['game'] ~= "First gen" then
for r = 1, #firstGen do
data[r] = "<li>[[" .. firstGen[r].pageName .. "|" .. convertCase (firstGen[r].name) .. " (''" .. firstGen[r].pageName:gsub("Item:.*%((.-)%)","%1") .. "'')]]</li>"
offset = offset + r
end
end
-- Check Wild World identifier cargo table
local wildWorld = cargo.query( 'ww_identifier', "ww_identifier._pageName=pageName,ww_identifier.en_name=name", {where = "ww_identifier.identifier = \"" .. results[1].identifier .. "\"", limit = 100, groupBy = 'ww_identifier._pageName', default = ''} )
if not tableEmpty(wildWorld) and frame.args['game'] ~= "Wild World" then
for r = 1, #wildWorld do
data[r+offset] = "<li>[[" .. wildWorld[r].pageName .. "|" .. convertCase (wildWorld[r].name) .. " (''Wild World'')]]</li>"
offset = offset + r
end
end
-- Check New Leaf identifier cargo table
local newLeaf = cargo.query( 'nl_identifier', "nl_identifier._pageName=pageName,nl_identifier.en_name=name", {where = "nl_identifier.identifier = \"" .. results[1].identifier .. "\"", limit = 100, groupBy = 'nl_identifier._pageName', default = ''} )
if not tableEmpty(newLeaf) and frame.args['game'] ~= "New Leaf" then
for r = 1, #newLeaf do
data[r+offset] = "<li>[[" .. newLeaf[r].pageName .. "|" .. convertCase (newLeaf[r].name) .. " (''New Leaf'')]]</li>"
offset = offset + r
end
end
-- Check New Horizons identifier cargo table
local newHorizons = cargo.query( 'nh_identifier', "nh_identifier._pageName=pageName,nh_identifier.en_name=name", {where = "nh_identifier.identifier = \"" .. results[1].identifier .. "\"", limit = 100, groupBy = 'nh_identifier._pageName', default = ''} )
if not tableEmpty(newHorizons) and frame.args['game'] ~= "New Horizons" then
for r = 1, #newHorizons do
data[r+offset] = "<li>[[" .. newHorizons[r].pageName .. "|" .. convertCase (newHorizons[r].name) .. " (''New Horizons'')]]</li>"
offset = offset + r
end
end
if not tableEmpty(data) then
if not isEmpty(frame.args['hide-section-title']) then
print = print
else
print = print .. "== In other games ==\n"
end
print = print .. "<ul>"
for r = 1, #data do
if not isEmpty(data[r]) then
print = print .. data[r]
end
end
print = print .. "</ul>"
if not isEmpty(frame.args['hide-section-title']) then
print = print
else
print = print .. "\n"
end
end
end
return print
end
return p