mirror of
https://github.com/siyuan-note/siyuan.git
synced 2026-01-21 15:56:10 +01:00
Merge remote-tracking branch 'origin/dev' into dev
This commit is contained in:
commit
83dce4f3e6
3 changed files with 35 additions and 10 deletions
|
|
@ -120,7 +120,7 @@ func GetBlockRefText(id string) string {
|
|||
func GetDOMText(dom string) (ret string) {
|
||||
luteEngine := NewLute()
|
||||
tree := luteEngine.BlockDOM2Tree(dom)
|
||||
ret = renderBlockText(tree.Root, nil)
|
||||
ret = renderBlockText(tree.Root.FirstChild, nil)
|
||||
return
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1038,7 +1038,7 @@ func CreateWithMarkdown(boxID, hPath, md, parentID, id string) (retID string, er
|
|||
WaitForWritingFiles()
|
||||
luteEngine := util.NewLute()
|
||||
dom := luteEngine.Md2BlockDOM(md, false)
|
||||
retID, _, err = createDocsByHPath(box.ID, hPath, dom, parentID, id)
|
||||
retID, err = createDocsByHPath(box.ID, hPath, dom, parentID, id)
|
||||
return
|
||||
}
|
||||
|
||||
|
|
@ -1442,7 +1442,7 @@ func CreateDailyNote(boxID string) (p string, existed bool, err error) {
|
|||
return
|
||||
}
|
||||
|
||||
id, existed, err := createDocsByHPath(box.ID, hPath, "", "", "")
|
||||
id, err := createDocsByHPath(box.ID, hPath, "", "", "")
|
||||
if nil != err {
|
||||
return
|
||||
}
|
||||
|
|
|
|||
|
|
@ -33,13 +33,8 @@ import (
|
|||
"github.com/siyuan-note/siyuan/kernel/util"
|
||||
)
|
||||
|
||||
func createDocsByHPath(boxID, hPath, content, parentID, id string /* id 参数仅在 parentID 不为空的情况下使用 */) (retID string, existed bool, err error) {
|
||||
func createDocsByHPath(boxID, hPath, content, parentID, id string /* id 参数仅在 parentID 不为空的情况下使用 */) (retID string, err error) {
|
||||
hPath = strings.TrimSuffix(hPath, ".sy")
|
||||
pathBuilder := bytes.Buffer{}
|
||||
pathBuilder.WriteString("/")
|
||||
hPathBuilder := bytes.Buffer{}
|
||||
hPathBuilder.WriteString("/")
|
||||
|
||||
if "" != parentID {
|
||||
retID = id
|
||||
|
||||
|
|
@ -62,11 +57,41 @@ func createDocsByHPath(boxID, hPath, content, parentID, id string /* id 参数
|
|||
}
|
||||
}
|
||||
|
||||
root := treenode.GetBlockTreeRootByPath(boxID, hPath)
|
||||
if nil != root {
|
||||
retID = root.ID
|
||||
return
|
||||
}
|
||||
|
||||
hPathBuilder := bytes.Buffer{}
|
||||
hpathBtMap := map[string]*treenode.BlockTree{}
|
||||
parts := strings.Split(hPath, "/")[1:]
|
||||
// The subdoc creation path is unstable when a parent doc with the same name exists https://github.com/siyuan-note/siyuan/issues/9322
|
||||
// 存在同名父文档时子文档创建路径不稳定,这里需要按照完整的 hpath 映射,不能在下面的循环中边构建 hpath 边构建 path,否则虽然 hpath 相同,但是会导致 path 组装错位
|
||||
for i, part := range parts {
|
||||
if i == len(parts)-1 {
|
||||
break
|
||||
}
|
||||
|
||||
hPathBuilder.WriteString("/")
|
||||
hPathBuilder.WriteString(part)
|
||||
hp := hPathBuilder.String()
|
||||
root = treenode.GetBlockTreeRootByHPath(boxID, hp)
|
||||
if nil == root {
|
||||
break
|
||||
}
|
||||
|
||||
hpathBtMap[hp] = root
|
||||
}
|
||||
|
||||
pathBuilder := bytes.Buffer{}
|
||||
pathBuilder.WriteString("/")
|
||||
hPathBuilder = bytes.Buffer{}
|
||||
hPathBuilder.WriteString("/")
|
||||
for i, part := range parts {
|
||||
hPathBuilder.WriteString(part)
|
||||
hp := hPathBuilder.String()
|
||||
root := treenode.GetBlockTreeRootByHPath(boxID, hp)
|
||||
root = hpathBtMap[hp]
|
||||
isNotLast := i < len(parts)-1
|
||||
if nil == root {
|
||||
retID = ast.NewNodeID()
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue