Source: resource/Resource.js

//------------------------------------------------------------------------------
// Constructor scope
//------------------------------------------------------------------------------

/**
 * Creates a new Resource object.
 *
 * @constructor
 * @package
 *
 * @param {string} name Resource name (ID).
 * @param {Object} data Resource data.
 *
 * @class
 * @classdesc
 * 
 * The Resource class represents data that is meant to be used within a Rune 
 * application. Resource data can consist of images, audio, plain text, JSON 
 * and XML data.
 */
rune.resource.Resource = function(name, data) {
	
	//--------------------------------------------------------------------------
	// Private properties
	//--------------------------------------------------------------------------
	
	/**
	 * Resource data.
	 *
	 * @type {Object}
	 * @private
	 */
	this.m_data = data;
	
	/**
	 * Resource name.
	 *
	 * @type {string}
	 * @private
	 */
	this.m_name = name.toLowerCase();
};

//------------------------------------------------------------------------------
// Public prototype getter and setter methods
//------------------------------------------------------------------------------

/**
 * Resource data.
 *
 * @member {Object} data
 * @memberof rune.resource.Resource
 * @instance
 * @readonly
 */
Object.defineProperty(rune.resource.Resource.prototype, "data", {
	/**
	 * @this rune.resource.Resource
	 * @ignore
	 */
	get : function() {
		return this.m_data;
	}
});

/**
 * Resource name (ID).
 *
 * @member {string} name
 * @memberof rune.resource.Resource
 * @instance
 * @readonly
 */
Object.defineProperty(rune.resource.Resource.prototype, "name", {
	/**
	 * @this rune.resource.Resource
	 * @ignore
	 */
	get : function() {
		return this.m_name;
	}
});

//------------------------------------------------------------------------------
// Internal prototype methods
//------------------------------------------------------------------------------

/**
 * Clears this object from memory.
 *
 * @returns {undefined}
 * @package
 * @ignore
 */
rune.resource.Resource.prototype.dispose = function() {
	this.m_data = null;
	this.m_name = "";
};