瀏覽代碼

Allow HTML and additional syntax in the Markdown parser.

Kailash Nadh 4 年之前
父節點
當前提交
49c747d7d0
共有 1 個文件被更改,包括 16 次插入2 次删除
  1. 16 2
      models/models.go

+ 16 - 2
models/models.go

@@ -14,7 +14,8 @@ import (
 	"github.com/jmoiron/sqlx/types"
 	"github.com/jmoiron/sqlx/types"
 	"github.com/lib/pq"
 	"github.com/lib/pq"
 	"github.com/yuin/goldmark"
 	"github.com/yuin/goldmark"
-
+	"github.com/yuin/goldmark/extension"
+	"github.com/yuin/goldmark/renderer/html"
 	null "gopkg.in/volatiletech/null.v6"
 	null "gopkg.in/volatiletech/null.v6"
 )
 )
 
 
@@ -225,6 +226,19 @@ type Template struct {
 	IsDefault bool   `db:"is_default" json:"is_default"`
 	IsDefault bool   `db:"is_default" json:"is_default"`
 }
 }
 
 
+// markdown is a global instance of Markdown parser and renderer.
+var markdown = goldmark.New(
+	goldmark.WithRendererOptions(
+		html.WithXHTML(),
+		html.WithUnsafe(),
+	),
+	goldmark.WithExtensions(
+		extension.Table,
+		extension.Strikethrough,
+		extension.TaskList,
+	),
+)
+
 // GetIDs returns the list of subscriber IDs.
 // GetIDs returns the list of subscriber IDs.
 func (subs Subscribers) GetIDs() []int {
 func (subs Subscribers) GetIDs() []int {
 	IDs := make([]int, len(subs))
 	IDs := make([]int, len(subs))
@@ -318,7 +332,7 @@ func (c *Campaign) CompileTemplate(f template.FuncMap) error {
 	// If the format is markdown, convert Markdown to HTML.
 	// If the format is markdown, convert Markdown to HTML.
 	if c.ContentType == CampaignContentTypeMarkdown {
 	if c.ContentType == CampaignContentTypeMarkdown {
 		var b bytes.Buffer
 		var b bytes.Buffer
-		if err := goldmark.Convert([]byte(c.Body), &b); err != nil {
+		if err := markdown.Convert([]byte(c.Body), &b); err != nil {
 			return err
 			return err
 		}
 		}
 		body = b.String()
 		body = b.String()