in repo-scripts/api-documenter/src/documenters/MarkdownDocumenter.ts [819:974]
private _createEntryPointOrNamespace(
apiContainer: ApiEntryPoint | ApiNamespace
): DocNode[] {
const configuration = this._tsdocConfiguration;
const output: DocNode[] = [];
const classesTable: DocTable = new DocTable({
configuration,
headerTitles: ['Class', 'Description']
});
const enumerationsTable: DocTable = new DocTable({
configuration,
headerTitles: ['Enumeration', 'Description']
});
const functionsTable: DocTable = new DocTable({
configuration,
headerTitles: ['Function', 'Description']
});
const interfacesTable: DocTable = new DocTable({
configuration,
headerTitles: ['Interface', 'Description']
});
const namespacesTable: DocTable = new DocTable({
configuration,
headerTitles: ['Namespace', 'Description']
});
const variablesTable: DocTable = new DocTable({
configuration,
headerTitles: ['Variable', 'Description']
});
const typeAliasesTable: DocTable = new DocTable({
configuration,
headerTitles: ['Type Alias', 'Description']
});
const functionsDefinitions: DocNode[] = [];
const variablesDefinitions: DocNode[] = [];
const typeAliasDefinitions: DocNode[] = [];
const enumsDefinitions: DocNode[] = [];
const apiMembers: ReadonlyArray<ApiItem> =
apiContainer.kind === ApiItemKind.EntryPoint
? (apiContainer as ApiEntryPoint).members
: (apiContainer as ApiNamespace).members;
for (const apiMember of apiMembers) {
const row: DocTableRow = new DocTableRow({ configuration }, [
createTitleCell(apiMember, configuration, this._addFileNameSuffix),
createDescriptionCell(apiMember, configuration)
]);
switch (apiMember.kind) {
case ApiItemKind.Class:
classesTable.addRow(row);
this._writeApiItemPage(apiMember);
break;
case ApiItemKind.Enum:
enumerationsTable.addRow(row);
enumsDefinitions.push(
...this._createCompleteOutputForApiItem(apiMember)
);
break;
case ApiItemKind.Interface:
interfacesTable.addRow(row);
this._writeApiItemPage(apiMember);
break;
case ApiItemKind.Namespace:
namespacesTable.addRow(row);
this._writeApiItemPage(apiMember);
break;
case ApiItemKind.Function:
functionsTable.addRow(row);
functionsDefinitions.push(
...this._createCompleteOutputForApiItem(apiMember)
);
break;
case ApiItemKind.TypeAlias:
typeAliasesTable.addRow(row);
typeAliasDefinitions.push(
...this._createCompleteOutputForApiItem(apiMember)
);
break;
case ApiItemKind.Variable:
variablesTable.addRow(row);
variablesDefinitions.push(
...this._createCompleteOutputForApiItem(apiMember)
);
break;
}
}
if (functionsTable.rows.length > 0) {
output.push(new DocHeading({ configuration, title: 'Functions' }));
output.push(functionsTable);
}
if (classesTable.rows.length > 0) {
output.push(new DocHeading({ configuration, title: 'Classes' }));
output.push(classesTable);
}
if (enumerationsTable.rows.length > 0) {
output.push(new DocHeading({ configuration, title: 'Enumerations' }));
output.push(enumerationsTable);
}
if (interfacesTable.rows.length > 0) {
output.push(new DocHeading({ configuration, title: 'Interfaces' }));
output.push(interfacesTable);
}
if (namespacesTable.rows.length > 0) {
output.push(new DocHeading({ configuration, title: 'Namespaces' }));
output.push(namespacesTable);
}
if (variablesTable.rows.length > 0) {
output.push(new DocHeading({ configuration, title: 'Variables' }));
output.push(variablesTable);
}
if (typeAliasesTable.rows.length > 0) {
output.push(new DocHeading({ configuration, title: 'Type Aliases' }));
output.push(typeAliasesTable);
}
if (functionsDefinitions.length > 0) {
output.push(...functionsDefinitions);
}
if (variablesDefinitions.length > 0) {
output.push(...variablesDefinitions);
}
if (typeAliasDefinitions.length > 0) {
output.push(...typeAliasDefinitions);
}
if (enumsDefinitions.length > 0) {
output.push(...enumsDefinitions);
}
return output;
}