From 5a44e10bdd91bb9077532058c728225dd7cdd010 Mon Sep 17 00:00:00 2001 From: Daniel <845765@qq.com> Date: Mon, 9 Dec 2024 12:11:26 +0800 Subject: [PATCH 1/4] :art: Clean code --- kernel/model/export.go | 22 ++++++---------------- 1 file changed, 6 insertions(+), 16 deletions(-) diff --git a/kernel/model/export.go b/kernel/model/export.go index 643028fc4..1618b7810 100644 --- a/kernel/model/export.go +++ b/kernel/model/export.go @@ -1428,7 +1428,7 @@ func BatchExportPandocConvertZip(ids []string, pandocTo, ext string) (name, zipP } docPaths = util.FilterSelfChildDocs(docPaths) - zipPath = exportPandocConvertZip(box.ID, baseFolderName, docPaths, "gfm+footnotes+hard_line_breaks", pandocTo, ext) + zipPath = exportPandocConvertZip(baseFolderName, docPaths, "gfm+footnotes+hard_line_breaks", pandocTo, ext) name = util.GetTreeID(block.Path) return } @@ -1452,7 +1452,7 @@ func ExportPandocConvertZip(id, pandocTo, ext string) (name, zipPath string) { docPaths = append(docPaths, docFile.path) } - zipPath = exportPandocConvertZip(boxID, baseFolderName, docPaths, "gfm+footnotes+hard_line_breaks", pandocTo, ext) + zipPath = exportPandocConvertZip(baseFolderName, docPaths, "gfm+footnotes+hard_line_breaks", pandocTo, ext) name = util.GetTreeID(block.Path) return } @@ -1480,7 +1480,7 @@ func ExportNotebookMarkdown(boxID, folderPath string) (zipPath string) { for _, docFile := range docFiles { docPaths = append(docPaths, docFile.path) } - zipPath = exportPandocConvertZip(boxID, baseFolderName, docPaths, "", "", ".md") + zipPath = exportPandocConvertZip(baseFolderName, docPaths, "", "", ".md") return } @@ -3050,7 +3050,7 @@ func processFileAnnotationRef(refID string, n *ast.Node, fileAnnotationRefMode i return ast.WalkSkipChildren } -func exportPandocConvertZip(boxID, baseFolderName string, docPaths []string, +func exportPandocConvertZip(baseFolderName string, docPaths []string, pandocFrom, pandocTo, ext string) (zipPath string) { dir, name := path.Split(baseFolderName) name = util.FilterFileName(name) @@ -3060,7 +3060,6 @@ func exportPandocConvertZip(boxID, baseFolderName string, docPaths []string, name += "_" } baseFolderName = path.Join(dir, name) - box := Conf.Box(boxID) exportFolder := filepath.Join(util.TempDir, "export", baseFolderName+ext) os.RemoveAll(exportFolder) @@ -3079,11 +3078,7 @@ func exportPandocConvertZip(boxID, baseFolderName string, docPaths []string, continue } - docIAL := box.docIAL(p) - if nil == docIAL { - continue - } - id := docIAL["id"] + id := util.GetTreeID(p) tree, err := LoadTreeByBlockID(id) if err != nil { continue @@ -3119,12 +3114,7 @@ func exportPandocConvertZip(boxID, baseFolderName string, docPaths []string, luteEngine := util.NewLute() for _, p := range docPaths { - docIAL := box.docIAL(p) - if nil == docIAL { - continue - } - - id := docIAL["id"] + id := util.GetTreeID(p) hPath, md := exportMarkdownContent(id, exportRefMode, defBlockIDs) dir, name = path.Split(hPath) dir = util.FilterFilePath(dir) // 导出文档时未移除不支持的文件名符号 https://github.com/siyuan-note/siyuan/issues/4590 From 8d0aac690ecf9d7e72c75c97130c90016d6595ae Mon Sep 17 00:00:00 2001 From: Daniel <845765@qq.com> Date: Mon, 9 Dec 2024 17:31:42 +0800 Subject: [PATCH 2/4] :art: Improve exporting block ref https://github.com/siyuan-note/siyuan/issues/13331 --- kernel/model/export.go | 4 ++-- kernel/treenode/tree.go | 4 ++++ 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/kernel/model/export.go b/kernel/model/export.go index 1618b7810..52a98caa9 100644 --- a/kernel/model/export.go +++ b/kernel/model/export.go @@ -1990,7 +1990,7 @@ func exportMarkdownContent0(tree *parse.Tree, cloudAssetsBase string, assetsDest if 4 == blockRefMode { // 脚注+锚点哈希 if n.IsBlock() && gulu.Str.Contains(n.ID, defBlockIDs) { // 如果是定义块,则在开头处添加锚点 - anchorSpan := &ast.Node{Type: ast.NodeInlineHTML, Tokens: []byte("")} + anchorSpan := treenode.NewSpanAnchor(n.ID) if ast.NodeDocument != n.Type { firstLeaf := treenode.FirstLeafBlock(n) if nil != firstLeaf { @@ -2226,7 +2226,7 @@ func exportTree(tree *parse.Tree, wysiwyg, keepFold, avHiddenCol bool, } } else { if 4 == blockRefMode { // 脚注+锚点哈希 - anchorSpan := &ast.Node{Type: ast.NodeInlineHTML, Tokens: []byte("")} + anchorSpan := treenode.NewSpanAnchor(id) ret.Root.PrependChild(anchorSpan) } } diff --git a/kernel/treenode/tree.go b/kernel/treenode/tree.go index 1275cc8c6..5ea5452f5 100644 --- a/kernel/treenode/tree.go +++ b/kernel/treenode/tree.go @@ -116,3 +116,7 @@ func NewParagraph(id string) (ret *ast.Node) { ret.SetIALAttr("updated", newID[:14]) return } + +func NewSpanAnchor(id string) (ret *ast.Node) { + return &ast.Node{Type: ast.NodeInlineHTML, Tokens: []byte("")} +} From 5342f9f492ac6c2c3376996ab9dba44ef02e1fb3 Mon Sep 17 00:00:00 2001 From: Daniel <845765@qq.com> Date: Mon, 9 Dec 2024 17:46:41 +0800 Subject: [PATCH 3/4] :art: Improve exporting block ref https://github.com/siyuan-note/siyuan/issues/13331 --- kernel/model/export.go | 30 +++++++++++++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/kernel/model/export.go b/kernel/model/export.go index 52a98caa9..88a62de43 100644 --- a/kernel/model/export.go +++ b/kernel/model/export.go @@ -1402,11 +1402,39 @@ func ExportStdMarkdown(id string) string { if IsSubscriber() { cloudAssetsBase = util.GetCloudAssetsServer() + Conf.GetUser().UserId + "/" } + + var defBlockIDs []string + if 4 == Conf.Export.BlockRefMode { // 脚注+锚点哈希 + // 导出锚点哈希,这里先记录下所有定义块的 ID + ast.Walk(tree.Root, func(n *ast.Node, entering bool) ast.WalkStatus { + if !entering { + return ast.WalkContinue + } + + var defID string + if treenode.IsBlockLink(n) { + defID = strings.TrimPrefix(n.TextMarkAHref, "siyuan://blocks/") + + } else if treenode.IsBlockRef(n) { + defID, _, _ = treenode.GetBlockRef(n) + } + + if "" != defID { + if defBt := treenode.GetBlockTree(defID); nil != defBt { + defBlockIDs = append(defBlockIDs, defID) + defBlockIDs = gulu.Str.RemoveDuplicatedElem(defBlockIDs) + } + } + return ast.WalkContinue + }) + } + defBlockIDs = gulu.Str.RemoveDuplicatedElem(defBlockIDs) + return exportMarkdownContent0(tree, cloudAssetsBase, false, Conf.Export.BlockRefMode, Conf.Export.BlockEmbedMode, Conf.Export.FileAnnotationRefMode, Conf.Export.TagOpenMarker, Conf.Export.TagCloseMarker, Conf.Export.BlockRefTextLeft, Conf.Export.BlockRefTextRight, - Conf.Export.AddTitle, nil) + Conf.Export.AddTitle, defBlockIDs) } func BatchExportPandocConvertZip(ids []string, pandocTo, ext string) (name, zipPath string) { From 1ce95ad3870145b501cdc1060fc533e0f9fa0e72 Mon Sep 17 00:00:00 2001 From: Daniel <845765@qq.com> Date: Mon, 9 Dec 2024 21:25:12 +0800 Subject: [PATCH 4/4] :art: Clean code --- app/src/util/assets.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/util/assets.ts b/app/src/util/assets.ts index 7f2835bfb..8995ea1ed 100644 --- a/app/src/util/assets.ts +++ b/app/src/util/assets.ts @@ -344,7 +344,7 @@ const updateMobileTheme = (OSTheme: string) => { window.webkit.messageHandlers.changeStatusBar.postMessage((backgroundColor || (mode === 0 ? "#fff" : "#1e1e1e")) + " " + mode); } else if (isInAndroid()) { window.JSAndroid.changeStatusBarColor(backgroundColor, mode); - } else if ( isInHarmony()) { + } else if (isInHarmony()) { window.JSHarmony.changeStatusBarColor(backgroundColor, mode); } }, 500); // 移动端需要加载完才可以获取到颜色