mirror of
https://github.com/siyuan-note/siyuan.git
synced 2025-12-23 18:10:12 +01:00
🎨 Improve callout block https://github.com/siyuan-note/siyuan/issues/16607
Signed-off-by: Daniel <845765@qq.com>
This commit is contained in:
parent
6f2ace0c28
commit
c07efea8de
18 changed files with 33 additions and 33 deletions
4
app/stage/protyle/js/lute/lute.min.js
vendored
4
app/stage/protyle/js/lute/lute.min.js
vendored
File diff suppressed because one or more lines are too long
|
|
@ -703,7 +703,7 @@ func updateBlock(c *gin.Context) {
|
||||||
}
|
}
|
||||||
tree.Root.FirstChild.SetIALAttr("id", id)
|
tree.Root.FirstChild.SetIALAttr("id", id)
|
||||||
|
|
||||||
data = luteEngine.Tree2BlockDOM(tree, luteEngine.RenderOptions)
|
data = luteEngine.Tree2BlockDOM(tree, luteEngine.RenderOptions, luteEngine.ParseOptions)
|
||||||
transactions = []*model.Transaction{
|
transactions = []*model.Transaction{
|
||||||
{
|
{
|
||||||
DoOperations: []*model.Operation{
|
DoOperations: []*model.Operation{
|
||||||
|
|
@ -888,7 +888,7 @@ func batchUpdateBlock(c *gin.Context) {
|
||||||
}
|
}
|
||||||
tree.Root.FirstChild.SetIALAttr("id", id)
|
tree.Root.FirstChild.SetIALAttr("id", id)
|
||||||
|
|
||||||
data = luteEngine.Tree2BlockDOM(tree, luteEngine.RenderOptions)
|
data = luteEngine.Tree2BlockDOM(tree, luteEngine.RenderOptions, luteEngine.ParseOptions)
|
||||||
ops = append(ops, &model.Operation{
|
ops = append(ops, &model.Operation{
|
||||||
Action: "update",
|
Action: "update",
|
||||||
ID: id,
|
ID: id,
|
||||||
|
|
|
||||||
|
|
@ -189,7 +189,7 @@ func html2BlockDOM(c *gin.Context) {
|
||||||
parse.TextMarks2Inlines(tree) // 先将 TextMark 转换为 Inlines https://github.com/siyuan-note/siyuan/issues/13056
|
parse.TextMarks2Inlines(tree) // 先将 TextMark 转换为 Inlines https://github.com/siyuan-note/siyuan/issues/13056
|
||||||
parse.NestedInlines2FlattedSpansHybrid(tree, false)
|
parse.NestedInlines2FlattedSpansHybrid(tree, false)
|
||||||
|
|
||||||
renderer := render.NewProtyleRenderer(tree, luteEngine.RenderOptions)
|
renderer := render.NewProtyleRenderer(tree, luteEngine.RenderOptions, luteEngine.ParseOptions)
|
||||||
output := renderer.Render()
|
output := renderer.Render()
|
||||||
ret.Data = gulu.Str.FromBytes(output)
|
ret.Data = gulu.Str.FromBytes(output)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -207,7 +207,7 @@ func DocIAL(absPath string) (ret map[string]string) {
|
||||||
|
|
||||||
func TreeSize(tree *parse.Tree) (size uint64) {
|
func TreeSize(tree *parse.Tree) (size uint64) {
|
||||||
luteEngine := util.NewLute() // 不关注用户的自定义解析渲染选项
|
luteEngine := util.NewLute() // 不关注用户的自定义解析渲染选项
|
||||||
renderer := render.NewJSONRenderer(tree, luteEngine.RenderOptions)
|
renderer := render.NewJSONRenderer(tree, luteEngine.RenderOptions, luteEngine.ParseOptions)
|
||||||
return uint64(len(renderer.Render()))
|
return uint64(len(renderer.Render()))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -248,7 +248,7 @@ func prepareWriteTree(tree *parse.Tree) (data []byte, filePath string, err error
|
||||||
|
|
||||||
filePath = filepath.Join(util.DataDir, tree.Box, tree.Path)
|
filePath = filepath.Join(util.DataDir, tree.Box, tree.Path)
|
||||||
tree.Root.SetIALAttr("type", "doc")
|
tree.Root.SetIALAttr("type", "doc")
|
||||||
renderer := render.NewJSONRenderer(tree, luteEngine.RenderOptions)
|
renderer := render.NewJSONRenderer(tree, luteEngine.RenderOptions, luteEngine.ParseOptions)
|
||||||
data = renderer.Render()
|
data = renderer.Render()
|
||||||
data = bytes.ReplaceAll(data, []byte("\u0000"), []byte(""))
|
data = bytes.ReplaceAll(data, []byte("\u0000"), []byte(""))
|
||||||
|
|
||||||
|
|
@ -301,7 +301,7 @@ func parseJSON2Tree(boxID, p string, jsonData []byte, luteEngine *lute.Lute) (re
|
||||||
}
|
}
|
||||||
|
|
||||||
if needFix {
|
if needFix {
|
||||||
renderer := render.NewJSONRenderer(ret, luteEngine.RenderOptions)
|
renderer := render.NewJSONRenderer(ret, luteEngine.RenderOptions, luteEngine.ParseOptions)
|
||||||
data := renderer.Render()
|
data := renderer.Render()
|
||||||
|
|
||||||
if !util.UseSingleLineSave {
|
if !util.UseSingleLineSave {
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,7 @@ require (
|
||||||
github.com/88250/epub v0.0.0-20230830085737-c19055cd1f48
|
github.com/88250/epub v0.0.0-20230830085737-c19055cd1f48
|
||||||
github.com/88250/go-humanize v0.0.0-20240424102817-4f78fac47ea7
|
github.com/88250/go-humanize v0.0.0-20240424102817-4f78fac47ea7
|
||||||
github.com/88250/gulu v1.2.3-0.20251208021445-f93f2666eaac
|
github.com/88250/gulu v1.2.3-0.20251208021445-f93f2666eaac
|
||||||
github.com/88250/lute v1.7.7-0.20251219034325-ad8fd6d52d5d
|
github.com/88250/lute v1.7.7-0.20251220034050-68d6a9cbb663
|
||||||
github.com/88250/vitess-sqlparser v0.0.0-20210205111146-56a2ded2aba1
|
github.com/88250/vitess-sqlparser v0.0.0-20210205111146-56a2ded2aba1
|
||||||
github.com/ClarkThan/ahocorasick v0.0.0-20231011042242-30d1ef1347f4
|
github.com/ClarkThan/ahocorasick v0.0.0-20231011042242-30d1ef1347f4
|
||||||
github.com/ConradIrwin/font v0.2.1
|
github.com/ConradIrwin/font v0.2.1
|
||||||
|
|
|
||||||
|
|
@ -14,8 +14,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/go-sqlite3 v1.14.13-0.20231214121541-e7f54c482950/go.mod h1:NyWgC/yNuGj7Q9rpYnZvas74GogHl5/Z4A/KQRfk6bU=
|
||||||
github.com/88250/gulu v1.2.3-0.20251208021445-f93f2666eaac h1:EC80pY8zyR0gbL8ZLIBB4IPG/ia3ZHScrR/xt8zU8qU=
|
github.com/88250/gulu v1.2.3-0.20251208021445-f93f2666eaac h1:EC80pY8zyR0gbL8ZLIBB4IPG/ia3ZHScrR/xt8zU8qU=
|
||||||
github.com/88250/gulu v1.2.3-0.20251208021445-f93f2666eaac/go.mod h1:IQ5dXW9CjVmx6B7OfK1Y4ZBKTPMe9q1AkVoLGGzRbS8=
|
github.com/88250/gulu v1.2.3-0.20251208021445-f93f2666eaac/go.mod h1:IQ5dXW9CjVmx6B7OfK1Y4ZBKTPMe9q1AkVoLGGzRbS8=
|
||||||
github.com/88250/lute v1.7.7-0.20251219034325-ad8fd6d52d5d h1:UWocFwIjw+FUvSozydxsOu09CtetIS2tF7fU8trmsuE=
|
github.com/88250/lute v1.7.7-0.20251220034050-68d6a9cbb663 h1:8P4LlD5TvvfbI2PJKiDSO0M6m48NXmyo1hmiVjkhdcs=
|
||||||
github.com/88250/lute v1.7.7-0.20251219034325-ad8fd6d52d5d/go.mod h1:WYyUw//5yVw9BJnoVjx7rI/3szsISxNZCYGOqTIrV0o=
|
github.com/88250/lute v1.7.7-0.20251220034050-68d6a9cbb663/go.mod h1:WYyUw//5yVw9BJnoVjx7rI/3szsISxNZCYGOqTIrV0o=
|
||||||
github.com/88250/pdfcpu v0.3.14-0.20250424122812-f10e8d9d8d46 h1:Bq1JsDfVbHKUxNL/B2JXd8cC/1h6aFjrlXpGycnh0Hk=
|
github.com/88250/pdfcpu v0.3.14-0.20250424122812-f10e8d9d8d46 h1:Bq1JsDfVbHKUxNL/B2JXd8cC/1h6aFjrlXpGycnh0Hk=
|
||||||
github.com/88250/pdfcpu v0.3.14-0.20250424122812-f10e8d9d8d46/go.mod h1:fVfOloBzs2+W2VJCCbq60XIxc3yJHAZ0Gahv1oO0gyI=
|
github.com/88250/pdfcpu v0.3.14-0.20250424122812-f10e8d9d8d46/go.mod h1:fVfOloBzs2+W2VJCCbq60XIxc3yJHAZ0Gahv1oO0gyI=
|
||||||
github.com/88250/vitess-sqlparser v0.0.0-20210205111146-56a2ded2aba1 h1:48T899JQDwyyRu9yXHePYlPdHtpJfrJEUGBMH3SMBWY=
|
github.com/88250/vitess-sqlparser v0.0.0-20210205111146-56a2ded2aba1 h1:48T899JQDwyyRu9yXHePYlPdHtpJfrJEUGBMH3SMBWY=
|
||||||
|
|
|
||||||
|
|
@ -1028,7 +1028,7 @@ func GetBlockKramdown(id, mode string) (ret string) {
|
||||||
ret = treenode.ExportNodeStdMd(root, luteEngine)
|
ret = treenode.ExportNodeStdMd(root, luteEngine)
|
||||||
} else {
|
} else {
|
||||||
tree.Root = root
|
tree.Root = root
|
||||||
formatRenderer := render.NewFormatRenderer(tree, luteEngine.RenderOptions)
|
formatRenderer := render.NewFormatRenderer(tree, luteEngine.RenderOptions, luteEngine.ParseOptions)
|
||||||
ret = string(formatRenderer.Render())
|
ret = string(formatRenderer.Render())
|
||||||
}
|
}
|
||||||
return
|
return
|
||||||
|
|
|
||||||
|
|
@ -468,7 +468,7 @@ func GetCloudShorthand(id string) (ret map[string]interface{}, err error) {
|
||||||
luteEngine.SetFootnotes(true)
|
luteEngine.SetFootnotes(true)
|
||||||
tree := parse.Parse("", []byte(md), luteEngine.ParseOptions)
|
tree := parse.Parse("", []byte(md), luteEngine.ParseOptions)
|
||||||
luteEngine.RenderOptions.ProtyleMarkNetImg = false
|
luteEngine.RenderOptions.ProtyleMarkNetImg = false
|
||||||
content := luteEngine.ProtylePreview(tree, luteEngine.RenderOptions)
|
content := luteEngine.ProtylePreview(tree, luteEngine.RenderOptions, luteEngine.ParseOptions)
|
||||||
ret["shorthandContent"] = content
|
ret["shorthandContent"] = content
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
@ -522,7 +522,7 @@ func GetCloudShorthands(page int) (result map[string]interface{}, err error) {
|
||||||
shorthand["shorthandMd"] = md
|
shorthand["shorthandMd"] = md
|
||||||
tree := parse.Parse("", []byte(md), luteEngine.ParseOptions)
|
tree := parse.Parse("", []byte(md), luteEngine.ParseOptions)
|
||||||
luteEngine.RenderOptions.ProtyleMarkNetImg = false
|
luteEngine.RenderOptions.ProtyleMarkNetImg = false
|
||||||
content := luteEngine.ProtylePreview(tree, luteEngine.RenderOptions)
|
content := luteEngine.ProtylePreview(tree, luteEngine.RenderOptions, luteEngine.ParseOptions)
|
||||||
shorthand["shorthandContent"] = content
|
shorthand["shorthandContent"] = content
|
||||||
}
|
}
|
||||||
return
|
return
|
||||||
|
|
|
||||||
|
|
@ -640,7 +640,7 @@ func ExportPreview(id string, fillCSSVar bool) (retStdHTML string) {
|
||||||
fillThemeStyleVar(tree)
|
fillThemeStyleVar(tree)
|
||||||
}
|
}
|
||||||
luteEngine.RenderOptions.ProtyleMarkNetImg = false
|
luteEngine.RenderOptions.ProtyleMarkNetImg = false
|
||||||
retStdHTML = luteEngine.ProtylePreview(tree, luteEngine.RenderOptions)
|
retStdHTML = luteEngine.ProtylePreview(tree, luteEngine.RenderOptions, luteEngine.ParseOptions)
|
||||||
|
|
||||||
if footnotesDefBlock := tree.Root.ChildByType(ast.NodeFootnotesDefBlock); nil != footnotesDefBlock {
|
if footnotesDefBlock := tree.Root.ChildByType(ast.NodeFootnotesDefBlock); nil != footnotesDefBlock {
|
||||||
footnotesDefBlock.Unlink()
|
footnotesDefBlock.Unlink()
|
||||||
|
|
@ -872,11 +872,11 @@ func ExportMarkdownHTML(id, savePath string, docx, merge bool) (name, dom string
|
||||||
})
|
})
|
||||||
|
|
||||||
if docx {
|
if docx {
|
||||||
renderer := render.NewProtyleExportDocxRenderer(tree, luteEngine.RenderOptions)
|
renderer := render.NewProtyleExportDocxRenderer(tree, luteEngine.RenderOptions, luteEngine.ParseOptions)
|
||||||
output := renderer.Render()
|
output := renderer.Render()
|
||||||
dom = gulu.Str.FromBytes(output)
|
dom = gulu.Str.FromBytes(output)
|
||||||
} else {
|
} else {
|
||||||
dom = luteEngine.ProtylePreview(tree, luteEngine.RenderOptions)
|
dom = luteEngine.ProtylePreview(tree, luteEngine.RenderOptions, luteEngine.ParseOptions)
|
||||||
}
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
@ -1048,7 +1048,7 @@ func ExportHTML(id, savePath string, pdf, image, keepFold, merge bool) (name, do
|
||||||
// 使用属性 `data-export-html` 导出时 `<style></style>` 标签丢失 https://github.com/siyuan-note/siyuan/issues/6228
|
// 使用属性 `data-export-html` 导出时 `<style></style>` 标签丢失 https://github.com/siyuan-note/siyuan/issues/6228
|
||||||
luteEngine.SetSanitize(false)
|
luteEngine.SetSanitize(false)
|
||||||
|
|
||||||
renderer := render.NewProtyleExportRenderer(tree, luteEngine.RenderOptions)
|
renderer := render.NewProtyleExportRenderer(tree, luteEngine.RenderOptions, luteEngine.ParseOptions)
|
||||||
dom = gulu.Str.FromBytes(renderer.Render())
|
dom = gulu.Str.FromBytes(renderer.Render())
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
@ -2268,7 +2268,7 @@ func exportMarkdownContent0(id string, tree *parse.Tree, cloudAssetsBase string,
|
||||||
|
|
||||||
luteEngine.SetUnorderedListMarker("-")
|
luteEngine.SetUnorderedListMarker("-")
|
||||||
luteEngine.SetImgTag(imgTag)
|
luteEngine.SetImgTag(imgTag)
|
||||||
renderer := render.NewProtyleExportMdRenderer(tree, luteEngine.RenderOptions)
|
renderer := render.NewProtyleExportMdRenderer(tree, luteEngine.RenderOptions, luteEngine.ParseOptions)
|
||||||
ret = gulu.Str.FromBytes(renderer.Render())
|
ret = gulu.Str.FromBytes(renderer.Render())
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -737,7 +737,7 @@ func GetDoc(startID, endID, id string, index int, query string, queryTypes map[s
|
||||||
}
|
}
|
||||||
|
|
||||||
luteEngine.RenderOptions.NodeIndexStart = index
|
luteEngine.RenderOptions.NodeIndexStart = index
|
||||||
dom = luteEngine.Tree2BlockDOM(subTree, luteEngine.RenderOptions)
|
dom = luteEngine.Tree2BlockDOM(subTree, luteEngine.RenderOptions, luteEngine.ParseOptions)
|
||||||
|
|
||||||
if 1 > len(keywords) {
|
if 1 > len(keywords) {
|
||||||
keywords = []string{}
|
keywords = []string{}
|
||||||
|
|
|
||||||
|
|
@ -61,13 +61,13 @@ func AutoSpace(rootID string) (err error) {
|
||||||
addBlockIALNodes(tree, false)
|
addBlockIALNodes(tree, false)
|
||||||
|
|
||||||
// 第一次格式化为了合并相邻的文本节点
|
// 第一次格式化为了合并相邻的文本节点
|
||||||
formatRenderer := render.NewFormatRenderer(tree, luteEngine.RenderOptions)
|
formatRenderer := render.NewFormatRenderer(tree, luteEngine.RenderOptions, luteEngine.ParseOptions)
|
||||||
md := formatRenderer.Render()
|
md := formatRenderer.Render()
|
||||||
newTree := parseKTree(md)
|
newTree := parseKTree(md)
|
||||||
newTree.Root.Spec = treenode.CurrentSpec
|
newTree.Root.Spec = treenode.CurrentSpec
|
||||||
// 第二次格式化启用自动空格
|
// 第二次格式化启用自动空格
|
||||||
luteEngine.SetAutoSpace(true)
|
luteEngine.SetAutoSpace(true)
|
||||||
formatRenderer = render.NewFormatRenderer(newTree, luteEngine.RenderOptions)
|
formatRenderer = render.NewFormatRenderer(newTree, luteEngine.RenderOptions, luteEngine.ParseOptions)
|
||||||
md = formatRenderer.Render()
|
md = formatRenderer.Render()
|
||||||
newTree = parseKTree(md)
|
newTree = parseKTree(md)
|
||||||
newTree.Root.Spec = treenode.CurrentSpec
|
newTree.Root.Spec = treenode.CurrentSpec
|
||||||
|
|
|
||||||
|
|
@ -219,10 +219,10 @@ func GetDocHistoryContent(historyPath, keyword string, highlight bool) (id, root
|
||||||
luteEngine.RenderOptions.ProtyleContenteditable = false
|
luteEngine.RenderOptions.ProtyleContenteditable = false
|
||||||
if isLargeDoc {
|
if isLargeDoc {
|
||||||
util.PushMsg(Conf.Language(36), 5000)
|
util.PushMsg(Conf.Language(36), 5000)
|
||||||
formatRenderer := render.NewFormatRenderer(historyTree, luteEngine.RenderOptions)
|
formatRenderer := render.NewFormatRenderer(historyTree, luteEngine.RenderOptions, luteEngine.ParseOptions)
|
||||||
content = gulu.Str.FromBytes(formatRenderer.Render())
|
content = gulu.Str.FromBytes(formatRenderer.Render())
|
||||||
} else {
|
} else {
|
||||||
content = luteEngine.Tree2BlockDOM(historyTree, luteEngine.RenderOptions)
|
content = luteEngine.Tree2BlockDOM(historyTree, luteEngine.RenderOptions, luteEngine.ParseOptions)
|
||||||
}
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -60,7 +60,7 @@ func HTML2Markdown(htmlStr string, luteEngine *lute.Lute) (markdown string, with
|
||||||
tree, withMath := HTML2Tree(htmlStr, luteEngine)
|
tree, withMath := HTML2Tree(htmlStr, luteEngine)
|
||||||
|
|
||||||
var formatted []byte
|
var formatted []byte
|
||||||
renderer := render.NewFormatRenderer(tree, luteEngine.RenderOptions)
|
renderer := render.NewFormatRenderer(tree, luteEngine.RenderOptions, luteEngine.ParseOptions)
|
||||||
for nodeType, rendererFunc := range luteEngine.HTML2MdRendererFuncs {
|
for nodeType, rendererFunc := range luteEngine.HTML2MdRendererFuncs {
|
||||||
renderer.ExtRendererFuncs[nodeType] = rendererFunc
|
renderer.ExtRendererFuncs[nodeType] = rendererFunc
|
||||||
}
|
}
|
||||||
|
|
@ -419,7 +419,7 @@ func ImportSY(zipPath, boxID, toPath string) (err error) {
|
||||||
util.PushEndlessProgress(Conf.language(73) + " " + fmt.Sprintf(Conf.language(70), tree.Root.IALAttr("title")))
|
util.PushEndlessProgress(Conf.language(73) + " " + fmt.Sprintf(Conf.language(70), tree.Root.IALAttr("title")))
|
||||||
syPath := filepath.Join(unzipRootPath, tree.Path)
|
syPath := filepath.Join(unzipRootPath, tree.Path)
|
||||||
treenode.UpgradeSpec(tree)
|
treenode.UpgradeSpec(tree)
|
||||||
renderer := render.NewJSONRenderer(tree, luteEngine.RenderOptions)
|
renderer := render.NewJSONRenderer(tree, luteEngine.RenderOptions, luteEngine.ParseOptions)
|
||||||
data := renderer.Render()
|
data := renderer.Render()
|
||||||
|
|
||||||
if !util.UseSingleLineSave {
|
if !util.UseSingleLineSave {
|
||||||
|
|
|
||||||
|
|
@ -143,7 +143,7 @@ func refreshParentDocInfo(tree *parse.Tree) {
|
||||||
}
|
}
|
||||||
|
|
||||||
luteEngine := lute.New()
|
luteEngine := lute.New()
|
||||||
renderer := render.NewJSONRenderer(parentTree, luteEngine.RenderOptions)
|
renderer := render.NewJSONRenderer(parentTree, luteEngine.RenderOptions, luteEngine.ParseOptions)
|
||||||
data := renderer.Render()
|
data := renderer.Render()
|
||||||
refreshDocInfo0(parentTree, uint64(len(data)))
|
refreshDocInfo0(parentTree, uint64(len(data)))
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -177,7 +177,7 @@ func fillBlockRefCount(nodes []*ast.Node) {
|
||||||
|
|
||||||
func renderBlockDOMByNodes(nodes []*ast.Node, luteEngine *lute.Lute) string {
|
func renderBlockDOMByNodes(nodes []*ast.Node, luteEngine *lute.Lute) string {
|
||||||
tree := &parse.Tree{Root: &ast.Node{Type: ast.NodeDocument}, Context: &parse.Context{ParseOption: luteEngine.ParseOptions}}
|
tree := &parse.Tree{Root: &ast.Node{Type: ast.NodeDocument}, Context: &parse.Context{ParseOption: luteEngine.ParseOptions}}
|
||||||
blockRenderer := render.NewProtyleRenderer(tree, luteEngine.RenderOptions)
|
blockRenderer := render.NewProtyleRenderer(tree, luteEngine.RenderOptions, luteEngine.ParseOptions)
|
||||||
for _, node := range nodes {
|
for _, node := range nodes {
|
||||||
ast.Walk(node, func(n *ast.Node, entering bool) ast.WalkStatus {
|
ast.Walk(node, func(n *ast.Node, entering bool) ast.WalkStatus {
|
||||||
if entering {
|
if entering {
|
||||||
|
|
|
||||||
|
|
@ -250,10 +250,10 @@ func OpenRepoSnapshotDoc(fileID string) (title, content string, displayInText bo
|
||||||
luteEngine.RenderOptions.ProtyleContenteditable = false
|
luteEngine.RenderOptions.ProtyleContenteditable = false
|
||||||
if displayInText {
|
if displayInText {
|
||||||
util.PushMsg(Conf.Language(36), 5000)
|
util.PushMsg(Conf.Language(36), 5000)
|
||||||
formatRenderer := render.NewFormatRenderer(snapshotTree, luteEngine.RenderOptions)
|
formatRenderer := render.NewFormatRenderer(snapshotTree, luteEngine.RenderOptions, luteEngine.ParseOptions)
|
||||||
content = gulu.Str.FromBytes(formatRenderer.Render())
|
content = gulu.Str.FromBytes(formatRenderer.Render())
|
||||||
} else {
|
} else {
|
||||||
content = luteEngine.Tree2BlockDOM(snapshotTree, luteEngine.RenderOptions)
|
content = luteEngine.Tree2BlockDOM(snapshotTree, luteEngine.RenderOptions, luteEngine.ParseOptions)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
displayInText = true
|
displayInText = true
|
||||||
|
|
|
||||||
|
|
@ -229,7 +229,7 @@ func DocSaveAsTemplate(id, name string, overwrite bool) (code int, err error) {
|
||||||
}
|
}
|
||||||
|
|
||||||
luteEngine := NewLute()
|
luteEngine := NewLute()
|
||||||
formatRenderer := render.NewFormatRenderer(tree, luteEngine.RenderOptions)
|
formatRenderer := render.NewFormatRenderer(tree, luteEngine.RenderOptions, luteEngine.ParseOptions)
|
||||||
md := formatRenderer.Render()
|
md := formatRenderer.Render()
|
||||||
|
|
||||||
// 单独渲染根节点的 IAL
|
// 单独渲染根节点的 IAL
|
||||||
|
|
@ -488,7 +488,7 @@ func RenderTemplate(p, id string, preview bool) (tree *parse.Tree, dom string, e
|
||||||
}
|
}
|
||||||
|
|
||||||
luteEngine := NewLute()
|
luteEngine := NewLute()
|
||||||
dom = luteEngine.Tree2BlockDOM(tree, luteEngine.RenderOptions)
|
dom = luteEngine.Tree2BlockDOM(tree, luteEngine.RenderOptions, luteEngine.ParseOptions)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -256,7 +256,7 @@ func renderCoverContentBlock(node *ast.Node, luteEngine *lute.Lute) string {
|
||||||
|
|
||||||
func renderBlockDOMByNode(node *ast.Node, luteEngine *lute.Lute) string {
|
func renderBlockDOMByNode(node *ast.Node, luteEngine *lute.Lute) string {
|
||||||
tree := &parse.Tree{Root: &ast.Node{Type: ast.NodeDocument}, Context: &parse.Context{ParseOption: luteEngine.ParseOptions}}
|
tree := &parse.Tree{Root: &ast.Node{Type: ast.NodeDocument}, Context: &parse.Context{ParseOption: luteEngine.ParseOptions}}
|
||||||
blockRenderer := render.NewProtyleRenderer(tree, luteEngine.RenderOptions)
|
blockRenderer := render.NewProtyleRenderer(tree, luteEngine.RenderOptions, luteEngine.ParseOptions)
|
||||||
blockRenderer.Options.ProtyleContenteditable = false
|
blockRenderer.Options.ProtyleContenteditable = false
|
||||||
resetIDs := map[string]string{}
|
resetIDs := map[string]string{}
|
||||||
ast.Walk(node, func(n *ast.Node, entering bool) ast.WalkStatus {
|
ast.Walk(node, func(n *ast.Node, entering bool) ast.WalkStatus {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue