diff --git a/src/services/export/markdown.spec.ts b/src/services/export/markdown.spec.ts index 17989d5ed..5f14314fd 100644 --- a/src/services/export/markdown.spec.ts +++ b/src/services/export/markdown.spec.ts @@ -238,4 +238,10 @@ describe("Markdown export", () => { expect(markdownExportService.toMarkdown(html)).toBe(expected); }); + it("exports reference links as normal links", () => { + const html = /*html*/`

Canvas

`; + const expected = `[Canvas](../../Canvas.html)`; + expect(markdownExportService.toMarkdown(html)).toBe(expected); + }); + }); diff --git a/src/services/import/markdown.spec.ts b/src/services/import/markdown.spec.ts index b8c0949bc..9ef6233e5 100644 --- a/src/services/import/markdown.spec.ts +++ b/src/services/import/markdown.spec.ts @@ -145,4 +145,16 @@ second line 2
  1. Hello
  2. { + const input = `[Google](https://www.google.com)`; + const expected = /*html*/`

    Google

    `; + expect(markdownService.renderToHtml(input, "Title")).toStrictEqual(expected); + }); + + it("imports back to reference links", () => { + const input = `[Canvas](../../Canvas.html)`; + const expected = /*html*/`

    Canvas

    `; + expect(markdownService.renderToHtml(input, "Title")).toStrictEqual(expected); + }); + }); diff --git a/src/services/import/markdown.ts b/src/services/import/markdown.ts index 57bf58dd6..3dcd2784c 100644 --- a/src/services/import/markdown.ts +++ b/src/services/import/markdown.ts @@ -64,6 +64,17 @@ class CustomMarkdownRenderer extends Renderer { return `
    ${body}
    `; } + link(data: Tokens.Link): string { + let html = super.link(data); + + // Rewrite local/relative links back to reference links. + if (data.href.indexOf("://") === -1) { + html = html.replace(/^