1+ var _ = require ( 'lodash' ) ;
2+
3+ module . exports = function filterPublicDocs ( modules ) {
4+ return {
5+ $runAfter : [ 'tags-parsed' ] ,
6+ $runBefore : [ 'computing-ids' ] ,
7+ $process : function ( docs ) {
8+
9+ //console.log('filterPublicDocs', Object.keys(modules));
10+
11+
12+ docs = _ . filter ( docs , function ( doc ) {
13+ if ( doc . docType !== 'class' ) return true ;
14+ if ( ! doc . publicModule ) return false ;
15+
16+ //console.log('CLASS:', doc.name, doc.moduleDoc.id);
17+ updateModule ( doc ) ;
18+
19+ return true ;
20+ } ) ;
21+
22+ docs = _ . filter ( docs , function ( doc ) {
23+ return doc . docType !== 'module' || doc . isPublic ;
24+ } ) ;
25+ return docs ;
26+ }
27+ } ;
28+
29+
30+ function updateModule ( classDoc ) {
31+
32+ var originalModule = classDoc . moduleDoc ;
33+ var publicModule = modules [ classDoc . publicModule ] ;
34+
35+ if ( ! publicModule ) {
36+ throw new Error ( 'Missing module definition: "' + classDoc . publicModule + '"\n' +
37+ 'Referenced in class: "' + classDoc . moduleDoc . id + '/' + classDoc . name + '"' ) ;
38+ }
39+
40+ publicModule . isPublic = true ;
41+
42+ //console.log('UPDATE CLASS', classDoc.id, originalModule.id, publicModule.id);
43+
44+ _ . remove ( classDoc . moduleDoc . exports , function ( doc ) { return doc === classDoc ; } ) ;
45+ classDoc . moduleDoc = publicModule ;
46+ publicModule . exports . push ( classDoc ) ;
47+
48+ }
49+ } ;
0 commit comments