Jump to content

Module:Element

From Creopedia

This documentation is transcluded from Module:Element/doc.

Output an element badge using Module:BadgeLua.

Implements Template:Element.


require( 'strict' )

local element = mw.loadJsonData( 'Module:Element/Element.json' )

local p = {}


--- Get the element id
---
--- @param elementName string
--- @return string
local function getElementId( elementName )
	return elementName:lower()
end

--- Render the element badge
---
--- @param elementId string
--- @param elementData table
--- @return string
local function renderElement( elementId, elementData )
	local badge = require( 'Module:BadgeLua' )

	return badge.render( {
		icon = elementData.icon,
		text = elementData.name,
		link = elementData.page or elementData.name,
		class = 't-element t-element--' .. elementId
	} )
end

--- 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 )[1] )
end

--- Render the rarity badge
---
--- @param elementName string
--- @return string
function p._main( elementName )
	local elementId = getElementId( elementName )
	local elementData = element[elementId]

	if not elementData then
		error( 'Invalid element name: ' .. elementName )
	end

	return mw.getCurrentFrame():extensionTag {
		name = 'templatestyles', args = { src = 'Module:Element/styles.css' }
	} .. renderElement( elementId, elementData )
end


return p