Module:Stats/REQ

From Halopedia, the Halo wiki

Documentation for this module may be created at ModuleDoc:Stats/REQ

local utils = require( 'Module:Utils' )
local infocard = require( 'Module:Infocard' )
local templates = require( 'Module:Stats/REQ/H5G/TEMPLATES' )

local p = {}

function p.infocard( frame )
	-- Return an error if no card name is given
	if frame.args[1] == nil or frame.args[1] == '' then
		return utils.error( 'Please specify a card name!' )
	end
	
	-- Load the REQ data from the correct module page
	local card = tostring( frame.args[1] )
	local data = utils.loadDataIfExists( 'Module:Stats/REQ/H5G/' .. card )
	
	-- Return an error message if it does not exist
	if data == nil or type( data ) ~= 'table' then
		return utils.error( 'Invalid REQ card "' .. card .. '"! Is there a typo in the name?' )
	end
	
	-- Retrieve the category
	local category = data[ 'category' ]
	
	-- Return an error message if the REQ card does not match a known category
	if category == nil 
	or templates[ category ] == nil
	or type( templates[ category ] ) ~= 'function' then
		return utils.error( 'Internal data on REQ card "' .. card .. '" invalid!' )
	end
	
	-- Create the infocard
	local card = infocard.new().withTitle( 'REQ information' )
	
	-- Pass the card to the relevant template, for it to be filled out
	templates[ category ]( card, data )
	
	-- Render the card and return
	return frame:preprocess( card.render() )
end

return p