From 535db65bf6ac5f35bef5448646a00a88b2697aea Mon Sep 17 00:00:00 2001 From: Daniel <845765@qq.com> Date: Mon, 25 Nov 2024 10:52:15 +0800 Subject: [PATCH] :art: Improve importing Markdown https://github.com/siyuan-note/siyuan/issues/13245 --- kernel/model/import.go | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/kernel/model/import.go b/kernel/model/import.go index 2fe6d2038b0..b8d6b2de0bd 100644 --- a/kernel/model/import.go +++ b/kernel/model/import.go @@ -695,6 +695,7 @@ func ImportFromLocalPath(boxID, localPath string, toPath string) (err error) { hPathsIDs := map[string]string{} idPaths := map[string]string{} + moveIDs := map[string]string{} if gulu.File.IsDir(localPath) { // 导入文件夹 // 收集所有资源文件 @@ -793,6 +794,7 @@ func ImportFromLocalPath(boxID, localPath string, toPath string) (err error) { } if "" != yfmRootID { + moveIDs[id] = yfmRootID id = yfmRootID } if "" != yfmTitle { @@ -999,6 +1001,13 @@ func ImportFromLocalPath(boxID, localPath string, toPath string) (err error) { } if 0 < len(importTrees) { + for id, newID := range moveIDs { + for _, importTree := range importTrees { + importTree.ID = strings.ReplaceAll(importTree.ID, id, newID) + importTree.Path = strings.ReplaceAll(importTree.Path, id, newID) + } + } + initSearchLinks() convertWikiLinksAndTags() buildBlockRefInText() @@ -1184,16 +1193,6 @@ func imgHtmlBlock2InlineImg(tree *parse.Tree) { } func reassignIDUpdated(tree *parse.Tree, rootID, updated string) { - var blockCount int - ast.Walk(tree.Root, func(n *ast.Node, entering bool) ast.WalkStatus { - if !entering || "" == n.ID { - return ast.WalkContinue - } - - blockCount++ - return ast.WalkContinue - }) - ast.Walk(tree.Root, func(n *ast.Node, entering bool) ast.WalkStatus { if !entering || "" == n.ID { return ast.WalkContinue @@ -1207,8 +1206,10 @@ func reassignIDUpdated(tree *parse.Tree, rootID, updated string) { n.SetIALAttr("id", n.ID) if "" != updated { n.SetIALAttr("updated", updated) - n.ID = updated + "-" + gulu.Rand.String(7) - n.SetIALAttr("id", n.ID) + if "" == rootID { + n.ID = updated + "-" + gulu.Rand.String(7) + n.SetIALAttr("id", n.ID) + } } else { n.SetIALAttr("updated", util.TimeFromID(n.ID)) }