From 74bf7adbb32bd1bd3aec8eb277289e2d3527de75 Mon Sep 17 00:00:00 2001 From: Daniel <845765@qq.com> Date: Wed, 28 May 2025 20:44:52 +0800 Subject: [PATCH] :art: New template functions `markdown2text` and `markdown2content` https://github.com/siyuan-note/siyuan/issues/13880 --- kernel/filesys/template.go | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/kernel/filesys/template.go b/kernel/filesys/template.go index 89d9d3df3..9acaa54fc 100644 --- a/kernel/filesys/template.go +++ b/kernel/filesys/template.go @@ -22,6 +22,7 @@ import ( "time" "github.com/88250/go-humanize" + "github.com/88250/lute/parse" util2 "github.com/88250/lute/util" "github.com/Masterminds/sprig/v3" "github.com/araddon/dateparse" @@ -53,9 +54,31 @@ func BuiltInTemplateFuncs() (ret template.FuncMap) { ret["statBlock"] = StatBlock ret["runeCount"] = runeCount ret["wordCount"] = wordCount + ret["markdown2text"] = markdown2text + ret["markdown2content"] = markdown2content return } +func markdown2content(md string) (ret string) { + luteEngine := util.NewLute() + tree := parse.Parse("", []byte(md), luteEngine.ParseOptions) + if nil == tree || nil == tree.Root { + logging.LogWarnf("parse markdown [%s] failed", md) + return + } + return tree.Root.Content() +} + +func markdown2text(md string) (ret string) { + luteEngine := util.NewLute() + tree := parse.Parse("", []byte(md), luteEngine.ParseOptions) + if nil == tree || nil == tree.Root { + logging.LogWarnf("parse markdown [%s] failed", md) + return + } + return tree.Root.Text() +} + func runeCount(s string) (ret int) { ret, _ = util2.WordCount(s) return