From 7e5451d8a9676e4b7fd3b2716a50680e8f83d5cb Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Fri, 17 Jul 2020 10:34:34 +0200 Subject: [PATCH] docgen: fix markdown links --- packages/docgen/src/docgen/ApiDocsPrinter.ts | 14 +++++++++++--- .../docgen/src/docgen/GitHubMarkdownPrinter.ts | 4 ++++ .../docgen/src/docgen/TechdocsMarkdownPrinter.ts | 4 ++++ packages/docgen/src/docgen/types.ts | 3 +++ 4 files changed, 22 insertions(+), 3 deletions(-) diff --git a/packages/docgen/src/docgen/ApiDocsPrinter.ts b/packages/docgen/src/docgen/ApiDocsPrinter.ts index 05fcfbd141..fdd53afc8e 100644 --- a/packages/docgen/src/docgen/ApiDocsPrinter.ts +++ b/packages/docgen/src/docgen/ApiDocsPrinter.ts @@ -44,11 +44,13 @@ export default class ApiDocPrinter { ); for (const api of apiDocs) { - printer.header(3, `${api.name.replace(/ApiRef$/, '')}`, api.id); + printer.header(3, `${this.apiDisplayName(api)}`, api.id); printer.paragraph(api.description); - const typeLinks = api.interfaceInfos.map(i => `[${i.name}](./${i.name})`); + const typeLinks = api.interfaceInfos.map( + i => `[${i.name}](${printer.pageLink(i.name)})`, + ); printer.paragraph( `Implemented type${typeLinks.length > 1 ? 's' : ''}: ${typeLinks.join( ', ', @@ -76,7 +78,9 @@ export default class ApiDocPrinter { const apiLinks = apiDocs .filter(ad => ad.interfaceInfos.some(i => i.name === apiType.name)) .map(ad => { - const link = printer.indexLink() + printer.headerLink(ad.name, ad.id); + const link = + printer.indexLink() + + printer.headerLink(this.apiDisplayName(ad), ad.id); return `[${ad.name}](${link})`; }); @@ -152,4 +156,8 @@ export default class ApiDocPrinter { } } } + + private apiDisplayName(api: ApiDoc): string { + return api.name.replace(/ApiRef$/, ''); + } } diff --git a/packages/docgen/src/docgen/GitHubMarkdownPrinter.ts b/packages/docgen/src/docgen/GitHubMarkdownPrinter.ts index eb8e10c102..fd82e023d3 100644 --- a/packages/docgen/src/docgen/GitHubMarkdownPrinter.ts +++ b/packages/docgen/src/docgen/GitHubMarkdownPrinter.ts @@ -54,6 +54,10 @@ export default class GithubMarkdownPrinter implements MarkdownPrinter { return './README.md'; } + pageLink(name: string) { + return `./${name}.md`; + } + srcLink( { file, lineInFile }: { file: string; lineInFile: number }, text?: string, diff --git a/packages/docgen/src/docgen/TechdocsMarkdownPrinter.ts b/packages/docgen/src/docgen/TechdocsMarkdownPrinter.ts index 91fde3cd27..f2453f314f 100644 --- a/packages/docgen/src/docgen/TechdocsMarkdownPrinter.ts +++ b/packages/docgen/src/docgen/TechdocsMarkdownPrinter.ts @@ -66,6 +66,10 @@ export default class TechdocsMarkdownPrinter implements MarkdownPrinter { return '../'; } + pageLink(name: string) { + return `./${name}/`; + } + srcLink( { file, lineInFile }: { file: string; lineInFile: number }, text?: string, diff --git a/packages/docgen/src/docgen/types.ts b/packages/docgen/src/docgen/types.ts index fae368b58d..7aff54d04c 100644 --- a/packages/docgen/src/docgen/types.ts +++ b/packages/docgen/src/docgen/types.ts @@ -106,7 +106,10 @@ export type MarkdownPrinter = { code(options: { text: string; links?: TypeLink[] }): void; headerLink(header: string, id?: string): string; + /** Link from pages to index */ indexLink(): string; + /** Link from index to pages */ + pageLink(name: string): string; srcLink( { file, lineInFile }: { file: string; lineInFile: number }, text?: string,