diff --git a/src/services/import/markdown.spec.ts b/src/services/import/markdown.spec.ts index 297b68e2f..2a7330091 100644 --- a/src/services/import/markdown.spec.ts +++ b/src/services/import/markdown.spec.ts @@ -43,7 +43,6 @@ describe("markdown", () => { expect(result).toBe(`

Hello

world

another one

Hello, world

`); }); - it("parses duplicate title with escape correctly", () => { const result = markdownService.renderToHtml(trimIndentation`\ # What's new @@ -108,4 +107,24 @@ second line 2
  1. Hello
  2. { + const input = trimIndentation`\ + Before + \`\`\` + + ... + + \`\`\` + After`; + const expected = trimIndentation`\ +

    Before

    <application
    +                ...
    +                android:testOnly="false">
    +                ...
    +            </application>

    After

    `; + expect(markdownService.renderToHtml(input, "Title")).toStrictEqual(expected); + }); + }); diff --git a/src/services/import/markdown.ts b/src/services/import/markdown.ts index 8f4973082..aa714d253 100644 --- a/src/services/import/markdown.ts +++ b/src/services/import/markdown.ts @@ -20,6 +20,12 @@ class CustomMarkdownRenderer extends Renderer { return ""; } + // Escape the HTML. + text = utils.escapeHtml(text); + + // Unescape " + text = text.replace(/"/g, '"'); + const ckEditorLanguage = getNormalizedMimeFromMarkdownLanguage(lang); return `
    ${text}
    `; } @@ -66,6 +72,7 @@ import htmlSanitizer from "../html_sanitizer.js"; import importUtils from "./utils.js"; import { getMimeTypeFromHighlightJs, MIME_TYPE_AUTO, normalizeMimeTypeForCKEditor } from "./mime_type_definitions.js"; import { ADMONITION_TYPE_MAPPINGS } from "../export/markdown.js"; +import utils from "../utils.js"; function renderToHtml(content: string, title: string) { let html = parse(content, { @@ -75,7 +82,7 @@ function renderToHtml(content: string, title: string) { // h1 handling needs to come before sanitization html = importUtils.handleH1(html, title); - html = htmlSanitizer.sanitize(html); + // html = htmlSanitizer.sanitize(html); // Remove slash for self-closing tags to match CKEditor's approach. html = html.replace(/<(\w+)([^>]*)\s+\/>/g, "<$1$2>");