diff --git a/internal/text/markdown.go b/internal/text/markdown.go index 8952b99d6..13fb93378 100644 --- a/internal/text/markdown.go +++ b/internal/text/markdown.go @@ -28,7 +28,10 @@ import ( "github.com/tdewolff/minify/v2/html" ) -var m *minify.M +var ( + bfExtensions = blackfriday.CommonExtensions | blackfriday.HardLineBreak | blackfriday.Footnotes + m *minify.M +) func (f *formatter) FromMarkdown(ctx context.Context, md string, mentions []*gtsmodel.Mention, tags []*gtsmodel.Tag) string { // format tags nicely @@ -38,7 +41,7 @@ func (f *formatter) FromMarkdown(ctx context.Context, md string, mentions []*gts content = f.ReplaceMentions(ctx, content, mentions) // parse markdown - contentBytes := blackfriday.Run([]byte(content)) + contentBytes := blackfriday.Run([]byte(content), blackfriday.WithExtensions(bfExtensions)) // clean anything dangerous out of it content = SanitizeHTML(string(contentBytes)) @@ -46,9 +49,8 @@ func (f *formatter) FromMarkdown(ctx context.Context, md string, mentions []*gts if m == nil { m = minify.New() m.Add("text/html", &html.Minifier{ - KeepEndTags: true, - KeepQuotes: true, - KeepWhitespace: true, + KeepEndTags: true, + KeepQuotes: true, }) } diff --git a/internal/text/markdown_test.go b/internal/text/markdown_test.go index af4a4fef6..3e156f43e 100644 --- a/internal/text/markdown_test.go +++ b/internal/text/markdown_test.go @@ -56,11 +56,15 @@ const ( mdWithHTML = "# Title\n\nHere's a simple text in markdown.\n\nHere's a link.\n\nHere's an image: " mdWithHTMLExpected = "
Here’s a simple text in markdown.
Here’s a link.
Here’s an image:
" mdWithCheekyHTML = "# Title\n\nHere's a simple text in markdown.\n\nHere's a cheeky little script: " - mdWithCheekyHTMLExpected = "Here’s a simple text in markdown.
Here’s a cheeky little script:
" + mdWithCheekyHTMLExpected = "Here’s a simple text in markdown.
Here’s a cheeky little script:
" mdWithHashtagInitial = "#welcome #Hashtag" mdWithHashtagInitialExpected = "" mdCodeBlockWithNewlines = "some code coming up\n\n```\n\n\n\n```\nthat was some code" mdCodeBlockWithNewlinesExpected = "some code coming up
\n\n\n
that was some code
" + mdWithFootnote = "fox mulder,fbi.[^1]\n\n[^1]: federated bureau of investigation" + mdWithFootnoteExpected = "fox mulder,fbi.1
get ready, there’s a block quote coming:
" ) type MarkdownTestSuite struct { @@ -119,6 +123,16 @@ func (suite *MarkdownTestSuite) TestParseCodeBlockWithNewlines() { suite.Equal(mdCodeBlockWithNewlinesExpected, s) } +func (suite *MarkdownTestSuite) TestParseWithFootnote() { + s := suite.formatter.FromMarkdown(context.Background(), mdWithFootnote, nil, nil) + suite.Equal(mdWithFootnoteExpected, s) +} + +func (suite *MarkdownTestSuite) TestParseWithBlockquote() { + s := suite.formatter.FromMarkdown(context.Background(), mdWithBlockQuote, nil, nil) + suite.Equal(mdWithBlockQuoteExpected, s) +} + func TestMarkdownTestSuite(t *testing.T) { suite.Run(t, new(MarkdownTestSuite)) }line1
line2line3