| 
									
										
										
										
											2014-12-04 14:02:03 +00:00
										 |  |  | var _ = require('lodash'); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-04-10 12:45:02 +02:00
										 |  |  | module.exports = function captureModuleExports(log, ExportTreeVisitor, getJSDocComment) { | 
					
						
							| 
									
										
										
										
											2014-12-04 14:02:03 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |   return { | 
					
						
							|  |  |  |     $runAfter: ['files-read'], | 
					
						
							| 
									
										
										
										
											2015-04-10 12:45:02 +02:00
										 |  |  |     $runBefore: ['parsing-tags'], | 
					
						
							| 
									
										
										
										
											2014-12-04 14:02:03 +00:00
										 |  |  |     $process: function(docs) { | 
					
						
							| 
									
										
										
										
											2015-04-10 12:45:02 +02:00
										 |  |  |       var extraDocs = []; | 
					
						
							| 
									
										
										
										
											2014-12-04 14:02:03 +00:00
										 |  |  |       _.forEach(docs, function(doc) { | 
					
						
							|  |  |  |         if ( doc.docType === 'module' ) { | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |           log.debug('processing', doc.moduleTree.moduleName); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |           doc.exports = []; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |           if ( doc.moduleTree.visit ) { | 
					
						
							|  |  |  |             var visitor = new ExportTreeVisitor(); | 
					
						
							|  |  |  |             visitor.visit(doc.moduleTree); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             _.forEach(visitor.exports, function(exportDoc) { | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |               doc.exports.push(exportDoc); | 
					
						
							| 
									
										
										
										
											2015-04-10 12:45:02 +02:00
										 |  |  |               extraDocs.push(exportDoc); | 
					
						
							| 
									
										
										
										
											2014-12-04 14:02:03 +00:00
										 |  |  |               exportDoc.moduleDoc = doc; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |               if (exportDoc.comment) { | 
					
						
							|  |  |  |                 // If this export has a comment, remove it from the list of
 | 
					
						
							|  |  |  |                 // comments collected in the module
 | 
					
						
							|  |  |  |                 var index = doc.comments.indexOf(exportDoc.comment); | 
					
						
							|  |  |  |                 if ( index !== -1 ) { | 
					
						
							|  |  |  |                   doc.comments.splice(index, 1); | 
					
						
							|  |  |  |                 } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |                 _.assign(exportDoc, getJSDocComment(exportDoc.comment)); | 
					
						
							|  |  |  |               } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             }); | 
					
						
							|  |  |  |           } | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |       }); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-04-10 12:45:02 +02:00
										 |  |  |       return docs.concat(extraDocs); | 
					
						
							| 
									
										
										
										
											2014-12-04 14:02:03 +00:00
										 |  |  |     } | 
					
						
							|  |  |  |   }; | 
					
						
							|  |  |  | }; |