From b95980f4b54c7d8b17223b4f9db27e29103c5a23 Mon Sep 17 00:00:00 2001 From: Daniel <845765@qq.com> Date: Wed, 25 Oct 2023 21:59:36 +0800 Subject: [PATCH] :art: When exporting Markdown, `
` nodes in non-tables are replaced with `\n` text nodes https://github.com/siyuan-note/siyuan/issues/9509 --- kernel/model/export.go | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/kernel/model/export.go b/kernel/model/export.go index 863f26426..b17c6b3de 100644 --- a/kernel/model/export.go +++ b/kernel/model/export.go @@ -1525,6 +1525,25 @@ func exportMarkdownContent0(tree *parse.Tree, cloudAssetsBase string, assetsDest }) } + // When exporting Markdown, `
` nodes in non-tables are replaced with `\n` text nodes https://github.com/siyuan-note/siyuan/issues/9509 + var unlinks []*ast.Node + ast.Walk(tree.Root, func(n *ast.Node, entering bool) ast.WalkStatus { + if !entering { + return ast.WalkContinue + } + + if ast.NodeBr == n.Type { + if !n.ParentIs(ast.NodeTableCell) { + n.InsertBefore(&ast.Node{Type: ast.NodeText, Tokens: []byte("\n")}) + unlinks = append(unlinks, n) + } + } + return ast.WalkContinue + }) + for _, unlink := range unlinks { + unlink.Unlink() + } + renderer := render.NewProtyleExportMdRenderer(tree, luteEngine.RenderOptions) ret = gulu.Str.FromBytes(renderer.Render()) return