From 106ffb292bd04f906b6eb9afc501b67403194c41 Mon Sep 17 00:00:00 2001 From: Daniel <845765@qq.com> Date: Tue, 19 Dec 2023 12:30:07 +0800 Subject: [PATCH] :bug: Blockquote in list turn into paragraph causes internal error https://github.com/siyuan-note/siyuan/issues/9920 --- kernel/sql/database.go | 11 ++++------- kernel/treenode/node.go | 2 +- kernel/util/tesseract.go | 9 +++++++-- 3 files changed, 12 insertions(+), 10 deletions(-) diff --git a/kernel/sql/database.go b/kernel/sql/database.go index 17ef87d43..8b13e3c44 100644 --- a/kernel/sql/database.go +++ b/kernel/sql/database.go @@ -798,15 +798,14 @@ func buildBlockFromNode(n *ast.Node, tree *parse.Tree) (block *Block, attributes length = utf8.RuneCountInString(fcontent) } else if n.IsContainerBlock() { markdown = treenode.ExportNodeStdMd(n, luteEngine) - if !treenode.IsNodeOCRed(n) { - util.PushNodeOCRQueue(n.ID) + util.PushNodeOCRQueue(n) } content = treenode.NodeStaticContent(n, nil, true, indexAssetPath) - fc := treenode.FirstLeafBlock(n) + fc := treenode.FirstLeafBlock(n) if !treenode.IsNodeOCRed(fc) { - util.PushNodeOCRQueue(fc.ID) + util.PushNodeOCRQueue(fc) } fcontent = treenode.NodeStaticContent(fc, nil, true, false) @@ -818,11 +817,9 @@ func buildBlockFromNode(n *ast.Node, tree *parse.Tree) (block *Block, attributes length = utf8.RuneCountInString(fcontent) } else { markdown = treenode.ExportNodeStdMd(n, luteEngine) - if !treenode.IsNodeOCRed(n) { - util.PushNodeOCRQueue(n.ID) + util.PushNodeOCRQueue(n) } - content = treenode.NodeStaticContent(n, nil, true, indexAssetPath) parentID = n.Parent.ID diff --git a/kernel/treenode/node.go b/kernel/treenode/node.go index 691717d52..1e07f7d86 100644 --- a/kernel/treenode/node.go +++ b/kernel/treenode/node.go @@ -138,7 +138,7 @@ func ExportNodeStdMd(node *ast.Node, luteEngine *lute.Lute) string { func IsNodeOCRed(node *ast.Node) (ret bool) { if !util.TesseractEnabled || nil == node { - return + return true } ret = true diff --git a/kernel/util/tesseract.go b/kernel/util/tesseract.go index d9a5015c3..90443cc29 100644 --- a/kernel/util/tesseract.go +++ b/kernel/util/tesseract.go @@ -30,6 +30,7 @@ import ( "time" "github.com/88250/gulu" + "github.com/88250/lute/ast" "github.com/88250/lute/html" "github.com/dustin/go-humanize" "github.com/siyuan-note/logging" @@ -279,8 +280,12 @@ var ( NodeOCRQueueLock = sync.Mutex{} ) -func PushNodeOCRQueue(id string) { +func PushNodeOCRQueue(n *ast.Node) { + if nil == n { + return + } + NodeOCRQueueLock.Lock() defer NodeOCRQueueLock.Unlock() - NodeOCRQueue = append(NodeOCRQueue, id) + NodeOCRQueue = append(NodeOCRQueue, n.ID) }