transform p tags to line breaks, run StripHTMLTags for status content

This commit is contained in:
Dan Anglin 2024-05-26 13:14:00 +01:00
parent 6844c6e348
commit cad41d792f
Signed by: dananglin
GPG key ID: 0C1D44CFBEE68638
3 changed files with 16 additions and 9 deletions

View file

@ -158,7 +158,6 @@ func (s Status) String() string {
%s
%s
%s
%s
@ -179,10 +178,9 @@ func (s Status) String() string {
return fmt.Sprintf(
format,
utilities.DisplayNameFormat(s.Account.DisplayName),
s.Account.Username,
utilities.DisplayNameFormat(s.Account.DisplayName), s.Account.Username,
utilities.HeaderFormat("CONTENT:"),
utilities.WrapLines(s.Content, "\n ", 80),
utilities.WrapLines(utilities.StripHTMLTags(s.Content), "\n ", 80),
utilities.HeaderFormat("STATUS ID:"),
s.ID,
utilities.HeaderFormat("CREATED AT:"),

View file

@ -19,7 +19,7 @@ func (t Timeline) String() string {
builder.WriteString(utilities.HeaderFormat(t.Name) + "\n\n")
for _, status := range t.Statuses {
builder.WriteString(utilities.DisplayNameFormat(status.Account.DisplayName) + " (@" + status.Account.Username + ")\n\n")
builder.WriteString(utilities.DisplayNameFormat(status.Account.DisplayName) + " (@" + status.Account.Username + ")\n")
builder.WriteString(utilities.WrapLines(utilities.StripHTMLTags(status.Content), "\n", 80) + "\n\n")
builder.WriteString(utilities.FieldFormat("ID:") + " " + status.ID + "\t" + utilities.FieldFormat("Created at:") + " " + utilities.FormatTime(status.CreatedAt) + "\n")
builder.WriteString(separator + "\n")

View file

@ -45,15 +45,24 @@ func StripHTMLTags(text string) string {
case html.TextToken:
text := token.Token().Data
builder.WriteString(text)
case html.StartTagToken:
case html.StartTagToken, html.EndTagToken:
tag := token.Token().String()
if tag == "<br>" {
builder.WriteString("\n")
}
builder.WriteString(transformTag(tag))
}
}
}
func transformTag(tag string) string {
switch tag {
case "<br>":
return "\n"
case "<p>", "</p>":
return "\n"
}
return ""
}
func WrapLines(text, separator string, charLimit int) string {
lines := strings.Split(text, "\n")