summaryrefslogtreecommitdiff
path: root/internal/text
diff options
context:
space:
mode:
Diffstat (limited to 'internal/text')
-rw-r--r--internal/text/emojionly.go7
-rw-r--r--internal/text/goldmark_extension.go31
-rw-r--r--internal/text/markdown.go7
-rw-r--r--internal/text/minify.go29
-rw-r--r--internal/text/plain.go7
-rw-r--r--internal/text/replace.go13
6 files changed, 46 insertions, 48 deletions
diff --git a/internal/text/emojionly.go b/internal/text/emojionly.go
index 1a3c0e968..127028643 100644
--- a/internal/text/emojionly.go
+++ b/internal/text/emojionly.go
@@ -57,7 +57,7 @@ func (f *formatter) FromPlainEmojiOnly(ctx context.Context, pmf gtsmodel.ParseMe
var htmlContentBytes bytes.Buffer
err := md.Convert([]byte(plain), &htmlContentBytes)
if err != nil {
- log.Errorf("error formatting plaintext to HTML: %s", err)
+ log.Errorf(ctx, "error formatting plaintext to HTML: %s", err)
}
result.HTML = htmlContentBytes.String()
@@ -65,7 +65,10 @@ func (f *formatter) FromPlainEmojiOnly(ctx context.Context, pmf gtsmodel.ParseMe
result.HTML = SanitizeHTML(result.HTML)
// shrink ray
- result.HTML = minifyHTML(result.HTML)
+ result.HTML, err = m.String("text/html", result.HTML)
+ if err != nil {
+ log.Errorf(ctx, "error minifying HTML: %s", err)
+ }
return result
}
diff --git a/internal/text/goldmark_extension.go b/internal/text/goldmark_extension.go
index 11e4fde28..419410e97 100644
--- a/internal/text/goldmark_extension.go
+++ b/internal/text/goldmark_extension.go
@@ -53,9 +53,11 @@ type emoji struct {
Segment text.Segment
}
-var kindMention = ast.NewNodeKind("Mention")
-var kindHashtag = ast.NewNodeKind("Hashtag")
-var kindEmoji = ast.NewNodeKind("Emoji")
+var (
+ kindMention = ast.NewNodeKind("Mention")
+ kindHashtag = ast.NewNodeKind("Hashtag")
+ kindEmoji = ast.NewNodeKind("Emoji")
+)
func (n *mention) Kind() ast.NodeKind {
return kindMention
@@ -106,14 +108,11 @@ func newEmoji(s text.Segment) *emoji {
}
// mentionParser and hashtagParser fulfil the goldmark parser.InlineParser interface.
-type mentionParser struct {
-}
+type mentionParser struct{}
-type hashtagParser struct {
-}
+type hashtagParser struct{}
-type emojiParser struct {
-}
+type emojiParser struct{}
func (p *mentionParser) Trigger() []byte {
return []byte{'@'}
@@ -239,7 +238,7 @@ func (r *customRenderer) renderMention(w mdutil.BufWriter, source []byte, node a
n, ok := node.(*mention) // this function is only registered for kindMention
if !ok {
- log.Errorf("type assertion failed")
+ log.Panic(nil, "type assertion failed")
}
text := string(n.Segment.Value(source))
@@ -247,7 +246,7 @@ func (r *customRenderer) renderMention(w mdutil.BufWriter, source []byte, node a
// we don't have much recourse if this fails
if _, err := w.WriteString(html); err != nil {
- log.Errorf("error writing HTML: %s", err)
+ log.Errorf(nil, "error writing HTML: %s", err)
}
return ast.WalkSkipChildren, nil
}
@@ -259,7 +258,7 @@ func (r *customRenderer) renderHashtag(w mdutil.BufWriter, source []byte, node a
n, ok := node.(*hashtag) // this function is only registered for kindHashtag
if !ok {
- log.Errorf("type assertion failed")
+ log.Panic(nil, "type assertion failed")
}
text := string(n.Segment.Value(source))
@@ -268,7 +267,7 @@ func (r *customRenderer) renderHashtag(w mdutil.BufWriter, source []byte, node a
_, err := w.WriteString(html)
// we don't have much recourse if this fails
if err != nil {
- log.Errorf("error writing HTML: %s", err)
+ log.Errorf(nil, "error writing HTML: %s", err)
}
return ast.WalkSkipChildren, nil
}
@@ -281,7 +280,7 @@ func (r *customRenderer) renderEmoji(w mdutil.BufWriter, source []byte, node ast
n, ok := node.(*emoji) // this function is only registered for kindEmoji
if !ok {
- log.Errorf("type assertion failed")
+ log.Panic(nil, "type assertion failed")
}
text := string(n.Segment.Value(source))
shortcode := text[1 : len(text)-1]
@@ -289,7 +288,7 @@ func (r *customRenderer) renderEmoji(w mdutil.BufWriter, source []byte, node ast
emoji, err := r.f.db.GetEmojiByShortcodeDomain(r.ctx, shortcode, "")
if err != nil {
if err != db.ErrNoEntries {
- log.Errorf("error getting local emoji with shortcode %s: %s", shortcode, err)
+ log.Errorf(nil, "error getting local emoji with shortcode %s: %s", shortcode, err)
}
} else if *emoji.VisibleInPicker && !*emoji.Disabled {
listed := false
@@ -306,7 +305,7 @@ func (r *customRenderer) renderEmoji(w mdutil.BufWriter, source []byte, node ast
// we don't have much recourse if this fails
if _, err := w.WriteString(text); err != nil {
- log.Errorf("error writing HTML: %s", err)
+ log.Errorf(nil, "error writing HTML: %s", err)
}
return ast.WalkSkipChildren, nil
}
diff --git a/internal/text/markdown.go b/internal/text/markdown.go
index 232f0f723..341ec1f00 100644
--- a/internal/text/markdown.go
+++ b/internal/text/markdown.go
@@ -53,7 +53,7 @@ func (f *formatter) FromMarkdown(ctx context.Context, pmf gtsmodel.ParseMentionF
var htmlContentBytes bytes.Buffer
err := md.Convert([]byte(markdownText), &htmlContentBytes)
if err != nil {
- log.Errorf("error formatting markdown to HTML: %s", err)
+ log.Errorf(ctx, "error formatting markdown to HTML: %s", err)
}
result.HTML = htmlContentBytes.String()
@@ -61,7 +61,10 @@ func (f *formatter) FromMarkdown(ctx context.Context, pmf gtsmodel.ParseMentionF
result.HTML = SanitizeHTML(result.HTML)
// shrink ray
- result.HTML = minifyHTML(result.HTML)
+ result.HTML, err = m.String("text/html", result.HTML)
+ if err != nil {
+ log.Errorf(ctx, "error minifying HTML: %s", err)
+ }
return result
}
diff --git a/internal/text/minify.go b/internal/text/minify.go
index 62562c7ca..96cb30464 100644
--- a/internal/text/minify.go
+++ b/internal/text/minify.go
@@ -19,27 +19,16 @@
package text
import (
- "github.com/superseriousbusiness/gotosocial/internal/log"
"github.com/tdewolff/minify/v2"
"github.com/tdewolff/minify/v2/html"
)
-var (
- m *minify.M
-)
-
-func minifyHTML(content string) string {
- if m == nil {
- m = minify.New()
- m.Add("text/html", &html.Minifier{
- KeepEndTags: true,
- KeepQuotes: true,
- })
- }
-
- minified, err := m.String("text/html", content)
- if err != nil {
- log.Errorf("error minifying HTML: %s", err)
- }
- return minified
-}
+// m is the global minify instance.
+var m = func() *minify.M {
+ m := minify.New()
+ m.Add("text/html", &html.Minifier{
+ KeepEndTags: true,
+ KeepQuotes: true,
+ })
+ return m
+}()
diff --git a/internal/text/plain.go b/internal/text/plain.go
index 3549200c6..bcdb0c0f4 100644
--- a/internal/text/plain.go
+++ b/internal/text/plain.go
@@ -60,7 +60,7 @@ func (f *formatter) FromPlain(ctx context.Context, pmf gtsmodel.ParseMentionFunc
var htmlContentBytes bytes.Buffer
err := md.Convert([]byte(plain), &htmlContentBytes)
if err != nil {
- log.Errorf("error formatting plaintext to HTML: %s", err)
+ log.Errorf(ctx, "error formatting plaintext to HTML: %s", err)
}
result.HTML = htmlContentBytes.String()
@@ -68,7 +68,10 @@ func (f *formatter) FromPlain(ctx context.Context, pmf gtsmodel.ParseMentionFunc
result.HTML = SanitizeHTML(result.HTML)
// shrink ray
- result.HTML = minifyHTML(result.HTML)
+ result.HTML, err = m.String("text/html", result.HTML)
+ if err != nil {
+ log.Errorf(ctx, "error minifying HTML: %s", err)
+ }
return result
}
diff --git a/internal/text/replace.go b/internal/text/replace.go
index 5deab5d4d..03275fe3d 100644
--- a/internal/text/replace.go
+++ b/internal/text/replace.go
@@ -20,11 +20,12 @@ package text
import (
"errors"
+ "strings"
+
"github.com/superseriousbusiness/gotosocial/internal/db"
"github.com/superseriousbusiness/gotosocial/internal/log"
"github.com/superseriousbusiness/gotosocial/internal/util"
"golang.org/x/text/unicode/norm"
- "strings"
)
const (
@@ -39,13 +40,13 @@ const (
func (r *customRenderer) replaceMention(text string) string {
menchie, err := r.parseMention(r.ctx, text, r.accountID, r.statusID)
if err != nil {
- log.Errorf("error parsing mention %s from status: %s", text, err)
+ log.Errorf(nil, "error parsing mention %s from status: %s", text, err)
return text
}
if r.statusID != "" {
if err := r.f.db.Put(r.ctx, menchie); err != nil {
- log.Errorf("error putting mention in db: %s", err)
+ log.Errorf(nil, "error putting mention in db: %s", err)
return text
}
}
@@ -66,7 +67,7 @@ func (r *customRenderer) replaceMention(text string) string {
if menchie.TargetAccount == nil {
a, err := r.f.db.GetAccountByID(r.ctx, menchie.TargetAccountID)
if err != nil {
- log.Errorf("error getting account with id %s from the db: %s", menchie.TargetAccountID, err)
+ log.Errorf(nil, "error getting account with id %s from the db: %s", menchie.TargetAccountID, err)
return text
}
menchie.TargetAccount = a
@@ -105,7 +106,7 @@ func (r *customRenderer) replaceHashtag(text string) string {
tag, err := r.f.db.TagStringToTag(r.ctx, normalized, r.accountID)
if err != nil {
- log.Errorf("error generating hashtags from status: %s", err)
+ log.Errorf(nil, "error generating hashtags from status: %s", err)
return text
}
@@ -121,7 +122,7 @@ func (r *customRenderer) replaceHashtag(text string) string {
err = r.f.db.Put(r.ctx, tag)
if err != nil {
if !errors.Is(err, db.ErrAlreadyExists) {
- log.Errorf("error putting tags in db: %s", err)
+ log.Errorf(nil, "error putting tags in db: %s", err)
return text
}
}