Module:InfoWrapper

From Yugipedia
Revision as of 01:00, 22 July 2018 by Becasita (talk | contribs) (Helper module to create info objects.)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search
-- <pre>
-- @description Creates objects to store module info.
-- @author [[User:Becasita]]
-- @contact [[User talk:Becasita]]

-- Define class:
local InfoClass = {};
InfoClass.__index = InfoClass;

-- @description: Initialize the instance of the InfoClass.
function InfoClass.new( title )
	local data = {
		title      = title or '',
		info       = {},
		categories = {},
		errors     = {},
	};

	return setmetatable( data, InfoClass );
end

-- @description Add <code>key</code> info with <code>value</value>.
function InfoClass:add( key, value )
	self.info[ key ] = value;
	return self;
end

-- @description Get <code>key</code> info.
function InfoClass:get( key )
	return self.info[ key ];
end

-- @description Remove <code>key</code> info.
function InfoClass:remove( key )
	local value = self.info[ key ];
	self.info[ key ] = nil;
	return value;
end

-- @description Store associated category.
function InfoClass:category( category )
	table.insert( self.categories, category );
	return self;
end

-- @description Store error message.
function InfoClass:error( message, default, category )
	self.errors.exists = true;
	table.insert( self.errors, message );

	if category then self:category( category ) end

	return default or self;
end

-- Return instatiation method:
return {
	['new'] = InfoClass.new,
}
--[[setmetatable( {}, {
	--['new'] = InfoClass.new,
	__call = function( ... )
		return InfoClass.new( ... );
	end
}]]
-- <pre>