Ver código fonte

Add parse_markdown rewrite function

Gabe Cook 3 anos atrás
pai
commit
36df7b36ec
4 arquivos alterados com 21 adições e 0 exclusões
  1. 1 0
      go.mod
  2. 1 0
      go.sum
  3. 17 0
      reader/rewrite/rewrite_functions.go
  4. 2 0
      reader/rewrite/rewriter.go

+ 1 - 0
go.mod

@@ -17,6 +17,7 @@ require (
 	github.com/stretchr/testify v1.6.1 // indirect
 	github.com/tdewolff/minify/v2 v2.12.0
 	github.com/technoweenie/multipartstreamer v1.0.1 // indirect
+	github.com/yuin/goldmark v1.1.32
 	golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9
 	golang.org/x/net v0.0.0-20210916014120-12bc252f5db8
 	golang.org/x/oauth2 v0.0.0-20210514164344-f6687ab2804c

+ 1 - 0
go.sum

@@ -323,6 +323,7 @@ github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q
 github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q=
 github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
 github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
+github.com/yuin/goldmark v1.1.32 h1:5tjfNdR2ki3yYQ842+eX2sQHeiwpKJ0RnHO4IYOc4V8=
 github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
 go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU=
 go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU=

+ 17 - 0
reader/rewrite/rewrite_functions.go

@@ -15,6 +15,8 @@ import (
 	"miniflux.app/config"
 
 	"github.com/PuerkitoBio/goquery"
+	"github.com/yuin/goldmark"
+	goldmarkhtml "github.com/yuin/goldmark/renderer/html"
 )
 
 var (
@@ -318,3 +320,18 @@ func decodeBase64Content(entryContent string) string {
 		return html.EscapeString(string(ret))
 	}
 }
+
+func parseMarkdown(entryContent string) string {
+	var sb strings.Builder
+	md := goldmark.New(
+		goldmark.WithRendererOptions(
+			goldmarkhtml.WithUnsafe(),
+		),
+	)
+
+	if err := md.Convert([]byte(entryContent), &sb); err != nil {
+		return entryContent
+	}
+
+	return sb.String()
+}

+ 2 - 0
reader/rewrite/rewriter.go

@@ -108,6 +108,8 @@ func applyRule(entryURL, entryContent string, rule rule) string {
 		} else {
 			entryContent = applyFuncOnTextContent(entryContent, "body", decodeBase64Content)
 		}
+	case "parse_markdown":
+		entryContent = parseMarkdown(entryContent)
 	}
 
 	return entryContent