diff options
Diffstat (limited to 'reader/rewrite/rewrite_functions.go')
-rw-r--r-- | reader/rewrite/rewrite_functions.go | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/reader/rewrite/rewrite_functions.go b/reader/rewrite/rewrite_functions.go index 667f359..8988cc5 100644 --- a/reader/rewrite/rewrite_functions.go +++ b/reader/rewrite/rewrite_functions.go @@ -7,6 +7,7 @@ package rewrite // import "miniflux.app/reader/rewrite" import ( "fmt" "html" + "net/url" "regexp" "strings" @@ -43,6 +44,38 @@ func addImageTitle(entryURL, entryContent string) string { return entryContent } +func addMailtoSubject(entryURL, entryContent string) string { + doc, err := goquery.NewDocumentFromReader(strings.NewReader(entryContent)) + if err != nil { + return entryContent + } + + matches := doc.Find(`a[href^="mailto:"]`) + + if matches.Length() > 0 { + matches.Each(func(i int, a *goquery.Selection) { + hrefAttr, _ := a.Attr("href") + + mailto, err := url.Parse(hrefAttr) + if err != nil { + return + } + + subject := mailto.Query().Get("subject") + if subject == "" { + return + } + + a.AppendHtml(" [" + html.EscapeString(subject) + "]") + }) + + output, _ := doc.Find("body").First().Html() + return output + } + + return entryContent +} + func addDynamicImage(entryURL, entryContent string) string { doc, err := goquery.NewDocumentFromReader(strings.NewReader(entryContent)) if err != nil { |