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
second line 2
\`\`\`
* Hello
* world
1. Hello
2. World
`;
const expected = `\
<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);
});

View File

@ -2,6 +2,9 @@
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 {
heading(data: Tokens.Heading): string {
@ -12,7 +15,7 @@ class CustomMarkdownRenderer extends Renderer {
return super.paragraph(data).trimEnd();
}
code({ text, lang, escaped }: Tokens.Code): string {
code({ text, lang }: Tokens.Code): string {
if (!text) {
return "";
}
@ -21,6 +24,16 @@ class CustomMarkdownRenderer extends Renderer {
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 {
const body = renderer.parser.parse(tokens);
@ -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 });
import htmlSanitizer from "../html_sanitizer.js";