diff --git a/lib/class_abstract.js b/lib/class_abstract.js index 06cd3eb..a0cfa0b 100644 --- a/lib/class_abstract.js +++ b/lib/class_abstract.js @@ -29,6 +29,11 @@ var Class = require( __dirname + '/class' ); +/** + * Creates an abstract class + * + * @return {Class} abstract class + */ module.exports = exports = function() { 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() { markAbstract( 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() { var impl = Class.implement.apply( this, arguments ), extend = impl.extend; + // wrap extend, applying the abstract flag impl.extend = function() { 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 ) { // the last argument _should_ be the definition