feat(import/markdown): remove spaces in lists

This commit is contained in:
Elian Doran 2025-03-15 21:20:44 +02:00
parent 30593eeeac
commit 1bf16bfa22
No known key found for this signature in database
2 changed files with 25 additions and 7 deletions

View File

@ -62,10 +62,16 @@ Title
code block 1 code block 1
second line 2 second line 2
\`\`\` \`\`\`
* Hello
* world
1. Hello
2. World
`; `;
const expected = `\ const expected = `\
<h2>Heading 1</h2><p>Title</p><pre><code class="language-text-x-trilium-auto">code block 1 <h2>Heading 1</h2><p>Title</p><pre><code class="language-text-x-trilium-auto">code block 1
second line 2</code></pre>`; second line 2</code></pre><ul><li>Hello</li><li>world</li></ul><ol><li>Hello</li><li>World</li></ol>`;
expect(markdownService.renderToHtml(input, "Troubleshooting")).toBe(expected); expect(markdownService.renderToHtml(input, "Troubleshooting")).toBe(expected);
}); });

View File

@ -2,6 +2,9 @@
import { parse, Renderer, type Tokens } from "marked"; import { parse, Renderer, type Tokens } from "marked";
/**
* Keep renderer code up to date with https://github.com/markedjs/marked/blob/master/src/Renderer.ts.
*/
class CustomMarkdownRenderer extends Renderer { class CustomMarkdownRenderer extends Renderer {
heading(data: Tokens.Heading): string { heading(data: Tokens.Heading): string {
@ -12,13 +15,23 @@ class CustomMarkdownRenderer extends Renderer {
return super.paragraph(data).trimEnd(); return super.paragraph(data).trimEnd();
} }
code({ text, lang, escaped }: Tokens.Code): string { code({ text, lang }: Tokens.Code): string {
if (!text) { if (!text) {
return ""; return "";
} }
const ckEditorLanguage = getNormalizedMimeFromMarkdownLanguage(lang); const ckEditorLanguage = getNormalizedMimeFromMarkdownLanguage(lang);
return `<pre><code class="language-${ckEditorLanguage}">${text}</code></pre>`; return `<pre><code class="language-${ckEditorLanguage}">${text}</code></pre>`;
}
list(token: Tokens.List): string {
return super.list(token)
.replace("\n", "") // we replace the first one only.
.trimEnd();
}
listitem(item: Tokens.ListItem): string {
return super.listitem(item).trimEnd();
} }
blockquote({ tokens }: Tokens.Blockquote): string { blockquote({ tokens }: Tokens.Blockquote): string {
@ -42,7 +55,6 @@ class CustomMarkdownRenderer extends Renderer {
} }
// Keep renderer code up to date with https://github.com/markedjs/marked/blob/master/src/Renderer.ts.
const renderer = new CustomMarkdownRenderer({ async: false }); const renderer = new CustomMarkdownRenderer({ async: false });
import htmlSanitizer from "../html_sanitizer.js"; import htmlSanitizer from "../html_sanitizer.js";