| 
									
										
										
										
											2015-04-10 12:45:02 +02:00
										 |  |  | var _ = require('lodash'); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | module.exports = function cloneExportedFromDocs(modules, EXPORT_DOC_TYPES) { | 
					
						
							|  |  |  |   return { | 
					
						
							|  |  |  |     $runAfter: ['tags-parsed', 'attachModuleDocs'], | 
					
						
							|  |  |  |     $runBefore: ['computing-ids'], | 
					
						
							|  |  |  |     $process: function(docs) { | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       var extraPublicDocs = []; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       _.forEach(docs, function(doc) { | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         if (EXPORT_DOC_TYPES.indexOf(doc.docType) === -1 || !doc.exportedAs) return; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         _.forEach(doc.exportedAs, function(exportedAs) { | 
					
						
							|  |  |  |           var exportedAsModule = modules[exportedAs]; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |           if (!exportedAsModule) { | 
					
						
							|  |  |  |             throw new Error('Missing module definition: "' + doc.exportedAs + '"\n' + | 
					
						
							|  |  |  |                             'Referenced in "@exportedAs" tag on class: "' + doc.moduleDoc.id + '/' + doc.name + '"'); | 
					
						
							|  |  |  |           } else { | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-04-14 13:20:49 +01:00
										 |  |  |             if(exportedAsModule !== doc.moduleDoc) { | 
					
						
							|  |  |  |               // Add a clone of export to its "exportedAs" module
 | 
					
						
							|  |  |  |               var clonedDoc = _.clone(doc); | 
					
						
							|  |  |  |               clonedDoc.moduleDoc = exportedAsModule; | 
					
						
							|  |  |  |               exportedAsModule.exports.push(clonedDoc); | 
					
						
							|  |  |  |               extraPublicDocs.push(clonedDoc); | 
					
						
							|  |  |  |             } | 
					
						
							| 
									
										
										
										
											2015-04-10 12:45:02 +02:00
										 |  |  |           } | 
					
						
							|  |  |  |         }); | 
					
						
							|  |  |  |       }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       docs = docs.concat(extraPublicDocs); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       return docs; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |   }; | 
					
						
							|  |  |  | }; |