aboutsummaryrefslogtreecommitdiffhomepage
path: root/reader/rewrite/rewrite_functions.go
diff options
context:
space:
mode:
authorGravatar Peter De Wachter <pdewacht@gmail.com>2019-08-13 17:44:23 +0200
committerGravatar Frédéric Guillot <fred@miniflux.net>2019-08-19 19:42:47 -0700
commitb6f3160dbc3efe7a86d39d526a1780eb320eefd4 (patch)
treefc1148cd9a3de6611a9ca319a54b29c9a0f05cd0 /reader/rewrite/rewrite_functions.go
parent77125f45ccebc1b9abc9aeef2a8576b6841c5768 (diff)
add_mailto_subject: New rewrite function
Dinosaur Comics (qwantz.com) likes to hide jokes in mailto: links, but miniflux's sanitizer strips those out.
Diffstat (limited to 'reader/rewrite/rewrite_functions.go')
-rw-r--r--reader/rewrite/rewrite_functions.go33
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 {