1
0
Fork 0

Added class_abstract docblocks

closure/master
Mike Gerwitz 2011-05-22 19:15:19 -04:00
parent e0de030cee
commit db9de2712e
1 changed files with 28 additions and 1 deletions

View File

@ -29,6 +29,11 @@
var Class = require( __dirname + '/class' ); var Class = require( __dirname + '/class' );
/**
* Creates an abstract class
*
* @return {Class} abstract class
*/
module.exports = exports = function() module.exports = exports = function()
{ {
markAbstract( arguments ); markAbstract( arguments );
@ -38,19 +43,31 @@ module.exports = exports = function()
}; };
/**
* Creates an abstract class from a class extend operation
*
* @return {Class} abstract class
*/
exports.extend = function() exports.extend = function()
{ {
markAbstract( arguments ); markAbstract( arguments );
return Class.extend.apply( this, arguments ); return Class.extend.apply( this, arguments );
}; };
/**
* Creates an abstract class implementing the given members
*
* Simply wraps the class module's implement() method.
*
* @return {Object} abstract class
*/
exports.implement = function() exports.implement = function()
{ {
var impl = Class.implement.apply( this, arguments ), var impl = Class.implement.apply( this, arguments ),
extend = impl.extend; extend = impl.extend;
// wrap extend, applying the abstract flag
impl.extend = function() impl.extend = function()
{ {
markAbstract( arguments ); markAbstract( arguments );
@ -61,6 +78,16 @@ exports.implement = function()
}; };
/**
* Causes a definition to be flagged as abstract
*
* This function assumes the last argument to be the definition, which is the
* common case, and modifies the object referenced by that argument.
*
* @param {arguments} args arguments to parse
*
* @return {undefined}
*/
function markAbstract( args ) function markAbstract( args )
{ {
// the last argument _should_ be the definition // the last argument _should_ be the definition