Q&A for Work
Setup a private space for you and your coworkers to ask questions and share information.
Learn more about Teams
I use the Martini framework,I have some markdown file and I want render it as HTML in tmpl/html template.
The markdown file like this:
title: A Test Demo
##ABC
And the template file like this:
<title>{{name}}</title>
</head>
<h2>{{abc}}</h2>
<blockquote>
<p>{{xyz}}</p>
</blockquote>
</body>
I use the blackfriday parse the markdown and return []byte
type,next step I wanna render the markdown file to this template and make each block to the right place,so how can I do this right way? Or use any way to do this better?
One way to achieve this is to use the Funcs method to add a custom function to the template function map. See the Functions section of the template package docs for more info.
Given a template file page.html
, some writer w
(probably an http.ResponseWriter
), and some struct p
with a field Body
containing data to be put into a template field, you can do something like:
Define a function:
func markDowner(args ...interface{}) template.HTML {
s := blackfriday.MarkdownCommon([]byte(fmt.Sprintf("%s", args...)))
return template.HTML(s)
Add it to the template function map:
tmpl := template.Must(template.New("page.html").Funcs(template.FuncMap{"markDown": markDowner}).ParseFiles("page.html"))
Execute the template:
err := tmpl.ExecuteTemplate(w, "page.html", p)
if err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
Then, in your template file, you can put something like:
{{.Body | markDown}}
And it will pass the Body
through your markDowner
function.
Playground
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
site design / logo © 2019 Stack Exchange Inc; user contributions licensed under cc by-sa 3.0
with attribution required.
rev 2019.7.25.34438