mirror of
https://github.com/siyuan-note/siyuan.git
synced 2026-01-23 00:36:10 +01:00
🎨 Improve dynamic icon kernel api for rendering template https://github.com/siyuan-note/siyuan/issues/13095
This commit is contained in:
parent
c96a062027
commit
aaeca6778f
2 changed files with 54 additions and 3 deletions
|
|
@ -193,6 +193,51 @@ func DocSaveAsTemplate(id, name string, overwrite bool) (code int, err error) {
|
|||
return
|
||||
}
|
||||
|
||||
func RenderDynamicIconContentTemplate(content, id string) (ret string) {
|
||||
tree, err := LoadTreeByBlockID(id)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
node := treenode.GetNodeInTree(tree, id)
|
||||
if nil == node {
|
||||
return
|
||||
}
|
||||
block := sql.BuildBlockFromNode(node, tree)
|
||||
if nil == block {
|
||||
return
|
||||
}
|
||||
|
||||
dataModel := map[string]string{}
|
||||
title := block.Name
|
||||
if "d" == block.Type {
|
||||
title = block.Content
|
||||
}
|
||||
dataModel["title"] = title
|
||||
dataModel["id"] = block.ID
|
||||
dataModel["name"] = block.Name
|
||||
dataModel["alias"] = block.Alias
|
||||
|
||||
goTpl := template.New("").Delims(".action{", "}")
|
||||
tplFuncMap := treenode.BuiltInTemplateFuncs()
|
||||
sql.SQLTemplateFuncs(&tplFuncMap)
|
||||
goTpl = goTpl.Funcs(tplFuncMap)
|
||||
tpl, err := goTpl.Funcs(tplFuncMap).Parse(content)
|
||||
if err != nil {
|
||||
err = errors.New(fmt.Sprintf(Conf.Language(44), err.Error()))
|
||||
return
|
||||
}
|
||||
|
||||
buf := &bytes.Buffer{}
|
||||
buf.Grow(4096)
|
||||
if err = tpl.Execute(buf, dataModel); err != nil {
|
||||
err = errors.New(fmt.Sprintf(Conf.Language(44), err.Error()))
|
||||
return
|
||||
}
|
||||
ret = buf.String()
|
||||
return
|
||||
}
|
||||
|
||||
func RenderTemplate(p, id string, preview bool) (tree *parse.Tree, dom string, err error) {
|
||||
tree, err = LoadTreeByBlockID(id)
|
||||
if err != nil {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue