Skip to content

Commit 4c92812

Browse files
committed
Support multiple type signatures
1 parent b4bfe91 commit 4c92812

File tree

1 file changed

+14
-6
lines changed

1 file changed

+14
-6
lines changed

addon/helpers/type-signature.js

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,14 +6,22 @@ function escape(text) {
66
return text.replace(/</g, '&lt;').replace(/>/g, '&gt;');
77
}
88

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(', ')
1318

14-
let returnType = returns ? returns.type : 'any';
19+
let returnType = returns ? returns.type : 'any';
1520

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>');
1725
}
1826

1927
function accessorSignature({ name, type, hasGetter, hasSetter }) {

0 commit comments

Comments
 (0)