Merge remote-tracking branch 'origin/dev' into dev
This commit is contained in:
commit
1e665b8c46
5 changed files with 58 additions and 12 deletions
2
app/stage/protyle/js/lute/lute.min.js
vendored
2
app/stage/protyle/js/lute/lute.min.js
vendored
File diff suppressed because one or more lines are too long
|
@ -17,6 +17,7 @@
|
|||
package api
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"net/http"
|
||||
|
||||
"github.com/88250/gulu"
|
||||
|
@ -221,7 +222,13 @@ func appendBlock(c *gin.Context) {
|
|||
}
|
||||
if "markdown" == dataType {
|
||||
luteEngine := util.NewLute()
|
||||
data = dataBlockDOM(data, luteEngine)
|
||||
var err error
|
||||
data, err = dataBlockDOM(data, luteEngine)
|
||||
if nil != err {
|
||||
ret.Code = -1
|
||||
ret.Msg = "data block DOM failed: " + err.Error()
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
transactions := []*model.Transaction{
|
||||
|
@ -260,7 +267,13 @@ func prependBlock(c *gin.Context) {
|
|||
}
|
||||
if "markdown" == dataType {
|
||||
luteEngine := util.NewLute()
|
||||
data = dataBlockDOM(data, luteEngine)
|
||||
var err error
|
||||
data, err = dataBlockDOM(data, luteEngine)
|
||||
if nil != err {
|
||||
ret.Code = -1
|
||||
ret.Msg = "data block DOM failed: " + err.Error()
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
transactions := []*model.Transaction{
|
||||
|
@ -315,7 +328,13 @@ func insertBlock(c *gin.Context) {
|
|||
|
||||
if "markdown" == dataType {
|
||||
luteEngine := util.NewLute()
|
||||
data = dataBlockDOM(data, luteEngine)
|
||||
var err error
|
||||
data, err = dataBlockDOM(data, luteEngine)
|
||||
if nil != err {
|
||||
ret.Code = -1
|
||||
ret.Msg = "data block DOM failed: " + err.Error()
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
transactions := []*model.Transaction{
|
||||
|
@ -357,7 +376,13 @@ func updateBlock(c *gin.Context) {
|
|||
|
||||
luteEngine := util.NewLute()
|
||||
if "markdown" == dataType {
|
||||
data = dataBlockDOM(data, luteEngine)
|
||||
var err error
|
||||
data, err = dataBlockDOM(data, luteEngine)
|
||||
if nil != err {
|
||||
ret.Code = -1
|
||||
ret.Msg = "data block DOM failed: " + err.Error()
|
||||
return
|
||||
}
|
||||
}
|
||||
tree := luteEngine.BlockDOM2Tree(data)
|
||||
if nil == tree || nil == tree.Root || nil == tree.Root.FirstChild {
|
||||
|
@ -461,14 +486,35 @@ func broadcastTransactions(transactions []*model.Transaction) {
|
|||
util.PushEvent(evt)
|
||||
}
|
||||
|
||||
func dataBlockDOM(data string, luteEngine *lute.Lute) (ret string) {
|
||||
func dataBlockDOM(data string, luteEngine *lute.Lute) (ret string, err error) {
|
||||
luteEngine.SetHTMLTag2TextMark(true) // API `/api/block/**` 无法使用 `<u>foo</u>` 与 `<kbd>bar</kbd>` 插入/更新行内元素 https://github.com/siyuan-note/siyuan/issues/6039
|
||||
|
||||
ret = luteEngine.Md2BlockDOM(data, true)
|
||||
ret, tree := luteEngine.Md2BlockDOM(data, true)
|
||||
if "" == ret {
|
||||
// 使用 API 插入空字符串出现错误 https://github.com/siyuan-note/siyuan/issues/3931
|
||||
blankParagraph := treenode.NewParagraph()
|
||||
ret = luteEngine.RenderNodeBlockDOM(blankParagraph)
|
||||
}
|
||||
|
||||
invalidID := ""
|
||||
ast.Walk(tree.Root, func(n *ast.Node, entering bool) ast.WalkStatus {
|
||||
if !entering {
|
||||
return ast.WalkContinue
|
||||
}
|
||||
|
||||
if "" != n.ID {
|
||||
if !ast.IsNodeIDPattern(n.ID) {
|
||||
invalidID = n.ID
|
||||
return ast.WalkStop
|
||||
}
|
||||
}
|
||||
return ast.WalkContinue
|
||||
})
|
||||
|
||||
if "" != invalidID {
|
||||
err = errors.New("found invalid ID [" + invalidID + "]")
|
||||
ret = ""
|
||||
return
|
||||
}
|
||||
return
|
||||
}
|
||||
|
|
|
@ -9,7 +9,7 @@ require (
|
|||
github.com/88250/clipboard v0.1.5
|
||||
github.com/88250/epub v0.0.0-20230830085737-c19055cd1f48
|
||||
github.com/88250/gulu v1.2.3-0.20231209020950-b7b6994e395c
|
||||
github.com/88250/lute v1.7.6-0.20240107075811-86795b72deef
|
||||
github.com/88250/lute v1.7.6-0.20240111024801-7e083278df4e
|
||||
github.com/88250/pdfcpu v0.3.14-0.20230401044135-c7369a99720c
|
||||
github.com/88250/vitess-sqlparser v0.0.0-20210205111146-56a2ded2aba1
|
||||
github.com/ClarkThan/ahocorasick v0.0.0-20231011042242-30d1ef1347f4
|
||||
|
|
|
@ -10,8 +10,8 @@ github.com/88250/go-sqlite3 v1.14.13-0.20231214121541-e7f54c482950 h1:Pa5hMiBceT
|
|||
github.com/88250/go-sqlite3 v1.14.13-0.20231214121541-e7f54c482950/go.mod h1:NyWgC/yNuGj7Q9rpYnZvas74GogHl5/Z4A/KQRfk6bU=
|
||||
github.com/88250/gulu v1.2.3-0.20231209020950-b7b6994e395c h1:Fas3hxqP33xA9KKDV50jUmppiiOukk5bdV00Hk5VSSk=
|
||||
github.com/88250/gulu v1.2.3-0.20231209020950-b7b6994e395c/go.mod h1:pTWnjt+6qUqNnP9xltswsJxgCBVu3C7eW09u48LWX0k=
|
||||
github.com/88250/lute v1.7.6-0.20240107075811-86795b72deef h1:gNcdJGPRlenISFYkJ3H1aE5X/GAad6cZIolLETR27+I=
|
||||
github.com/88250/lute v1.7.6-0.20240107075811-86795b72deef/go.mod h1:+wUqx/1kdFDbWtxn9LYJlaCOAeol2pjSO6w+WJTVQsg=
|
||||
github.com/88250/lute v1.7.6-0.20240111024801-7e083278df4e h1:fN0BYXgu8iqPO705kesomO3E/5cENwVLerwbYmMnTps=
|
||||
github.com/88250/lute v1.7.6-0.20240111024801-7e083278df4e/go.mod h1:+wUqx/1kdFDbWtxn9LYJlaCOAeol2pjSO6w+WJTVQsg=
|
||||
github.com/88250/pdfcpu v0.3.14-0.20230401044135-c7369a99720c h1:Dl/8S9iLyPMTElnWIBxmjaLiWrkI5P4a21ivwAn5pU0=
|
||||
github.com/88250/pdfcpu v0.3.14-0.20230401044135-c7369a99720c/go.mod h1:S5YT38L/GCjVjmB4PB84PymA1qfopjEhfhTNQilLpv4=
|
||||
github.com/88250/vitess-sqlparser v0.0.0-20210205111146-56a2ded2aba1 h1:48T899JQDwyyRu9yXHePYlPdHtpJfrJEUGBMH3SMBWY=
|
||||
|
|
|
@ -1009,7 +1009,7 @@ func CreateDocByMd(boxID, p, title, md string, sorts []string) (tree *parse.Tree
|
|||
}
|
||||
|
||||
luteEngine := util.NewLute()
|
||||
dom := luteEngine.Md2BlockDOM(md, false)
|
||||
dom, _ := luteEngine.Md2BlockDOM(md, false)
|
||||
tree, err = createDoc(box.ID, p, title, dom)
|
||||
if nil != err {
|
||||
return
|
||||
|
@ -1032,7 +1032,7 @@ func CreateWithMarkdown(boxID, hPath, md, parentID, id string) (retID string, er
|
|||
|
||||
WaitForWritingFiles()
|
||||
luteEngine := util.NewLute()
|
||||
dom := luteEngine.Md2BlockDOM(md, false)
|
||||
dom, _ := luteEngine.Md2BlockDOM(md, false)
|
||||
retID, err = createDocsByHPath(box.ID, hPath, dom, parentID, id)
|
||||
WaitForWritingFiles()
|
||||
return
|
||||
|
|
Loading…
Add table
Reference in a new issue