@@ -6,14 +6,22 @@ function escape(text) {
6
6
return text . replace ( / < / g, '<' ) . replace ( / > / g, '>' ) ;
7
7
}
8
8
9
- function functionSignature ( { name, params, returns } ) {
10
- let paramSignature = params . filter ( p => ! p . name . includes ( '.' ) ) . map ( ( { name, type } ) => {
11
- return [ `<strong>${ name } </strong>` , `<em>${ type } </em>` ] . join ( ': ' ) ;
12
- } ) . join ( ', ' )
9
+ function functionSignature ( fn ) {
10
+ // Functions may have { params, returns } directly on them, or they
11
+ // may have a `signatures` array of hashes each with those properties.
12
+ let signatures = ( fn . signatures || [ fn ] ) . map ( ( { params, returns } ) => {
13
+ let paramSignature = params . filter ( p => ! p . name . includes ( '.' ) ) . map ( ( { name, type, isRest, isOptional } ) => {
14
+ let prefix = isRest ? '...' : '' ;
15
+ let suffix = isOptional ? '?' : '' ;
16
+ return `${ prefix } <strong>${ name } </strong>${ suffix } : <em>${ type } </em>` ;
17
+ } ) . join ( ', ' )
13
18
14
- let returnType = returns ? returns . type : 'any' ;
19
+ let returnType = returns ? returns . type : 'any' ;
15
20
16
- return `<strong>${ name } </strong>(${ paramSignature } ): <em>${ returnType } </em>` ;
21
+ return `<strong>${ fn . name } </strong>(${ paramSignature } ): <em>${ returnType } </em>` ;
22
+ } ) ;
23
+
24
+ return signatures . join ( '<br>' ) ;
17
25
}
18
26
19
27
function accessorSignature ( { name, type, hasGetter, hasSetter } ) {
0 commit comments