@@ -211,10 +211,17 @@ cocktail = {
211211 }
212212 }
213213
214-
215214 return isClassDef ;
216215 } ,
217216
217+ /**
218+ * @private
219+ * returns true if the given subject is a module definition object.
220+ */
221+ _isModuleDefinition : function ( subject ) {
222+ return ( subject && subject [ '@as' ] && subject [ '@as' ] . toLowerCase ( ) === 'module' ) ;
223+ } ,
224+
218225 /**
219226 * @private
220227 * If the subject has a property construtor returns it,
@@ -267,16 +274,30 @@ cocktail = {
267274 }
268275 options = subject ;
269276 return this . mix ( defaultConstructor , options ) ;
277+ } ,
270278
279+ /**
280+ * @private
281+ * @experimental 0.5.1
282+ * returns a call to mix() with the subject module and options
283+ */
284+ _processModuleDefinition : function ( subject ) {
285+ var options = subject ;
286+ return this . mix ( subject , options ) ;
271287 } ,
272288
273289 /**
274290 * @public
275291 */
276292 mix : function ( subject , options ) {
277- if ( ! options && this . _isClassDefition ( subject ) ) {
278- return this . _processClassDefition ( subject ) ;
279- }
293+ if ( ! options ) {
294+ if ( this . _isClassDefition ( subject ) ) {
295+ return this . _processClassDefition ( subject ) ;
296+ }
297+ if ( this . _isModuleDefinition ( subject ) ) {
298+ return this . _processModuleDefinition ( subject ) ;
299+ }
300+ }
280301
281302 if ( subject ) {
282303 this . _pushQueue ( ) ;
@@ -291,7 +312,6 @@ cocktail = {
291312
292313} ;
293314
294-
295315module . exports = cocktail ;
296316
297317/**
@@ -300,7 +320,7 @@ module.exports = cocktail;
300320 */
301321cocktail . _DEFAULT_PROCESSORS = {
302322 'no-op' : require ( './processor/NoOp' ) ,
303- '@as' : undefined ,
323+ '@as' : undefined , /*pseudo-processor*/
304324 '@merge' : require ( './processor/annotation/Merge' ) ,
305325 '@extends' : require ( './processor/annotation/Extends' ) ,
306326 '@properties' : require ( './processor/annotation/Properties' ) ,
@@ -315,10 +335,8 @@ cocktail._DEFAULT_PROCESSORS = {
315335
316336cocktail . registerProcessors ( cocktail . _DEFAULT_PROCESSORS ) ;
317337
318- cocktail . mix ( cocktail , {
319- /**
320- * @public
321- * SEQUENCE is used to define a enumeration of priorities for annotations
322- */
323- SEQUENCE : sequence
324- } ) ;
338+ /**
339+ * @public
340+ * SEQUENCE is used to define an enumeration of priorities for annotations
341+ */
342+ cocktail . SEQUENCE = sequence ;
0 commit comments