1

我正在用 Go 编写一个 webhook,它会向我发送一封电子邮件,其中包含对某个存储库的每次提交的差异。现在我将差异作为原始文本发送,如下所示:

https://github.com/ee92/go-lambda/commit/ac56fc2cfe86c50e9d73ecb0f8db74c672e205cd.diff

我希望将它作为格式漂亮的 HTML 发送,就像你在 github 或 bitbucket 上看到的那样,这样更容易阅读更改的内容。真的很难过如何去做这件事。感谢任何建议。谢谢。

4

1 回答 1

1

您可以使用 stdlibhtml/template库制作漂亮的 HTML 模板并将原始字符串作为参数传递:

https://golang.org/pkg/html/template/

import "text/template"
...
t, err := template.New("foo").Parse(`{{define "T"}}Hello, {{.}}!{{end}}`)
err = t.ExecuteTemplate(out, "T", "<script>alert('you have been pwned')</script>")

会产生这个:

Hello, <script>alert('you have been pwned')</script>!

因此,在您的情况下,在单独的文件中定义一个模板,将其读入,然后调用

t, err := template.ParseFiles("./path/to/template.html")
if err != nil {
    log.Fatal(err)
}

err = t.ExecuteTemplate(out, "T", rawDiffString)
if err != nil {
    log.Fatal(err)
}

它将获取您的差异字符串并将其粘贴到您定义模板变量的模板中。

您必须阅读 Go 如何解析 HTML 模板以正确格式化 HTML 文件的规范。

于 2018-04-16T15:41:40.367 回答