diff --git a/internal/html2text/html2text.go b/internal/html2text/html2text.go index 0cc5f0b..00a9b4a 100644 --- a/internal/html2text/html2text.go +++ b/internal/html2text/html2text.go @@ -3,7 +3,7 @@ package html2text import ( "bytes" - "log" + "fmt" "regexp" "strings" "unicode" @@ -30,18 +30,18 @@ func init() { } // Strip will convert a HTML string to plain text -func Strip(h string, includeLinks bool) string { +func Strip(h string, includeLinks bool) (string, error) { h = spaceRe.ReplaceAllString(h, " <") h = brRe.ReplaceAllString(h, " ") h = imgRe.ReplaceAllString(h, " <$1") var buffer bytes.Buffer doc, err := html.Parse(strings.NewReader(h)) if err != nil { - log.Fatal(err) + return "", fmt.Errorf("html2text: parsing HTML: %w", err) } extract(doc, &buffer, includeLinks) - return clean(buffer.String()) + return clean(buffer.String()), nil } func extract(node *html.Node, buff *bytes.Buffer, includeLinks bool) { diff --git a/internal/storage/utils.go b/internal/storage/utils.go index dc08675..d864229 100644 --- a/internal/storage/utils.go +++ b/internal/storage/utils.go @@ -57,7 +57,7 @@ func createSearchText(env *enmime.Envelope) string { b.WriteString(env.GetHeader("Reply-To") + " ") b.WriteString(env.GetHeader("Return-Path") + " ") - h := html2text.Strip(env.HTML, true) + h, _ := html2text.Strip(env.HTML, true) if h != "" { b.WriteString(h + " ") } else { diff --git a/internal/tools/snippets.go b/internal/tools/snippets.go index 4746101..70b35dd 100644 --- a/internal/tools/snippets.go +++ b/internal/tools/snippets.go @@ -20,13 +20,14 @@ func CreateSnippet(text, html string) string { } if html != "" { - data := html2text.Strip(html, false) + data, err := html2text.Strip(html, false) + if err == nil { + if len(data) <= limit { + return data + } - if len(data) <= limit { - return data + return truncate(data, limit) + "..." } - - return truncate(data, limit) + "..." } if text != "" {