Jelajahi Sumber

:art: 数据历史文档支持只读可视化预览 https://github.com/siyuan-note/siyuan/issues/5735

Liang Ding 2 tahun lalu
induk
melakukan
9acfd1fb58
2 mengubah file dengan 2 tambahan dan 33 penghapusan
  1. 2 1
      kernel/model/history.go
  2. 0 32
      kernel/model/render.go

+ 2 - 1
kernel/model/history.go

@@ -154,7 +154,8 @@ func GetDocHistoryContent(historyPath string) (content string, err error) {
 		os.RemoveAll(historyPath)
 		return
 	}
-	content = renderBlockMarkdown(historyTree.Root)
+
+	content = luteEngine.Tree2BlockDOM(historyTree, luteEngine.RenderOptions)
 	return
 }
 

+ 0 - 32
kernel/model/render.go

@@ -202,35 +202,3 @@ func renderBlockMarkdownR0(id string, rendered *[]string) (ret []*ast.Node) {
 	}
 	return
 }
-
-func renderBlockMarkdown(node *ast.Node) string {
-	var nodes []*ast.Node
-	ast.Walk(node, func(n *ast.Node, entering bool) ast.WalkStatus {
-		if entering {
-			nodes = append(nodes, n)
-			if ast.NodeHeading == node.Type {
-				// 支持“标题块”引用
-				children := treenode.HeadingChildren(n)
-				nodes = append(nodes, children...)
-			}
-		}
-		return ast.WalkSkipChildren
-	})
-
-	root := &ast.Node{Type: ast.NodeDocument}
-	luteEngine := NewLute()
-	luteEngine.SetKramdownIAL(false)
-	luteEngine.SetSuperBlock(false)
-	tree := &parse.Tree{Root: root, Context: &parse.Context{ParseOption: luteEngine.ParseOptions}}
-	renderer := render.NewFormatRenderer(tree, luteEngine.RenderOptions)
-	renderer.Writer = &bytes.Buffer{}
-	renderer.Writer.Grow(4096)
-	renderer.NodeWriterStack = append(renderer.NodeWriterStack, renderer.Writer) // 因为有可能不是从 root 开始渲染,所以需要初始化
-	for _, node := range nodes {
-		ast.Walk(node, func(n *ast.Node, entering bool) ast.WalkStatus {
-			rendererFunc := renderer.RendererFuncs[n.Type]
-			return rendererFunc(n, entering)
-		})
-	}
-	return strings.TrimSpace(renderer.Writer.String())
-}