Compare commits

..

No commits in common. "a1f5651b4cb7f35efbf8d2db90ae5b04fbbc96ae" and "5cf6116fe83aef7d1bb2874740125d4605ad2b1e" have entirely different histories.

4 changed files with 14 additions and 42 deletions

View file

@ -88,7 +88,7 @@ func (a Account) Display(noColor bool) string {
metadata += fmt.Sprintf( metadata += fmt.Sprintf(
"\n %s: %s", "\n %s: %s",
utilities.FieldFormat(noColor, field.Name), utilities.FieldFormat(noColor, field.Name),
utilities.ConvertHTMLToText(field.Value), utilities.StripHTMLTags(field.Value),
) )
} }
@ -105,7 +105,7 @@ func (a Account) Display(noColor bool) string {
utilities.FieldFormat(noColor, "Following:"), a.FollowingCount, utilities.FieldFormat(noColor, "Following:"), a.FollowingCount,
utilities.FieldFormat(noColor, "Statuses:"), a.StatusCount, utilities.FieldFormat(noColor, "Statuses:"), a.StatusCount,
utilities.HeaderFormat(noColor, "BIOGRAPHY:"), utilities.HeaderFormat(noColor, "BIOGRAPHY:"),
utilities.WrapLines(utilities.ConvertHTMLToText(a.Note), "\n ", 80), utilities.WrapLines(utilities.StripHTMLTags(a.Note), "\n ", 80),
utilities.HeaderFormat(noColor, "METADATA:"), utilities.HeaderFormat(noColor, "METADATA:"),
metadata, metadata,
utilities.HeaderFormat(noColor, "ACCOUNT URL:"), utilities.HeaderFormat(noColor, "ACCOUNT URL:"),

View file

@ -180,7 +180,7 @@ func (s Status) Display(noColor bool) string {
format, format,
utilities.DisplayNameFormat(noColor, s.Account.DisplayName), s.Account.Username, utilities.DisplayNameFormat(noColor, s.Account.DisplayName), s.Account.Username,
utilities.HeaderFormat(noColor, "CONTENT:"), utilities.HeaderFormat(noColor, "CONTENT:"),
utilities.WrapLines(utilities.ConvertHTMLToText(s.Content), "\n ", 80), utilities.WrapLines(utilities.StripHTMLTags(s.Content), "\n ", 80),
utilities.HeaderFormat(noColor, "STATUS ID:"), utilities.HeaderFormat(noColor, "STATUS ID:"),
s.ID, s.ID,
utilities.HeaderFormat(noColor, "CREATED AT:"), utilities.HeaderFormat(noColor, "CREATED AT:"),

View file

@ -30,7 +30,7 @@ func (t Timeline) Display(noColor bool) string {
createdAt = status.Reblog.CreatedAt createdAt = status.Reblog.CreatedAt
} }
builder.WriteString(utilities.WrapLines(utilities.ConvertHTMLToText(status.Content), "\n", 80) + "\n\n") builder.WriteString(utilities.WrapLines(utilities.StripHTMLTags(status.Content), "\n", 80) + "\n\n")
builder.WriteString(utilities.FieldFormat(noColor, "ID:") + " " + statusID + "\t" + utilities.FieldFormat(noColor, "Created at:") + " " + utilities.FormatTime(createdAt) + "\n") builder.WriteString(utilities.FieldFormat(noColor, "ID:") + " " + statusID + "\t" + utilities.FieldFormat(noColor, "Created at:") + " " + utilities.FormatTime(createdAt) + "\n")
builder.WriteString(separator + "\n") builder.WriteString(separator + "\n")
} }

View file

@ -1,27 +1,16 @@
package utilities package utilities
import ( import (
"io"
"strconv"
"strings" "strings"
"golang.org/x/net/html" "golang.org/x/net/html"
) )
const ( func StripHTMLTags(text string) string {
htmlNoList int = iota
htmlOrderedList
htmlUnorderedList
)
func ConvertHTMLToText(text string) string {
var builder strings.Builder
htmlList := htmlNoList
orderedListNumber := 1
token := html.NewTokenizer(strings.NewReader(text)) token := html.NewTokenizer(strings.NewReader(text))
var builder strings.Builder
for { for {
tt := token.Next() tt := token.Next()
switch tt { switch tt {
@ -32,35 +21,18 @@ func ConvertHTMLToText(text string) string {
builder.WriteString(text) builder.WriteString(text)
case html.StartTagToken, html.EndTagToken: case html.StartTagToken, html.EndTagToken:
tag := token.Token().String() tag := token.Token().String()
htmlList, orderedListNumber = processTagToken(&builder, tag, htmlList, orderedListNumber) builder.WriteString(transformTag(tag))
} }
} }
} }
func processTagToken(writer io.StringWriter, tag string, htmlList, orderedListNumber int) (int, int) { func transformTag(tag string) string {
switch tag { switch tag {
case "<br>", "<p>", "</p>", "</li>": case "<br>":
_, _ = writer.WriteString("\n") return "\n"
case "<ul>": case "<p>", "</p>":
htmlList = htmlUnorderedList return "\n"
_, _ = writer.WriteString("\n")
case "<ol>":
htmlList = htmlOrderedList
_, _ = writer.WriteString("\n")
case "</ul>":
htmlList = htmlNoList
case "</ol>":
htmlList = htmlNoList
orderedListNumber = 1
case "<li>":
switch htmlList {
case htmlUnorderedList:
_, _ = writer.WriteString("• ")
case htmlOrderedList:
_, _ = writer.WriteString(strconv.Itoa(orderedListNumber) + ". ")
orderedListNumber++
}
} }
return htmlList, orderedListNumber return ""
} }