Module:Item
Appearance
This documentation is transcluded from Module:Item/doc.
A meta module for all item-related templates.
| Page | Description |
|---|---|
| Module:Item/Components/Infobox | Renders the infobox |
require( 'strict' )
local gameData = require( 'Module:GameData' )
local p = {}
local itemData = {}
local templateArgs = {}
--- Wikitext entry point for the module
---
--- @param frame mw.frame
--- @return string
function p.main( frame )
local getArgs = require( 'Module:Arguments' ).getArgs
return p._main( getArgs( frame ) )
end
--- Lua entry point for the module
---
--- @param args table
--- @return string
function p._main( args )
args = args or {}
local itemName = args.name or mw.title.getCurrentTitle().fullText
itemData = p.getData( itemName )
templateArgs = args
local wikitext = {
p.renderInfobox( itemName ),
p.renderCategories( p.getCategories() )
}
return table.concat( wikitext )
end
--- Get the game data
---
--- @param itemName string
--- @return table
function p.getData( itemName )
return gameData.getItem( itemName )
end
--- Return the wikitext for the infobox
---
--- @param itemName string
--- @return string
function p.renderInfobox( itemName )
local data = itemData or p.getData( itemName )
data.name = itemName
return require( 'Module:Item/Components/Infobox' ).render( {
data = data,
args = templateArgs
} )
end
--- Get the page categories
---
--- @return table
function p.getCategories()
local categories = {
'Items'
}
if itemData.evocreo2 then
table.insert( categories, 'Items in EvoCreo 2' )
end
if itemData.evocreo then
table.insert( categories, 'Items in EvoCreo' )
end
return categories
end
--- Return the wikitext for the category
---
--- @param categories table
--- @return string
function p.renderCategories( categories )
local wikitext = {}
for _, category in ipairs( categories ) do
table.insert( wikitext, string.format( '[[Category:%s]]', category ) )
end
return table.concat( wikitext, '' )
end
--- Get the thumbnail for an item
---
--- Items are illustrated with the EvoCreo 2 artwork by default. Pass a game ID
--- to use that game's own icon, for the games whose art has been uploaded --
--- currently the EvoCreo tomes.
---
--- @param name string
--- @param gameId string|nil
--- @return string
function p.getThumbnail( name, gameId )
local game = gameId == 'evocreo' and 'evocreo' or 'evocreo2'
return string.format( '%s - item - %s.png', string.lower( name ), game )
end
return p