package tool import ( "bytes" "database/sql" "regexp" "github.com/yuin/goldmark" "github.com/yuin/goldmark/extension" "github.com/yuin/goldmark/renderer/html" ) func Markdown(db *sql.DB, db_set map[string]string, data map[string]string) map[string]interface{} { input := []byte(data["data"]) backlink := map[string]map[string]string{} link_count := 0 markdown := goldmark.New( goldmark.WithExtensions(extension.Strikethrough, extension.Table), goldmark.WithRendererOptions(html.WithHardWraps()), ) var buf bytes.Buffer if err := markdown.Convert(input, &buf); err != nil { panic(err) } string_data := buf.String() r := regexp.MustCompile(`\[([^\[\]]+)\]\(([^\(\)]*)\)`) string_data = r.ReplaceAllStringFunc(string_data, func(m string) string { match := r.FindStringSubmatch(m) return "" + match[1] + "" }) // p := bluemonday.UGCPolicy() // result := p.Sanitize(string_data) r = regexp.MustCompile(`