首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Go中,如何将黑色星期五显示为html?

在Go中,如何将黑色星期五显示为html?
EN

Stack Overflow用户
提问于 2014-04-21 13:47:03
回答 1查看 3.6K关注 0票数 1

我有这样的结构:

代码语言:javascript
复制
type Page struct {
    Content  string
}

然后我读取一个标记文件并将其赋值给一个变量:

代码语言:javascript
复制
data, err := ioutil.ReadFile("a.md")
lines = string(data)
page.Content = markdownRender([]byte(lines))

减价文件如下所示:

代码语言:javascript
复制
##Hello World

###Holo Go

然后将其放入标记渲染函数并返回一个字符串值:

代码语言:javascript
复制
func markdownRender(content []byte) string {
  htmlFlags := 0
  htmlFlags |= blackfriday.HTML_USE_SMARTYPANTS
  htmlFlags |= blackfriday.HTML_SMARTYPANTS_FRACTIONS

  renderer := blackfriday.HtmlRenderer(htmlFlags, "", "")

  extensions := 0
  extensions |= blackfriday.EXTENSION_NO_INTRA_EMPHASIS
  extensions |= blackfriday.EXTENSION_TABLES
  extensions |= blackfriday.EXTENSION_FENCED_CODE
  extensions |= blackfriday.EXTENSION_AUTOLINK
  extensions |= blackfriday.EXTENSION_STRIKETHROUGH
  extensions |= blackfriday.EXTENSION_SPACE_HEADERS

  return string(blackfriday.Markdown(content, renderer, extensions))
}

最后,我在html模板中调用page.Content并生成一个静态html:

代码语言:javascript
复制
{{.Content}}

但是在生成的html中,它显示在浏览器中(我在chrome和safari中尝试过)是这样的(不是源代码,它只是显示在页面中):

代码语言:javascript
复制
<p>##Hello World ###Holo Go </p>

但我想要这样

代码语言:javascript
复制
Hello World

Holo Go

那我该怎么做呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-04-21 19:16:41

首先,您的标记输入不太正确-标题应该有分隔#s和文本的空格。您可以使用黑色星期五-工具验证这一点。

代码语言:javascript
复制
$ echo ##Hello | blackfriday-tool
<p>##Hello</p>

$ echo ## Hello | blackfriday-tool
<h2>Hello</h2>

其次,如果您将来自blackfriday的HTML输入到一个html/template中,那么为了安全起见,它将自动转义。

如果您信任减价输入和blackfriday的HTML输出,那么您可以通过将内容包装在html/template HTML值中告诉模板系统信任它:

代码语言:javascript
复制
type Page struct {
    Content template.HTML
}

err = t.ExecuteTemplate(w, "page", Page{Content: template.HTML(s)})

有关示例,请参见http://play.golang.org/p/eO7KDJMlb8

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23198739

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档