فهرست منبع

:art: Improve kernel API `/api/block/getBlockKramdown` https://github.com/siyuan-note/siyuan/issues/13183

Daniel 7 ماه پیش
والد
کامیت
371c64c471
2فایلهای تغییر یافته به همراه23 افزوده شده و 3 حذف شده
  1. 14 1
      kernel/api/block.go
  2. 9 2
      kernel/model/block.go

+ 14 - 1
kernel/api/block.go

@@ -603,7 +603,20 @@ func getBlockKramdown(c *gin.Context) {
 		return
 	}
 
-	kramdown := model.GetBlockKramdown(id)
+	// md:Markdown 标记符模式,使用标记符导出
+	// textmark:文本标记模式,使用 span 标签导出
+	// https://github.com/siyuan-note/siyuan/issues/13183
+	mode := "md"
+	if modeArg := arg["mode"]; nil != modeArg {
+		mode = modeArg.(string)
+		if "md" != mode && "textmark" != mode {
+			ret.Code = -1
+			ret.Msg = "Invalid mode"
+			return
+		}
+	}
+
+	kramdown := model.GetBlockKramdown(id, mode)
 	ret.Data = map[string]string{
 		"id":       id,
 		"kramdown": kramdown,

+ 9 - 2
kernel/model/block.go

@@ -20,6 +20,7 @@ import (
 	"bytes"
 	"errors"
 	"fmt"
+	"github.com/88250/lute/render"
 	"strconv"
 	"strings"
 	"time"
@@ -617,7 +618,7 @@ func GetBlockDOM(id string) (ret string) {
 	return
 }
 
-func GetBlockKramdown(id string) (ret string) {
+func GetBlockKramdown(id, mode string) (ret string) {
 	if "" == id {
 		return
 	}
@@ -633,7 +634,13 @@ func GetBlockKramdown(id string) (ret string) {
 	root.AppendChild(node.Next) // IAL
 	root.PrependChild(node)
 	luteEngine := NewLute()
-	ret = treenode.ExportNodeStdMd(root, luteEngine)
+	if "md" == mode {
+		ret = treenode.ExportNodeStdMd(root, luteEngine)
+	} else {
+		tree.Root = root
+		formatRenderer := render.NewFormatRenderer(tree, luteEngine.RenderOptions)
+		ret = string(formatRenderer.Render())
+	}
 	return
 }