From 32ce13a8f4336279ab60b1992b59ef848624560c Mon Sep 17 00:00:00 2001 From: tgreyuk Date: Tue, 5 Oct 2021 21:48:10 +0100 Subject: [PATCH] fix: correctly render reference (#254) --- .../src/render-utils.ts | 4 +++ .../src/resources/helpers/if-is-reference.ts | 16 ++++++++++++ .../src/resources/helpers/reference-member.ts | 25 +++++++++++++++++++ .../src/resources/partials/member.hbs | 8 +++--- .../resources/partials/member.reference.hbs | 21 ---------------- 5 files changed, 49 insertions(+), 25 deletions(-) create mode 100644 packages/typedoc-plugin-markdown/src/resources/helpers/if-is-reference.ts create mode 100644 packages/typedoc-plugin-markdown/src/resources/helpers/reference-member.ts delete mode 100644 packages/typedoc-plugin-markdown/src/resources/partials/member.reference.hbs diff --git a/packages/typedoc-plugin-markdown/src/render-utils.ts b/packages/typedoc-plugin-markdown/src/render-utils.ts index 5215b063a..03783a065 100644 --- a/packages/typedoc-plugin-markdown/src/render-utils.ts +++ b/packages/typedoc-plugin-markdown/src/render-utils.ts @@ -7,6 +7,7 @@ import commentsHelper from './resources/helpers/comments'; import declarationTitleHelper from './resources/helpers/declaration-title'; import escapeHelper from './resources/helpers/escape'; import hierarchyHelper from './resources/helpers/hierarchy'; +import ifIsReference from './resources/helpers/if-is-reference'; import ifShowBreadcrumbsHelper from './resources/helpers/if-show-breadcrumbs'; import ifShowNamedAnchorsHelper from './resources/helpers/if-show-named-anchors'; import ifShowPageTitleHelper from './resources/helpers/if-show-page-title'; @@ -15,6 +16,7 @@ import ifShowTypeHierarchyHelper from './resources/helpers/if-show-type-hierarch import indexSignatureTitleHelper from './resources/helpers/index-signature-title'; import parameterTableHelper from './resources/helpers/parameter-table'; import propertyTableHelper from './resources/helpers/property-table'; +import referenceMember from './resources/helpers/reference-member'; import reflectionPathHelper from './resources/helpers/reflection-path'; import reflectionTitleHelper from './resources/helpers/reflection-title'; import relativeUrlHelper from './resources/helpers/relative-url'; @@ -58,6 +60,7 @@ export function registerHelpers(theme: MarkdownTheme) { declarationTitleHelper(); escapeHelper(); hierarchyHelper(); + ifIsReference(); ifShowBreadcrumbsHelper(theme); ifShowNamedAnchorsHelper(theme); ifShowPageTitleHelper(theme); @@ -66,6 +69,7 @@ export function registerHelpers(theme: MarkdownTheme) { indexSignatureTitleHelper(); parameterTableHelper(); propertyTableHelper(); + referenceMember(); reflectionPathHelper(); reflectionTitleHelper(theme); relativeUrlHelper(theme); diff --git a/packages/typedoc-plugin-markdown/src/resources/helpers/if-is-reference.ts b/packages/typedoc-plugin-markdown/src/resources/helpers/if-is-reference.ts new file mode 100644 index 000000000..0d40ea12d --- /dev/null +++ b/packages/typedoc-plugin-markdown/src/resources/helpers/if-is-reference.ts @@ -0,0 +1,16 @@ +import * as Handlebars from 'handlebars'; +import { DeclarationReflection, ReferenceReflection } from 'typedoc'; + +export default function () { + Handlebars.registerHelper( + 'ifIsReference', + function ( + this: DeclarationReflection | ReferenceReflection, + options: Handlebars.HelperOptions, + ) { + return this instanceof ReferenceReflection + ? options.fn(this) + : options.inverse(this); + }, + ); +} diff --git a/packages/typedoc-plugin-markdown/src/resources/helpers/reference-member.ts b/packages/typedoc-plugin-markdown/src/resources/helpers/reference-member.ts new file mode 100644 index 000000000..edecf4e92 --- /dev/null +++ b/packages/typedoc-plugin-markdown/src/resources/helpers/reference-member.ts @@ -0,0 +1,25 @@ +import * as Handlebars from 'handlebars'; +import { ReferenceReflection } from 'typedoc'; + +export default function () { + Handlebars.registerHelper( + 'referenceMember', + function (this: ReferenceReflection) { + const referenced = this.tryGetTargetReflectionDeep(); + + if (!referenced) { + return `Re-exports ${this.name}`; + } + + if (this.name === referenced.name) { + return `Re-exports [${ + referenced.name + }](${Handlebars.helpers.relativeURL(referenced.url)})`; + } + + return `Renames and re-exports [${ + referenced.name + }](${Handlebars.helpers.relativeURL(referenced.url)})`; + }, + ); +} diff --git a/packages/typedoc-plugin-markdown/src/resources/partials/member.hbs b/packages/typedoc-plugin-markdown/src/resources/partials/member.hbs index 539f67f52..794e89dd5 100644 --- a/packages/typedoc-plugin-markdown/src/resources/partials/member.hbs +++ b/packages/typedoc-plugin-markdown/src/resources/partials/member.hbs @@ -24,15 +24,15 @@ {{else}} -{{#if isReference}} +{{#ifIsReference}} -{{> member.reference}} +{{referenceMember}} {{else}} {{> member.declaration}} -{{/if}} +{{/ifIsReference}} {{/if}} @@ -42,4 +42,4 @@ {{#unless hasOwnDocument}} ___ {{/unless}} -{{/unless}} \ No newline at end of file +{{/unless}} diff --git a/packages/typedoc-plugin-markdown/src/resources/partials/member.reference.hbs b/packages/typedoc-plugin-markdown/src/resources/partials/member.reference.hbs deleted file mode 100644 index b797f00da..000000000 --- a/packages/typedoc-plugin-markdown/src/resources/partials/member.reference.hbs +++ /dev/null @@ -1,21 +0,0 @@ -{{#with tryGetTargetReflectionDeep}} - -{{#ifCond ../name '===' name}} - -Re-exports: [{{escape name}}]({{relativeURL url}}) - -{{else if flags.isExported}} - -Renames and re-exports: [{{escape name}}]({{relativeURL url}}) - -{{else}} - -Renames and exports: [{{escape name}}]({{relativeURL url}}) - -{{/ifCond}} - -{{else}} - -Re-exports: {{escape name}} - -{{/with}} \ No newline at end of file