From 1e2a707e02dcc54b257d7613cb5fe872e95c7a4f Mon Sep 17 00:00:00 2001 From: Liang Ding Date: Thu, 19 Jan 2023 20:51:32 +0800 Subject: [PATCH] =?UTF-8?q?:art:=20=E5=B5=8C=E5=85=A5=E5=9D=97=E6=94=AF?= =?UTF-8?q?=E6=8C=81=E6=90=9C=E7=B4=A2=20https://github.com/siyuan-note/si?= =?UTF-8?q?yuan/issues/7112?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- kernel/model/block.go | 3 ++- kernel/model/render.go | 19 +++++++++++++++++++ kernel/model/search.go | 6 +++--- kernel/model/transaction.go | 4 ++-- 4 files changed, 26 insertions(+), 6 deletions(-) diff --git a/kernel/model/block.go b/kernel/model/block.go index 249dcd6e1..5ee473604 100644 --- a/kernel/model/block.go +++ b/kernel/model/block.go @@ -457,7 +457,8 @@ func getEmbeddedBlock(embedBlockID string, trees map[string]*parse.Tree, sqlBloc luteEngine := NewLute() luteEngine.RenderOptions.ProtyleContenteditable = false // 不可编辑 dom := renderBlockDOMByNodes(nodes, luteEngine) - block = &Block{Box: def.Box, Path: def.Path, HPath: b.HPath, ID: def.ID, Type: def.Type.String(), Content: dom} + content := renderBlockContentByNodes(nodes) + block = &Block{Box: def.Box, Path: def.Path, HPath: b.HPath, ID: def.ID, Type: def.Type.String(), Content: dom, Markdown: content /* 这里使用 Markdown 字段来临时存储 content */} // 位于超级块中的嵌入块不显示面包屑 https://github.com/siyuan-note/siyuan/issues/6258 inSuperBlock := false diff --git a/kernel/model/render.go b/kernel/model/render.go index 79e6a5912..54f805393 100644 --- a/kernel/model/render.go +++ b/kernel/model/render.go @@ -118,6 +118,25 @@ func renderBlockDOMByNodes(nodes []*ast.Node, luteEngine *lute.Lute) string { return h } +func renderBlockContentByNodes(nodes []*ast.Node) string { + var subNodes []*ast.Node + for _, n := range nodes { + if ast.NodeDocument == n.Type { + for c := n.FirstChild; nil != c; c = c.Next { + subNodes = append(subNodes, c) + } + } else { + subNodes = append(subNodes, n) + } + } + + buf := bytes.Buffer{} + for _, n := range subNodes { + buf.WriteString(treenode.NodeStaticContent(n, nil)) + } + return buf.String() +} + func renderBlockMarkdownR(id string) string { var rendered []string nodes := renderBlockMarkdownR0(id, &rendered) diff --git a/kernel/model/search.go b/kernel/model/search.go index e9ba5ffe5..6b17322d5 100644 --- a/kernel/model/search.go +++ b/kernel/model/search.go @@ -70,9 +70,6 @@ func searchEmbedBlock(embedBlockID, stmt string, excludeIDs []string, headingMod } sqlBlocks = tmp - // 嵌入块支持搜索 https://github.com/siyuan-note/siyuan/issues/7112 - task.AppendTask(task.DatabaseIndexEmbedBlock, updateEmbedBlockContent, embedBlockID, sqlBlocks) - // 缓存最多 128 棵语法树 trees := map[string]*parse.Tree{} count := 0 @@ -101,6 +98,9 @@ func searchEmbedBlock(embedBlockID, stmt string, excludeIDs []string, headingMod }) } + // 嵌入块支持搜索 https://github.com/siyuan-note/siyuan/issues/7112 + task.AppendTask(task.DatabaseIndexEmbedBlock, updateEmbedBlockContent, embedBlockID, ret) + // 添加笔记本名称 var boxIDs []string for _, embedBlock := range ret { diff --git a/kernel/model/transaction.go b/kernel/model/transaction.go index 56df4feed..8285aeb8f 100644 --- a/kernel/model/transaction.go +++ b/kernel/model/transaction.go @@ -1244,14 +1244,14 @@ func autoIndexEmbedBlock(embedBlocks []*sql.Block) { } } -func updateEmbedBlockContent(embedBlockID string, queryResultBlocks []*sql.Block) { +func updateEmbedBlockContent(embedBlockID string, queryResultBlocks []*EmbedBlock) { embedBlock := sql.GetBlock(embedBlockID) if nil == embedBlock { return } for _, block := range queryResultBlocks { - embedBlock.Content += block.Content + embedBlock.Content += block.Block.Markdown } if "" == embedBlock.Content { embedBlock.Content = "no query result"