mirror of
https://github.com/superseriousbusiness/gotosocial.git
synced 2024-11-30 12:21:09 +00:00
[bugfix] Parse links that contain non-ascii characters (#2762)
This commit is contained in:
parent
e6e696ae22
commit
0362d49da0
3 changed files with 17 additions and 2 deletions
|
@ -24,6 +24,7 @@ import (
|
||||||
"codeberg.org/gruf/go-byteutil"
|
"codeberg.org/gruf/go-byteutil"
|
||||||
"github.com/superseriousbusiness/gotosocial/internal/gtsmodel"
|
"github.com/superseriousbusiness/gotosocial/internal/gtsmodel"
|
||||||
"github.com/superseriousbusiness/gotosocial/internal/log"
|
"github.com/superseriousbusiness/gotosocial/internal/log"
|
||||||
|
"github.com/superseriousbusiness/gotosocial/internal/regexes"
|
||||||
"github.com/yuin/goldmark"
|
"github.com/yuin/goldmark"
|
||||||
"github.com/yuin/goldmark/extension"
|
"github.com/yuin/goldmark/extension"
|
||||||
"github.com/yuin/goldmark/renderer/html"
|
"github.com/yuin/goldmark/renderer/html"
|
||||||
|
@ -61,7 +62,10 @@ func (f *Formatter) FromMarkdown(
|
||||||
false, // emojiOnly = false.
|
false, // emojiOnly = false.
|
||||||
result,
|
result,
|
||||||
},
|
},
|
||||||
extension.Linkify, // Turns URLs into links.
|
// Turns URLs into links.
|
||||||
|
extension.NewLinkify(
|
||||||
|
extension.WithLinkifyURLRegexp(regexes.LinkScheme),
|
||||||
|
),
|
||||||
extension.Strikethrough,
|
extension.Strikethrough,
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
|
|
|
@ -24,6 +24,7 @@ import (
|
||||||
"codeberg.org/gruf/go-byteutil"
|
"codeberg.org/gruf/go-byteutil"
|
||||||
"github.com/superseriousbusiness/gotosocial/internal/gtsmodel"
|
"github.com/superseriousbusiness/gotosocial/internal/gtsmodel"
|
||||||
"github.com/superseriousbusiness/gotosocial/internal/log"
|
"github.com/superseriousbusiness/gotosocial/internal/log"
|
||||||
|
"github.com/superseriousbusiness/gotosocial/internal/regexes"
|
||||||
"github.com/yuin/goldmark"
|
"github.com/yuin/goldmark"
|
||||||
"github.com/yuin/goldmark/extension"
|
"github.com/yuin/goldmark/extension"
|
||||||
"github.com/yuin/goldmark/parser"
|
"github.com/yuin/goldmark/parser"
|
||||||
|
@ -158,7 +159,10 @@ func (f *Formatter) fromPlain(
|
||||||
emojiOnly,
|
emojiOnly,
|
||||||
result,
|
result,
|
||||||
},
|
},
|
||||||
extension.Linkify, // Turns URLs into links.
|
// Turns URLs into links.
|
||||||
|
extension.NewLinkify(
|
||||||
|
extension.WithLinkifyURLRegexp(regexes.LinkScheme),
|
||||||
|
),
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
@ -34,6 +34,8 @@ const (
|
||||||
withHTMLExpected = "<p><div>blah this should just be html escaped blah</div></p>"
|
withHTMLExpected = "<p><div>blah this should just be html escaped blah</div></p>"
|
||||||
moreComplex = "Another test @foss_satan@fossbros-anonymous.io\n\n#Hashtag\n\nText\n\n:rainbow:"
|
moreComplex = "Another test @foss_satan@fossbros-anonymous.io\n\n#Hashtag\n\nText\n\n:rainbow:"
|
||||||
moreComplexExpected = "<p>Another test <span class=\"h-card\"><a href=\"http://fossbros-anonymous.io/@foss_satan\" class=\"u-url mention\" rel=\"nofollow noreferrer noopener\" target=\"_blank\">@<span>foss_satan</span></a></span><br><br><a href=\"http://localhost:8080/tags/hashtag\" class=\"mention hashtag\" rel=\"tag nofollow noreferrer noopener\" target=\"_blank\">#<span>Hashtag</span></a><br><br>Text<br><br>:rainbow:</p>"
|
moreComplexExpected = "<p>Another test <span class=\"h-card\"><a href=\"http://fossbros-anonymous.io/@foss_satan\" class=\"u-url mention\" rel=\"nofollow noreferrer noopener\" target=\"_blank\">@<span>foss_satan</span></a></span><br><br><a href=\"http://localhost:8080/tags/hashtag\" class=\"mention hashtag\" rel=\"tag nofollow noreferrer noopener\" target=\"_blank\">#<span>Hashtag</span></a><br><br>Text<br><br>:rainbow:</p>"
|
||||||
|
withUTF8Link = "here's a link with utf-8 characters in it: https://example.org/söme_url"
|
||||||
|
withUTF8LinkExpected = "<p>here's a link with utf-8 characters in it: <a href=\"https://example.org/s%C3%B6me_url\" rel=\"nofollow noreferrer noopener\" target=\"_blank\">https://example.org/söme_url</a></p>"
|
||||||
)
|
)
|
||||||
|
|
||||||
type PlainTestSuite struct {
|
type PlainTestSuite struct {
|
||||||
|
@ -70,6 +72,11 @@ func (suite *PlainTestSuite) TestParseMoreComplex() {
|
||||||
suite.Equal(moreComplexExpected, formatted.HTML)
|
suite.Equal(moreComplexExpected, formatted.HTML)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (suite *PlainTestSuite) TestWithUTF8Link() {
|
||||||
|
formatted := suite.FromPlain(withUTF8Link)
|
||||||
|
suite.Equal(withUTF8LinkExpected, formatted.HTML)
|
||||||
|
}
|
||||||
|
|
||||||
func (suite *PlainTestSuite) TestLinkNoMention() {
|
func (suite *PlainTestSuite) TestLinkNoMention() {
|
||||||
statusText := `here's a link to a post by zork
|
statusText := `here's a link to a post by zork
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue