浏览代码

:art: 支持合并子文档导出 Word/PDF https://github.com/siyuan-note/siyuan/issues/3219

Liang Ding 2 年之前
父节点
当前提交
ff664f1262
共有 1 个文件被更改,包括 6 次插入4 次删除
  1. 6 4
      kernel/model/export_merge.go

+ 6 - 4
kernel/model/export_merge.go

@@ -29,12 +29,15 @@ func mergeSubDocs(rootTree *parse.Tree) (ret *parse.Tree, err error) {
 	}
 
 	insertPoint := rootTree.Root.LastChild
+	if nil == insertPoint {
+		insertPoint = rootTree.Root
+	}
+
 	for {
 		i := 0
 		if err = walkBlock(insertPoint, rootBlock, i); nil != err {
 			return
 		}
-
 		if nil == rootBlock.Children {
 			break
 		}
@@ -44,13 +47,12 @@ func mergeSubDocs(rootTree *parse.Tree) (ret *parse.Tree, err error) {
 
 func walkBlock(insertPoint *ast.Node, block *Block, level int) (err error) {
 	level++
-	for _, c := range block.Children {
+	for i := len(block.Children) - 1; i >= 0; i-- {
+		c := block.Children[i]
 		if err = walkBlock(insertPoint, c, level); nil != err {
 			return
 		}
-	}
 
-	for _, c := range block.Children {
 		nodes, loadErr := loadTreeNodes(c.Box, c.Path, level)
 		if nil != loadErr {
 			return