mirror of
https://github.com/hrfee/jfa-go.git
synced 2024-12-22 17:10:10 +00:00
fix urls in custom email/announcements
Uses a nasty algorithm found in stripmd.go to change all occurrences of '[linktext](link)' to just 'link' before passing to a decent markdown stripper.
This commit is contained in:
parent
cc4e12c405
commit
938523c18b
3
email.go
3
email.go
@ -18,7 +18,6 @@ import (
|
|||||||
jEmail "github.com/jordan-wright/email"
|
jEmail "github.com/jordan-wright/email"
|
||||||
"github.com/knz/strtime"
|
"github.com/knz/strtime"
|
||||||
"github.com/mailgun/mailgun-go/v4"
|
"github.com/mailgun/mailgun-go/v4"
|
||||||
stripmd "github.com/writeas/go-strip-markdown"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
// implements email sending, right now via smtp or mailgun.
|
// implements email sending, right now via smtp or mailgun.
|
||||||
@ -260,7 +259,7 @@ func (emailer *Emailer) constructTemplate(subject, md string, app *appContext) (
|
|||||||
email := &Email{subject: subject}
|
email := &Email{subject: subject}
|
||||||
renderer := html.NewRenderer(html.RendererOptions{Flags: html.Smartypants})
|
renderer := html.NewRenderer(html.RendererOptions{Flags: html.Smartypants})
|
||||||
html := markdown.ToHTML([]byte(md), nil, renderer)
|
html := markdown.ToHTML([]byte(md), nil, renderer)
|
||||||
text := strings.TrimPrefix(strings.TrimSuffix(stripmd.Strip(md), "</p>"), "<p>")
|
text := stripMarkdown(md)
|
||||||
message := app.config.Section("email").Key("message").String()
|
message := app.config.Section("email").Key("message").String()
|
||||||
var err error
|
var err error
|
||||||
email.html, email.text, err = emailer.construct(app, "template_email", "email_", map[string]interface{}{
|
email.html, email.text, err = emailer.construct(app, "template_email", "email_", map[string]interface{}{
|
||||||
|
53
stripmd.go
Normal file
53
stripmd.go
Normal file
@ -0,0 +1,53 @@
|
|||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"strings"
|
||||||
|
|
||||||
|
stripmd "github.com/writeas/go-strip-markdown"
|
||||||
|
)
|
||||||
|
|
||||||
|
func stripMarkdown(md string) string {
|
||||||
|
// Search for markdown-formatted urls, and replace them with just the url, then use a library to strip any traces of markdown. You'll need some eyebleach after this.
|
||||||
|
foundOpenSquare := false
|
||||||
|
openSquare := -1
|
||||||
|
openBracket := -1
|
||||||
|
closeBracket := -1
|
||||||
|
openSquares := []int{}
|
||||||
|
closeBrackets := []int{}
|
||||||
|
links := []string{}
|
||||||
|
foundOpen := false
|
||||||
|
for i, c := range md {
|
||||||
|
if !foundOpenSquare && !foundOpen && c != '[' && c != ']' {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
if c == '[' {
|
||||||
|
foundOpenSquare = true
|
||||||
|
openSquare = i
|
||||||
|
} else if c == ']' {
|
||||||
|
if md[i+1] == '(' {
|
||||||
|
foundOpenSquare = false
|
||||||
|
foundOpen = true
|
||||||
|
openBracket = i + 1
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
} else if c == ')' {
|
||||||
|
closeBracket = i
|
||||||
|
openSquares = append(openSquares, openSquare)
|
||||||
|
closeBrackets = append(closeBrackets, closeBracket)
|
||||||
|
links = append(links, md[openBracket+1:closeBracket])
|
||||||
|
openBracket = -1
|
||||||
|
closeBracket = -1
|
||||||
|
openSquare = -1
|
||||||
|
foundOpenSquare = false
|
||||||
|
foundOpen = false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
fullLinks := make([]string, len(openSquares))
|
||||||
|
for i := range openSquares {
|
||||||
|
fullLinks[i] = md[openSquares[i] : closeBrackets[i]+1]
|
||||||
|
}
|
||||||
|
for i, _ := range openSquares {
|
||||||
|
md = strings.Replace(md, fullLinks[i], links[i], 1)
|
||||||
|
}
|
||||||
|
return strings.TrimPrefix(strings.TrimSuffix(stripmd.Strip(md), "</p>"), "<p>")
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user