@@ -10,12 +10,18 @@ var hasOwnProperty = Object.prototype.hasOwnProperty;
10
10
*/
11
11
let isEvent = member => member . kind === 'event' ;
12
12
13
- /*::
14
- declare type ReducedComment = {
15
- name: string,
16
- kind: ?string,
17
- scope?: ?string
18
- } */
13
+ /**
14
+ * We need to have members of all valid JSDoc scopes.
15
+ * @private
16
+ */
17
+ let getMembers = ( ) => ( {
18
+ global : Object . create ( null ) ,
19
+ inner : Object . create ( null ) ,
20
+ instance : Object . create ( null ) ,
21
+ events : Object . create ( null ) ,
22
+ static : Object . create ( null )
23
+ } ) ;
24
+
19
25
20
26
/**
21
27
* Pick only relevant properties from a comment to store them in
@@ -49,12 +55,10 @@ function pick(comment/*: Comment */)/*: ?ReducedComment */ {
49
55
module . exports = function ( comments /*: Array<Comment>*/ ) {
50
56
var id = 0 ,
51
57
root = {
52
- members : {
53
- instance : Object . create ( null ) ,
54
- static : Object . create ( null )
55
- }
58
+ members : getMembers ( )
56
59
} ;
57
60
61
+
58
62
comments . forEach ( comment => {
59
63
var path = [ ] ;
60
64
@@ -86,10 +90,7 @@ module.exports = function (comments/*: Array<Comment>*/) {
86
90
if ( ! hasOwnProperty . call ( node . members [ scope ] , name ) ) {
87
91
node . members [ scope ] [ name ] = {
88
92
comments : [ ] ,
89
- members : {
90
- instance : Object . create ( null ) ,
91
- static : Object . create ( null )
92
- }
93
+ members : getMembers ( )
93
94
} ;
94
95
}
95
96
@@ -138,7 +139,7 @@ module.exports = function (comments/*: Array<Comment>*/) {
138
139
comment . members [ scope ] = node . members [ scope ] ;
139
140
}
140
141
141
- var events = comment . members . events || [ ] ;
142
+ var events = comment . members . events ;
142
143
var groups = [ ] ;
143
144
144
145
if ( comment . members . instance . length ) {
@@ -155,6 +156,20 @@ module.exports = function (comments/*: Array<Comment>*/) {
155
156
comment . members . static = groups [ false ] || [ ] ;
156
157
}
157
158
159
+ if ( comment . members . inner . length ) {
160
+ groups = _ . groupBy ( comment . members . inner , isEvent ) ;
161
+
162
+ events = events . concat ( groups [ true ] || [ ] ) ;
163
+ comment . members . inner = groups [ false ] || [ ] ;
164
+ }
165
+
166
+ if ( comment . members . global . length ) {
167
+ groups = _ . groupBy ( comment . members . global , isEvent ) ;
168
+
169
+ events = events . concat ( groups [ true ] || [ ] ) ;
170
+ comment . members . global = groups [ false ] || [ ] ;
171
+ }
172
+
158
173
comment . members . events = events ;
159
174
160
175
comment . path = path . map ( pick )
@@ -163,7 +178,9 @@ module.exports = function (comments/*: Array<Comment>*/) {
163
178
164
179
var scopeChars = {
165
180
instance : '#' ,
166
- static : '.'
181
+ static : '.' ,
182
+ inner : '~' ,
183
+ global : ''
167
184
} ;
168
185
169
186
comment . namespace = comment . path . reduce ( ( memo , part ) => {
0 commit comments