providers/markdown: Separate HTML and non-HTML markdown parsing

This commit is contained in:
Sasha Koshka 2024-12-05 21:53:06 -05:00
parent 018749101a
commit 68200e66d6

View File

@ -42,6 +42,7 @@ func (this *Provider) FuncMap () template.FuncMap {
} }
return template.FuncMap { return template.FuncMap {
"markdown": stat.funcMarkdown, "markdown": stat.funcMarkdown,
"markdownHTML": stat.funcMarkdownHTML,
} }
} }
@ -49,11 +50,16 @@ type state struct {
md goldmark.Markdown md goldmark.Markdown
} }
func (this *state) funcMarkdown (input any) (template.HTML, error) { func (this *state) funcMarkdown (input any) (string, error) {
builder := strings.Builder { } builder := strings.Builder { }
err := this.md.Convert(toBytes(input), &builder) err := this.md.Convert(toBytes(input), &builder)
if err != nil { return "", nil } if err != nil { return "", nil }
return template.HTML(builder.String()), nil return builder.String(), nil
}
func (this *state) funcMarkdownHTML (input any) (template.HTML, error) {
str, err := this.funcMarkdown(input)
return template.HTML(str), err
} }
func toBytes (data any) []byte { func toBytes (data any) []byte {