gpt4 book ai didi

html - 如何使用 blackfriday 将 markdown 渲染到 golang 模板(html 或 tmpl)?

转载 作者:IT老高 更新时间:2023-10-28 13:05:39 24 4
gpt4 key购买 nike

我使用 Martini 框架,我有一些 markdown 文件,我想在 tmpl/html 模板中将其呈现为 HTML。

markdown 文件是这样的:

title: A Test Demo
---
##ABC
> 123

模板文件是这样的:

<head>
<title>{{name}}</title>
</head>

<body>
<h2>{{abc}}</h2>
<blockquote>
<p>{{xyz}}</p>
</blockquote>
</body>

我使用 blackfriday 解析 markdown 并返回 []byte 类型,下一步我想将 markdown 文件渲染到这个模板并将每个 block 放到正确的位置,那么我该怎么做正确的路?或者使用任何方法来更好地做到这一点?

最佳答案

实现此目的的一种方法是使用 Funcs将自定义函数添加到模板函数映射的方法。请参阅 the template package docs功能部分了解更多信息。

给定一个模板文件 page.html、一些编写器 w(可能是一个 http.ResponseWriter)和一些结构 p 字段 Body 包含要放入模板字段的数据,您可以执行以下操作:

定义一个函数:

func markDowner(args ...interface{}) template.HTML {
s := blackfriday.MarkdownCommon([]byte(fmt.Sprintf("%s", args...)))
return template.HTML(s)
}

将其添加到模板功能映射中:

tmpl := template.Must(template.New("page.html").Funcs(template.FuncMap{"markDown": markDowner}).ParseFiles("page.html"))

执行模板:

err := tmpl.ExecuteTemplate(w, "page.html", p)
if err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
}

然后,在您的模板文件中,您可以输入如下内容:

{{.Body | markDown}}

它会通过你的markDowner函数传递Body

Playground

关于html - 如何使用 blackfriday 将 markdown 渲染到 golang 模板(html 或 tmpl)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23124008/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com