Module:Item class/sandbox: Difference between revisions
Jump to navigation
Jump to search
KickahaOta (talk | contribs) (Remirror) |
KickahaOta (talk | contribs) (Adding support for additional data fields) |
||
Line 17: | Line 17: | ||
page = '[[Item class]]', | page = '[[Item class]]', | ||
info = m_util.html.abbr('(?)', 'Item classes categorize items. Classes are often used to restrict items or skill gems to a specific class or by item filters'), | info = m_util.html.abbr('(?)', 'Item classes categorize items. Classes are often used to restrict items or skill gems to a specific class or by item filters'), | ||
also_referred_to_as = 'Also referred to as:', | also_referred_to_as = 'Also referred to as: %s', | ||
item_filter_id = 'Item filter ID: %s', | |||
suppressed = 'Suppressed from lists.', | |||
uncertainty = "''Uncertainty: %s''. " .. m_util.html.abbr('(?)', 'Some of this information is questionable. If you can confirm or correct it, please let us know on the talk page.'), | |||
errors = { | errors = { | ||
Line 34: | Line 37: | ||
parentFirst = true | parentFirst = true | ||
}) | }) | ||
tpl_args.name = 'Pantheon Soul' | |||
frame = m_util.misc.get_frame(frame) | frame = m_util.misc.get_frame(frame) | ||
Line 39: | Line 44: | ||
doInfoCard = require('Module:Infocard')._main | doInfoCard = require('Module:Infocard')._main | ||
end | end | ||
local | local constinfo = nil | ||
for | local filterid = nil | ||
for id, row in pairs(m_game.constants.item.classes) do | |||
if row['full'] == tpl_args.name then | if row['full'] == tpl_args.name then | ||
constinfo = row | |||
filterid = id | |||
break | break | ||
end | end | ||
end | end | ||
if | if constinfo == nil then | ||
error(string.format(i18n.errors.invalid_class, tostring(tpl_args.name))) | error(string.format(i18n.errors.invalid_class, tostring(tpl_args.name))) | ||
end | end | ||
Line 59: | Line 66: | ||
-- | -- | ||
local infocard_args = {} | |||
local ul = mw.html.create('ul') | local ul = mw.html.create('ul') | ||
for _, item in ipairs(tpl_args.name_list) do | for _, item in ipairs(tpl_args.name_list) do | ||
Line 67: | Line 76: | ||
:done() | :done() | ||
end | end | ||
table.insert(infocard_args, ul) | |||
table.insert(infocard_args, string.format(i18n.also_referred_to_as, tostring(filterid))) | |||
if (constinfo['suppress'] ~= nil) and (constinfo['suppress'] ~= "") then | |||
table.insert(infocard_args, i18n.suppressed) | |||
end | |||
if (constinfo['uncertainty'] ~= nil) and (constinfo['uncertainty'] ~= "") then | |||
local uncertaintytext = string.format(i18n.uncertainty, tostring(constinfo['uncertainty'])) | |||
table.insert(infocard_args, uncertaintytext) | |||
end | |||
-- Output Infocard | -- Output Infocard | ||
infocard_args['header'] = tpl_args.name | |||
infocard_args['subheader'] = i18n.page .. i18n.info | |||
-- cats | -- cats | ||
Line 86: | Line 104: | ||
-- Done | -- Done | ||
return doInfoCard( | return doInfoCard(infocard_args) .. m_util.misc.add_category(cats, {ignore_blacklist=tpl_args.debug}) | ||
end | end | ||
return p | return p |
Revision as of 03:01, 19 December 2021
This is the module sandbox page for Module:Item class (diff).
The above documentation is transcluded from Module:Item class/doc.
Editors can experiment in this module's sandbox and testcases pages.
Please add categories to the /doc subpage. Subpages of this module.
Editors can experiment in this module's sandbox and testcases pages.
Please add categories to the /doc subpage. Subpages of this module.
-------------------------------------------------------------------------------
--
-- Module:Item class infocard
--
-- This module implements Template:Item class infocard
-------------------------------------------------------------------------------
-- ----------------------------------------------------------------------------
-- Includes
-- ----------------------------------------------------------------------------
local getArgs = require('Module:Arguments').getArgs
local m_util = require('Module:Util')
local m_game = mw.loadData('Module:Game')
local i18n = {
page = '[[Item class]]',
info = m_util.html.abbr('(?)', 'Item classes categorize items. Classes are often used to restrict items or skill gems to a specific class or by item filters'),
also_referred_to_as = 'Also referred to as: %s',
item_filter_id = 'Item filter ID: %s',
suppressed = 'Suppressed from lists.',
uncertainty = "''Uncertainty: %s''. " .. m_util.html.abbr('(?)', 'Some of this information is questionable. If you can confirm or correct it, please let us know on the talk page.'),
errors = {
invalid_class = 'The item class name "%s" is invalid.',
},
}
-- ----------------------------------------------------------------------------
-- Exported functions
-- ----------------------------------------------------------------------------
local p = {}
function p.main(frame)
-- Get args
local tpl_args = getArgs(frame, {
parentFirst = true
})
tpl_args.name = 'Pantheon Soul'
frame = m_util.misc.get_frame(frame)
if not doInfoCard then
doInfoCard = require('Module:Infocard')._main
end
local constinfo = nil
local filterid = nil
for id, row in pairs(m_game.constants.item.classes) do
if row['full'] == tpl_args.name then
constinfo = row
filterid = id
break
end
end
if constinfo == nil then
error(string.format(i18n.errors.invalid_class, tostring(tpl_args.name)))
end
if tpl_args.name_list ~= nil then
tpl_args.name_list = m_util.string.split(tpl_args.name_list, ',%s*')
else
tpl_args.name_list = {}
end
--
local infocard_args = {}
local ul = mw.html.create('ul')
for _, item in ipairs(tpl_args.name_list) do
ul
:tag('li')
:wikitext(item)
:done()
end
table.insert(infocard_args, ul)
table.insert(infocard_args, string.format(i18n.also_referred_to_as, tostring(filterid)))
if (constinfo['suppress'] ~= nil) and (constinfo['suppress'] ~= "") then
table.insert(infocard_args, i18n.suppressed)
end
if (constinfo['uncertainty'] ~= nil) and (constinfo['uncertainty'] ~= "") then
local uncertaintytext = string.format(i18n.uncertainty, tostring(constinfo['uncertainty']))
table.insert(infocard_args, uncertaintytext)
end
-- Output Infocard
infocard_args['header'] = tpl_args.name
infocard_args['subheader'] = i18n.page .. i18n.info
-- cats
local cats = {
'Item classes',
tpl_args.name,
}
-- Done
return doInfoCard(infocard_args) .. m_util.misc.add_category(cats, {ignore_blacklist=tpl_args.debug})
end
return p