in repo-scripts/api-documenter/src/documenters/MarkdownDocumenter.ts [505:604]
private _createInterfaceTables(apiClass: ApiInterface): DocNode[] {
const configuration = this._tsdocConfiguration;
const output: DocNode[] = [];
const eventsTable: DocTable = new DocTable({
configuration,
headerTitles: ['Property', 'Type', 'Description']
});
const propertiesTable: DocTable = new DocTable({
configuration,
headerTitles: ['Property', 'Type', 'Description']
});
const methodsTable: DocTable = new DocTable({
configuration,
headerTitles: ['Method', 'Description']
});
const methodsDefinitions: DocNode[] = [];
const propertiesDefinitions: DocNode[] = [];
const eventsDefinitions: DocNode[] = [];
for (const apiMember of apiClass.members) {
switch (apiMember.kind) {
case ApiItemKind.ConstructSignature:
case ApiItemKind.MethodSignature: {
methodsTable.addRow(
new DocTableRow({ configuration }, [
createTitleCell(
apiMember,
configuration,
this._addFileNameSuffix
),
createDescriptionCell(apiMember, configuration)
])
);
methodsDefinitions.push(
...this._createCompleteOutputForApiItem(apiMember)
);
break;
}
case ApiItemKind.PropertySignature: {
if ((apiMember as ApiPropertyItem).isEventProperty) {
eventsTable.addRow(
new DocTableRow({ configuration }, [
createTitleCell(
apiMember,
configuration,
this._addFileNameSuffix
),
this._createPropertyTypeCell(apiMember),
createDescriptionCell(apiMember, configuration)
])
);
eventsDefinitions.push(
...this._createCompleteOutputForApiItem(apiMember)
);
} else {
propertiesTable.addRow(
new DocTableRow({ configuration }, [
createTitleCell(
apiMember,
configuration,
this._addFileNameSuffix
),
this._createPropertyTypeCell(apiMember),
createDescriptionCell(apiMember, configuration)
])
);
propertiesDefinitions.push(
...this._createCompleteOutputForApiItem(apiMember)
);
}
break;
}
}
}
if (eventsTable.rows.length > 0) {
output.push(new DocHeading({ configuration, title: 'Events' }));
output.push(eventsTable);
}
if (propertiesTable.rows.length > 0) {
output.push(new DocHeading({ configuration, title: 'Properties' }));
output.push(propertiesTable);
}
if (methodsTable.rows.length > 0) {
output.push(new DocHeading({ configuration, title: 'Methods' }));
output.push(methodsTable);
}
output.push(...eventsDefinitions);
output.push(...propertiesDefinitions);
output.push(...methodsDefinitions);
return output;
}